FMI ir ta pati simuliacija visur

Simulation work gets expensive when the same model tells slightly different stories on different machines. Dweve FMI uses a Numerus-backed fixed-point core,...

FMI ir ta pati simuliacija visur

Modelis neturėtų įgyti asmenybės

Modeliavimo modelis turėtų būti nuobodus viena labai konkrečia prasme: tie patys įvesties duomenys, tas pats modelis, ta pati išvestis. Tai skamba akivaizdžiai, kol modelis perkeliamas iš darbo stoties į klasterį, iš nešiojamojo kompiuterio į aparatinės įrangos ciklą, iš vieno kompiliatoriaus prie kito arba iš tiekėjo įrankio į saugos skyrių, kuris nevertina interpretacinio šokio. Tada maži skaitiniai skirtumai tampa susitikimais. Susitikimai tampa suderinimo skaičiuoklėmis. Suderinimo skaičiuoklės tampa kapinėmis, kuriose miršta geros inžinerijos popietės.

FMI egzistuoja tam, kad modelių mainai ir bendras modeliavimas būtų praktiški tarp skirtingų įrankių. „Functional Mock-up Interface“ suteikia komandoms standartinį būdą pakuoti ir vykdyti modelius, užuot rankomis nešiojus trapų integracijos kodą iš vienos modeliavimo aplinkos į kitą. Tai jau naudinga. Tačiau standartinė sąsaja automatiškai nepadaro aritmetikos deterministine. Tradiciniai FMI darbo srautai dažnai remiasi IEEE 754 slankiojo kablelio elgsena, platformų bibliotekomis, kompiliatoriaus pasirinkimais, vykdymo tvarka ir backendų skirtumais. Dažniausiai tai yra gerai. Tada pasidaro negerai, ir skirtumą paprastai atranda kažkas, kas turi terminą ir veidą, kuris sako, kad pirkimų skyrius žadėjo, jog tai bus paprasta.

„Dweve FMI“ sprendžia nuobodžią ir brangią dalį: atkuriamumą. Svetainė aprašo „Rust“ FMI diegimą, skirtą modelių mainams ir bendram modeliavimui, su deterministine fiksuoto kablelio aritmetika, sukurtą naudojant „Numerus“. Diegimo apimtis yra platesnė nei demonstracija: daugiakrepšelė FMI darbo erdvė su modelio atvaizdavimu, schemos analize, importu, eksportu, vykdymo laiku, sprendikliu, orkestravimu, atmintimi, CPU, GPU, FPGA, krašto ir paskirstytojo vykdymo backendais, FFI, fuzzinimu, etalonais, dokumentacija ir testais. Ji priklauso nuo „Numerus“ krepšelių fiksuoto kablelio ir dešimtainei aritmetikai, taip pat nuo bendro „Dweve“ technologijų rinkinio modeliavimui, registravimui, klaidų tvarkymui, perdavimui, tensoriams ir saugyklai.

Tikslas nėra padaryti modeliavimą mistišką. Tikslas yra, kad tas pats FMU nustotų pasakoti šiek tiek skirtingas istorijas vien todėl, kad pabudo kitoje mašinoje.

Brangus gedimas nėra dramatiškas žlugimas. Tai mažas nuokrypis, kuris atsiranda vėlai ir verčia žmones nuspręsti, kuri mašina tariamai buvo teisi.

FMI suteikia apvalkalą, aritmetika vis tiek rašo čekį

FMU yra naudingas apvalkalas. Jis neša modelio aprašą, dvejetainius arba šaltinio artefaktus, išteklius, kintamuosius, būsenas, laikrodžius, priklausomybes ir pakankamai metaduomenų, kad kitas įrankis galėtų sukurti modelio egzempliorių ir jį vykdyti žingsniais. FMI 3.0 prideda turtingesnius laikrodžius, planuotą vykdymą, patobulintą kintamųjų tipizavimą ir bendro modeliavimo mechanizmus. „Dweve FMI“ šaltinis yra organizuotas aplink tą apvalkalą: fmi-schema analizuoja ir tikrina modelio aprašus, fmi-import įkelia FMU archyvus, fmi-export kuria archyvus, fmi-model atvaizduoja kintamuosius ir modelio būseną, o fmi-runtime valdo gyvavimo ciklą, kintamųjų prieigą, laikrodžius, įvykius, išvestines ir būsenos išsaugojimą ar atkūrimą.

Tas apvalkalas yra būtinas, bet nepakankamas. Aritmetika po juo vis tiek nusprendžia, ar vykdymas yra atkuriamas. Vykdymo laiko dokumentacija sako, kad fiksuoto kablelio aritmetika naudoja „Numerus Q31_32“ deterministiniams skaičiavimams. Darbo erdvės metaduomenys nurodo Q31.32 kaip numatytąjį fiksuotą formatą, Dec64_6 kaip numatytąjį dešimtainį formatą ir Q16.16 laikui. Viešame puslapyje kalbama apie Q31.32, Q16.16 ir Dec64_6 profilius, o MPFR naudojamas kaip atskaitos kelias. Tai suteikia projektui aiškią sutartį: realiųjų skaičių modeliavimas turėtų būti susietas su deterministiniais skaitiniais profiliais, o ne paliktas kiekvieno backendo improvizacijai.

Čia yra svarbus sąžiningumo aspektas. FMI sąsajos ir suderinamumo paviršiai vis tiek gali priimti arba išduoti slankiojo kablelio reikšmes, nes standartas ir esami įrankiai jų tikisi. Svarbus teiginys nėra teatrališkas grynumas kiekvienoje riboje. Svarbus teiginys yra tas, kad pagrindinis deterministinis kelias yra sukurtas aplink Numerus fiksuoto kablelio profilius ir patikrą pagal didelio tikslumo etaloną ten, kur palyginimas yra prasmingas. Kraštiniai adapteriai gali kalbėti išorine kalba. Vidaus susitarimas neturėtų virsti abejone.

Skaitinis profilis yra modelio sprendimas

Fiksuotas kablelis nėra vienas stebuklingas nustatymas. Modelis, kuriam reikia kompaktiškų laiko reikšmių, modelis su plačiais fiziniais diapazonais ir modelis, kuris pateikia dešimtainius kiekius, neturi vienodo spaudimo. Q16.16, Q31.32 ir Dec64_6 nėra lipdukai skaidrei. Tai skirtingi susitarimai dėl diapazono, skiriamosios gebos, vaizdavimo ir to, kur klaidoms leidžiama egzistuoti.

Čia modeliavimo komandos dažnai tampa pernelyg nerūpestingos. Jie traktuoja skaitinį elgesį kaip įrankio, o ne modelio savybę. Tada pasikeičia įrankis, pasikeičia backendas arba modelis įterpiamas, ir staiga sena prielaida tampa patikros našta. Dweve FMI daro skaitinį profilį architektūros dalimi, o ne foniniu oru. Tai mažiau įspūdinga nei didelė demonstracija. Gerai. Didelės demonstracijos retai paaiškina, kam priklauso apvalinimo riba.

Solverio kūrinys pasakoja tą pačią istoriją. Jis atskleidžia ODE sistemų ypatybes, RK4, RKF45, Euler, BDF orientuotą konfigūraciją, adaptyvų žingsnio valdymą, įvykių aptikimą ir deterministinį solverio laiką. Vykdymo laiko kūrinys valdo FMU gyvavimo ciklą, įvykių ir nuolatinio laiko režimus, kintamųjų prieigą, įvesties išvestines, kryptines ir adjungtines išvestines, Jacobi kešą, laikrodžius ir būsenos serializavimą. Nė vienas iš to nėra naudingas, jei skaitiniu sluoksniu negalima pasitikėti, kai jis juda per aparatinę įrangą. Solveris gali būti protingas. Modelis gali būti elegantiškas. Jei tam pačiam paleidimui reikia trijų suderinimų, elegancija dažniausiai yra tik baldai.

Pasirinkti Q16.16, Q31.32 arba Dec64_6 nėra kosmetinis sprendimas. Tai parodo, ko modeliui reikia iš diapazono, būsenos, laiko ir audito paviršių.

Bendra modeliavimo sąveika yra ten, kur mažos apgaulės tampa brangios

Vienas FMU jau yra pakankamai darbo. Keli sujungti FMU yra ten, kur skaitinės ir operacinės klaidos tampa socialinės. Šiluminis modelis maitina valdymo modelį, valdymo modelis maitina pavaros modelį, pavaros modelis maitina mechaninį modelį, ir visi tikisi, kad žingsnių tvarka tyliai nesukuria nesąmonių. Bendra modeliavimo sąveika reikalauja ryšių valdymo, vykdymo tvarkos, duomenų mainų, žingsnių koordinavimo, algebrinių kilpų tvarkymo ir būdo pasakyti ne, kai grafikas yra neteisingas.

Šaltinis turi fmi-orchestration šiam darbui. Jis tvarko kelių FMU bendrą modeliavimo sąveiką, ryšius, ciklų aptikimą, topologinį rūšiavimą, padalijimų planavimą, algebrinių kilpų aptikimą ir sprendimą, reikšmių istoriją, vykdymo tvarką, modeliavimo laiką ir orkestravimo statistiką. Yra fmi-cc ryšiui tarp sujungtų FMU ir fmi-dist paskirstytam vykdymui su koordinatoriais, mazgų registracija, pranešimais, žingsnių užklausomis, žingsnių atsakymais ir būsenos reikšmėmis. Tai tokia mechanika, kurią žmonės pamiršta, kai sako, kad integracija yra tik išėjimų sujungimas su įėjimais. Taip, tai sujungimas. Tai taip pat laikas, priklausomybių valdymas, būsena, gedimai ir įrodymas, kad sujungimas padarė tai, ką sakė.

Bendrasis modeliavimas (co-simulation) taip pat daro determinizmą svarbesnį, o ne mažiau svarbų. Jei vienas FMU šiek tiek nukrypsta ir ta reikšmė perduodama kitam FMU, neatitikimas gali plisti. Jei vykdymo tvarka keičiasi tarp mazgų, neatitikimas gali pasislėpti iki vėlesnio žingsnio. Jei vienas backend'as naudoja šiek tiek kitokį matematinį kelią, neatitikimas gali atrodyti kaip modelio elgsena. Taip komandos baigia derinti fiziką su posėdžių protokolais. Niekas neturėtų to daryti, nebent praeitame gyvenime buvo labai blogas.

Backend'ai yra diegimo pasirinkimai, o ne naujos tiesos

Šaltinio medis atskiria vykdymo tikslus į backend'ų paketus: CPU, GPU, FPGA, edge ir paskirstytąjį. Edge backend'as orientuotas į ribotus įrenginius, ribotą atmintį ir mažas papildomas sąnaudas. FPGA backend'as kalba apie fiksuoto kablelio aritmetiką, DMA perdavimus, bitų srauto valdymą, branduolio vykdymą ir aparatūros-in-kilpos (hardware-in-the-loop) režimą. Paskirstytasis paketas koordinuoja kelis mazgus. Viešame puslapyje aprašomi CPU SIMD, GPU, FPGA, edge ir paskirstytieji keliai. Tai nereiškia, kad kiekvienas tikslas yra vienodai subrendęs kiekvienam darbo krūviui. Tai reiškia, kad architektūra laiko backend'o pasirinkimą pirmos klasės rūpesčiu.

Pagrindinis dizaino principas yra tas, kad diegimas turėtų keisti tai, kur modeliavimas vyksta, o ne tai, ką modeliavimas reiškia. CPU kelias gali būti lengviausias kūrimui ir patikrai. GPU kelias gali būti prasmingas dideliems lygiagretiems darbo krūviams. FPGA kelias gali būti reikalingas realaus laiko arba aparatūros-in-kilpos režimui. Edge kelias gali būti reikalingas šalia mašinos. Paskirstytasis vykdymas gali būti reikalingas didelėms susietoms sistemoms. Tai yra veiklos pasirinkimai. Jie neturėtų sukurti naujos skaitinės tapatybės modeliui.

Backend'ai yra vietos paleisti modelį, o ne vietos, kur modelis įgauna naują asmenybę. Sutartis turi keliauti kartu su diegimu.

Čia taip pat svarbus atvirasis kodas. Saugos, energetikos, robotikos, medicinos prietaisų, automobilių, aviacijos, pramoninio valdymo ir skaitmeninių dvynių srityse atkuriamumo teiginiai negali gyvuoti tik pardavėjų skaidrėse. Kažkas turi patikrinti įgyvendinimą, užfiksuoti versiją, paleisti testus, perskaityti gedimų atvejus ir nuspręsti, ar įrodymai yra pakankami. Atvirojo kodo FMI įgyvendinimas suteikia komandoms geresnį kelią į tuos įrodymus. Jis nieko stebuklingai nesertifikuoja. Jis daro darbą patikrinamą, o tai yra pirmas naudingas žingsnis.

Patikra turėtų būti vartai, o ne prietaisų skydelis

Dweve FMI patikros istorija yra ne tik apie gražius pėdsakus. README ir svetainė aprašo MPFR atskaitos patikras, tarp-backend'ų lygiavertiškumą, deterministinį atkūrimą, atitikties testus, fuzzing'ą ir tipizuotus gedimus. Šaltinyje yra fmi-test, fmi-fuzz, fmi-bench, fmi-conformance, savybių testai, fuzz'ų įrankiai ir būsenos serializavimas. Tai teisinga kryptis. Modeliavimo infrastruktūroje patikra neturėtų būti prietaisų skydelis, kuriame raudona linija atrodo nerimą kelianti ir kažkas žada ją stebėti. Ji turėtų būti vartai.

Vartai turi kelias dalis. Importas turi teisingai išanalizuoti FMU archyvą ir modelDescription. Schemos patikra turi atmesti neteisingus kintamųjų apibrėžimus, priklausomybes, laikrodžius ir atributus. Skaitinėms patikroms reikia orakulo, kai teiginys yra apie tikslumą. Backend'ų paritetui reikia tos pačios būsenos visuose vykdymo tiksluose. Atkūrimui reikia išsaugotos būsenos ir įvykių žurnalų, kad būtų galima atkurti vykdymą. Gedimams reikia tipizuotų klaidų, o ne paslaptingos neatitikimo ataskaitos, kuri siunčia komandą knaisiotis po žurnalus. Neatitikimas turėtų blokuoti leidimo kelią, kol jis nėra suprastas arba aiškiai priimtas. Tai skamba griežtai tik tuo atveju, jei alternatyva dar neišrašė jums sąskaitos.

Validavimas yra naudingas tada, kai jis padeda priimti sprendimą. Importas, orakulo patikros, backendų atitiktis, atkūrimas ir tipizuoti gedimai kartu paverčia tapatybę išleidimo vartais.

Kur tai svarbiausia

Akivaizdžiausios sritys yra tos, kuriose modeliavimo klaidos tampa fizinėmis klaidomis: automobilių pramonė, aviacija, pramoninis valdymas, medicinos įrenginiai, energetika, robotika ir infrastruktūra. Stabdžių modelis, siurblio valdiklis, tinklo modelis, robotų ląstelė, gamyklos linija ar ŠVOK valdiklis netampa saugesnis vien todėl, kad skaidrėje parašyta skaitmeninis dvynys. Jis tampa saugesnis tada, kai modelis, įvestys, skaitinė konfigūracija, backendas, versija ir atkūrimo pėdsakas yra pakankamai kontroliuojami, kad būtų galima atlikti tyrimą.

Čia yra ir viešųjų pirkimų aspektas, nes, žinoma, jis yra. Jei kiekvienam backendui reikia atskiros validavimo istorijos, kiekvienas aparatinės įrangos pakeitimas tampa maža pakartotinio sertifikavimo procedūra. Jei tą patį FMU galima įrodyti vieną kartą ir tada paleisti jį tiksliniame įrenginyje, atitinkančiame eksploatacinius apribojimus, komandos įgyja laisvę neapsimesdamos, kad validavimas yra nemokamas. Svetainė tai apibūdina kaip įrodyti vieną kartą ir paleisti bet kur. Inžinerinis vertimas yra šiek tiek mažiau romantiškas: sumažinti vietų, kuriose tas pats modelis gali nesutarti su savimi, skaičių.

Tai ypač aktualu Europoje. Suverenumas yra ne tik tai, kur yra serveris. Tai taip pat ir tai, ar saugos atvejį galima patikrinti, pakartoti ir perkelti neprašant vieno tiekėjo leidimo. Atviras įgyvendinimas, deterministinė aritmetika, atkuriamas atkūrimas ir backendų atitiktis savaime neišsprendžia politikos. Tačiau jie daro techninę dalį mažiau priklausomą nuo juodosios dėžės su pardavimų komanda.

Ką peržiūrėti prieš pasitikint

Pirmasis peržiūros klausimas yra, kuriuos FMI 3.0 paviršius jūsų modelis iš tikrųjų naudoja. Model Exchange, Co-Simulation, Scheduled Execution, laikrodžiai, išvestinės, įvykiai, dvejetainiai kintamieji, eilutės, masyvai ir priklausomybės nėra tas pats darbo krūvis. Paprastas FMU ir susietas kelių FMU modeliavimas kelia skirtingą spaudimą vykdymo aplinkai ir orkestratoriui.

Antrasis klausimas yra, kokį skaitinį profilį modelis deklaruoja ir kodėl. Jei atsakymas yra koks numatytasis veikė pavyzdyje, tai nėra dizainas. Profilis turi atitikti diapazoną, skiriamąją gebą, laiko vaizdavimą, leistiną nuokrypį ir diegimo tikslą. Jis turi būti pakankamai matomas, kad recenzentas galėtų jį užginčyti neskaitęs viso sprendiklio.

Trečiasis klausimas yra, kokie įrodymai keliauja kartu su rezultatu. Kuri šaltinio versija? Kuri FMU versija? Kuris modelDescription? Kuris Numerus profilis? Kuris backendas? Kurie orakulo patikrinimai? Kuris atkūrimo būsena? Kurie atitikties ar savybių testai? Jei šie atsakymai yra išsibarstę po vikį ir kažkieno atmintį, modeliavimas dar nėra pasirengęs, kad juo būtų pasitikima rimtame darbo sraute.

Pamoka

Dweve FMI pamoka nėra ta, kad modeliavimo standartai yra nuobodūs. Jie yra nuobodūs lygiai taip, kaip tiltai yra nuobodūs, kai jie stovi. FMI suteikia mainų apvalkalą. Numerus pagrįsta fiksuoto taško aritmetika suteikia deterministinę aritmetikos laikyseną. Vykdymo ir sprendiklio kūriniai priverčia modelį žengti žingsnį. Orkestravimas sujungia FMU neapsimesdamas, kad laikas yra nereikšmingas. Backendai perkelia vykdymą į aparatinę įrangą, kuri tinka darbui. Validavimas paverčia tapatybę vartais, o ne viltimi.

Tai ir yra darbas. Ne didingas teiginys, kad skaičiai išspręsti amžiams. Ne blizganti demonstracija, kurioje viskas sutampa, nes buvo išbandytas tik vienas kelias. Modeliavimo sistema, kuri žino savo formatus, deklaruoja savo skaitinę sutartį, veikia įvairiuose backenduose ir garsiai žlunga, kai tas pats modelis nustoja būti tas pats modelis.

Modelis neturėtų įgyti asmenybės. Jų turime pakankamai susitikimuose.