Numerus in isti odgovor dvakrat

Razlike v plavajoči vejici je lahko spregledati, dokler ne spremeni testa, simulacije, ponovitve ali poti odločanja. Numerus obravnava aritmetiko kot...

Numerus in isti odgovor dvakrat

Hrošč, ki obstaja samo na drugem računalniku

Najbolj siten numerični hrošč je tisti, ki se noče pojaviti tam, kjer ga iščete. Test odpove na CI, ne lokalno. Simulacija začne odstopati po posodobitvi odvisnosti. Vgrajena naprava daje nekoliko drugačen rezultat kot strežnik. Modelni cevovod je videti v redu, dokler predvajanje ne zahteva istega izračuna dvakrat in prejme dva odgovora, ki sta dovolj blizu, da sprožita prepir.

Blizu je včasih dovolj. Blizu pa ni vedno pogodba. Če je izračun del poti predvajanja, varnostnega preverjanja, simulacije, odločitve o ceni, digitalnega dvojčka, revizijske sledi ali koraka stiskanja modela, se lahko bližina spremeni v tveganje za izdelek. Razlika je lahko majhna. Majhne razlike so še vedno razlike. Programska oprema je zgradila cele kariere na tem, da jo majhne razlike motijo.

To je razlog, zakaj Numerus obstaja v sklopu Dweve. Stran Numerus ga predstavlja kot odprtokodno numerično osnovo za deterministično aritmetiko: binarna in decimalna fiksna vejica, prilagodljiva vejica Dweve AXIOM, celoštevilske operacije, Rust, površine, združljive z no_std, preverjanje proti visoko natančnim referencam, kjer je to smiselno, in deterministični profili, namenjeni mirnejšemu predvajanju na podprtih napravah. Skupna numerična plast pod tem je še širša: binarne, ternarne, celoštevilske, fiksne, plavajoče in prilagodljive družine AXIOM pod eno pogodbo v slogu Element. Natančne podrobnosti izvedbe so pomembne za inženirje. Lekcija za izdelek je preprostejša: aritmetika ni šum v ozadju. Je infrastruktura.

Ko rezultat vstopi v pot predvajanja ali revizije, ni koristno vprašanje, ali sta dva odgovora blizu, temveč ali sistem lahko dvakrat ustvari isti odgovor.

To se sliši očitno, dokler ne sledite, kam potujejo številke. Simulacija napaja digitalnega dvojčka. Dvojček napaja nadzorno ploščo. Nadzorna plošča podpira človeško odločitev. Odločitev se zabeleži. Čez mesec dni nekdo vpraša, zakaj. Če numerična plast ne more reproducirati izračuna, postane preostanek dokazne verige majav. Morda je še vedno obranljiv, a zdaj mora ekipa pojasnjevati vir odstopanja, ki bi se mu lahko izognila. To je slab hobi.

Plavajoča vejica ni moralno napačna

To ni pridiga o tem, da je plavajoča vejica zla. Plavajoča vejica je eden od razlogov, da sodobno računalništvo deluje. Je hitra, kompaktna, dobro podprta in povsem prava za številne obremenitve. Težava se začne, ko se ekipe pretvarjajo, da je njeno obnašanje univerzalna pogodba upravljanja.

Plavajoča vejica živi v svetu načinov zaokroževanja, razlik v strojni opremi, izbir prevajalnika, izbire navodil, združenih operacij, vektorizacije, denormalnih števil, obnašanja knjižnic in podrobnosti, značilnih za posamezno napravo. Večino časa je to obvladljivo. Včasih je celo nevidno. Potem potrebujete bitno natančno predvajanje, enakost med napravami, deterministično simulacijo ali zgradbo, ki bi se morala obnašati enako po selitvi s strežnika na rob. Nenadoma podrobnosti niso več akademske. Postanejo sestanek.

Numerus izbere drugačno pot za obremenitve, kjer je ponovljivost pomembnejša od pretvarjanja, da je vsaka operacija majhen vremenski sistem. Izključno celoštevilska aritmetika naredi predstavitev eksplicitno. Formati s fiksno vejico določajo, kje je decimalka. Decimalne družine obravnavajo vrednosti, kjer so natančna mesta pomembna. Dweve AXIOM omogoča prilagajanje oblike eksponenta po vrednosti, ne da bi nadzor prepustili neprozornemu okolju plavajoče vejice. Bistvo ni ena numerična oblika za vedno. Bistvo je izbira oblike s pogodbo.

To je pomembno, ker produktni sistemi ne le računajo. Pomnijo. Ponavljajo. Primerjajo. Pojasnjujejo. Če isti izračun na podprtih površinah daje različne rezultate, razlika postane del produkta, pa naj to kdo načrtuje ali ne.

Ena numerična knjižnica je v resnici več obljub

Numerična osnova ni ena stvar. Je skupek obljub z različnimi občinstvi. Vgrajeni inženir skrbi, da lahko omejene ciljne naprave poganjajo ustrezne celoštevilske profile, ne da bi vlekle s seboj udobno strežniško okolje. Inženir za simulacije skrbi, da lahko ponavljanje poustvari stanje. Revizor skrbi, da je pot odgovora mogoče pojasniti. Lastnik produkta skrbi, da se stvar ne obnaša kot živčen kalkulator, ko jo premaknemo iz enega okolja v drugo.

Javna stran Numerus izpostavlja družine, o katerih se ljudje najprej sprašujejo: fiksna vejica Q-formata, Decimal in AXIOM. Kodna baza je širša. common/numeric nosi binarne oblike XNOR in POPCNT, ternarne vrednosti, domača in podbajtna cela števila, vzdevke fiksne vejice, majhne formate plavajoče vejice in prilagodljivi AXIOM. Fasada Numerus nato okoli te osnove doda produktno usmerjeni decimalni in aritmetični površini. Ta delitev je pomembna, ker se izogne lažni eleganci, ki vsako število sili v eno samo preobleko.

Različne obremenitve potrebujejo različne oblike števil. Skupna obljuba je deterministično obnašanje na širši numerični površini, ne ena modna predstavitev za vse.

To je v najboljšem pomenu zelo evropska vrsta inženirstva. Manj drame, več dogovora. Izračun mora povedati, kaj je. Obseg mora biti znan. Decimalno obnašanje mora biti izrecno. Ciljne omejitve morajo biti spoštovane. Rezultat mora biti ponovljiv. Za to nihče ne potrebuje uvodnega govora. Potrebujejo, da deluje.

AXIOM si zasluži svoj članek, ker ni le še en vzdevek na seznamu. Je Dwevejeva prilagodljiva družina spremenljive vejice: predznak, eksponentni indeks in mantisa, zapakirani v kompaktno predstavitev, z izbranimi seznami eksponentov za splošne, goste, drobnozrnate ali nevronsko oblikovane podatke. Ta objava ga le umešča na zemljevid Numerus. Globlja zgodba je, kako prilagodljiva izbira eksponentov daje spreminjajočim se velikostim več prostora, ne da bi aritmetika znova postala nedeterministična.

Prav tako preprečuje pretirane trditve. Numerus ne naredi vsakega numeričnega problema enostavnega. Ne odpravi potrebe po izbiri lestvic, obsegov, obnašanja zaokroževanja, seznamov eksponentov, širin mantise ali področij preverjanja. Aritmetiko fiksne in spremenljive vejice je mogoče z velikim navdušenjem zlorabiti. Vrednost je v tem, da zloraba postane bolj vidna. Izrecen numerični dogovor ti da nekaj za pregled. Skrita predpostavka o plavajoči vejici ti da majhno prikazen v produkciji.

Preverjanje ni značka

Vsaka numerična knjižnica se sčasoma nauči, da sta besedi pravilno in natančno poceni, dokler nista pritrjeni na preizkuševališče. Pravilno kje? Natančno v primerjavi s čim? Na katerem vhodnem področju? S kakšnim obnašanjem zaokroževanja? Na kateri izdaji? Pod katerimi testi?

Gradivo Numerus postavlja preverjanje v ospredje: CORDIC samo s celimi števili za transcendentne funkcije, primerjava z visoko natančnim orakljem MPFR, testi lastnosti in preverjanja izdaj. Natančna trditev je smiselna le, če je povezana s tem mehanizmom. Značka, ki pravi natančno, je okras. Preizkuševališče, ki primerja, krči in spodleti, je inženirstvo.

Numerično zaupanje bi moralo izhajati iz poti z orakljem in preizkusov lastnosti, ne iz grafa, ki je sam s seboj zadovoljen.

To razlikovanje je pomembno, ker se numerične napake pogosto skrivajo na robovih. Sredina domene se obnaša. Demo se obnaša. Običajne vrednosti se obnašajo. Nato prispe mejna vrednost s svojo mapo. Negativni vnosi, vrednosti blizu ničle, meje prekoračitve, prehodi lestvic, zaokrožitvene izenačitve, meje seznama eksponentov in ponavljajoče se operacije so tam, kjer numerične knjižnice bodisi pridobijo zaupanje bodisi začnejo pisati izmišljotine.

Preizkušanje lastnosti je uporabno, ker si ljudje težko predstavljamo vse načine, kako je lahko število nadležno. Orakelj z visoko natančnostjo je uporaben, ker implementacija potrebuje referenco, ki ni ona sama. Preverjanja ob izdaji so uporabna, ker preverjena trditev iz prejšnjega meseca ni jamstvo za ta mesec. Programska oprema ne ostane pravilna iz vljudnosti.

Determinizem sodi v arhitekturo, ne v opombo pod črto

Mikavno je obravnavati deterministično aritmetiko kot podrobnost knjižnice na nizki ravni. Prav tam jo mnoge ekipe izgubijo. Do trenutka, ko produkt potrebuje ponovljivost, so numerične predpostavke že razpršene po storitvah, prenosnikih, vgrajenih ciljnih platformah, orodjih za modele in integracijskih preizkusih. Nato determinizem postane naknadna predelava. Naknadne predelave so tam, kjer proračuni razvijejo značaj.

Pravi trenutek za odločitev o numerični drži je zgodaj. Ali ta delovna obremenitev potrebuje bitno stabilno ponovljivost? Ali prečka stroje? Ali prečka arhitekture? Ali podpira regulirano odločitev? Ali napaja simulacijo? Ali postane podatki za usposabljanje, vhod za sklepanje, izhod stiskanja modela ali stanje digitalnega dvojčka? Če da, je aritmetika arhitekturna.

Numerus se prav zaradi tega uvršča ob bok FMI in Twin. FMI skrbi za deterministična simulacijska jedra in izmenjavo modelov. Twin skrbi za ponavljanje operativnega ali fizičnega stanja skozi čas. Ledger beleži operativne dogodke. Trace nosi dokaze o ponovljivih izračunih. Te plasti postanejo mirnejše šele, ko se numerična plast pod njimi ne zanaša kot nakupovalni voziček z enim pokvarjenim kolesom.

V sistemih z umetno inteligenco to postane še bolj konkretno. Kvantizacija, točkovanje, razvrščanje, simulacija, omejitve, kalibracija, stiskanje in ponavljanje vsi uporabljajo števila. Če se ta števila obnašajo različno med okolji, model morda ni kriva stranka. Je preprosto najbolj viden osumljenec. Priročno, a ne vedno pravilno.

Majhni stroji niso državljani drugega razreda

Veliko arhitekture umetne inteligence in simulacij tiho predpostavlja udoben stroj. Tam bo strežnik. Tam bo grafični procesor. Tam bo dovolj pomnilnika. Tam bo oblačna storitev. Tam bo račun, zaradi katerega si bo nekdo izmislil besedno zvezo strateškanaložba.

Resnični sistemi so manj urejeni. Nekateri izračuni morajo teči na vgrajenih ciljnih platformah. Nekateri živijo na robu. Nekateri so v napravah brez enote za plavajočo vejico. Nekateri potrebujejo združljivost z no_std. Nekateri morajo delovati naprej, ko omrežje ni povabljeno. Če se numerična osnova obnaša le v udobnem primeru, to ni osnova. To je pohištvo.

Ista numerična pogodba mora preživeti omejitve uvajanja, ne le razvijalski prenosnik, kjer je vse radodarno in toplo.

Celoštevilsko usmerjena aritmetika pomaga pri tem, ker zmanjša odvisnost od ciljno specifičnega vedenja plavajoče vejice, kjer lahko delovna obremenitev uporabi te profile. Sposobnosti, ki so primerne za no_std, pomagajo, ker vsako okolje nima razkošja standardne knjižnice strežniškega procesa. Bistvo ni nostalgija po manjših napravah. Gre za nadzor nad tem, kateri numerični dogovor potuje do omejenih ciljev.

To ni nostalgija po manjših napravah. Gre za nadzor. Če je izračun del izdelka, izdelek ne bi smel zahtevati najudobnejšega okolja samo zato, da bi bil zanesljiv.

Dolgočasen primer je pomemben

Predstavljajte si izračun odmerka, izračun tarife, korak simulacije, ponovno predvajano vrednost senzorja ali prag stiskanja modela. Nobeden od teh ne zveni glamurozno. Dobro. Glamur je običajno tam, kjer se začne nejasno razlaganje. Dolgočasni primeri so tisti, kjer numerična determinističnost dokaže svojo vrednost.

Če se rezultat uporabi enkrat in se pozabi, majhen odmik morda ni pomemben. Če se rezultat zabeleži in ponovno predvaja, je pomemben. Če se primerja med okolji, je pomemben. Če vpliva na poznejšo odločitev, je pomemben. Če lahko stranka, revizor ali inženir vpraša, zakaj se je pojavila ta vrednost, je zagotovo pomemben. Na tej točki izračun ni več notranja podrobnost izvedbe. Je del zgodbe, ki jo izdelek pripoveduje.

Zato Numerus ni le matematična knjižnica v abstraktnem smislu. Je sestavni del arhitekture dokazov. Drugim sistemom daje mirnejšo numerično plast, na kateri lahko stojijo. Reed lahko razčlenjuje vir s potrdili. Ledger lahko beleži dogodke. BitWeave lahko naredi pridobivanje deterministično. HEDL lahko naredi strukturirane podatke manj potratne. Numerus naredi aritmetiko manj spolzko. Vsak del odstrani eno mesto, kjer bi sistem sicer skomignil z rameni.

Nauk

Nauk Numerusa je, da so številke vedenje izdelka. Ne le podrobnost izvedbe. Ne le matematika. Vedenje. Če lahko isti vhod povzroči drugačen odgovor, ko ga premaknete v drugo podprto okolje, ta razlika zdaj pripada izdelku.

Deterministična aritmetika ni vedno potrebna. Ko je potrebna, bi morala biti zasnovana vnaprej, ne pa izprošena pozneje. Izberite eksplicitne numerične družine. Preverite proti oraklju. Preizkusite robove. Spoštujte omejitve uvajanja. Imejte ponovno predvajanje v mislih, preden prvo poročilo o incidentu naredi vse nenadoma filozofske.

Numerus je uporaben, ker spremeni aritmetiko v dogovor, na katerega se lahko zanese preostali del sklada. Binary, ternary, integer, fixed, float, Decimal in AXIOM niso slogani. So načini za oblikovanje števil, tako da se lahko isti odgovor pojavi dvakrat, namenoma. AXIOM ima svojo globljo zgodbo, ker je del, kjer se sama točka začne premikati, medtem ko dogovor ostaja determinističen. To ni bleščeče. Bolje je kot bleščeče. Je tista vrsta dolgočasnosti, ki resnim sistemom omogoča, da ponoči mirno spijo.