“Lihtsam on vastata kui vaikida” – suurepärane intervjuu tehingumälu isa Maurice Herlihyga

Maurice Herlihy - kahe omanik Dijkstra auhinnad. Esimene on töötamiseks "Ootevaba sünkroonimine" (Browni ülikool) ja teine, uuem, - "Tehingumälu: lukustamata andmestruktuuride arhitektuuriline tugi" (Virginia Tehnikaülikool). Dijkstra auhind antakse töö eest, mille tähendus ja mõju on olnud nähtav vähemalt kümme aastat ning Maurice on ilmselgelt üks tuntumaid spetsialiste sellel alal. Praegu töötab ta Browni ülikooli professorina ja tal on palju saavutusi, mis on lõigu pikkused. Praegu uurib ta plokiahelat klassikalise hajutatud andmetöötluse kontekstis.

Varem oli Maurice juba Venemaale SPTCC jaoks tulnud (videolindile) ja tegi suurepärase kohtumise JUG.ru Java arendajate kogukonnaga Peterburis (videolindile).

See habrapost on suurepärane intervjuu Maurice Herlihyga. See käsitleb järgmisi teemasid:

  • Akadeemiliste ringkondade ja tööstuse koostoime;
  • Plokiahela uurimise sihtasutus;
  • Kust tulevad läbimurdeideed? Populaarsuse mõju;
  • PhD Barbara Liskovi juhendamisel;
  • Maailm ootab mitmetuumalist;
  • Uus maailm toob uusi probleeme. NVM, NUMA ja arhitektuuri häkkimine;
  • Kompilaatorid vs protsessorid, RISC vs CISC, jagatud mälu vs sõnumite edastamine;
  • Hapra mitmelõimelise koodi kirjutamise kunst;
  • Kuidas õpetada õpilasi kirjutama keerulist mitmelõimelist koodi;
  • Raamatu "The Art of Multiprocessor Programming" uus trükk;
  • Kuidas tehingumälu leiutati;   
  • Miks tasub teha uuringuid hajutatud andmetöötluse valdkonnas;
  • Kas algoritmide arendamine on peatunud ja kuidas edasi minna;
  • Töö Browni ülikoolis;
  • Erinevus ülikoolis ja ettevõttes tehtava teadustöö vahel;
  • Hüdra ja SPTDC.

Intervjuu viivad läbi:

Vitali Aksenov — praegu IST Austria järeldoktor ja ITMO ülikooli arvutitehnoloogia osakonna töötaja. Viib läbi uuringuid konkureerivate andmestruktuuride teooria ja praktika vallas. Enne IST-s töötamist omandas ta doktorikraadi Pariisi Diderot ülikoolist ja ITMO ülikoolist professor Peter Kuznetsovi juhendamisel.

Aleksei Fedorov - Produtsent JUG Ru Groupis, Venemaa ettevõttes, mis korraldab arendajatele konverentse. Aleksei osales enam kui 50 konverentsi ettevalmistamisel ja tema CV sisaldab kõike alates Oracle'i arendusinseneri ametikohast (JCK, Java Platform Group) kuni Odnoklassnikis arendaja ametikohani.

Vladimir Sitnikov - Netcrackeri insener. Kümme aastat tööd NetCracker OS-i – tarkvara, mida telekommunikatsioonioperaatorid kasutavad võrgu- ja võrguseadmete haldusprotsesside automatiseerimiseks – jõudluse ja mastaapsuse kallal. Huvitatud Java ja Oracle Database'i jõudluse probleemidest. Rohkem kui tosina ametliku PostgreSQL JDBC draiveri jõudluse täiustuse autor.

Akadeemiliste ringkondade ja tööstuse koostoime

Aleksei: Maurice, olete töötanud akadeemilises keskkonnas väga pikka aega ja esimene küsimus on akadeemilise ja tööstussfääri koostoime. Kas saaksite rääkida sellest, kuidas nendevaheline suhtlus on viimasel ajal muutunud? Mis juhtus 20-30 aastat tagasi ja mis toimub praegu? 

Maurice: Olen alati püüdnud teha tihedat koostööd kommertsettevõtetega, sest neil on huvitavaid probleeme. Reeglina pole nad eriti huvitatud ei oma tulemuste avaldamisest ega oma probleemide üksikasjalikest selgitustest maailma üldsusele. Neid huvitab ainult nende probleemide lahendamine. Töötasin mõnda aega sellistes ettevõtetes. Töötasin viis aastat täiskohaga Digital Equipment Corporationi uurimislaboris, mis varem oli suur arvutiettevõte. Töötasin ühe päeva nädalas Sunis, Microsoftis, Oracle'is ja natuke Facebookis. Nüüd lähen hingamispuhkusele (Ameerika ülikooli professoril on lubatud võtta selline puhkus aastaks umbes kord kuue aasta jooksul) ja töötan Algorand, see on Bostonis asuv krüptovaluutaga tegelev ettevõte. Tihe koostöö ettevõtetega on alati olnud rõõm, sest nii õpid tundma uusi ja huvitavaid asju. Võite isegi olla esimene või teine ​​inimene, kes avaldab valitud teemal artikli, selle asemel, et töötada järk-järgult lahenduste parandamiseks probleemidele, mille kallal kõik teised juba töötavad.

Aleksei: Kas saate meile üksikasjalikumalt rääkida, kuidas see juhtub?

Maurice: Muidugi. Tead, kui ma töötasin Digital Equipment Corporationis, mina ja Elliot Moss, leiutasime tehingumälu. See oli väga viljakas periood, mil kõik hakkasid huvi tundma infotehnoloogia vastu. Paralleelsus, sealhulgas, kuigi mitmetuumalisi süsteeme veel ei eksisteerinud. Päikese ja Oracle'i päevadel töötasin palju paralleelsete andmestruktuuride kallal. Facebookis töötasin nende plokiahela projekti kallal, millest ma rääkida ei saa, aga loodan, et see läheb varsti avalikuks. Järgmisel aastal töötan Algorandis nutikaid lepinguid uurivas uurimisrühmas.

Aleksei: Blockchain on viimastel aastatel muutunud väga populaarseks teemaks. Kas see aitab teie uurimistööd teha? Võib-olla hõlbustab see toetuste saamist või võimaldab juurdepääsu ressurssidele valdkonnas tegutsevatelt ettevõtetelt?

Maurice: Sain juba väikese toetuse Ethereumi fondilt. Plokiahela populaarsus on suureks abiks õpilaste inspireerimisel selles valdkonnas töötama. Nad tunnevad selle vastu suurt huvi ja on põnevil, et saavad kaasa lüüa, kuid mõnikord ei saa nad aru, et väljastpoolt põnevalt kõlav uurimus osutub tõeliselt raskeks tööks. Siiski on mul väga hea meel kasutada kogu seda müstikat plokiahela ümber, et aidata õpilastel ligi meelitada. 

Kuid see pole veel kõik. Olen mitme plokiahela idufirma nõuandekogus. Mõnel võib õnnestuda, mõnel mitte, aga alati on väga huvitav nende ideid näha, neid uurida ja inimesi nõustada. Kõige põnevam on see, kui hoiatad inimesi, et nad midagi ei teeks. Paljud asjad tunduvad esmapilgul hea ideena, kuid kas need on tõesti nii?

Plokiahela uurimise sihtasutus

Vitali: Mõned inimesed arvavad, et tulevik on plokiahelas ja selle algoritmides. Ja teised inimesed ütlevad, et see on lihtsalt üks mull. Kas saate selles küsimuses oma arvamust jagada?

Maurice: Suur osa sellest, mis plokiahela maailmas toimub, on vale, osa on lihtsalt pettus, palju on ülehinnatud. Siiski arvan, et nendel uuringutel on kindel teaduslik alus. Asjaolu, et plokiahela maailm on täis ideoloogilisi erinevusi, näitab põnevuse ja pühendumise taset. Teisest küljest pole see teadusliku uurimistöö jaoks eriti kasulik. Nüüd, kui avaldate artikli, mis räägib konkreetse algoritmi puudustest, ei ole sellest tulenev reaktsioon alati täielikult teaduslik. Sageli viskavad inimesed oma emotsioonid välja. Ma arvan, et selline põnevus selles valdkonnas võib mõnele tunduda ahvatlev, kuid päeva lõpuks on tõelised teaduslikud ja inseneriprobleemid, millega tuleb tegeleda. Siin on palju arvutiteadust.

Vitali: Nii et proovite panna aluse plokiahela uurimisele, eks?

Maurice: Püüan panna aluse kindlale, teaduslikult ja matemaatiliselt usaldusväärsele distsipliinile. Ja osa probleemist on see, et vahel tuleb teiste inimeste mõne liiga karmi seisukohaga vastuollu minna ja neid ignoreerida. Mõnikord küsitakse, et miks ma töötan piirkonnas, kus huvi tunnevad ainult terroristid ja narkokaubitsejad. Selline reaktsioon on sama mõttetu kui nende järgijate käitumine, kes teie sõnu pimesi kordavad. Ma arvan, et tõde on kuskil keskel. Plokiahelal on suur mõju ühiskonnale ja maailmamajandusele. Aga seda ilmselt tänu kaasaegsele tehnoloogiale ei juhtu. Moodsad tehnoloogiad arenevad ja väga oluliseks muutub see, mida tulevikus nimetatakse plokiahelaks. See ei pruugi isegi välja näha nagu tänapäevased plokiahelad, see on lahtine küsimus.

Kui inimesed leiutavad uusi tehnoloogiaid, nimetavad nad seda jätkuvalt plokiahelaks. Tähendab, nii nagu tänapäeva Fortranil pole 1960. aastate Fortrani keelega midagi pistmist, aga kõik kutsuvad seda Fortraniks. Sama UNIX-i jaoks. See, mida nimetatakse "plokiahelaks", teeb endiselt oma revolutsiooni. Kuid ma kahtlen, kas see uus plokiahel on midagi sellist, mida kõik tänapäeval naudivad.

Kust tulevad läbimurdeideed? Populaarsuse mõju

Aleksei: Kas plokiahela populaarsus on teaduslikust vaatenurgast toonud kaasa uusi tulemusi? Rohkem suhtlemist, rohkem õpilasi, rohkem ettevõtteid piirkonnas. Kas sellel populaarsuse kasvul on juba tulemusi?

Maurice: Mind hakkas see huvitama, kui keegi ulatas mulle äsja üsna palju raha kogunud ettevõtte ametliku flaieri. See kirjutas umbes Bütsantsi kindralite ülesanne, millega olen enam kui tuttav. Voldikule kirjutatu oli selgelt tehniliselt vale. Inimesed, kes seda kõike kirjutasid, ei mõistnud tegelikult probleemi taga olevat mudelit... ja ometi kogus see ettevõte palju raha. Seejärel asendas ettevõte selle voldiku vaikselt palju õigema versiooniga - ja ma ei ütle, mis selle ettevõtte nimi oli. Nad on endiselt olemas ja neil läheb väga hästi. See juhtum veenis mind, et esiteks on plokiahel lihtsalt hajutatud andmetöötluse vorm. Teiseks oli sisseastumislävi (vähemalt siis, neli aastat tagasi) üsna madal. Sellel alal töötavad inimesed olid väga energilised ja intelligentsed, kuid nad ei lugenud teadusartikleid. Nad püüdsid teadaolevaid asju uuesti leiutada ja tegid seda valesti. Tänaseks on draama vähenenud.

Aleksei: See on väga huvitav, sest paar aastat tagasi oli meil teistsugune trend. See on natuke nagu esiotsa arendus, kui brauseripõhised esiotsa arendajad leiutasid uuesti terveid tehnoloogiaid, mis olid juba taustasüsteemis populaarsed: süsteemide koostamine, pidev integreerimine ja muu taoline. 

Maurice: Nõustun. Kuid see pole üllatav, sest tõeliselt läbimurdelised ideed tulevad alati väljastpoolt väljakujunenud kogukonda. Väljakujunenud teadlased, eriti väljakujunenud akadeemikud, ei tee tõenäoliselt midagi tõeliselt murrangulist. Lihtne on järgmiseks konverentsiks kirjutada ettekanne sellest, kuidas sa oma varasema töö tulemusi veidi parandasid. Minge konverentsile, saage sõpradega kokku, rääkige samadest asjadest. Ja inimesed, kes plahvatavad läbimurdeliste ideedega, tulevad peaaegu alati väljastpoolt. Nad ei tea reegleid, ei oska keelt, aga sellegipoolest... Kui oled väljakujunenud kogukonnas, siis soovitan sul pöörata tähelepanu uutele asjadele, millelegi, mis üldpilti ei sobitu. Mõnes mõttes võib püüda ühendada väliseid, sujuvamaid arenguid meile juba mõistetavate meetoditega. Esimese sammuna proovige luua teaduslik alus ja seejärel muuta seda nii, et seda saaks rakendada uutele läbimurdelistele ideedele. Ma arvan, et plokiahel on suurepärane, et olla värske ja häiriv idee.

Aleksei: Miks sa arvad, et see juhtub? Sest inimestel "väljaspool" pole kogukonnale omaseid spetsiifilisi tõkkeid?

Maurice: Siin on muster käimas. Kui lugeda impressionistide ajalugu maalikunstis ja kunstis üldiselt, siis omal ajal lükkasid kuulsad kunstnikud impressionismi tagasi. Nad ütlesid, et see on kuidagi lapsik. Põlvkond hiljem sai sellest varem tagasi lükatud kunstivormist standard. Mida ma oma valdkonnas näen: plokiahela leiutajaid ei huvitanud võim, väljaannete ja tsiteerituse suurendamine, nad tahtsid lihtsalt midagi head teha. Ja nii nad istusid ja hakkasid seda tegema. Neil puudus teatav tehniline sügavus, kuid see on parandatav. Uute loominguliste ideede väljamõtlemine on palju keerulisem kui ebaküpsete parandamine ja tugevdamine. Tänu neile leiutajatele on mul nüüd midagi teha!

Aleksei: See on sarnane idufirmade ja pärandprojektide erinevusega. Pärime palju mõtlemispiiranguid, tõkkeid, erinõudeid jne.

Maurice: Hea analoogia on hajutatud andmetöötlus. Mõelge plokiahelale nii, nagu oleks see idufirma ja hajutatud andmetöötlus kui suur, väljakujunenud ettevõte. Hajutatud andmetöötlus on omandamisel ja plokiahelaga ühendamisel.

PhD Barbara Liskovi juhendamisel

Vitali: Meil ​​on veel palju küsimusi! Uurisime teie tausta ja leidsime teie doktorikraadi kohta huvitava fakti. Jah, see oli ammu, aga tundub, et see on oluline teema. Sa saavutasid doktorikraadi enda juhendamisel Barbara Liskov! Barbara on programmeerimiskeelte kogukonnas väga tuntud ja üldiselt väga tuntud inimene. On loogiline, et teie uurimistöö oli programmeerimiskeelte valdkonnas. Kuidas läksite üle paralleelsele andmetöötlusele? Miks otsustasite teemat muuta?

Maurice: Sel ajal vaatasid Barbara ja tema rühm lihtsalt hajutatud andmetöötlust, mis oli väga uus idee. Oli ka neid, kes ütlesid, et hajutatud andmetöötlus on jama ja arvutid omavahel suhtlevad mõttetu. Üks hajutatud andmetöötluse probleem, mis eristab seda tsentraliseeritud andmetöötlusest, on tõrketaluvus. Pärast pikka uurimistööd otsustasime, et hajutatud andmetöötluskeeles peab olema midagi sellist, nagu tuumatehingud, sest kunagi ei saa olla kindel, et kaugkõne õnnestub. Kui olete tehinguid teinud, tekib samaaegsuse haldamise probleem. Seejärel tehti palju tööd väga paralleelsete tehinguandmete struktuuride hankimisega. Siis, kui ma lõpetasin, läksin Carnegie Mellon ja hakkas otsima teemat, millega töötada. Mulle tuli meelde, et andmetöötlus on liikunud üksikutelt arvutitelt arvutivõrkudesse. Mitmeprotsessorid oleksid progressi loomulik jätk - sõna "mitmetuumaline" veel ei eksisteerinud. Mõtlesin: mis on aatomitehingute ekvivalent mitmetuumalise süsteemi puhul? Kindlasti mitte regulaarsed tehingud, sest need on liiga suured ja rasked. Ja nii ma selle idee peale tulin lineariseeritavus ja nii ma kogu ootevaba sünkroonimise välja mõtlesin. Sellega püüti vastata küsimusele, milline on aatomitehingute analoog jagatud mäluga mitmeprotsessorilise süsteemi jaoks. Esmapilgul võib see teos tunduda täiesti erinev, kuid tegelikult on see sama teema jätk.

Maailm ootab mitmetuumalist

Vitali: Sa mainisid, et tol ajal oli mitmetuumalisi arvuteid väga vähe, eks?

Maurice: Neid lihtsalt polnud seal. Seal oli mitu nn sümmeetrilist multiprotsessorit, mis olid põhimõtteliselt ühendatud samasse siini. See ei töötanud väga hästi, sest iga kord, kui uus ettevõte loob midagi sarnast, vabastas Intel ühe protsessori, mis oli parem kui multiprotsessor.

Aleksei: Kas see ei tähenda, et neil iidsetel aegadel oli see pigem teoreetiline uurimus?

Maurice: See ei olnud teoreetiline, vaid pigem spekulatiivne uuring. See kõik ei tähendanud paljude teoreemidega töötamist, vaid püstitasime hüpoteesid arhitektuuri kohta, mida tol ajal ei eksisteerinud. Selleks on uurimustöö! Ükski ettevõte poleks midagi sellist teinud; see kõik oli midagi kaugest tulevikust. Tegelikult oli see nii kuni 2004. aastani, mil ilmusid tõelised mitmetuumalised protsessorid. Kuna protsessorid kuumenevad üle, saate protsessorit veelgi väiksemaks muuta, kuid kiiremaks ei saa. Seetõttu toimus üleminek mitmetuumalistele arhitektuuridele. Ja siis tähendas see, et ühtäkki leidus kasu kõikidest kontseptsioonidest, mille olime varem välja töötanud.

Aleksei: Miks arvate, et mitmetuumalised protsessorid ilmusid alles XNUMX. aastatel? Miks siis nii hilja on?

Maurice: Selle põhjuseks on riistvaralised piirangud. Intel, AMD ja teised ettevõtted on protsessori kiiruse suurendamisel väga head. Kui ühel hetkel muutusid protsessorid piisavalt väikeseks, et nad ei saanud enam taktsagedust tõsta, sest protsessorid hakkavad läbi põlema. Saate neid väiksemaks muuta, kuid mitte kiiremaks. Mis nende võimuses on - väga väikese protsessori asemel mahutavad nad samasse korpuse mahusse, kuhu varem mahtus vaid üks, kaheksa, kuusteist või kolmkümmend kaks protsessorit. Nüüd on teil nendevaheline mitmelõimeline ja kiire suhtlus, kuna nad jagavad vahemälu. Aga sundida neid kiiremini jooksma ei saa – seal on väga konkreetne kiiruspiirang. Need paranevad vähehaaval, kuid enam mitte nii palju. Füüsikaseadused seisid täiustuste teel.

Uus maailm toob uusi probleeme. NUMA, NVM ja arhitektuuri häkkimine

Aleksei: Kõlab väga mõistlikult. Uute mitmetuumaliste protsessoritega tulid uued probleemid. Kas teie ja teie kolleegid ootasid neid probleeme? Võib-olla olete neid eelnevalt uurinud? Teoreetilistes uuringutes pole selliseid asju sageli väga lihtne ennustada. Millal probleemid ilmnesid, kuidas need vastasid teie ja teie kolleegide ootustele? Või olid need täiesti uued ja pidite koos kolleegidega kulutama palju aega probleemide lahendamisele, nagu need ilmnesid?

Vitali: Lisan Aleksei küsimusele: kas ennustasite teooriat uurides õigesti protsessori arhitektuuri?

Maurice: Mitte 100%. Kuid ma arvan, et oleme kolleegidega ühismäluga mitmetuumade ennustamisel teinud head tööd. Arvan, et ennustasime õigesti raskusi ilma lukkudeta töötavate paralleelsete andmestruktuuride väljatöötamisel. Sellised andmestruktuurid on olnud paljude rakenduste jaoks olulised, kuigi mitte kõigi jaoks, kuid sageli on tõesti vaja mittelukustuvat andmestruktuuri. Kui me need välja mõtlesime, väitsid paljud, et see on jama, et lukkudega töötab kõik hästi. Ennustasime üsna hästi, et paljudele programmeerimisprobleemidele ja andmestruktuuri probleemidele on valmislahendused olemas. Oli ka keerulisemaid probleeme, nt NUMA - ebaühtlane juurdepääs mälule. Tegelikult ei võetud neid isegi arvesse enne, kui leiutati mitmetuumalised protsessorid, sest need olid liiga spetsiifilised. Teadusringkond töötas küsimuste kallal, mis olid üldiselt etteaimatavad. Mõned konkreetsete arhitektuuridega seotud riistvaraprobleemid pidid ootama tiibadel – tegelikult nende arhitektuuride ilmumine. Näiteks ei töötanud keegi tegelikult GPU-spetsiifiliste andmestruktuuride kallal, sest GPU-sid siis veel ei eksisteerinud. Kuigi selle kallal on palju tööd tehtud SIMD, olid need algoritmid kasutamiseks valmis niipea, kui sobiv riistvara oli saadaval. Kõike on aga võimatu ette näha.

Aleksei: Kui ma õigesti aru saan, on NUMA omamoodi kompromiss kulude, jõudluse ja mõne muu vahel. Kas teil on ideid, miks NUMA nii hilja välja tuli?

Maurice: Arvan, et NUMA eksisteerib mälu tootmiseks kasutatava riistvara probleemide tõttu: mida kaugemal on komponendid, seda aeglasem on neile juurdepääs. Teisest küljest on selle abstraktsiooni teine ​​väärtus mälu ühtsus. Seega on paralleelarvutuse üks omadusi see, et kõik abstraktsioonid on veidi katki. Kui juurdepääs oleks täiesti ühtlane, oleks kogu mälu võrdsel kaugusel, kuid see on majanduslikult ja võib-olla isegi füüsiliselt võimatu. Seetõttu tekib see konflikt. Kui kirjutate oma programmi nii, nagu oleks mälu ühtlane, on see tõenäoliselt õige. Selles mõttes, et see ei anna valesid vastuseid. Kuid ka tema esitus ei püüa tähti taevast. Samamoodi, kui kirjutate spinlockid Vahemälu hierarhiat mõistmata on blokeerimine iseenesest õige, kuid võite jõudluse unustada. Teatud mõttes peate kirjutama programme, mis elavad väga lihtsa abstraktsiooni peal, kuid peate üle kavaldama inimesed, kes teile selle abstraktsiooni andsid: peate teadma, et abstraktsiooni all on mingi mäluhierarhia, et on olemas buss sinu ja selle mälestuse vahel jne. Seega on individuaalselt kasulike abstraktsioonide vahel teatav konflikt, mis viib meid väga konkreetsete ja pragmaatiliste probleemideni.

Vitali: Aga tulevik? Kas saate ennustada, kuidas protsessorid järgmiseks arenevad? On idee, et üks vastuseid on tehingumälu. Tõenäoliselt on teil veel midagi laos.

Maurice: Ees on paar suurt väljakutset. Üks on see, et koherentne mälu on suurepärane abstraktsioon, kuid see hakkab erijuhtudel lagunema. Näiteks NUMA on elav näide millestki, kus saab jätkuvalt teeselda, et ühtne mälu on olemas. Tegelikult ei, tootlikkus ajab sind nutma. Ühel hetkel peavad arhitektid ühtse mäluarhitektuuri ideest loobuma; igavesti ei saa teeselda. Vaja on uusi programmeerimismudeleid, mida on piisavalt lihtne kasutada ja mis on piisavalt võimsad, et muuta aluseks olev riistvara tõhusaks. See on väga raske kompromiss, sest kui programmeerijatele näidata riistvaras reaalselt kasutatavat arhitektuuri, lähevad nad hulluks. See on liiga keeruline ja pole kaasaskantav. Kui esitate liiga lihtsa liidese, on jõudlus kehv. Seega tuleb tõeliselt suurte mitmetuumaliste protsessorite jaoks kasutatavate kasulike programmeerimismudelite pakkumiseks teha palju väga keerulisi kompromisse. Ma pole kindel, et 2000-tuumalises arvutis on programmeerimisvõimeline keegi peale spetsialisti. Ja kui te just ei tegele väga spetsialiseeritud või teadusliku andmetöötluse, krüptograafia või muu sellisega – pole ikka veel üldse selge, kuidas seda õigesti teha. 

Teine sarnane valdkond on eriarhitektuurid. Graafikakiirendid on olnud kasutusel pikka aega, kuid neist on saanud klassikaline näide selle kohta, kuidas saate kasutada spetsiaalset tüüpi andmetöötlust ja käivitada seda spetsiaalsel kiibil. See lisab omad väljakutsed: kuidas sellise seadmega suhelda, kuidas seda programmeerida. Olen hiljuti tegelenud piirkonna probleemidega mälu arvutamise lähedal. Võtate väikese protsessori ja liimite selle suure mälumahu külge, nii et mälu töötab L1 vahemälu kiirusel ja suhtleb seejärel seadmega nagu TPÜ – protsessor on hõivatud uute ülesannete laadimisega teie mälu tuuma. Veel üks huvitav näide on selliste asjade jaoks andmestruktuuride ja sideprotokollide kujundamine. Nii et kohandatud protsessorid ja riistvara täiustuvad veel mõnda aega.

Aleksei: Aga püsimälu (püsimälu)?

Maurice: Oh, see on veel üks suurepärane näide! NVM muudab suuresti seda, kuidas me vaatame selliseid asju nagu andmestruktuurid. Püsimälu tõotab teatud mõttes asju tõesti kiirendada. Kuid see ei tee elu lihtsamaks, sest enamik protsessoreid, vahemälu ja registreid on endiselt muutlikud. Kui alustate pärast krahhi, ei ole teie olek ja teie mälu olek täpselt sama, mis enne krahhi. Olen väga tänulik NVM-i kallal töötavatele inimestele – teadlastel jätkub veel pikaks ajaks tegevust õigsuse tingimuste väljaselgitamiseks. Arvutused on õiged, kui nad suudavad ellu jääda krahhi, mille korral vahemälu ja registrite sisu kaob, kuid põhimälu jääb puutumata.

Kompilaatorid vs protsessorid, RISC vs CISC, jagatud mälu vs sõnumite edastamine

Vladimir: Mida arvate "kompilaatorid vs. protsessorid" dilemmast käsukomplekti vaatenurgast? Lubage mul selgitada neile, kes ei ole kursis: kui me kasutame viltu mälu või midagi sarnast, võiksime kasutada väga lihtsat käskude komplekti ja paluda kompilaatoril luua keeruline kood, mis saaks uusi eeliseid ära kasutada. Või võime minna teist teed: rakendage keerukaid juhiseid ja paluge protsessoril juhised ümber järjestada ja nendega muid manipuleerimisi teha. Mis sa sellest arvad?

Maurice: Mul pole sellele küsimusele tegelikult vastust. See arutelu on kestnud neli aastakümmet. Oli aeg, mil vahel lühendatud käskude komplekt ja raske kodusõjad peeti käskude komplekti alusel. Mõnda aega võitsid RISC inimesed, kuid siis ehitas Intel nende mootorid ümber nii, et sisemiselt kasutati vähendatud juhiste komplekti ja kogu komplekt eksporditi väljastpoolt. See on ilmselt teema, milles iga uus põlvkond peab leidma omad kompromissid ja tegema oma otsused. Väga raske on ennustada, kumb neist asjadest parem saab. Nii et iga ennustus, mille ma teen, on teatud aja tõene ja siis mõnda aega jälle vale ja siis jälle tõene.

Aleksei: Kui tavaline on tööstuse jaoks, et mõned ideed võidavad mitu aastakümmet ja kaotavad järgmisel? Kas selliste perioodiliste muutuste kohta on veel näiteid?

Maurice: hajutatud andmetöötluse teemal on inimesi, kes sellesse usuvad jagatud mälu ja inimesed, kes usuvad Sõnumid. Algselt tähendab hajutatud andmetöötluses paralleelarvutus sõnumi edastamist. Siis avastas keegi, et ühismäluga on palju lihtsam programmeerida. Vastaspool ütles, et ühismälu on liiga keeruline, kuna see nõuab lukke ja muud sellist, seega tasub liikuda keelte juurde, kus peale sõnumite edastamise midagi lihtsalt ei eksisteeri. Keegi vaatas, mis sellest välja tuli, ja ütles: "Vau, see sõnumite rakendus näeb paljuski välja nagu jagatud mälu, sest loote palju ja palju neid väikeseid mooduleid, nad saadavad üksteisele sõnumeid ja kõik blokeering"Teeme parema ühismälu andmebaasi!" Kõik see kordub ikka ja jälle ning ei saa öelda, et ühel osapoolel on kindlasti õigus. Üks pooltest jääb alati domineerima, sest niipea, kui üks neist peaaegu võidab, leiutavad inimesed ikka ja jälle võimalusi teise täiustamiseks.

Hapra mitmelõimelise koodi kirjutamise kunst

Aleksei: See on väga huvitav. Näiteks kui me kirjutame koodi, olenemata programmeerimiskeelest, peame tavaliselt looma abstraktsioone, näiteks lahtreid, mida saab lugeda ja kirjutada. Kuid tegelikult võib see mõnel füüsilisel tasandil tunduda sõnumi saatmisena riistvarasiini kaudu erinevate arvutite ja muude seadmete vahel. Selgub, et töö käib korraga mõlemal abstraktsioonitasandil.

Maurice: See on täiesti tõsi, et jagatud mälu on üles ehitatud sõnumite edastamisele – bussidele, vahemäludele jne. Kuid sõnumiedastust kasutades on programme raske kirjutada, nii et riistvara valetab meelega, teeseldes, et teil on mingi ühtlane mälu. See muudab lihtsate ja õigete programmide kirjutamise lihtsamaks enne, kui jõudlus hakkab halvenema. Siis ütlete: tundub, et on aeg vahemäluga sõbruneda. Ja siis hakkad muretsema vahemälu asukoha pärast ja sealt see läheb. Teatud mõttes häkid sa abstraktsiooni: tead, et see pole ainult lame ja ühtlane mälu, ning kasutad neid teadmisi vahemälusõbralike programmide kirjutamiseks. Seda peate tegema tõeliste probleemide korral. See konflikt teile antud armsa, lihtsa ja kena abstraktsiooni ja selle aluseks oleva riistvara kohutavalt keeruka teostuse vahel on koht, kus igaüks teeb oma kompromissi. Mul on raamat multiprotsessorite ja sünkroonimise kohta ning ühel hetkel kavatsesin kirjutada peatüki andmestruktuuridest java.util.concurrent. Kui neid vaadata, siis sellised asjad nagu väljajätmistega nimekirjad Need on hämmastavad kunstiteosed. (Toimetaja märkus: Java keele tundjad peaksid vähemalt juurutamist vaatama ConcurrentSkipListMap, saate vaadata linke aadressil API и lähtekood). Aga minu vaatenurgast oleks vastutustundetu neid õpilastele näidata, sest selline andmestruktuur sarnaneb tüübiga tsirkuses, kes jookseb nööril üle karuaugu. Kui muudate kasvõi ühte väikest detaili, kukub kogu struktuur kokku. See kood on väga kiire ja elegantne juba ainuüksi seetõttu, et see on täiuslikult kirjutatud, kuid vähimgi muudatus viib täieliku ebaõnnestumiseni. Kui ma selle koodi õpilastele eeskujuks toon, siis nad ütlevad kohe: mina oskan ka seda! Ja siis kukub alla mõni lennuk või plahvatab tuumareaktor ja ma olen süüdi, et andsin neile liiga palju infot valel ajal.

Aleksei: Kui olin veidi noorem, proovisin mitu korda näiteks Doug Lee lähtekoodi uurida, java.util.concurrent, kuna see on avatud lähtekoodiga, on seda väga lihtne leida ja püüda aru saada, mis seal toimub. See ei tulnud väga hästi välja: sageli on täiesti ebaselge, miks Doug otsustas midagi nii teha, kui kõik teised teevad seda erinevalt. Kuidas te neid asju oma õpilastele selgitate? Kas on olemas konkreetne õige viis näiteks hardcore algoritmi konkreetsete detailide kirjeldamiseks? Kuidas sa seda teed?

Maurice: Joonistusõpetajatel on klišee, mis neile kõigepealt meelde tuleb: kui soovite joonistada nagu Picasso, peate esmalt õppima joonistama lihtsaid realistlikke pilte ja alles siis, kui teate reegleid, võite hakata neid rikkuma. Kui alustad kohe reegleid rikkudes, jõuad sassi. Esiteks õpetan ma õpilastele, kuidas kirjutada lihtsat ja õiget koodi ilma jõudluse pärast muretsemata. Ma tahan öelda, et siin varitsevad keerulised ajastusprobleemid, nii et ärge muretsege vahemälu ega mälumudelite pärast, vaid veenduge, et kõik töötab õigesti. See on juba piisavalt keeruline: kaasaegne programmeerimine pole iseenesest lihtne, eriti uutele õpilastele. Ja kui neil on intuitsioon õigete programmide kirjutamise kohta, ütlen: vaadake neid kahte spinlocki rakendust: üks on väga aeglane ja teine ​​pole samuti väga, kuid parem. Kuid matemaatiliselt on need kaks algoritmi samad. Tegelikult kasutab üks neist vahemälu asukohta. Üks neist töötab lokaalselt vahemällu salvestatud andmetel ja teine ​​teeb korduvalt toiminguid üle siini. Te ei saa kirjutada tõhusat koodi, kui te ei mõista, mis see on, ega tea, kuidas abstraktsiooni katkestada ja selle aluseks olevat struktuuri vaadata. Kuid te ei saa seda kohe tegema hakata. On inimesi, kes hakkavad seda kohe tegema ja usuvad oma geniaalsusesse, tavaliselt lõpeb see halvasti, sest nad ei mõista põhimõtteid. Keegi ei joonista nagu Picasso ega kirjuta selliseid programme nagu Doug Lee, kes oli esimesel nädalal ülikoolist välja tulnud. Selle teadmiste taseme saavutamiseks kulub aastaid.

Aleksei: Selgub, et jagate probleemi kaheks osaks: esimene on korrektsus, teine ​​​​tulemuslikkus?

Maurice: Täpselt. Ja täpselt selles järjekorras. Üks osa probleemist on selles, et uued õpilased ei saa aru, et korrektsust on raske saavutada. Esmapilgul öeldakse: see on ilmselgelt õige, jääb üle vaid kiirendada. Nii et mõnikord räägin neile algselt valest algoritmist, nagu oleks see õige.

Kuidas õpetada õpilasi kirjutama keerulist mitmelõimega koodi

Aleksei: Lihtsalt selleks, et näha, kas nad saavad saaki tajuda?

Maurice: Ma hoiatan alati ette, et mõnikord pakun välja valesid algoritme. Te ei tohiks inimesi petta. Soovitan neil infot soolaga suhtuda. Kui ma ütlen midagi ja ütlen: "vaata, see on ilmselgelt õige" - see on signaal, et kuskil üritatakse teid petta, ja peaksite hakkama küsimusi esitama. Järgmisena püüan julgustada õpilasi küsimusi esitama ja siis pakun: "Mis juhtub, kui jätame asjad nii, nagu nad on?" Ja nad näevad kohe viga. Kuid õpilaste veenmine, et nad peavad õigsuse pärast muretsema, on palju keerulisem, kui esmapilgul tundub. Paljud neist õpilastest on programmeerimiskogemusega keskkoolis, mõned on seal tööd saanud ja programmeerimisega tegelenud ning kõik on enesekindlusest tulvil. See on midagi armee sarnast: kõigepealt peate muutma nende meeleolu, et veenda neid kannatlikult lähenema tekkivate probleemide lahendamisele. Või võib-olla on see nagu buda munkadel: kõigepealt õpivad nad õigsuse üle arutlema ja kui nad saavad aru õigsuse arutlusviisidest, lastakse neil liikuda järgmisele tasemele ja hakata muretsema jõudluse pärast.

Aleksei: See tähendab, et mõnikord näitate õpilastele mittetöötavaid näiteid, tänu millele saate tagasisidet, mis näitab, kas nad saavad probleemi olemusest aru, kas nad leiavad vale koodi ja vale tulemuse. Niisiis, kas õpilased teevad teid tavaliselt rõõmsaks või kurvaks?

Maurice: Õpilased leiavad peaaegu alati vea lõpuks. Kui nad otsivad liiga aeglaselt, esitan suunavaid küsimusi ja siin on oluline mõista, et kui te neid kunagi ei peta, hakkavad nad teie sõnu mõistuseta tajuma kui ülimat tõde. Siis hakkab neil igav ja nad hakkavad tunni ajal sülearvutist Facebooki lugedes magama jääma. Aga kui ütlete neile ette, et neid petta ja nad näevad rumalad välja, kui nad trikki ei taju, muutuvad nad palju valvsamaks. See on hea erineval viisil. Tahaksin, et õpilased ei seaks kahtluse alla ainult oma arusaama sellest küsimusest, vaid seaksid kahtluse alla ka õpetaja autoriteedi. Mõte on selles, et õpilane võib igal ajal käe tõsta ja öelda: ma arvan, et see, mida sa just ütlesid, on vale. See on oluline õppevahend. Ma ei taha, et ükski tudeng istuks ja mõtleks vaikselt omaette: see kõik tundub täielik jama, aga käe tõstmine on liiga hirmutav ja igatahes on ta professor, nii et kõik, mida ta ütleb, on tõde. Seega, kui neid hoiatatakse ette, et kõik räägitud ei pruugi olla tõsi, on neil stiimul materjalile rohkem tähelepanu pöörata. Ma ütlen selgelt, et on okei tõsta käsi ja esitada küsimusi. Teie küsimus võib tunduda rumal või naiivne, kuid sageli tekivad just nii parimad küsimused.

Aleksei: Väga huvitav. Tavaliselt on inimestel mingi psühholoogiline barjäär, mis ei lase neil professorile küsimust esitada. Eriti kui ruumis on palju inimesi ja kõik kardavad, et teie rumala küsimuse arutamine võtab kõigi nende inimeste aja. Kas on mingeid nippe, kuidas sellega toime tulla?

Maurice: Ma peatun sageli ja esitan klassikalisi küsimusi. Kas väide oleks õige või kuidas nad arutatava probleemi lahendaksid. See on põhitegevus, eriti õppetunni alguses, kui inimestel on piinlik öelda isegi kõige väiksemat asja. Esitate õpilastele küsimuse ja ei ütle enam midagi. On vaikus, kõik lähevad veidi pingesse, pinge kasvab, siis äkki keegi ei talu, murdub ja ütleb vastuse. Nii keerad olukorra ümber: vaikimine muutub raskemaks ja ebamugavamaks kui vastamine! See on tavaline pedagoogiline trikk. Iga õpetaja maailmas peaks teadma, kuidas seda teha.

Aleksei: Nüüd on meil sellele intervjuule suurepärane pealkiri: "Lihtsam on vastata kui vaikida."

Vitali: Las ma küsin uuesti. Te töötate topoloogiliste tõestuste kallal. Kuidas sa üldse sellesse puutusid, sest hajutatud andmetöötlus ja topoloogia on täiesti erinevad asjad!

Maurice: Seal on varjatud seos. Kui olin matemaatikat õppiv üliõpilane, õppisin puhast matemaatikat. Kuni õpingute lõpuni ei tundnud ma arvutite vastu tõelist huvi ja leidsin end silmitsi tungiva vajadusega tööd otsida. Üliõpilasena õppisin algebralist topoloogiat. Palju aastaid hiljem, töötades probleemi kallal nimega "k-komplekti lepingu probleem", kasutasin probleemi modelleerimiseks graafikuid ja, nagu tol ajal tundus, olin leidnud lahenduse. Tuli lihtsalt maha istuda ja loenduse ümber käia. Proovige sellelt graafikult leida sobiv vastus. Kuid minu algoritm ei töötanud: selgus, et ta jookseb ringi igavesti. Kahjuks ei suudetud seda kõike seletada graafiteooria formaalses keeles – selles, mida teavad kõik arvutiteadlased. Ja siis meenus mulle, et aastaid tagasi, topoloogiatundides, kasutasime seda mõistet "lihtne kompleks", mis on graafikute üldistus kõrgematele mõõtmetele. Siis küsisin endalt: mis juhtuks, kui sõnastaksime probleemi ümber lihtsate komplekside kaudu? Sellest sai võtmehetk. Kasutades võimsamat formalismi, muutub probleem järsku palju lihtsamaks. Inimesed võitlesid selle vastu pikka aega, kasutades graafikuid, kuid nad ei saanud midagi teha. Ja isegi praegu nad ei saa - õige vastus osutus mitte algoritmiks, vaid tõendiks probleemi lahendamise võimatuse kohta. See tähendab, et sellist algoritmi lihtsalt pole. Aga iga tõend võimatusest põhinevad kas lihtsatel kompleksidel või asjadel, mida inimesed teeseldes ei pea lihtsateks kompleksideks. Lihtsalt sellepärast, et nimetate midagi uueks nimeks, ei kaota see oma olemust.

Vitali: Tuleb välja, et sul lihtsalt vedas?

Maurice: Lisaks õnnele on see ka valmisolek. See tähendab, et te ei tohiks unustada varem õpitud "kasutuid" asju. Mida rohkem kasutuid asju õpid, seda rohkem ideid saad uue probleemiga silmitsi seistes ammutada. Selline intuitiivne mustrite sobitamine on oluline, sest... Teeme nii, see on ahel: algul avastasin, et graafikud ei tööta üldse või ei tööta üldse, see meenutas mulle midagi kaheksast sündmustest aastat tagasi ja minu tudengiaastad, kui uurisime kõiki neid lihtsaid komplekse. See omakorda võimaldas mul leida üles oma vana topoloogiaõpiku ja selle pähe tagasi laadida. Aga kui poleks olnud neid vanu teadmisi, poleks ma algse probleemi lahendamisel kunagi edusamme teinud.

Raamatu "Mitmeprotsessorprogrammeerimise kunst" uus trükk

Aleksei: Sa ütlesid paar sõna oma raamatu kohta. See pole ilmselt kõige hullem saladus, et kirjutasite maailma kuulsaima mitmelõimelise raamatu, "Mitmeprotsessorilise programmeerimise kunst". See on juba umbes 11 aastat vana ja sellest ajast alates on see ainult välja antud  parandatud kordustrükk. Kas tuleb teine ​​trükk?

Maurice: Hea, et küsisid! See on varsti, umbes kolme kuu pärast. On veel kaks autorit, lisasime palju rohkem materjali, täiustasime kahvli/liitumise paralleelsuse jaotist, kirjutasime MapReduce'i jaotise, lisasime palju uut ja viskasime välja mittevajalikud – see oli kirjutamise ajal väga huvitav. esimene trükk, kuid seda täna enam pole. Tulemuseks oli väga tõsiselt muudetud raamat.

Aleksei: Kõik on juba tehtud, jääb üle vaid see vabastada?

Maurice: Paar peatükki vajavad veel tööd. Meie kirjastaja (kes ma arvan, et meid juba vihkab) üritab endiselt edastada sõnumit, et peaksime kiiremini töötama. Oleme graafikust kõvasti maas. Teoreetiliselt oleksime võinud selle raamatu teha paar aastat varem.

Aleksei: Kas teil on võimalus enne jõule saada raamatu uus versioon?

Maurice: See on meie eesmärk! Aga ma olen nii palju kordi võitu ennustanud, et keegi ei usu mind enam. Tõenäoliselt ei tohiks te mind selles küsimuses liiga palju usaldada.

Aleksei: Igal juhul on see fantastiline uudis. Mulle meeldis väga raamatu esimene trükk. Võib öelda, et olen fänn.

Maurice: Loodan, et uus väljaanne on teie tulihingelise entusiasmi vääriline, aitäh!

Kuidas tehingumälu leiutati

Vitali: Järgmine küsimus puudutab tehingumälu. Minu arusaamist mööda oled sa selles vallas teerajaja, mõtlesid selle välja ajal, mil keegi sellistele asjadele ei mõelnud. Miks otsustasite sellele alale kolida? Miks tundusid tehingud teile olulised? Kas arvasite, et kunagi hakatakse neid riistvaras rakendama?

Maurice: Olen tehingutest teadnud juba oma ülikooli lõpetanud uurimistööst saadik.

Vitali: Jah, aga need on erinevad tehingud!

Maurice: Töötasin koos Elliott Mossiga mitteblokeeriva prügi kogumise kallal. Meie probleem seisnes selles, et tahtsime paar sõna mälus atomaarselt muuta ja siis muutuvad algoritmid väga lihtsaks ja vähemalt mõned neist muutuvad tõhusamaks. Kasutades võrdle ja vaheta eest load-link/store-conditionalmida pakub paralleelarhitektuur, on võimalik midagi teha, kuid see on väga ebaefektiivne ja inetu, kuna peaksite tegelema kaudsete kihtidega. Ma tahan mälusõnu muuta ja pean vahetama, kuna saan muuta ainult ühte kursorit, seega peavad need osutama mingisugusele kataloogilaadsele struktuurile. Rääkisime, kui tore oleks, kui saaksime riistvara muuta nii, et see suudaks samaaegselt salvestada. Tundub, et Elliott on seda märganud: kui vaadata vahemälu sidususe protokolle, siis need pakuvad juba enamikku vajalikest funktsioonidest. Optimistliku tehingu korral märkab vahemälu sidususe protokoll, et on tekkinud ajastuskonflikt ja vahemälu muutub kehtetu. Mis juhtub, kui käivitate tehingu oma vahemälus spekulatiivselt ja kasutate konfliktide tuvastamiseks sidususprotokolli mehhanisme? Spekulatiivset riistvaraarhitektuuri oli lihtne kujundada. Nii et me kirjutasime selle kõige esimene väljaanne tehingumälu kohta. Samal ajal lõi ettevõte, kus ma töötasin, Digital Equipment Corporation uut 64-bitist protsessorit nimega Alpha. Niisiis läksin ja pidasin Alpha arendusgrupile ettekande meie hämmastava tehingumälu kohta ja nad küsisid: kui palju saaks meie ettevõte täiendavat tulu, kui lisaksime selle kõik otse protsessorisse? Ja mul polnud sellele absoluutselt vastust, sest ma olen tehnoloog, ma ei ole turundusspetsialist. Mul polnud tõesti midagi vastata. Neile ei avaldanud suurt muljet, et ma midagi ei teadnud.

Vitali: Miljardid! Ütle lihtsalt miljardid!

Maurice: Jah, ma oleksin pidanud seda ütlema. Nüüd, idufirmade ja muu ajastul, tean, kuidas äriplaani kirjutada. Et võite oma potentsiaalse kasumi suuruse kohta veidi valetada. Kuid neil päevil tundus see naiivne, nii et ma ütlesin lihtsalt: "Ma ei tea." Kui vaatate tehingumälu väljaande ajalugu, siis märkate, et aasta pärast oli sellele mitu viidet ja siis kümmekond aastat ei viidanud keegi seda paberit üldse. Tsitaadid ilmusid 2004. aasta paiku, kui ilmusid tõelised mitmetuumalised. Kui inimesed avastasid, et paralleelkoodi kirjutamine võib raha teenida, algasid uued uuringud. Ravi Rajwar kirjutas artikli, mis tõi mingil moel peavoolule tehingumälu mõiste. (Toimetaja märkus: sellel artiklil on teine ​​versioon, mis avaldati 2010. aastal ja on vabalt saadaval PDF-ina). Järsku said inimesed aru, kuidas seda kõike täpselt kasutada saab, kuidas traditsioonilisi lukkudega algoritme kiirendada. Hea näide millestki, mis varem tundus lihtsalt huvitav akadeemiline probleem. Ja jah, kui oleksite tookord küsinud, kas ma arvan, et see kõik on tulevikus oluline, oleksin öelnud: muidugi, aga millal täpselt, pole selge. Võib-olla 50 aasta pärast? Praktikas osutus see vaid kümnendiks. On väga tore, kui teed midagi ja juba kümne aasta pärast märkavad inimesed seda.

Miks tasub teha uuringuid hajutatud andmetöötluse valdkonnas

Vitali: Kui räägime uutest uuringutest, siis mida soovitaksite lugejatele – hajutatud andmetöötlust või mitmetuumalist ja miks? 

Maurice: Tänapäeval on lihtne hankida mitmetuumalist protsessorit, kuid raskem on luua tõelist hajutatud süsteemi. Hakkasin nendega tegelema, sest tahtsin teha midagi erinevat oma doktoritööst. See on nõuanne, mida ma uutele üliõpilastele alati annan: ärge kirjutage oma lõputööle jätk – proovige minna uues suunas. Ja ka mitme lõimega ühendamine on lihtne. Saan katsetada oma sülearvutiga töötava kahvliga, ilma voodist tõusmata. Aga kui ma järsku tahaks luua päris hajutatud süsteemi, siis peaksin tegema palju tööd, meelitama õpilasi jne. Olen laisk inimene ja töötaksin pigem mitme tuumaga. Mitmetuumalistes süsteemides katsetamine on ka lihtsam kui hajutatud süsteemides katsetamine, sest isegi rumalas hajutatud süsteemis on liiga palju tegureid, mida tuleb kontrollida.

Vitali: Mida sa praegu teed, uurid plokiahelat? Millistele artiklitele peaksite kõigepealt tähelepanu pöörama?

Maurice: Hiljuti ilmunud väga hea artikkel, mille kirjutasin koos oma õpilase Vikram Sarafiga, spetsiaalselt vestluseks aadressil Tokenomcsi konverents Pariisis kolm nädalat tagasi. See on artikkel praktiliste hajutatud süsteemide kohta, milles teeme ettepaneku muuta Ethereum mitmelõimeliseks. Praegu täidetakse nutikaid lepinguid (plokiahelas töötav kood) järjestikku. Kirjutasime varem artikli, mis rääkis sellest, kuidas kasutada protsessi kiirendamiseks spekulatiivseid tehinguid. Võtsime palju ideid tarkvara tehingumälust ja ütlesime, et kui teha need ideed Etheriumi virtuaalmasina osaks, siis kõik töötab kiiremini. Aga selleks on vaja, et lepingutes ei oleks andmekonflikte. Ja siis eeldasime, et päriselus selliseid konflikte tõesti pole. Kuid meil polnud võimalust seda teada saada. Siis meenus meile, et meie käes on peaaegu kümme aastat reaalset lepingute ajalugu, nii et jätsime Ethereumi plokiahela maha ja küsisime endalt: mis juhtuks, kui neid ajaloolisi kirjeid täidetaks paralleelselt? Avastasime kiiruse olulise tõusu. Ethereumi algusaegadel kasvas kiirus väga palju, kuid tänapäeval on kõik mõnevõrra keerulisem, sest lepinguid on vähem ja serialiseerimist nõudvate andmete konfliktide tõenäosus on suurenenud. Kuid kõik see on eksperimentaalne töö tõeliste ajalooliste andmetega. Tore asi plokiahela juures on see, et see jätab kõik igaveseks meelde, nii et saame ajas tagasi minna ja uurida, mis oleks juhtunud, kui oleksime koodi käivitamiseks kasutanud erinevaid algoritme. Kuidas oleks meie uus idee minevikus inimestele meeldinud? Sellist uurimistööd on palju lihtsam ja mõnusam teha, sest on olemas asi, mis kõike jälgib ja kõike salvestab. See on juba midagi sarnasemat sotsioloogiale kui algoritmide arendamisele.

Kas algoritmide arendamine on peatunud ja kuidas edasi?

Vitali: On aeg esitada viimane teoreetiline küsimus! Kas tundub, et konkurentsivõimeliste andmestruktuuride edusammud vähenevad iga aastaga? Kas arvate, et oleme andmestruktuuride mõistmises jõudnud platoole või tehakse olulisi parandusi? Võib-olla on mõni nutikas idee, mis võib kõike täielikult muuta?

Maurice: Võib-olla oleme traditsiooniliste arhitektuuride andmestruktuurides jõudnud platoole. Kuid uute arhitektuuride andmestruktuurid on endiselt väga paljutõotav valdkond. Kui soovite luua andmestruktuure näiteks riistvarakiirendite jaoks, siis on GPU andmestruktuurid väga erinevad protsessori andmestruktuuridest. Kui arendate plokiahelate jaoks andmestruktuure, peate räsi andma ja seejärel sisestama need millekski nagu Merkle puu, võltsimise vältimiseks. Viimasel ajal on selles vallas toimunud hoogne tegevus, paljud teevad väga head tööd. Kuid ma arvan, et see, mis juhtub, on see, et uued arhitektuurid ja uued rakendused toovad kaasa uued andmestruktuurid. Pärandrakendused ja traditsiooniline arhitektuur – uurimiseks ei pruugi enam palju ruumi olla. Kui aga kõnnid maha ja vaatad äärtest kaugemale, näed hullumeelseid asju, mida peavool tõsiselt ei võta – seal juhtub tõesti kõik põnevad asjad.

Vitali: Seetõttu, et olla väga kuulus teadlane, pidin ma leiutama oma arhitektuuri :)

Maurice: Võite "varastada" kellegi teise uut arhitektuuri – see tundub palju lihtsam!

Töötab Browni ülikoolis

Vitali: Kas te võiksite meile sellest lähemalt rääkida Browni ülikoolkus sa töötad? Infotehnoloogia kontekstis pole temast palju teada. Vähem kui näiteks MIT kohta.

Maurice: Browni ülikool on üks USA vanimaid ülikoole. Ma arvan, et ainult Harvard on veidi vanem. Pruun on osa nn Ivy League, mis on kaheksa vanima ülikooli kogu. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, Pennsylvania, Princeton. See on selline vana, väike ja natuke aristokraatlik ülikool. Põhirõhk on vabade kunstide haridusel. See ei ürita olla nagu MIT, MIT on väga spetsialiseerunud ja tehniline. Brown on suurepärane koht vene kirjanduse või klassikalise kreeka keele ja loomulikult arvutiteaduse õppimiseks. See keskendub igakülgsele haridusele. Enamik meie õpilasi käib Facebookis, Apple'is, Google'is – seega arvan, et meie õpilastel pole selles valdkonnas töö leidmisega probleeme. Ma läksin Browni tööle, kuna olin varem töötanud Bostonis Digital Equipment Corporationis. See oli ettevõte, mis leiutas palju huvitavaid asju, kuid eitas personaalarvutite tähtsust. Raske saatusega ettevõte, mille asutajad olid kunagi noored revolutsionäärid, nad ei õppinud midagi ega unustanud midagi ning nii muutusid nad umbes tosina aastaga revolutsionääridest reaktsioonilisteks. Neile meeldis nalja visata, et personaalarvutid kuulusid garaaži – loomulikult mahajäetud garaaži. On üsna ilmne, et need hävitasid paindlikumad ettevõtted. Kui selgus, et ettevõte on hädas, helistasin oma sõbrale Brownis, mis asub Bostonist umbes tund aega väljaspool. Ma ei tahtnud tol ajal Bostonist lahkuda, sest teistes ülikoolides ei olnud palju avamisi. See oli aeg, mil arvutiteaduses ei olnud nii palju töökohti kui praegu. Ja Brownil oli avatus, ma ei pidanud oma kodu kolima, ma ei pidanud oma perekonda kolima ja mulle väga meeldib Bostonis elada! Nii otsustasin Browni minna. Mulle meeldib see. Õpilased on suurepärased, nii et ma isegi ei proovinud kunagi mujale minna. Sabatiajal töötasin aasta Microsoftis, aastaks Haifas Technionis ja nüüd olen Algorandis. Mul on igal pool palju kolleege ja seetõttu pole meie klassiruumide füüsiline asukoht nii oluline. Kõige tähtsam on aga õpilased, nemad on siin parimad. Ma pole kunagi proovinud kuhugi mujale minna, sest olen siin üsna õnnelik.

Vaatamata Browni kuulsusele USA-s on ta välismaal üllatavalt tundmatu. Nagu näete, teen praegu kõik endast oleneva, et seda olukorda parandada.

Erinevus ülikoolis ja ettevõttes tehtava uurimistöö vahel

Vitali: Olgu, järgmine küsimus puudutab digitaalseid seadmeid. Olite seal teadlasena. Mis vahe on suurettevõtte teadus- ja arendusosakonnas töötamisel ülikoolis töötamisest? Millised on eelised ja puudused?

Maurice: Kakskümmend aastat töötasin Microsoftis, tegin tihedat koostööd Sun Microsystemsi, Oracle'i, Facebooki ja nüüd ka Algorandi töötajatega. Kõige selle põhjal tahan öelda, et esmaklassilist uurimistööd on võimalik teha nii ettevõtetes kui ka ülikoolides. Oluline erinevus on selles, et ettevõttes töötatakse koos kolleegidega. Kui mul tekib ootamatult idee projektiks, mida veel ei eksisteeri, pean oma kaaslasi veenma, et see on hea idee. Kui ma olen Brownis, siis võin oma õpilastele öelda: töötame antigravitatsiooni kallal! Nad kas lahkuvad kellegi teise pärast või võtavad projekti ette. Jah, ma pean leidma rahastuse, kirjutama toetustaotluse ja nii edasi. Igal juhul on õpilasi alati palju ja saate ühepoolselt otsuseid langetada. Kuid ülikoolis ei tööta sa tõenäoliselt oma tasemega inimestega. Tööstusuuringute maailmas peate kõigepealt veenma kõiki, et teie projekt on seda väärt. Ma ei saa kellelegi midagi tellida. Ja mõlemad need tööviisid on väärtuslikud, sest kui töötate millegi tõeliselt pöörase kallal ja kolleege on raske veenda, on magistrandeid lihtsam veenda – eriti kui maksate neile palka. Kui töötate millegi kallal, mis nõuab palju kogemusi ja sügavaid teadmisi, siis vajate kolleege, kes oskavad öelda "ei, see juhtub nii, et ma saan sellest valdkonnast aru ja teie idee on halb, see ei tööta." See on aja raiskamise seisukohalt väga kasulik. Samuti, kui tööstuslaborites kulutate palju aega aruannete kirjutamisele, siis ülikoolis kulub see aeg raha leidmisele. Kui ma tahan, et õpilased saaksid kuhugi minna, siis pean selle jaoks raha mujalt leidma. Ja mida olulisem on teie positsioon ülikoolis, seda rohkem aega peate kulutama raha kogumisele. Nii et nüüd teate, mille nimel ma töötan – professionaalse kerjusena! Nagu üks neist munkadest, kes ohverdamistaldrikuga ringi käib. Üldiselt need kaks tegevust täiendavad üksteist. Seetõttu püüan mõlemas maailmas elada ja jalad maas hoida.

Vitali: Tundub, et ettevõtte veenmine on keerulisem kui teiste teadlaste veenmine.

Maurice: Raskem ja palju muud. Pealegi on see erinevates valdkondades erinev: mõned viivad läbi täismahus uurimistööd, teised aga keskenduvad oma teemale. Kui ma läheksin Microsofti või Facebooki ja ütleksin: teeme antigravitatsiooni, siis vaevalt nad seda hindaksid. Aga kui ma ütleksin täpselt sama oma magistrantidele, jõuaksid nad suure tõenäosusega kohe tööle, kuigi nüüd oleks mul probleeme - ju pean selle jaoks raha leidma. Kuid seni, kuni soovite teha midagi, mis on kooskõlas ettevõtte eesmärkidega, võib see ettevõte olla väga hea koht uurimistöö tegemiseks.

Hüdra ja SPTDC

Vitali: Minu küsimused hakkavad lõppema, nii et räägime veidi eelseisvast Venemaa reisist.

Maurice: Jah, ma ootan põnevusega Peterburi naasmist.

Aleksei: Mul on au, et olete sel aastal meiega. See on teie teine ​​kord Peterburis, eks?

Maurice: Juba kolmas!

Aleksei: Ma saan aru, aga SPTDC – kindlasti teine. Viimati helistati kooli SPTCC, oleme nüüd muutnud ühe tähe (C täheks D, samaaegselt hajutatud), rõhutamaks, et sel aastal on rohkem valdkondi, mis on seotud konkreetselt hajutatud andmetöötlusega. Kas saate öelda paar sõna oma aruannete kohta Koolis ja Hydra konverents?

Maurice: Koolis tahan rääkida plokiahela põhitõdedest ja sellest, mida sellega teha saab. Tahaksin näidata, et plokiahelad on väga sarnased meile tuttava mitme lõimega programmeerimisega, kuid oma nüanssidega ja neid erinevusi on oluline mõista. Kui teete vea tavalises veebirakenduses, on see lihtsalt tüütu. Kui kirjutate finantsrakendusse lollaka koodi, varastab keegi kindlasti kogu teie raha. Need on täiesti erinevad vastutuse ja tagajärgede tasemed. Räägin natuke töötõestusest, nutikatest lepingutest, tehingutest erinevate plokiahelate vahel.

Minu kõrval töötavad teised esinejad, kellel on samuti plokiahela kohta midagi öelda ja leppisime omavahel kokku, et meie lood hästi kokku sobiksid. Kuid inseneriaruande jaoks tahan anda laiale publikule arusaadava selgituse selle kohta, miks te ei peaks uskuma kõike, mida plokiahelate kohta kuulete, miks plokiahelad on suurepärane valdkond, kuidas see sobib teiste tuntud ideedega ja miks peaksime julgelt vaatama. tulevikku.

Aleksei: Lisaks tahan öelda, et see ei toimu kohtumise või kasutajagrupi formaadis, nagu see oli kaks aastat tagasi. Otsustasime kooli lähedal korraldada väikese konverentsi. Põhjus on selles, et pärast Peter Kuznetsoviga suhtlemist saime aru, et kool on piiratud vaid saja, võib-olla 120 inimesega. Samas on palju insenere, kes tahavad sinuga suhelda, käivad esitlustel ja tunnevad teema vastu üldiselt huvi. Sel põhjusel oleme loonud uue konverentsi nimega Hydra. Muide, teil on ideid, miks Hydra?

Maurice: Sest kõnelejaid on seitse? Ja nende pead saab ära lõigata ja nende asemele kasvavad uued kõlarid?

Aleksei: Suurepärane idee uute kõlarite kasvatamiseks. Aga tegelikult on siin lugu. Pidage meeles legendi Odysseusest, mille vahel ta pidi purjetama Scylla ja Charybdis? Hüdra on midagi Charybdise sarnast. Lugu on selline, et kord esinesin ühel konverentsil ja rääkisin mitmelõimelisest. Sellel konverentsil oli ainult kaks lugu. Ettekande alguses ütlesin saalis publikule, et neil on nüüd valida Scylla ja Charybdise vahel. Minu vaimloom on Charybdis, sest Charybdisel on palju päid ja minu teema on mitmelõimeline. Nii ilmuvad konverentside nimed.

Meil on igal juhul küsimused ja aeg otsa saanud. Seega, aitäh teile, sõbrad, suurepärase intervjuu eest ning kohtumiseni SPTDC koolis ja Hydras 2019!

Vestlust Maurice'iga saab jätkata Hydra 2019 konverentsil, mis toimub 11.-12 Peterburis. Ta tuleb aruandega "Plokiahelad ja hajutatud andmetöötluse tulevik". Pileteid saab osta ametlikul veebisaidil.

Allikas: www.habr.com

Lisa kommentaar