"It is makliker te beantwurdzjen dan stil te bliuwen" - in geweldich ynterview mei de heit fan transaksjoneel ûnthâld, Maurice Herlihy

Maurice Herlihy - de eigner fan twa Dijkstra Prizen. De earste is foar wurk "Wachtfrije syngronisaasje" (Brown University) en de twadde, mear resinte, - "Transaksjeûnthâld: arsjitektoanyske stipe foar slûsfrije gegevensstruktueren" (Virginia Tech University). De Dijkstrapriis wurdt útrikt foar wurken dêr't de betsjutting en ynfloed al op syn minst tsien jier op te merken binne en, fansels, Maurice is ien fan de bekendste spesjalisten op it mêd. Hy is op it stuit heechlearaar oan Brown University en hat alinea-lange prestaasjes. No is hy dwaande mei blockchain-ûndersyk yn 'e kontekst fan klassike ferspraat komputer.

Earder is Maurice al nei Ruslân kommen foar SPTCC (fideoband) en makke in treflike gearkomste fan 'e JUG.ru Java-ûntwikkeldersmienskip yn Sint Petersburg (fideoband).

Dizze habrapost is in geweldich ynterview mei Maurice Herlihy. It besprekt de folgjende ûnderwerpen:

  • Ynteraksje tusken akademy en yndustry;
  • Stifting foar ûndersyk nei blockchain;
  • Wêr komme trochbraakideeën wei? Ynfloed fan populariteit;
  • PhD ûnder begelieding fan Barbara Liskov;
  • De wrâld wachtet op multi-core;
  • Nije wrâld, nije problemen. NVM, NUMA en arsjitektuer hacking;
  • Kompilators vs CPUs, RISC vs CISC, dielde ûnthâld vs berjocht trochjaan;
  • De keunst fan it skriuwen fan kwetsbere multi-threaded koade;
  • Hoe kinne jo learlingen leare hoe't jo komplekse multi-threaded koade skriuwe;
  • Nije edysje fan it boek "The Art of Multiprocessor Programming";
  • Hoe waard transaksjoneel ûnthâld útfûn?   
  • Wêrom is it de muoite wurdich om ûndersyk te dwaan op it mêd fan ferspraat komputer;
  • Hat de ûntwikkeling fan algoritmen stoppe, en hoe om te libjen;
  • Wurk oan Brown University;
  • It ferskil tusken universitêr en bedriuwsûndersyk;
  • Hydra en SPTDC.

Ynterviews wurde útfierd troch:

Vitaly Aksenov - op it stuit in post-doc by IST Eastenryk en in meiwurker fan 'e ôfdieling Computer Technologies by ITMO University. Hy is dwaande mei ûndersyk op it mêd fan teory en praktyk fan kompetitive datastruktueren. Foardat hy by IST kaam, krige hy syn PhD fan 'e Paris Diderot University en ITMO University ûnder prof. Petr Kuznetsov.

Alexey Fedorov is in produsint by JUG Ru Group, in Russyske bedriuw dat organisearret konferinsjes foar ûntwikkelders. Alexey die mei oan 'e tarieding fan mear as 50 konferinsjes, en syn resume befettet alles fan' e posysje fan in ûntwikkelingsingenieur by Oracle (JCK, Java Platform Group) oant de posysje fan in ûntwikkelder by Odnoklassniki.

Vladimir Sitnikov is in yngenieur by Netcracker. Foar tsien jier hat hy wurke oan 'e prestaasjes en skalberens fan NetCracker OS, software brûkt troch telekomoperators om prosessen foar behear fan netwurk- en netwurkapparatuer te automatisearjen. Ynteressearre yn prestaasjesproblemen fan Java en Oracle Database. Skriuwer fan mear as in tsiental prestaasjesferbetterings yn 'e offisjele PostgreSQL JDBC-bestjoerder.

Ynteraksje tusken akademy en yndustry

Alexey: Maurice, jo hawwe in heul lange tiid yn 'e akademy wurke en de earste fraach giet oer de ynteraksje tusken akademy en yndustry. Kinne jo ús fertelle hoe't de ynteraksjes tusken har de lêste tiid binne feroare? Wat wie 20-30 jier lyn en wat bart der no? 

Maurice: Ik haw altyd besocht nau gear te wurkjen mei kommersjele bedriuwen, om't se ynteressante útdagings hawwe. As regel binne se net tige ynteressearre yn it publisearjen fan har resultaten of yn detaillearre ferklearrings fan har problemen oan 'e wrâldmienskip. Se binne allinnich ynteressearre yn it oplossen fan dizze problemen. Ik wurke in skoft foar guon fan dizze bedriuwen. Ik haw fiif jier fulltime wurke yn in ûndersykslabo by Digital Equipment Corporation, dat eartiids in grut kompjûterbedriuw wie. Ik wurke ien dei yn 'e wike by Sun, by Microsoft, by Oracle, wurke in bytsje by Facebook. No gean ik mei sabbatical ferlof (in heechlearaar oan in Amerikaanske universiteit mei sa'n fakânsje sa'n ien kear yn de seis jier in jier nimme) en wurkje yn Algorand, dit is sa'n cryptocurrency bedriuw yn Boston. It nau gearwurkjen mei bedriuwen wie altyd in genot, want sa learst nije en nijsgjirrige dingen. Jo kinne oer it algemien de earste of twadde persoan wêze dy't in artikel publisearje oer in keazen ûnderwerp, ynstee fan stadichoan ferbetterjen fan oplossingen foar problemen dêr't elkenien al oan wurket.

Alexey: Kinne jo ús mear fertelle oer hoe't dit bart?

Maurice: Fansels. Jo witte, doe't ik by Digital Equipment Corporation wie, ik en Elliot Moss, hawwe wy transaksjeûnthâld útfûn. It wie in tige fruchtbere perioade doe't elkenien begon te wêzen ynteressearre yn ynformaasjetechnology. Tagelyk ynbegrepen, hoewol't multi-core systemen noch net bestien. Yn 'e dagen fan Sun en Oracle haw ik in protte wurk dien oan parallelle gegevensstruktueren. By Facebook wie ik belutsen by har blockchain-projekt, dêr't ik net oer prate kin, mar hooplik gau iepenbier wurdt. Takom jier, by Algorand, sil ik wurkje oan in ûndersyksteam dat tûke kontrakten studearret.

Alexey: Yn 'e lêste jierren is blockchain in heul populêr ûnderwerp wurden. Sil it jo ûndersyk helpe? Miskien sil it it makliker meitsje om subsydzjes te krijen of tagong te jaan ta de middels fan bedriuwen dy't wurkje yn 'e yndustry?

Maurice: Ik haw al in lytse subsydzje krigen fan 'e Ethereum Foundation. De populariteit fan blockchain is heul nuttich foar it ynspirearjen fan studinten om op dit fjild te wurkjen. Se binne der tige ynteressearre yn en binne bliid om mei te dwaan, mar soms ha se net yn de gaten dat ûndersyk dat nei bûten ferlokkend klinkt, echt hurd wurk blykt te wêzen. Ik bin lykwols heul bliid om al dizze mystyk om 'e blockchain te brûken, it helpt studinten oan te lûken. 

Mar dat is net alles. Ik bin op 'e advysried fan ferskate blockchain-startups. Guon fan harren kinne slagje, guon fan harren miskien net, mar it is altyd hiel nijsgjirrich om te sjen harren ideeën, studearje se en advisearje minsken. It spannendste is as jo minsken warskôgje om wat te dwaan. In protte dingen lykje earst in goed idee, mar binne se echt?

Stifting foar blockchain-ûndersyk

Vitaly: Guon minsken tinke dat blockchain en har algoritmen de takomst binne. En oare minsken sizze dat it gewoan in oare bubble is. Kinne jo jo miening oer dizze saak diele?

Maurice: In protte fan wat der bart yn 'e blockchain-wrâld wurket net goed, guon binne gewoan oplichting, in protte dingen binne oerskatte. Ik tink lykwols dat d'r in solide wittenskiplike basis is foar dizze stúdzjes. It feit dat de blockchain-wrâld fol is fan ideologyske divyzjes ​​lit it nivo fan opwining en tawijing sjen. Oan 'e oare kant is it net bysûnder foardielich foar wittenskiplik ûndersyk. No, as jo in artikel publisearje dat praat oer de tekoarten fan in bepaald algoritme, is de ûntfongen reaksje net altyd folslein wittenskiplik. Faak uterje minsken har emoasjes. Ik tink dat sa'n hype op dit gebiet foar guon oantreklik liket, mar op it lêst binne d'r echte wittenskiplike en technyske problemen dy't noch moatte wurde behannele. D'r is hjir in protte Computer Science.

Vitaliy: Dat jo besykje de basis te lizzen foar ûndersyk nei blockchain, krekt?

Maurice: Ik besykje de basis te lizzen foar in solide, wittenskiplik en wiskundich ferantwurde dissipline. En in part fan it probleem is dat jo soms guon fan 'e al te hurde posysjes fan oare minsken moatte tsjinsprekke, om se te negearjen. Soms freegje minsken wêrom't ik wurkje yn in fjild dêr't allinnich terroristen en drugsdealers ynteressearre binne. Sa'n reaksje is like sinleas as it gedrach fan folgers dy't jo wurden blyn werhelje. Ik tink dat de wierheid earne yn 'e midden sit. Blockchain moat noch in djippe ynfloed hawwe op 'e maatskippij en de wrâldekonomy. Mar, wierskynlik, dit sil net barre troch moderne technology. Moderne technologyen sille ûntwikkelje en wat sil wurde neamd blockchain yn 'e takomst sil hiel wichtich wurde. Miskien sil it net iens lykje op moderne blockchains, dat is in iepen fraach.

As minsken nije technologyen útfine, sille se it blockchain trochgean neame. Ik bedoel, krekt as it hjoeddeiske Fortran hat neat te krijen mei de Fortran-taal út de jierren sechstich, mar elkenien neamt it hieltyd Fortran. Itselde foar UNIX. Wat "blockchain" hjit, moat har revolúsje noch meitsje. Mar ik twifelje oan dat dizze nije blockchain sil wêze lykas wat elkenien hjoed graach brûke.

Wêr komme trochbraakideeën wei? Ynfloed fan populariteit

Alexey: Hat de populariteit fan 'e blockchain liede ta nije resultaten út in wittenskiplik eachpunt? Mear ynteraksje, mear studinten, mear bedriuwen yn it gebiet. Binne d'r resultaten fan dizze groei yn populariteit al?

Maurice: Ik waard ynteressearre yn dit doe't immen joech my in offisjele flyer foar in bedriuw dat hie krekt in soad jild ophelle. Se skreau oer de taak fan de Byzantynske generaalsdêr't ik mear as bekend mei bin. Skreaun yn de folder wie dúdlik technysk ferkeard. De minsken dy't dit skreaunen begrepen it model efter it probleem net echt... en dochs hat dit bedriuw in soad jild ophelle. Dêrnei ferfong it bedriuw dizze folder rêstich troch in folle mear korrekte ferzje - en ik sil net sizze wat de namme fan dit bedriuw wie. Se besteane noch en dogge it hiel goed. Dizze saak oertsjûge my dat, as earste, blockchain gewoan in foarm fan ferdielde komputer is. As twadde wie de yntreedrompel (destiids fjouwer jier lyn) frij leech. Minsken dy't yn dit gebiet wurken wiene tige enerzjyk en tûk, mar se hawwe gjin wittenskiplike papers lêzen. Se besochten bekende dingen opnij út te finen en se diene it ferkeard. Hjoed is it drama fermindere.

Alexey: It is hiel nijsgjirrich, want in pear jier lyn hienen wy in oare trend. It is in bytsje as front-end-ûntwikkeling, wêr't ûntwikkelders fan browser-ynterface hiele technologyen opnij útfûnen dy't tsjin dy tiid al populêr wiene yn 'e efterkant: systemen bouwe, trochgeande yntegraasje, en soksoarte dingen. 

Maurice: Ik mei iens. Mar dit is net ferrassend, om't wier trochbraak ideeën altyd komme fan bûten de oprjochte mienskip. Fêstige ûndersikers, benammen autoriteiten yn 'e akademyske wrâld, sille nei alle gedachten neat echt baanbrekkend dwaan. It is maklik om in rapport te skriuwen foar de folgjende konferinsje oer hoe't jo de resultaten fan jo ferline wurk in bytsje ferbettere hawwe. Gean nei in konferinsje, kom tegearre mei freonen, praat oer deselde dingen. En de minsken dy't ynbrekke mei trochbraakideeën komme hast altyd fan bûten. Se kenne de regels net, se kinne de taal net, mar dochs... As jo ​​binnen in fêste mienskip sitte, ried ik jo oan om omtinken te jaan oan nije dingen, foar eat dat net yn it grutte past foto. Yn in sin kin besocht wurde om eksterne, floeibere ûntjouwings te kombinearjen mei techniken dy't wy al begripe. As earste stap, besykje in wittenskiplike basis te meitsjen, en wizigje it dan sadat it kin wurde tapast op nije trochbraakideeën. Ik tink dat de blockchain geweldig is foar de rol fan in nij trochbraakidee.

Alex: Wêrom tinke jo dat dit bart? Om't minsken "bûten" gjin spesifike barriêres hawwe yn 'e mienskip?

Maurice: Der is in patroan hjir. As jo ​​lêze de skiednis fan de ympresjonisten yn skilderjen en keunst yn it algemien, op in stuit ferneamde keunstners wegere ympresjonisme. Se seine dat it in soarte fan bernetiid wie. In generaasje letter waard dizze earder ôfwiisde keunstfoarm de standert. Wat ik sjoch yn myn fjild: de útfiners fan 'e blockchain wiene net ynteressearre yn macht, yn' e ôfwikkeling fan publikaasjes en citation index, se woene gewoan wat goed dwaan. En sa sieten se en begûnen it te dwaan. It mist in bepaalde mate oan technyske djipte, mar dat is te reparearjen. It is folle dreger om mei nije kreative ideeën te kommen dan it is om ûnfoldwaande folwoeksen ideeën te korrigearjen en te fersterkjen. Mei tank oan dizze útfiners haw ik no wat te dwaan!

Alexey: Dit is gelyk oan it ferskil tusken startups en legacy-projekten. Wy ervje in protte gedachtebeheiningen, barriêres, spesjale easken, ensfh.

Maurice: In goede analogy is ferdield komputer. Tink oan blockchain as wie it in opstart en ferspraat komputer as in grut oprjochte bedriuw. Ferspraat komputer is yn it proses fan kocht en fusearre mei blockchain.

PhD ûnder Barbara Liskov

Vitaliy: Wy hawwe noch in protte fragen! Wy hawwe jo bio ûndersocht en kamen in nijsgjirrich feit oer jo PhD. Ja, it wie lang lyn, mar it ûnderwerp liket wichtich te wêzen. Jo hawwe jo PhD krigen ûnder tafersjoch fan Barbara Liskov! Barbara is heul ferneamd yn 'e mienskip foar ûntwikkeling fan programmeartaal, en in heul ferneamd persoan yn' t algemien. It is logysk dat jo ûndersyk op it mêd fan programmeartalen wie. Hoe binne jo oerstapt nei parallele komputer? Wêrom hawwe jo besletten it ûnderwerp te feroarjen?

Maurice: Op dat stuit seagen Barbara en har groep gewoan nei ferspraat komputer, wat in heul nij idee wie. D'r wiene ek dyjingen dy't seine dat ferspraat komputer ûnsin is, kommunikaasje tusken kompjûters is sûnder betsjutting. Ien fan 'e problemen dy't beskôge wurde yn ferdielde komputer, dy't har ûnderskiedt fan sintralisearre komputer, is fouttolerânsje. Nei in protte ûndersyk hawwe wy besletten dat jo yn in programmeartaal foar ferspraat komputer soksawat moatte hawwe as atoomtransaksjes, om't jo noait wis kinne wêze dat in oprop op ôfstân sil slagje. As jo ​​​​ienris transaksjes hawwe, is d'r in probleem fan kontrôle oer gearfal. Doe wie d'r in protte wurk oan it krijen fan heul parallelle transaksjegegevensstruktueren. Doe't ik ôfstudearre gie ik nei Carnegie Mellon en begûn te sykjen nei in ûnderwerp foar wurk. It kaam my op dat komputearjen fan yndividuele kompjûters nei netwurken fan kompjûters ferpleatst wie. In natuerlike fuortsetting fan foarútgong soe multiprocessors wêze - it wurd "multi-core" bestie doe net. Ik tocht: wat is it ekwivalint fan atomêre transaksjes foar in multi-core systeem? Seker gjin gewoane transaksjes, om't se te grut en swier binne. En sa kaam ik op it idee linearisaasje en dat is hoe't ik kaam mei de hiele wachtfrije syngronisaasje. It wie in besykjen om de fraach te beantwurdzjen fan wat is de analoog fan atoomtransaksjes foar in multiprocessorsysteem mei dielde ûnthâld. Op it earste each kin dit wurk der hiel oars útsjen, mar eins is it in fuortsetting fan itselde tema.

De wrâld wachtet op multi-core

Vitaly: Jo hawwe neamd dat d'r op dat stuit heul pear multi-core kompjûters wiene, krekt?

Maurice: Se bestienen gewoan net. Der wiene ferskate saneamde symmetryske multiprocessors, dy't yn prinsipe ferbûn wiene mei deselde bus. It wurke net sa goed, want elke kear as in nij bedriuw sa'n ding makke, hat Intel in inkele prosessor frijlitten dy't de multiprosessor prestearre.

Alexei: Betsjut dit net dat it yn dy âlde tiden mear in teoretyske stúdzje wie?

Maurice: It wie gjin teoretyske, mar earder in spekulative stúdzje. Dit alles gie net oer it wurkjen mei in protte stellingen, leaver, wy sette hypotezen nei foaren oer de arsjitektuer dy't op dat stuit net bestie. Dêr is ûndersyk foar! Gjin bedriuw soe dit dien hawwe, it wie allegear wat út 'e fiere takomst. Yn feite wie dit oant 2004, doe't echte multi-core processors ferskynden. Fanwege it feit dat de processors oververhit, kinne jo meitsje de prosessor noch lytser, mar do kinst net meitsje it flugger. Hjirtroch wie der in oergong nei multi-core arsjitektuer. En dan betsjutte it dat der ynienen gebrûk wie foar alle begripen dy't wy yn it ferline ûntwikkele hiene.

Alexey: Wêrom tinke jo dat multi-core processors allinich yn 'e XNUMX's ferskynden? Dus wêrom sa let?

Maurice: It komt troch hardware beheiningen. Intel, AMD en oare bedriuwen binne heul goed yn it stimulearjen fan prosessorsnelheden. Doe't de processors op in stuit lyts genôch waarden dat se de kloksnelheid net mear ferheegje koenen, om't de processors begjinne te baarnen. Jo kinne se lytser meitsje, mar net flugger. Wat is yn har macht - ynstee fan in heul lytse prosessor, passe acht, sechstjin of twaëntritich processors yn itselde folume fan 'e saak, wêr't mar ien paste. No hawwe jo multithreading en rappe kommunikaasje tusken har, om't se caches diele. Mar jo kinne se net flugger meitsje - d'r is in heul spesifike snelheidslimyt. Se bliuwe stadichoan ferbetterje, mar net sa folle. De wetten fan de natuerkunde stienen yn 'e wei.

Nije wrâld, nije problemen. NUMA, NVM en arsjitektuer hacking

Alexei: Klinkt hiel ridlik. Mei nije multi-core processors kamen nije problemen. Hawwe jo en jo kollega's dizze problemen ferwachte? Miskien hawwe jo se foarôf bestudearre? Yn teoretyske stúdzjes is it faaks net hiel maklik om sokke dingen te foarsizzen. Wannear't der problemen wiene, yn hoefier foldienen se dan oan jo en jo kollega's oan 'e ferwachtings? Of wiene se splinternij en moasten jo en jo kollega's in protte tiid besteegje oan it oplossen fan problemen as se ûntstienen?

Vitaliy: Ik sil tafoegje oan de fraach fan Alexey: hawwe jo de arsjitektuer fan processors korrekt foarsein wylst jo teory studearre?

Maurice: Net allegear 100%. Mar ik tink dat myn kollega's en ik in goed wurk dien hawwe mei it foarsizzen fan multi-core mei dielde ûnthâld. Ik tink dat wy de swierrichheden korrekt foarsizze by it ûntwerpen fan parallelle gegevensstruktueren dy't sûnder slûzen wurkje. Sokke gegevensstruktueren binne wichtich foar in protte applikaasjes, hoewol net foar allegear, mar faaks hawwe jo echt in slotfrije gegevensstruktuer nedich. Doe't wy se útfûnen, bewearden in protte dat dit ûnsin is, dat alles goed wurket mei slûzen. Wy hawwe goed foarsjoen dat d'r klearmakke oplossingen komme soene foar in protte programmearproblemen en problemen mei gegevensstruktuer. Der wiene ek mear komplekse problemen, lykas YN - Unjildich ûnthâld tagong. Yn feite waarden se net iens beskôge oant de útfining fan multi-core processors, om't se te spesifyk wiene. De ûndersyksmienskip wurke oan fragen dy't oer it algemien foarsisber wiene. Guon hardwareproblemen ferbûn mei spesifike arsjitektuer moasten yn 'e wjukken wachtsje - yn feite, it uterlik fan dizze arsjitektuer. Bygelyks, gjinien wurke echt oan GPU-spesifike gegevensstruktueren, om't de GPU doe net bestie. Hoewol't der in soad wurk oan dien is SIMD, dizze algoritmen wiene klear foar gebrûk sa gau as de juste hardware ferskynde. It is lykwols ûnmooglik om alles te foarsizzen.

Alexey: As ik it goed begryp, is NUMA in soarte fan kompromis tusken kosten, prestaasjes en wat oare dingen. In idee wêrom't NUMA sa let kaam?

Maurice: Ik tink dat NUMA bestiet fanwegen in probleem mei de hardware dy't brûkt wurdt om ûnthâld te meitsjen: hoe fierder de komponinten fuort binne, hoe stadiger se tagong krije. Oan 'e oare kant is de twadde wearde fan dizze abstraksje de uniformiteit fan it ûnthâld. Dêrom is ien fan 'e skaaimerken fan parallele komputer dat alle abstraksjes in bytsje brutsen binne. As tagong wie perfekt unifoarm, soe alle ûnthâld wêze equidistant, mar dit is ekonomysk, en miskien sels fysyk ûnmooglik. Sa ûntstiet dit konflikt. As jo ​​​​jo programma skriuwe as soe it ûnthâld unifoarm wêze, dan sil it wierskynlik korrekt wêze. Yn 'e sin dat it gjin ferkearde antwurden sil jaan. Mar de prestaasjes fan har stjerren út 'e himel sil net gripe. Lykas, as jo skriuwe spinlocks sûnder de hiërargy fan caches te begripen, sil it slot sels korrekt wêze, mar jo kinne prestaasjes ferjitte. Yn in bepaalde sin moatte jo programma's skriuwe dy't boppe op in heul ienfâldige abstraksje libje, mar jo moatte de minsken dy't jo dy abstraksje jûn hawwe oerlêst: jo moatte witte dat ûnder de abstraksje wat hiërargy fan ûnthâld is, dat d'r is in bus tusken dy en dit ûnthâld, ensafuorthinne. Sa is der wat konflikt tusken abstraksjes dy't op harsels nuttich binne, wat ús liedt ta heul spesifike en pragmatyske problemen.

Vitaliy: Hoe sit it mei de takomst? Kinne jo foarsizze hoe't processors fierder sille ûntwikkelje? D'r is in idee dat ien fan 'e antwurden transaksjoneel ûnthâld is. Jo hawwe wierskynlik wat oars op foarried.

Maurice: D'r binne in pear grutte útdagings foarút. Ien is dat gearhingjend ûnthâld in prachtige abstraksje is, mar it begjint yn spesjale gefallen ôf te brekken. Sa, bygelyks, NUMA is in libben foarbyld fan eat dêr't jo kinne bliuwe dwaan as dat unifoarm ûnthâld bestiet. Eins - nee, de foarstelling sil jo gûle meitsje. Op in stuit sille arsjitekten it idee fan in unifoarme ûnthâldarsjitektuer moatte ferlitte, jo kinne net foar altyd pretendearje. Nije programmearmodellen sille nedich wêze dy't maklik genôch binne om te brûken en krêftich genôch om de ûnderlizzende hardware effisjint te meitsjen. Dit is in heul lestich kompromis, want as jo programmeurs de arsjitektuer sjen litte dy't eins wurdt brûkt yn hardware, sille se gek wurde. It is te yngewikkeld en net draachber. As jo ​​in ynterface presintearje dy't te ienfâldich is, sille prestaasjes min wêze. Sa sille in protte heul drege kompromissen moatte wurde makke om nuttige programmearringsmodellen te leverjen dy't fan tapassing binne op echt grutte multi-core processors. Ik bin der net wis fan dat immen oars as in smel spesjalist is by steat om te programmearjen op in 2000-core kompjûter. En útsein as jo tige spesjalisearre of wittenskiplike kompjûters dogge, kryptografy of wat dan ek, is it noch hielendal net dúdlik hoe't jo it goed dwaan moatte. 

In oare ferlykbere rjochting is spesjalisearre arsjitektuer. Grafike fersnellers hawwe west om foar in lange tiid, mar hawwe al wurden in soarte fan in klassyk foarbyld fan hoe't jo kinne nimme in spesjalisearre soarte fan berekkening en rinne it op in tawijd chip. Dit foeget syn eigen útdagings ta: hoe kommunisearje jo mei sa'n apparaat, hoe programmearje jo it. Ik haw koartlyn wurke oan taken yn it gebiet tichtby ûnthâld computing. Jo nimme in lytse prosessor en lijm it oan in enoarm stik ûnthâld, sadat it ûnthâld rint op L1-cache-snelheid, en dan kommunisearret it mei in apparaat lykas TPU - de prosessor is dwaande mei it laden fan nije taken yn jo ûnthâld kearn. De ûntwikkeling fan gegevensstruktueren en kommunikaasjeprotokollen foar dit soarte ding is in oar nijsgjirrich foarbyld. Sa sille spesjalisearre processors en hardware noch in skoft ûnderwurpen wêze oan ferbetteringen.

Alexey: Wat oer net-flechtich ûnthâld (net-flechtich ûnthâld)?

Maurice: Och, dat is noch in geweldich foarbyld! NVM sil de manier wêrop wy sjogge nei dingen lykas gegevensstruktueren sterk feroarje. Net-flechtich ûnthâld, yn in sin, belooft dingen echt te fersnellen. Mar it sil it libben net makliker meitsje, om't de measte processors, caches en registers noch altyd flechtich binne. As jo ​​nei in crash opstarte, sille jo steat en jo ûnthâldstatus net krekt itselde wêze as foar de crash. Ik bin tige tankber foar de minsken belutsen by NVM - foar in lange tiid, ûndersikers sille hawwe wat te dwaan, besykje út te finen de korrekte betingsten. Berekkeningen binne korrekt as se in crash kinne oerlibje wêryn de ynhâld fan 'e caches en registers ferlern giet, mar it haadûnthâld bliuwt yntakt.

Kompilators vs CPU's, RISC vs CISC, dielde ûnthâld vs berjocht trochjaan

Vladimir: Wat tinke jo oer it dilemma fan kompilatoren tsjin processors yn termen fan 'e ynstruksjeset? Om út te lizzen foar dyjingen dy't net yn it ûnderwerp binne: as wy nei unjildich ûnthâld gean of sa, kinne wy ​​​​in heul ienfâldige set ynstruksjes tapasse en de kompilator freegje om komplekse koade te generearjen dy't profitearje kinne fan 'e foardielen. Of wy kinne de oare kant op gean: komplekse ynstruksjes ymplementearje en de prosessor freegje om de ynstruksjes opnij te bestellen en oare manipulaasjes mei har te dwaan. Wat tinkst der fan?

Maurice: Ik haw net echt in antwurd op dy fraach. Dit debat duorret al fjouwer desennia. Der wie in tiid tusken ôfkoarte kommando set en dreech boargeroarloggen waarden fierd troch in set fan teams. In skoftke wûnen de RISC-minsken, mar doe boude Intel har motoren opnij sadat in fermindere ynstruksjeset binnen waard brûkt, en de folsleine waard bûten eksportearre. Miskien is dit in ûnderwerp wêryn elke nije generaasje har eigen kompromissen fine moat en har eigen besluten nimme. It is heul lestich om te foarsizzen hokker fan dizze dingen better útpakke sille. Dus elke foarsizzing dy't ik meitsje sil foar in bepaalde tiid wier wêze, en dan wer in skoftke falsk wurde, en dan wer wier wêze.

Alexey: Hoe gewoan is it foar de yndustry yn it algemien dat guon ideeën oer ferskate desennia winne en yn 'e folgjende ferlieze? Binne der oare foarbylden fan sokke periodike feroarings?

Maurice: Op it mêd fan ferspraat komputer binne d'r minsken dy't yn leauwe dielde ûnthâld en minsken dy't leauwe yn messaging. Oarspronklik yn ferdield komputer, betsjut parallele komputer berjocht trochjaan. Doe ûntduts immen dat dielde ûnthâld it programmearjen folle makliker makke. De oare kant sei dat dielde ûnthâld te yngewikkeld is, om't se slûzen nedich binne en sa, dus it is de muoite wurdich om te ferpleatsen nei talen dêr't neat oars as berjocht trochjaan gewoan bestiet. Immen seach nei wat der út kaam en seit: "wow, dizze ymplemintaasje fan berjochten liket heul op dield ûnthâld, om't jo in protte, in protte fan dizze lytse modules meitsje, se stjoere berjochten nei elkoar, en se allegear deadlock, - lit ús in database mei dielde ûnthâld better meitsje!". Dit alles wurdt werhelle oer en wer, en it is ûnmooglik te sizzen dat ien fan 'e partijen hat ûndûbelsinnich gelyk. De iene kant sil altyd dominearje, want sa gau as ien fan har hast wint, betinke minsken hieltyd wer manieren om de oare te ferbetterjen.

De keunst fan it skriuwen fan brosse multi-threaded koade

Alexei: Dit is heul ynteressant. Bygelyks, as wy koade skriuwe, nettsjinsteande hokker programmeartaal, moatte wy meastal abstraksjes meitsje lykas sellen dy't lêzen en skreaun wurde kinne. Mar yn feite, op guon fysike nivo, kin it lykje as it ferstjoeren fan in berjocht op in hardware bus tusken ferskate kompjûters en oare apparaten. It docht bliken dat der op beide abstraksjenivo's tagelyk wurke wurdt.

Maurice: It is absolút wier dat dielde ûnthâld is boud op it trochjaan fan berjochten - bussen, caches, ensfh. Mar it is lestich om programma's te skriuwen mei it trochjaan fan berjochten, dus de hardware lies mei opsetsin, en docht as jo in soarte fan unifoarm ûnthâld hawwe. Dit sil it makliker meitsje foar jo om ienfâldige, korrekte programma's te skriuwen foardat de prestaasjes begjinne te sakjen. Dan sizze jo: it liket derop dat it tiid is om freonen te meitsjen mei de cache. En dat is as jo begjinne te soargen oer de lokaasje fan 'e cache, en dan geane wy. Yn in sin brekke jo de abstraksje: jo witte dat it net allinich flak, unifoarm ûnthâld is, en jo sille dy kennis brûke om cachefreonlike programma's te skriuwen. Dit is wat jo moatte dwaan yn echte taken. Dit konflikt tusken de moaie ienfâldige moaie abstraksje dy't jo krigen hawwe en de ferskriklik komplekse ymplemintaasje fan 'e ûnderlizzende hardware is wêr't elkenien har eigen kompromis makket. Ik haw in boek oer multiprocessors en syngronisaasje, en op in dei soe ik in haadstik skriuwe oer gegevensstruktueren yn java.util.concurrent. As jo ​​sjogge nei harren, dingen lykas oerslaan listen Dit binne geweldige keunstwurken. (Opmerking fan de redaksje: dejingen dy't bekend binne mei de Java-taal moatte op syn minst efkes sjen nei de ymplemintaasje ConcurrentSkipListMap, Jo kinne sjen op de keppelings foar API и boarnekoade). Mar út myn eachpunt soe it ûnferantwurdlik wêze om se oan studinten sjen te litten, want sa'n datastruktuer is in soarte fan keardel yn in sirkus, dy't op in kûle oer in bearekûle rint. As jo ​​sels ien lyts detail feroarje, sil de hiele struktuer ynstoarte. Dizze koade is heul fluch en elegant krekt om't it perfekt skreaun is, mar de minste feroaring sil liede ta folsleine mislearring. As ik dizze koade as foarbyld jou learlingen, dan sizze se daliks: ik kin dit ek! En dan sil ien of oare fleantúch crashe of in kearnreaktor sil eksplodearje, en it sil myn skuld wêze dat ik har net tefolle ynformaasje op it krekte momint joech.

Alexey: Doe't ik in bytsje jonger wie, besocht ik in protte kearen de boarnekoade fan Doug Lee te studearjen, bygelyks, java.util.concurrent, om't it iepen boarne is, is it heul maklik om it te finen en te besykjen te begripen wat der bart. It slagge net sa goed: faak is it folslein ûndúdlik wêrom't Doug besletten hat om wat op dizze manier te dwaan, as elkenien it oars docht. Hoe ferklearje jo dizze dingen oan jo learlingen? Is d'r in bepaalde korrekte manier om bygelyks de spesifike details fan in hardcore-algoritme te beskriuwen? Hoe dochsto it?

Maurice: Learkrêften tekenje hawwe in klisjee dat se earst ûnthâlde: as jo tekenje wolle lykas Picasso, moatte jo earst leare hoe't jo ienfâldige realistyske ôfbyldings tekenje kinne, en pas as jo de regels kenne kinne jo begjinne te brekken. As jo ​​daliks begjinne mei it brekken fan de regels, krije jo in rommel. Earst lear ik learlingen hoe't se ienfâldige, korrekte koade skriuwe sûnder har soargen te meitsjen oer prestaasjes. Ik sis dat d'r hjir komplekse timingproblemen lizze, dus meitsje jo gjin soargen oer caches, meitsje jo gjin soargen oer ûnthâldmodellen, soargje derfoar dat alles goed wurket. Dat is al dreech genôch: moderne programmearring is op himsels net maklik, benammen foar nije studinten. En as se in yntuysje hawwe oer hoe't se juste programma's skriuwe, sis ik: sjoch nei dizze twa spinlock-ymplemintaasjes: ien is heul stadich, en de twadde is ek net heul goed, mar al better. Wiskundich binne dizze twa algoritmen lykwols itselde. Eins brûkt ien fan har cache-lokaasje. Ien fan harren spin op lokaal cached gegevens, en de oare kearen fiert operaasjes gean troch de bus. Jo kinne net skriuwe effisjinte koade as jo net begripe it, as jo net witte hoe te brekken de abstraksje en sjoch nei de ûnderlizzende struktuer. Mar jo sille net direkt kinne begjinne mei it dwaan. Der binne minsken dy't dit daliks begjinne te dwaan en leauwe yn har eigen sjeny, meastentiids einiget it min om't se de prinsipes net begripe. Nimmen tekenet lykas Picasso of skriuwt programma's lykas Doug Lee, pas fan 'e universiteit, yn syn earste wike. It duorret jierren om dit nivo fan kennis te berikken.

Alexey: It docht bliken dat jo it probleem ferdiele yn twa dielen: de earste is korrektens, de twadde is prestaasjes?

Maurice: Krekt. En, yn dy folchoarder. In part fan it probleem is dat nije studinten net realisearje dat korrektheid dreech te berikken is. Se sizze op it earste each: dit is fansels korrekt, it bliuwt allinich om it te rapperjen. Dat ik fertel se soms oer in ynherinte ferkeard algoritme as wie it korrekt.

Hoe kinne jo learlingen leare hoe't jo komplekse multi-threaded koade skriuwe kinne

Alexei: Gewoan om te sjen oft se de trúk kinne fiele?

Maurice: Ik warskôgje jo altyd foarôf dat ik soms mei de ferkearde algoritmen kom. Jo moatte minsken net ferrifelje. Ik stel foar dat se skeptysk binne oer de ynformaasje. As ik wat fertel en sis: "sjoch, dit is fansels korrekt" - dit is in sinjaal dat se earne besykje jo te ferrifeljen, en jo moatte begjinne mei fragen. Dêrnei besykje ik learlingen oan te moedigjen om fragen te stellen, en dan freegje ik: "wat bart der as wy alles litte sa't it is?". En se sjogge daliks de flater. Mar studinten oertsjûgje dat se har soargen meitsje moatte oer korrektheid is dreger dan it op it earste each liket. In protte fan dizze studinten komme mei programmearring ûnderfining op middelbere skoalle, guon hawwe al lâne banen en programmearre dêr, en se binne allegear fol selsbetrouwen. Dit is wat militêr: jo moatte earst har mentaliteit feroarje om se te oertsjûgjen om geduldich de oplossing fan opkommende problemen oan te pakken. Of miskien is it lykas boeddhistyske muontsen: earst leare se te redenearjen oer korrektheid, en as se ienris de manieren fan redenearjen oer korrektheid begripe, meie se nei it folgjende nivo gean en har soargen meitsje oer prestaasjes.

Alexey: Dat is, soms litte jo studinten net-wurkjende foarbylden sjen, wêrtroch jo feedback krije dy't sjen litte oft se de essinsje fan it probleem begripe, oft se de ferkearde koade en it ferkearde resultaat kinne fine. No, hoe pleagje studinten gewoanlik of oerstjoer?

Maurice: Hast altyd fine de studinten úteinlik de flater. As se te stadich sykje, stel ik liedende fragen, en hjir is it wichtich om te begripen dat as se noait wurde ferrifelje, se sille begjinne jo wurden sûnder gedachte te ûndernimmen as de ultime wierheid. Dan ferfelen se har en falle se yn 'e lessen yn 'e sliep mei it lêzen fan Facebook op har laptop. Mar as jo har fan tefoaren witte litte dat se oplicht wurde sille en dat se der stom útsjen as se de trúk net fiele, wurde se folle waaksiger. Dit is goed yn in protte manieren. Ik soe graach wolle dat studinten net allinich har ferstân fan 'e kwestje freegje, mar ek it gesach fan' e learaar freegje. It idee is dat de studint op elk momint de hân opstekke kin en sizze: Ik tink dat wat jo krekt sein hawwe ferkeard is. It is in wichtich learmiddel. Ik wol net dat ien fan 'e studinten stil by harsels sit en tinkt: dit liket allegear folsleine ûnsin, mar it is te eng om de hân op te stekken, en yndie, hy is professor, dus alles wat er seit is wier. Dêrom, as se foarôf warskôge wurde dat net alles ferteld is needsaaklik wier, hawwe se in stimulâns om mear omtinken te jaan oan it materiaal. Ik ferklearje eksplisyt dat jo hân opstekke en fragen stelle goed is. Jo fraach klinkt miskien dom of naïv, mar dat is faaks hoe't de bêste fragen komme.

Alexei: Hiel nijsgjirrich. Gewoanlik hawwe minsken in soarte fan psychologyske barriêre dy't har foarkomt om de professor in fraach te stellen. Benammen as der in protte minsken yn 'e keamer binne, en elkenien is bang dat it besprekken fan jo domme fraach de tiid fan al dizze minsken nimme sil. Binne d'r trúkjes om dit te behanneljen?

Maurice: Ik stopje faak en stel de klassike fragen. Sil elke ferklearring korrekt wêze, of hoe soene se it probleem ûnder diskusje oplosse. Dit is in wichtige stap, benammen oan it begjin fan in sesje, as minsken ferlegen binne om sels it lytste ding te sizzen. Jo stelle de learlingen in fraach en sizze neat mear. Der is stil, elkenien spant in bytsje, de spanning groeit, dan brekt der ynienen ien, brekt him út en seit it antwurd. Sa ûntwikkelje jo de situaasje: it wurdt dreger en ûngemakliker om te swijen as te antwurdzjen! Dit is in standert pedagogyske trúk. Elke learaar yn 'e wrâld moat witte hoe't dit moat.

Alexey: No hawwe wy in geweldige titel foar dit ynterview: "it is makliker te beantwurdzjen dan stil te bliuwen."

Vitaly: Lit my jo noch ien ding freegje. Jo wurkje oan topologyske bewizen. Hoe binne jo sels hjirby belutsen west, om't ferspraat rekkenjen en topology folslein ferskillende dingen binne!

Maurice: Der is in ferburgen relaasje dêr. Doe't ik studint wie en wiskunde studearre, studearre ik suvere wiskunde. Ik hie gjin echte belangstelling foar kompjûters oant it ein fan myn stúdzje en ik fûn mysels yn 'e driuwende need om in baan te sykjen. As studint studearre ik algebrayske topology. In protte jierren letter, wylst wurkjen oan in probleem neamd "k-Set Agreement Problem", Ik brûkte grafiken om it probleem te modellearjen en, sa't it doe like, in oplossing fûn. Jo moasten gewoan sitte en om 'e grafyk gean. Besykje in gaadlik antwurd te finen op dizze grafyk. Mar myn algoritme wurke net: it die bliken dat hy altyd yn sirkels rûn. Spitigernôch koe neat fan dit ferklearre wurde yn 'e formele taal fan 'e grafteory, de taal dy't alle kompjûterwittenskippers kenne. En doe herinnerde ik my dat wy in protte jierren lyn, sels yn topologyklassen, it konsept brûkten "ienfâldich kompleks", dat is in generalisaasje fan grafiken nei hegere diminsjes. Doe frege ik my ôf: wat bart der as wy it probleem op 'e nij formulearje yn termen fan ienfâldige kompleksen? Dit waard de kaai. Troch in krêftiger formalisme te brûken, wurdt it probleem ynienen folle ienfâldiger. Minsken wrakselen mei it foar in lange tiid, mei help fan grafiken, mar se koenen neat dwaan. En ek no kinne se net - it goede antwurd wie net it algoritme, mar it bewiis fan 'e ûnmooglikheid om it probleem op te lossen. Dat is, sa'n algoritme bestiet gewoan net. Mar elk bewiis fan ûnmooglikheid is basearre of op ienfâldige kompleksen, of op dingen dy't minsken pretendearje net te beskôgjen fan ienfâldige kompleksen. Fan it feit dat jo wat mei in nije namme neamden, ferliest it syn essinsje net.

Vitaliy: It docht bliken dat jo gewoan gelok wiene?

Maurice: Neist gelok is it ek frijheid. Betsjutting, jo moatte de "nutteleaze" dingen net ferjitte dy't jo earder leard hawwe. De mear nutteloze dingen dy't jo leare, hoe mear ynsjoggen jo sille kinne ekstrahearje as jo te krijen hawwe mei in nij probleem. Dit soarte fan yntuïtyf patroanmatching is wichtich om't... Litte wy mar sizze, it is in keatling: yn it begjin fûn ik dat grafiken net hielendal wurken of net wurken, it die my tinken oan wat fan acht jier lyn en studintejierren doe't wy al dizze ienfâldige kompleksen studearren. Op syn beurt koe dit my myn âlde topology-learboek fine en it wer yn myn holle laden. Mar as it net foar dy âlde kennis wie, hie ik noait in foarútgong makke by it oplossen fan it oarspronklike probleem.

Nije edysje fan The Art of Multiprocessor Programming

Alexei: Jo hawwe in pear wurden sein oer jo boek. It is wierskynlik net it grutste geheim dat jo it meast ferneamde boek fan 'e wrâld oer multithreading skreaun hawwe, "De Keunst fan Multiprocessor Programming". Se is al sa'n 11 jier en is sûnt dy tiid allinnich útkaam  feroare werprinting. Komt der in twadde edysje?

Maurice: It is goed datst fregest! It sil hiel gau wêze, oer trije moanne of sa. D'r binne noch twa auteurs, wy hawwe folle mear materiaal tafoege, de seksje oer fork / join parallelism ferbettere, in seksje skreaun oer MapReduce, in protte nije dingen tafoege en ûnnedige dingen útsmiten - iets dat heul ynteressant wie op it momint fan skriuwen de earste edysje, mar is hjoed net mear. It waard in tige serieus bewurke boek.

Alexei: Alles is al dien, bliuwt it allinich om frij te litten?

Maurice: Der moat noch oan in pear haadstikken wurke wurde. Us útjouwer (ik tink dat hy ús al hate) besiket noch altyd oer te bringen dat wy flugger wurkje moatte. Wy binne fier achter op skema. Teoretysk koenen wy dit boek in pear jier earder dwaan.

Alexey: Is d'r in kâns om foar Kryst in nije ferzje fan it boek te krijen?

Maurice: Dat is ús doel! Mar ik haw de oerwinning safolle kearen foarsein dat nimmen my mear leaut. Jo moatte my miskien ek net te folle yn dizze saak fertrouwe.

Alexei: Yn alle gefallen is dit fantastysk nijs. Ik fûn de earste edysje fan it boek tige leuk. Jo kinne sizze dat ik in fan bin.

Maurice: Ik hoopje dat de nije edysje jo fûleindich entûsjasme wurdich wêze sil, tank!

Hoe transaksjoneel ûnthâld waard útfûn

Vitaly: De folgjende fraach giet oer transaksjoneel ûnthâld. Sa fier as ik begryp bist in pionier op dit mêd, do hast it útfûn yn in tiid dat nimmen oer soks tocht. Wêrom hawwe jo besletten om nei dit gebiet te ferhúzjen? Wêrom wiene transaksjes wichtich foar jo? Hawwe jo tocht dat se ienris yn izer ferbylde wurde sille?

Maurice: Ik haw bekend oer transaksjes sûnt myn ôfstudearstúdzje.

Vitaliy: Ja, mar dit binne ferskillende transaksjes!

Maurice: Ik wurke mei Elliott Moss oan net-blokkearjende jiskefet. Us probleem wie dat wy in pear wurden yn it ûnthâld atomysk feroarje woene en dan soene de algoritmen heul ienfâldich wurde, en teminsten guon fan harren soene effisjinter wurde. Using ferlykje-en-ruilje foar load-link / winkel-betingstenfersoarge troch de parallelle arsjitektuer, is it mooglik om te dwaan wat, mar it is hiel net effisjint en ûnsjogge omdat jo soene moatte omgean mei nivo fan yndirection. Ik wol feroarje it ûnthâld wurden en ik moat wikselje omdat ik kin mar feroarje ien oanwizer, sadat se moatte wize op in soarte fan triemtafel-lykas struktuer. Wy prate oer hoe geweldich it soe wêze as wy de hardware kinne feroarje sadat it tagelyk opnimme koe. Elliot liket dit opfallen te hawwen: as jo sjogge nei de cache-koherinsjeprotokollen, leverje se al it measte fan 'e fereaske funksjonaliteit. Yn in optimistyske transaksje sil it cache-koherinsjeprotokol de oanwêzigens fan in timingkonflikt fernimme en de cache sil wurde ûnjildich. Wat bart der as jo spekulatyf in transaksje op jo cache begjinne en de meganismen fan it gearhingprotokol brûke om konflikten te detektearjen? De spekulative hardware-arsjitektuer wie maklik te ûntwerpen. Dat hawwe wy dus skreaun hiel earste publikaasje oer transaksjoneel ûnthâld. Tagelyk, it bedriuw ik wurke foar, Digital Equipment Corporation, boude in nije 64-bit prosessor neamd de Alpha. En sa gong ik en joech in presintaasje oan it Alpha-ûntwikkelteam oer ús prachtige transaksjeûnthâld, en se fregen: hokker ekstra ynkommen sil ús bedriuw krije as wy dit alles direkt yn 'e prosessor sette? En dêr hie ik hielendal gjin antwurd op, want ik bin in technolooch, ik bin gjin marketingman. Ik hie echt neat te sizzen. Se wiene net bot ûnder de yndruk dat ik neat wist.

Vitaly: miljarden! Sis gewoan "miljarden"!

Maurice: Ja, dat hie ik sizze moatten. No, yn it tiidrek fan startups en dat alles, wit ik hoe't ik in bedriuwsplan skriuwe moat. Dat jo kinne lizze in bytsje oer de grutte fan 'e potinsjele winst. Mar yn dy dagen like it nayf, dat ik sei mar: "Ik wit it net." As jo ​​​​sjogge nei de skiednis fan 'e publikaasje oer transaksjoneel ûnthâld, dan sille jo merke dat der nei in jier ferskate ferwizings nei wiene, en dan sa'n tsien jier lang gjinien dit artikel hielendal oanhelle. De sitaten ferskynden om 2004 hinne, doe't wiere multi-core ûntstien is. Doe't minsken ûntdutsen dat it skriuwen fan parallelle koade jild koe meitsje, begon nij ûndersyk. Ravi Rajwar skreau in artikel, dy't op ien of oare manier de mainstream yntrodusearre oan it konsept fan transaksjoneel ûnthâld. (Opmerking fan bewurker: dit artikel hat in twadde ferzje útbrocht yn 2010 en is frij beskikber as PDF). Ynienen realisearre minsken hoe't dit alles krekt brûkt wurde kin, hoe't se tradisjonele algoritmen mei slûzen kinne fersnelle. In goed foarbyld fan eat dat yn it ferline in nijsgjirrich akademysk probleem like. En ja, as jo my doe frege hiene oft ik tocht dat dit alles yn 'e takomst wichtich wêze soe, dan hie ik sein: fansels, mar wannear krekt is net dúdlik. Miskien oer 50 jier? Yn 'e praktyk die bliken dat it mar in desennium wie. It is hiel moai as je wat dogge, en yn mar tsien jier fernimme minsken it.

Wêrom is it wurdich ûndersyk te dwaan op it mêd fan ferspraat komputer

Vitaly: As wy prate oer nij ûndersyk, wat soene jo lêzers advisearje - ferspraat komputer as multi-core en wêrom? 

Maurice: It is dizze dagen maklik om in multi-core-prosessor te krijen, mar it is dreger om in wier ferspraat systeem op te setten. Ik begon der oan te wurkjen om't ik wat oars dwaan woe as myn PhD. Dit is it advys dat ik altyd oan begjinners jou: skriuw gjin ferfolchproefskrift - besykje in nije rjochting yn te gean. Plus, multithreading is maklik. Ik kin eksperimintearje op myn eigen gabel dy't rint op in laptop sûnder út bêd te kommen. Mar as ik ynienen in echt ferspraat systeem meitsje woe, soe ik in soad wurk dwaan moatte, studinten oanlûke, ensfh. Ik bin in lui persoan en soe leaver wurkje oan multi-core. Eksperimintearjen mei mearkearnsystemen is ek makliker as eksperimintearjen mei ferdielde, om't sels yn in dom ferdield systeem te folle faktoaren binne om te kontrolearjen.

Vitaliy: Wat dogge jo no, ûndersykje blockchain? Op hokker artikels moatte jo earst omtinken jaan?

Maurice: Koartlyn ferskynde hiel goed artikeldy't ik skreau mei myn studint, Vikram Saraf, spesifyk foar de Tokenomcs konferinsjes trije wike lyn yn Parys. Dit is in artikel oer nuttige ferdielde systemen wêryn wy foarstelle om Ethereum multi-threaded te meitsjen. No wurde tûke kontrakten (koade dy't rint op 'e blockchain) sequentieel útfierd. Wy hawwe earder in artikel skreaun dat praat oer in manier om spekulative transaksjes te brûken om it proses te fersnellen. Wy namen in protte ideeën út software transaksjoneel ûnthâld en sei dat as jo dizze ideeën diel meitsje fan 'e Etherium firtuele masine, dan sil alles flugger wurkje. Mar hjirfoar is it nedich dat d'r gjin gegevenskonflikten binne yn 'e kontrakten. En doe hawwe wy oannommen dat yn it echte libben d'r echt gjin sokke konflikten binne. Mar wy hawwe gjin kâns hân om út te finen. Doe kaam it ús foar dat wy hast tsien jier fan echte kontraktskiednis op ús hannen hienen, sadat wy de Etherium-blockchain loslitten en ús ôffrege: wat soe barre as dizze histoaryske records parallel rûnen? Wy fûnen in signifikante ferheging fan snelheid. Yn 'e iere dagen fan Etherium is de snelheid tige tanommen, mar hjoed is alles wat komplisearre, om't d'r minder kontrakten binne en de kâns op konflikten oer gegevens dy't serialisaasje nedich binne heger wurden. Mar dit alles is eksperiminteel wurk mei echte histoaryske gegevens. It moaie fan blockchain is dat it alles foar altyd ûnthâldt, sadat jo werom kinne yn 'e tiid en studearje wat der barre soe as wy oare algoritmen brûke om de koade út te fieren. Hoe't minsken yn it ferline ús nije idee leuk hiene. It is folle makliker en nofliker om sa'n ûndersyk te dwaan, om't der in ding is dat alles kontrolearret en alles registrearret. Dit is al wat mear as sosjology as de ûntwikkeling fan algoritmen.

Hat de ûntwikkeling fan algoritmen stoppe en hoe om te libjen

Vitaly: Tiid foar de lêste teoretyske fraach! Fielt it dat foarútgong yn kompetitive gegevensstruktueren elk jier krimp? Tinke jo dat wy in plato hawwe berikt yn ús begryp fan gegevensstruktueren, of sille d'r wat grutte ferbetteringen wêze? Miskien binne d'r guon tûke ideeën dy't alles folslein feroarje kinne?

Maurice: Wy hawwe miskien in plato berikt yn gegevensstruktueren foar tradisjonele arsjitektuer. Mar gegevensstruktueren foar nije arsjitektuer binne noch altyd in heul kânsryk gebiet. As jo ​​​​gegevensstruktueren meitsje wolle foar bygelyks hardwareversnellers, dan binne GPU-gegevensstruktueren heul oars fan CPU-gegevensstruktueren. As jo ​​​​gegevensstruktueren foar blockchains ûntwerpe, moatte jo stikken gegevens hashje en se dan yn soksoarte pleatse merk beam, om falskemunterij foar te kommen. D'r is de lêste tiid in tanimming fan aktiviteit yn dit gebiet, in protte dogge in heul goed wurk. Mar ik tink dat wat der barre sil is dat nije arsjitektuer en nije applikaasjes sille liede ta nije gegevensstruktueren. Âldere applikaasjes en tradisjonele arsjitektuer - miskien is der net folle romte mear foar ûndersyk. Mar as jo fan 'e beaten track komme en oer de râne sjogge, sille jo gekke dingen sjen dy't de mainstream net serieus nimt - dat is wêr't al it spannende guod bart.

Vitaly: Dêrom, om in heul ferneamde ûndersiker te wêzen, moast ik myn eigen arsjitektuer útfine 🙂

Maurice: Jo kinne de nije arsjitektuer fan in oar "stelle" - it liket folle makliker!

Wurket by Brown University

Vitaliy: Kinne jo ús mear fertelle oer Brown Universitywêryn jo wurkje? Yn it ramt fan ynformaasjetechnology is net folle oer him bekend. Minder dan oer MIT, bygelyks.

Maurice: Brown University is ien fan 'e âldste universiteiten yn' e Feriene Steaten. Ik tink dat allinich Harvard in bytsje âlder is. Brown is part fan de saneamde Ivy league, dat is in samling fan acht âldste universiteiten. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, Pennsylvania, Princeton. Dit is in soarte fan âlde, lytse en in bytsje aristokratyske universiteit. De fokus leit op liberale keunsten ûnderwiis. It besiket net te wêzen lykas MIT, MIT is heul spesjalisearre en technysk. Brown is in geweldich plak om Russyske literatuer as Klassyk Gryk te studearjen en, fansels, Computer Science. It rjochtet him op wiidweidich ûnderwiis. De measte fan ús studinten geane nei Facebook, Apple, Google, dus ik tink dat ús studinten gjin probleem hawwe om in baan yn 'e sektor te krijen. Ik gie oan it wurk by Brown, om't ik dêrfoar wurke by Digital Equipment Corporation yn Boston. It wie in bedriuw dat in protte nijsgjirrige dingen útfûn, mar it belang fan persoanlike kompjûters wegere. In bedriuw mei in dreech lot, wêrfan de oprjochters eartiids jonge revolúsjonêren wiene, se learden neat en fergeaten neat, en dêrom kearden se yn sawat in desennia fan revolúsjonêr nei reaksjears. Se mochten graach grapke dat persoanlike kompjûters yn in garaazje hearden - in ferlitten garaazje, fansels. It is dúdlik dat se ferneatige waarden troch fleksibeler bedriuwen. Doe't dúdlik waard dat it bedriuw yn de problemen siet, belle ik myn freon út Brown, dy't sawat in oere fan Boston leit. Boston woe ik doe net ferlitte, om't oare universiteiten net folle fakatueres hiene. It wie in tiid dat der op it mêd fan Ynformatika net safolle fakatueres wiene as no. En Brown hie in baan, ik hoegde net út myn hûs te ferhúzjen, ik hoegde myn famylje net te ferhúzjen, en ik genietsje echt fan wenjen yn Boston! Dat ik naam it beslút om nei Brown te gean. Ik fyn it leuk. De learlingen binne geweldich, dus ik haw noait sels besocht earne oars te gean. Op in sabbatical wurke ik in jier by Microsoft, gie in jier nei Technion yn Haifa, en no sit ik by Algorand. Ik haw oeral in protte kollega's en dêrom is de fysike lokaasje fan ús klaslokalen net sa wichtich. Mar it wichtichste binne de learlingen, se binne hjir de bêste. Ik haw noait besocht earne oars te gean, om't ik hjir aardich bliid bin.

Dochs nettsjinsteande Brown syn bekendheid yn 'e Feriene Steaten, hy is ferrassend ûnbekend yn it bûtenlân. Sa't jo sjen kinne, doch ik no myn bêst om dizze stân fan saken te korrigearjen.

It ferskil tusken universitêr en bedriuwsûndersyk

Vitaliy: Okee, de folgjende fraach giet oer digitale apparatuer. Do wiest dêr ûndersiker. Wat is it ferskil tusken wurkjen yn 'e R&D-ôfdieling fan in grut bedriuw en wurkje oan in universiteit? Wat binne de foardielen en neidielen?

Maurice: Ik bin al tweintich jier by Microsoft, wurkje nau gear mei minsken by Sun Microsystems, Oracle, Facebook, en no Algorand. Op grûn fan dit alles wol ik sizze dat it mooglik is om sawol yn bedriuwen as op 'e universiteit earste klas ûndersyk te dwaan. It wichtige ferskil is dat jo yn in bedriuw mei kollega's wurkje. As ik ynienen in idee haw foar in projekt dat noch net bestiet, moat ik myn leeftydsgenoaten derfan oertsjûgje dat dit in goed idee is. As ik by Brown bin, dan kin ik tsjin myn learlingen sizze: lit ús wurkje oan antigravity! Se sille of nei in oar gean of it projekt oannimme. Ja, ik sil finansiering moatte fine, ik sil in subsydzjeoanfraach skriuwe moatte ensafuorthinne. Yn alle gefallen sille d'r altyd in protte studinten wêze, en jo sille iensidich besluten kinne nimme. Mar op 'e universiteit sille jo nei alle gedachten net wurkje mei minsken fan jo nivo. Yn 'e wrâld fan yndustrieel ûndersyk moatte jo earst elkenien oertsjûgje dat jo projekt it wurdich is oan te nimmen. Ik kin fan gjinien neat bestelle. En dizze beide manieren fan wurkjen binne weardefol, want as jo oan wat echt gek wurkje en jo kollega's binne min te oertsjûgjen, is it makliker om ôfstudearden te oertsjûgjen - benammen as jo se betelje. As jo ​​​​wurkje oan iets dat in protte ûnderfining en djippe saakkundigens fereasket, dan hawwe jo kollega's nedich dy't sizze kinne "nee, it bart gewoan dat ik dit gebiet begryp en jo idee is min, der komt neat fan." Dit is heul nuttich yn termen fan tiidfergriemerij. En ek, as jo yn yndustriële laboratoaren in protte tiid besteegje oan it skriuwen fan rapporten, dan besteegje jo dizze tiid oan 'e universiteit om jild te finen. As ik wol dat studinten earne op reizgje kinne, moat ik it jild dêrfoar earne oars fine. En hoe wichtiger jo posysje oan 'e universiteit is, hoe mear tiid jo moatte besteegje oan it sammeljen fan jild. Dus, no witte jo wat ik as wurkje - in profesjonele bidler! As ien fan dy muontsen dy't mei in donaasjeplaat omrint. Yn 't algemien komplementearje dizze twa aktiviteiten inoar. Dêrom besykje ik yn beide wrâlden te libjen en fêst te stean.

Vitaliy: It liket derop dat it oertsjûgjen fan in bedriuw dreger is dan oare wittenskippers oertsjûgje.

Maurice: Harder, en folle mear. Boppedat is it op ferskate gebieten oars: immen docht folslein ûndersyk, en immen is rjochte op har ûnderwerp. As ik nei Microsoft of Facebook gie en sei: lit ús anty-swiertekrêft dwaan, se soene it amper wurdearje. Mar as ik krekt itselde tsjin myn ôfstudearden sei, soene se nei alle gedachten daliks oan it wurk komme, al soe ik no al problemen hawwe - want dêr moatte jo jild foar fine. Mar sa lang as jo wat dwaan wolle yn oerienstimming mei de doelen fan it bedriuw, kin dat bedriuw in hiel goed plak wêze om ûndersyk te dwaan.

Hydra en SPTDC

Vitaliy: Myn fragen komme ta in ein, dus litte wy in bytsje prate oer de kommende reis nei Ruslân.

Maurice: Ja, ik sjoch der nei út om werom te gean nei Petersburg.

Alexey: It is in grutte eare foar my dat jo dit jier by ús binne. Dit is dyn twadde kear yn Sint Petersburch, rjochts?

Maurice: Al de tredde!

Alexei: Ik snap it, mar SPTDC - krekt de twadde. De lêste kear waard de skoalle belle SPTCC, no hawwe wy ien letter feroare (C nei D, Concurrent to Distributed) om te beklamjen dat d'r dit jier mear gebieten binne relatearre oan ferdield komputer. Kinne jo in pear wurden sizze oer jo presintaasjes op 'e Skoalle en Hydra konferinsjes?

Maurice: Op 'e skoalle wol ik prate oer de basis fan blockchain en wat jo dermei kinne dwaan. Ik soe graach sjen litte dat blockchains binne tige ferlykber mei de multi-threaded programmearring wy binne bekend mei, mar mei harren eigen nuânses, en it is wichtich om te begripen dizze ferskillen. As jo ​​​​in flater meitsje yn in normale webapplikaasje, is it gewoan ferfelend. As jo ​​buggy-koade skriuwe yn in finansjele app, sil immen perfoarst al jo jild stelle. Dit is in folslein oar nivo fan ferantwurdlikens en gefolgen. Ik sil in bytsje prate oer proof-of-work, smart kontrakten, transaksjes tusken ferskate blockchains.

Oare sprekkers sille neist my wurkje, dy't ek wat te sizzen hawwe oer de blockchain, en wy hawwe ôfpraat om ûnderling te koördinearjen sadat ús ferhalen goed passe. Mar foar it yngenieurpraat wol ik in dúdlike útlis jaan oan in breed publyk wêrom't jo net alles leauwe moatte wat jo hearre oer blockchains, wêrom blockchains in geweldich fjild binne, hoe't it past by oare bekende ideeën, en wêrom't wy moatte frijmoedich nei de takomst sjen.

Alexey: Derneist wol ik sizze dat dit net sil plakfine yn 'e opmaak fan in meetup of in brûkersgroep, lykas it wie twa jier lyn. Wy besletten om in lytse konferinsje te dwaan tichtby de skoalle. De reden is dat wy nei praten mei Peter Kuznetsov realisearre dat de skoalle is beheind ta mar hûndert, miskien 120 minsken. Tagelyk binne d'r in protte yngenieurs dy't mei jo wolle prate, rapporten bywenje en oer it algemien ynteressearre binne yn it ûnderwerp. Dêrfoar hawwe wy in nije konferinsje makke Hydra neamd. Trouwens, enig idee wêrom Hydra?

Maurice: Om't it sân sprekkers sil hawwe? En se kinne fan 'e holle ôfsnien wurde, en nije sprekkers sille op har plak groeie?

Alexey: Geweldich idee foar groeiende nije sprekkers. Mar echt, d'r is hjir in ferhaal. Tink oan de leginde fan Odysseus, dêr't er tusken farre moast Scylla en Charybdis? Hydra is wat as Charybdis. It ferhaal is dat ik ienris op in konferinsje spruts en oer multithreading praat. D'r wiene mar twa spoaren op dizze konferinsje. Oan it begjin fan it ferslach fertelde ik it publyk yn de seal dat se no in kar hawwe tusken Scylla en Charybdis. Myn geastdier is Charybdis, om't Charybdis in protte koppen hat, en myn tema is multithreading. Sa ferskine de nammen fan de konferinsjes.

Wy hawwe yn alle gefallen sawol fragen as tiid oprûn. Dat tank freonen foar in geweldich ynterview en oant sjen by SPTDC en Hydra 2019!

It sil mooglik wêze om kommunikaasje mei Maurice troch te gean op 'e Hydra 2019-konferinsje, dy't op 11-12 july 2019 yn St. Hy komt mei in ferslach "Blockchains en de takomst fan ferdield komputer". Kaarten kinne kocht wurde op 'e offisjele webside.

Boarne: www.habr.com

Add a comment