Iforġa u tfittxija li jaqilgħu l-prova tagħhom
The old trick problem
Every serious software system has a few pieces of code that matter far more than their size suggests. A loop that runs millions of times. A bit operation in a compression path. A small matrix routine. A modular arithmetic kernel. The sort of thing that looks harmless in code review and then quietly decides the energy bill, the latency budget, or the number of machines you need to buy. Very democratic, software. One tiny function can ruin the meeting for everyone.
Historically, those kernels are improved by people. A senior engineer remembers a trick from a paper. Someone digs through an old forum post. A benchmark suite is written. A few candidates are tried. The fastest one wins if it still appears correct. Then the organization freezes it, because touching it again feels like poking a sleeping transformer with a fork.
Forge is research into a better version of that process. It is a program synthesis engine for small, critical implementations: give it a typed specificationand properties, let it search candidate programs, measure and compare tradeoffs, verify equivalence, then lower the discovered implementation to targets that matter. The important word is not search. The important word is still. It still has to be correct.
This is why Forge lives in research. It is not a public product button where someone types make faster and receives a miracle. It is a synthesis workbench for partner experiments, kernel discovery, and research on how far automated search can go when it is tied to verification instead of benchmark theatre.
A specification is the starting line
Optimization without a specification is just gambling with nicer variable names. The moment a clever candidate appears, the team needs to know what it is meant to preserve. Does it handle every input or only the friendly ones from the benchmark? Does itrespect overflow behaviour? Is the algebraic identity valid under the representation actually used? Does it keep the same semantics when lowered to a different backend?
Forge starts from typed expressions and properties because the search needs a boundary. The boundary says what counts as equivalent. Without it, the engine can find something astonishingly fast by deleting half the work. Computers are excellent at malicious compliance when the contract is vague.
The search side is deliberately plural. Enumerative search is useful when the space is small enough to cover. CEGIS is useful when counterexamples can guide refinement. Genetic programming and MCTS explore differently. ML-guided search can learn cost models and prioritize promising regions. None of these is universally best. That is not a weakness. It is how search behaves in the real world. If one hammer solved every kernel, toolboxes would be very boring and hardware vendors would be unemployed.
The research question is how to combine those engines with enough proof pressure that the result is not merely clever. A synthesized kernel has to survive both the happy-path benchmark and the unhappy-path verifier. Otherwise the improvement is not engineering. It is a magic trick with a maintenance cost.
The verifier is the adult in the room
Forge juża munzell ta' verifikazzjoni għax l-ebda kontroll wieħed ma jkun biżżejjed għal kull qasam. Eżempji veloċi huma rħas u utli. Testijiet ta' proprjetajiet isibu klassijiet wesgħin ta' żbalji u jnaqqsu kontro-eżempji f'xi ħaġa li bniedem jista' jaqra. Solvers SMT bħal Z3 u CVC5 jistgħu jippruvaw l-ekwivalenza fejn l-inkodifikazzjoni tkun tista' tiġi ttrattata. Iċċekkjar eżawrjenti huwa prattiku għal oqsma żgħar. Saturizzazzjoni ta' ekwivalenza b'e-graphs tagħti triq oħra permezz ta' ekwivalenza alġebrika.
Il-munzell huwa importanti għax il-kernels ifallu b'modi tedjanti. Kandidat jista' jgħaddi minn kull benchmark ordinarju u xorta jkun ħażin f'każ fuq it-tarf. Jista' jkun korrett għal inputs mhux iffirmati u ħażin għal dawk iffirmati. Jista' jkun korrett f'qasam matematiku u ħażin wara li r-rappreżentazzjoni magħżula tagħmel overflow. Jista' jkun korrett qabel il-lowering u sottilment ħażin wara deċiżjoni ta' għażla ta' istruzzjonijiet. Il-verifikatur jeżisti għax l-ottimiżmu mhuwiex strateġija ta' ttestjar. Iċċekkjajna. Diversi drabi. U jibqa' veru.
Hemm ukoll raġuni prattika biex iżżomm diversi rotot ta' prova. Metodi formali huma qawwija, iżda mhumiex b'xejn. Xi inkodifikazzjonijiet jispiċċaw bla ħin. Xi oqsma huma kbar wisq għal iċċekkjar eżawrjenti. Xi proprjetajiet huma aktar faċli biex jiġu ttestjati b'mod probabbilistiku l-ewwel u ppruvati wara. Forge jittratta l-verifikazzjoni bħala lembut, mhux ritwal ta' purità. Kontrolli rħas jirrifjutaw nonsense ovvju. Kontrolli aktar b'saħħithom jipproteġu l-kandidat finali.
Veloċi mhuwiex numru wieħed
Ix-xogħol fuq il-prestazzjoni jsir redikoli meta metrika waħda titħalla tiddomina kull konversazzjoni. Il-latenza importanti. L-għadd ta' operazzjonijiet importanti. L-użu tal-memorja importanti. Il-pressjoni fuq ir-reġistri importanti. Il-ħin tal-kompilazzjoni kultant importanti. Il-portabbiltà importanti meta l-istess kernel ikollu jgħix fuq aktar minn backend wieħed. Kandidat li jirbaħ fil-latenza billi jaħraq ir-reġistri bħal nar żgħir jista' jkun ħażin għall-mira attwali. Kandidat li huwa żgħir iżda bil-mod jista' jkun utli x'imkien ieħor. Il-kuntest jibqa' rebbieħ.
Għalhekk Forge jqis l-ottimizzazzjoni bħala problema ta' Pareto. Il-magna tista' tfittex fost l-objettivi minflok tippretendi li hemm punteġġ universali wieħed mogħti minn spreadsheet kunfidenti ħafna. L-output utli mhuwiex dejjem l-aktar kandidat veloċi. Kultant huwa familja ta' kandidati b'tradeoffs viżibbli, biex inġinier jagħżel dak li jaqbel mal-istrizzjoni tad-deploy.
Din hija wkoll ir-raġuni għaliex ma nħobbx pretensjonijiet ta' titjib fil-veloċità għerwenin f'blog posts. Il-paġna tar-riċerka tista' tiddeskrivi aspettattivi interni u għanijiet sperimentali, iżda pretensjonijiet pubbliċi jeħtieġu runs friski, hardware attwali, flags attwali tal-kompilatur, u kuntest eżatt tax-xogħol. Inkella n-numru jsir tifkira. It-tifkiriet huma sbieħ. Mhumiex arkitettura.
Il-pretensjoni onesta hija aktar b'saħħitha xorta waħda: Forge huwa dwar li r-riċerka ssir riproduċibbli, komparabbli, u kontrollabbli. Meta kandidat jirbaħ, għandna nkunu nafu liema objettiv rebaħ, liema kandidati għeleb, liema verifikatur aċċettah, u liema backend jimmira. Dan huwa ħafna aktar utli minn numru li jtir f'preżentazzjoni u jidher għali.
Il-lowering huwa fejn il-provi jmorru biex jiġu ttestjati
Implementazzjoni skoperta hija utli biss jekk tibqa’ ħajja matul il-vjaġġ lejn it-targets reali. Ir-riċerka ta’ Forge tkopri l-lowering lejn backends bħal x86-64, RISC-V, WASM, mogħdijiet GPU Vulkan, C u Verilog. Dik il-lista ta’ targets mhix dekorazzjoni. Kull backend għandu l-vinkoli tiegħu, il-forom ta’ istruzzjonijiet, l-imġiba tal-memorja, u l-modi ta’ falliment. L-istess speċifikazzjoni trid iżżomm it-tifsira tagħha waqt li l-implementazzjoni ssir xi ħaġa li t-target jista’ fil-fatt imexxi.
Hawnhekk is-sinteżi tgħaqqad mal-bqija tal-istack ta’ Dweve. Core irid loops interni effiċjenti. Numerus jieħu ħsieb kernels numeriċi deterministiċi. BitWeave irid operazzjonijiet binarji ta’ vetturi u matriċi li ma jaħlux il-CPU. Kera jieħu ħsieb il-lowering ta’ grafi ta’ komputazzjoni lejn hardware reali. Forge jista’ jitma’ dawk is-saffi biss jekk l-implementazzjoni ġġenerata tkun aktar minn sempliċiment veloċi. Trid tkun ekwivalenti, portabbli biżżejjed għat-target magħżul, u ispettabbli meta xi ħaġa tinbidel.
X’inbidel għat-timijiet
Għal tim, il-bidla interessanti mhijiex li magna tista’ tiskopri kernel aktar veloċi. Hija li x-xogħol tal-kernels isir inqas dipendenti fuq il-folklor. Minflok espert wieħed jiftakar it-trick it-tajjeb, il-proċess isir: stqarr il-kuntratt, fittex fl-ispazju, kejjel il-kandidati, ipprova l-ekwivalenza, irrekordja l-kompromess, u iġġenera l-kodiċi tat-target. Il-bnedmin xorta jiddeċiedu. Huma biss jieqfu jagħmlu l-iskoperta kollha bl-idejn.
Dan huwa importanti għall-operazzjonijiet għax id-dejn tal-prestazzjoni huwa għali b’mod li l-organizzazzjonijiet spiss jaħbu. Kernel bil-mod ifisser aktar servers. Aktar servers ifissru aktar spiża, aktar enerġija, aktar kumplessità ta’ skjerament, u aktar storbju fl-ippjanar. Ottimizzazzjoni żbaljata ssir inċidenti. Trick korrett iżda mhux dokumentat isir riskju ta’ migrazzjoni fil-futur. Forge huwa riċerka biex jitnaqqas dak il-munzell ta’ nonsense li jista’ jiġi evitat.
Hemm ukoll bidla kulturali. Ix-xogħol manwali tal-prestazzjoni spiss jippremja l-eroiżmu. Xi ħadd jisparixxi fl-għar u jirritorna b’hack clever. Kulħadd japplaudi, ħadd ma jifhmu bis-sħiħ, u l-kumpanija tkun akkwistat oġġett sagru żgħir. Forge jimbutta l-proċess lejn l-evidenza: hawn l-ispeċifikazzjoni, hawn ir-rotta tat-tiftix, hawn il-kandidati miċħuda, hawn il-verifikatur, hawn il-backend magħżul. Inqas mitoloġija. Aktar irċevuti.
Fejn ix-xogħol għadu diffiċli
Xejn minn dan ma jagħmel is-sinteżi faċli. L-ispeċifikazzjonijiet huma diffiċli. Jekk l-ispeċifikazzjoni tkun ħażina, il-magna tista’ tiskopri b’fedeltà l-ħaġa ħażina. L-ispazji tat-tiftix jistgħu jisplodu. Is-solvers jistgħu jiskadu. Il-mudelli tal-ispiża jistgħu jqarrqu. Il-backends jistgħu jesponu dettalji li l-espressjoni astratta ma kinitx tinkwieta dwarhom. Il-verifikazzjoni tista’ tkun b’saħħitha f’dominju wieħed u skomda f’ieħor. Kull min ibigħ is-sinteżi tal-programmi bħala magna tal-bejgħ għal kodiċi ottimali jew qed jaqbeż il-partijiet diffiċli jew qed jiċċarġja aktar għad-diżappunt.
Forge huwa interessanti preċiżament għax jiffaċċja dawk il-partijiet diffiċli direttament. Jgħaqqad diversi strateġiji ta’ tiftix. Iżomm il-verifikazzjoni qrib. Jittratta l-għanijiet bħala kompromessi. Jimmira lejn backends reali. Jibqa’ programm ta’ riċerka għax għadna qed nitgħallmu fejn tinsab il-konfini bejn l-iskoperta awtomatika, il-ġudizzju uman, il-limiti tas-solvers, u r-realtà tal-iskjerament.
Dik il-konfini jiswa li tiġi esplorata. L-industrija tas-softwer għandha wisq loops interni żgħar, wisq folklor ta’ prestazzjoni duplikat, u wisq ottimizzazzjonijiet li ħadd ma jrid imiss aktar. Jekk Forge jista’ jibdel anki parti minn dak ix-xogħol fi proċess ta’ evidenza ripetibbli, ir-riżultat mhux biss kodiċi aktar veloċi. Huwa kodiċi aktar kalm. Il-kodiċi kalm huwa sottovalutat, l-aktar minn nies li qatt ma ġew imsejħa fis-02:17.
X’għandu bżonn run tajjeb ta’ Forge
Esperiment serju ta’ Forge jibda qabel ma jaħdem il-magna. It-tim irid iġib kernel reali, mhux ilment vag dwar il-prestazzjoni. Għandu bżonn inputs rappreżentattivi, każijiet ta’ truf magħrufa, hardware fil-mira, benchmarks attwali, u r-raġuni tan-negozju għaliex dan il-kernel huwa importanti. Inkella l-magna tas-sinteżi tista’ tqatta’ ħafna ħin issolvi problema li fil-fatt ħadd ma għandu. L-għodod tar-riċerka mhumiex immuni għal input ta’ skart. Huma biss jagħmlu l-iskart aktar għali biex jiġi eżaminat.
L-aktar input utli huwa kuntratt żgħir u preċiż. X’suppost tikkalkula l-funzjoni? Liema liġijiet alġebrin huma importanti? Liema mġiba ta’ overflow hija intenzjonata? Liema meded huma impossibbli mill-kostruzzjoni, u liema sempliċiment ma seħħewx fl-aħħar run tat-test? Liema outputs jistgħu jittolleraw approssimazzjoni, u liema ma jistgħux? Tim li ma jistax iwieġeb dawk il-mistoqsijiet probabbilment għadu m’għandux problema ta’ ottimizzazzjoni. Għandu problema ta’ kjarifika tal-prodott liebsa kappell ta’ kompilatur.
Run tajjeb għandu bżonn ukoll pożizzjoni fil-mira. x86-64 u RISC-V mhumiex l-istess. WASM għandu restrizzjonijiet differenti. Il-mogħdijiet tal-GPU Vulkan jimpurtahom mill-forom u mill-moviment tal-memorja. Verilog iqajjem mistoqsijiet tal-hardware li timijiet normali ta’ applikazzjonijiet rari jgawdu qabel il-kafè. Forge jista’ jesplora t-tnaqqis tal-mira, imma ma jistax jiddeċiedi l-prijoritajiet organizzattivi. Jekk il-portabbiltà tiswa aktar mill-veloċità fuq mira waħda, għidu. Jekk il-latenza tegħleb il-memorja, għidu. Jekk il-pressjoni tar-reġistri hija l-limitu prattiku, għidu wkoll. Il-magna hija qawwija, mhux psikika.
L-output għandu jiġi ttrattat bħala pakkett ta’ evidenza. Kandidat, objettiv, rotta ta’ prova, kontro-eżempji miċħuda, backend, kuntest tal-benchmark, u kawteli miftuħa. Dak il-pakkett huwa dak li jħalli lill-bnedmin jieħdu deċiżjoni sensibbli. Kultant il-mossa rebbieħa hija li tadotta l-kandidat. Kultant hija li żżomm il-kernel l-antik għax il-kompromess tal-portabbiltà ma jiswax. Kultant l-iskoperta hija li l-ispeċifikazzjoni kienet laxka wisq. It-tliet riżultati kollha huma utli. Wieħed biss minnhom jidher eċċitanti f’dimostrazzjoni, u għalhekk id-dimostrazzjonijiet huma sostitut fqir għall-inġinerija.
Il-lezzjoni
Il-lezzjoni ta’ Forge hija sempliċi: il-prestazzjoni m’għandhiex taqbeż il-prova. It-tiftix huwa qawwi, imma magna ta’ tiftix mingħajr verifikazzjoni hija biss mod enerġetiku ħafna kif toħloq bugs. Il-verifikazzjoni hija qawwija, imma mingħajr tiftix tistenna lill-bnedmin iġibu l-kandidati. Forge jqiegħed it-tnejn flimkien u jistaqsi liema kernels nistgħu niskopru meta l-magna titħalla tesplora, imma ma titħalliex tigdeb.
Dik hija r-riċerka li jiswa li ssir. Speċifikazzjonijiet ittajpjati, tiftix ta’ kandidati, imtieken ta’ prova, objettivi Pareto, u tnaqqis tal-backend. Mhux maġija. Mhux shortcut tal-prodott. Mod kif tagħmel kodiċi żgħir aħjar b’evidenza mehmuża.