"Isilik egotea baino errazagoa da erantzutea" - Maurice Herlihy memoria transakzionalaren aitari egindako elkarrizketa bikaina

Maurice Herlihy - biren jabea Dijkstra Sariak. Lehenengoa lan egiteko da "Itxaron gabeko sinkronizazioa" (Brown University) eta bigarrena, berriagoa, - "Memoria transakzionala: blokeorik gabeko datu-egituretarako euskarri arkitektonikoa" (Virginia Unibertsitate Teknologikoa). Dijkstra saria gutxienez hamar urtez garrantzia eta eragina nabaria izan duten lanari ematen zaio eta Maurice, jakina, arloko espezialista ospetsuenetako bat da. Gaur egun, Brown Unibertsitatean irakasle gisa lan egiten du eta paragrafo bateko lorpen ugari ditu. Gaur egun, blockchain-a ikertzen ari da banatutako informatika klasikoaren testuinguruan.

Aurretik, Maurice jada Errusiara etorri zen SPTCCrako (bideo zinta) eta JUG.ru Java garatzaileen komunitatearen bilera bikaina egin zuen San Petersburgon (bideo zinta).

Habrapost hau Maurice Herlihyri egindako elkarrizketa bikaina da. Honako gai hauek eztabaidatzen ditu:

  • Akademiaren eta industriaren arteko elkarrekintza;
  • Blockchain Ikerketarako Fundazioa;
  • Nondik datoz ideia aurreratzaileak? Ospearen eragina;
  • Barbara Liskov-en zuzendaritzapean doktorea;
  • Mundua nukleo anitzeko zain dago;
  • Mundu berri batek arazo berriak dakartza. NVM, NUMA eta arkitektura-pirateatzea;
  • Konpiladoreak vs prozesadoreak, RISC vs CISC, partekatutako memoria vs mezuak pasatzea;
  • Hari anitzeko kode hauskorra idazteko artea;
  • Nola irakatsi ikasleei hari anitzeko kode konplexua idazten;
  • β€œThe Art of Multiprocessor Programming” liburuaren edizio berria;
  • Memoria transakzionala nola asmatu zen;   
  • Zergatik merezi duen konputazio banatuaren alorrean ikerketak egitea;
  • Algoritmoen garapena gelditu al da, eta nola egin aurrera;
  • Brown Unibertsitatean lan egin;
  • Unibertsitateko eta korporazio barruko ikerketaren arteko aldea;
  • Hydra eta SPTDC.

Elkarrizketa honako hauek egiten dute:

Vitali Aksenov β€” gaur egun, IST Austrian doktorea eta ITMO Unibertsitateko Informatika Teknologien Saileko langilea. Datu lehiakorren egituren teoria eta praktikaren alorrean ikerketak egiten ditu. ISTn lan egin aurretik, doktoretza egin zuen Paris Diderot Unibertsitatean eta ITMO Unibertsitatean, Peter Kuznetsov irakaslearen zuzendaritzapean.

Alexey Fedorov - JUG Ru Group-eko ekoizlea, garatzaileentzako hitzaldiak antolatzen dituen Errusiako enpresan. Alexeyk 50 hitzaldi baino gehiago prestatzen parte hartu zuen, eta bere curriculumak Oracle-ko garapen ingeniari baten kargutik hasita (JCK, Java Platform Group) Odnoklassnikiko garatzaile baten posturaino daude.

Vladimir Sitnikov - Netcracker-eko ingeniaria. Hamar urteko lana NetCracker OS-en errendimenduan eta eskalagarritasunean, telekomunikazio-operadoreek sareko eta sareko ekipoen kudeaketa-prozesuak automatizatzeko erabiltzen duten softwarea. Java eta Oracle Database errendimendu-arazoetan interesatzen zaizu. PostgreSQL JDBC kontrolatzaile ofizialean dozena bat errendimendu hobekuntza baino gehiagoren egilea.

Akademiaren eta industriaren arteko elkarrekintza

Alexey: Maurice, oso denbora luzez aritu zara ingurune akademikoan eta lehenengo galdera esparru akademikoaren eta industrialaren arteko elkarrekintza da. Beraien arteko elkarreraginak azkenaldian nola aldatu diren esango al zenuke? Zer gertatu zen duela 20-30 urte eta zer gertatzen ari da orain? 

Maurice: Beti saiatu naiz merkataritza-enpresekin lankidetza estuan aritzen, arazo interesgarriak dituztelako. Oro har, ez dute oso interesatzen ez euren emaitzak argitaratzeko, ez munduko komunitateari euren arazoen azalpen zehatzak emateko. Arazo horiek konpontzea baino ez zaie interesatzen. Denbora batez horrelako enpresetarako lan egin nuen. Bost urte eman nituen lanaldi osoko lanean Digital Equipment Corporation-en ikerketa-laborategi batean, lehen informatika-enpresa handia zena. Astean egun batean lan egiten nuen Sun-en, Microsoft-en, Oracle-n, eta lan txiki bat egin nuen Facebook-en. Orain opor sabatiko batera joango naiz (amerikar unibertsitate bateko irakasle batek sei urtean behin gutxi gorabehera urtebetez baimena ematen du halako baimena) eta lan egingo dut. Algorand, hau Bostoneko kriptomoneta enpresa bat da. Enpresekin estuki lan egitea beti izan da plazer bat, horrela ikasten baita gauza berri eta interesgarriak. Aukeratutako gai bati buruzko artikulu bat argitaratzen duen lehena edo bigarrena ere izan zaitezke, beste guztiek dagoeneko lantzen dituzten arazoen konponbideak pixkanaka hobetzen lan egin beharrean.

Alexey: Esango al diguzu zehatzago nola gertatzen den hau?

Maurice: Noski. Badakizu, Digital Equipment Corporation-en lanean nengoela, ni eta Elliot Moss-ek, memoria transakzionala asmatu genuen. Oso garai emankorra izan zen, denek informazioaren teknologiarekin interesatzen hasi zirenean. Paralelismoa, barne, nukleo anitzeko sistemak oraindik existitzen ez ziren arren. Sun eta Oracle egunetan, asko lan egin nuen datu-egitura paraleloetan. Facebooken euren blockchain proiektuan lan egin nuen, ezin dut hitz egin, baina espero dut laster publiko egitea. Datorren urtean, Algoranden, kontratu adimentsuak aztertzen dituen ikerketa talde batean arituko naiz.

Alexey: Blockchain oso gai ezaguna bihurtu da azken urteotan. Horrek lagunduko dizu ikerketan? Beharbada, errazagoa izango da industrian diharduten enpresen diru-laguntzak lortzea edo baliabideak eskuratzea?

Maurice: Ethereum Fundazioaren beka txiki bat jaso nuen jada. Blockchain-en ospea oso lagungarria da ikasleak arlo honetan lan egitera bultzatzeko. Oso interesatuta daude eta parte hartzeko ilusioa dute, baina batzuetan ez dira konturatzen kanpotik zirraragarria dirudien ikerketak oso lan gogorra suposatzen duela. Hala ere, ilusio handiz nago blockchain-en inguruan mistika hori guztia erabiltzeak ikasleak erakartzen laguntzeko. 

Baina hori ez da guztia. Blockchain hainbat startupren aholku-batzordean nago. Batzuek arrakasta izan dezakete, beste batzuek ez, baina beti da oso interesgarria haien ideiak ikustea, aztertzea eta jendeari aholku ematea. Zirraragarriena jendeari zerbait ez egiteko abisatzen diozunean da. Hasieran gauza asko ideia onak dirudite, baina benetan al dira?

Blockchain Ikerketarako Fundazioa

Vitaly: Batzuek uste dute etorkizuna blockchain-en eta bere algoritmoen baitan dagoela. Eta beste batzuek diote beste burbuila bat dela. Zure iritzia partekatu dezakezu gai honi buruz?

Maurice: Blockchain munduan gertatzen den gauza asko gaizki daude, batzuk iruzurra besterik ez dira, asko gainbaloratuta daude. Hala ere, uste dut oinarri zientifiko sendoa dagoela ikerketa hauetarako. Blockchain mundua ezberdintasun ideologikoz beteta egoteak ilusio eta dedikazio maila erakusten du. Bestalde, hori ez da bereziki onuragarria ikerketa zientifikorako. Orain, algoritmo jakin baten gabeziei buruz hitz egiten duen artikulu bat argitaratzen baduzu, ondoriozko erreakzioa ez da beti guztiz zientifikoa. Askotan jendeak bere emozioak botatzen ditu. Uste dut arlo honetako zirrara mota hori erakargarria irudituko zaiela batzuei, baina azkenean, benetako zientifiko eta ingeniaritza gaiak landu beharrekoak dira. Hemen Informatika asko dago.

Vitaly: Beraz, blockchain ikerketarako oinarriak jartzen saiatzen ari zara, ezta?

Maurice: Diziplina sendo, zientifikoki eta matematikoki sendo baten oinarriak jartzen saiatzen ari naiz. Eta arazoaren zati bat da batzuetan beste pertsonen jarrera gogorregi batzuekin kontraesanean jarri behar dituzula eta alde batera utzi. Batzuetan jendeak galdetzen du zergatik lan egiten dudan terroristak eta narkotrafikatzaileak bakarrik interesatzen dituen eremu batean. Erreakzio horrek zure hitzak itsu-itsuan errepikatzen dituzten jarraitzaileen jokabidea bezain zentzugabea da. Nik uste dut egia erdi-erdian dagoela. Blockchain-ek eragin handia izango du gizartean eta ekonomia globalean. Baina ziurrenik hau ez da teknologia modernoari esker gertatuko. Teknologia modernoak garatuko dira eta etorkizunean blockchain deituko dena oso garrantzitsua izango da. Agian ez du bloke modernoen itxurarik ere, hori galdera irekia da.

Jendeak teknologia berriak asmatzen baditu, blockchain deitzen jarraituko du. Esan nahi dut, gaur egungo Fortranak ez duela zerikusirik 1960ko hamarkadako Fortran hizkuntzarekin, baina denek Fortran deitzen jarraitzen dute. Berdin UNIXentzat. "Blockchain" deitzen denak bere iraultza egingo du oraindik. Baina zalantza dut bloke-kate berri hau gaur egun guztiek erabiltzen dutenaren antzekoa izango dela.

Nondik datoz ideia aurreratzaileak? Ospearen eragina

Alexey: Blockchain-en ospeak emaitza berriak ekarri al ditu zientziaren ikuspuntutik? Interakzio gehiago, ikasle gehiago, inguruko enpresa gehiago. Dagoeneko ospearen hazkunde horren emaitzarik ba al dago?

Maurice: Honen interesa piztu zitzaidan norbaitek diru dezente bildu berri zuen enpresa baten eskuorri ofiziala eman zidanean. buruz idatzi zuen Bizantziar jeneralen zeregina, ezagutzen baino gehiago daukadana. Liburuxkan idatzitakoa teknikoki okerra zela argi eta garbi. Hau guztia idatzi zutenek ez zuten ondo ulertzen arazoaren atzean zegoen eredua... eta, hala ere, enpresa honek diru asko bildu zuen. Gero, konpainiak isil-isilik ordezkatu zuen liburuxka hau askoz ere bertsio zuzenago batekin - eta ez dut esango enpresa honen izena zein zen. Oraindik inguruan daude eta oso ondo dabiltza. Gertaera honek konbentzitu ninduen, lehenik eta behin, blockchain banatutako informatika forma bat besterik ez dela. Bigarrenik, sarrera atalasea (orduan behintzat, duela lau urte) nahiko baxua zen. Arlo honetan lan egiten zuten pertsonak oso kementsuak eta adimentsuak ziren, baina ez zuten lan zientifikorik irakurtzen. Gauza ezagunak berrasmatzen saiatu ziren eta gaizki egin zuten. Gaur drama gutxitu egin da.

Alexey: Hau oso interesgarria da, duela urte batzuk beste joera bat geneukalako. Front-end garapena bezalakoa da, nabigatzailean oinarritutako front-end garatzaileek atzealdean jada ezagunak ziren teknologia osoak berrasmatu zituztenean: sistemak eraikitzea, etengabeko integrazioa, horrelakoak. 

Maurice: Ados nago. Baina hori ez da harritzekoa, benetan aurrerapen-ideiak ezarritako komunitatetik kanpo datozelako beti. Ezarritako ikertzaileek, batez ere finkatutako akademikoek, nekez egingo dute ezer berritzailerik. Erraza da hurrengo konferentziarako idatzi bat idaztea zure iraganeko lanaren emaitzak apur bat nola hobetu dituzun jakiteko. Hitzaldi batera joan, lagunekin elkartu, gauza berdinei buruz hitz egin. Eta ideia aurreratzaileekin lehertzen den jendea ia beti kanpotik dator. Ez dakite arauak, ez dakite hizkuntza, baina hala ere... Ezarritako komunitate baten barruan bazaude, gauza berriei erreparatzea gomendatzen dizut, irudi orokorrean sartzen ez den zerbaiti. Zentzu batean, kanpoko garapenak, arinagoak, dagoeneko ulertzen ditugun metodoekin konbinatzeko saiakera egin daiteke. Lehen urrats gisa, oinarri zientifiko bat ezartzen saiatu, eta gero aldatu ideia aurrerapen berriei aplikatzeko. Uste dut blockchain hori ideia fresko eta apurtzailea izateko bikaina dela.

Alexey: Zergatik uste duzu gertatzen dela hau? "Kanpoko" jendeak ez duelako komunitatearen berezko oztopo zehatzik?

Maurice: Hemen eredu bat dago. Pinturan eta arte orokorrean inpresionisten historia irakurtzen baduzu, garai batean artista ospetsuek inpresionismoa baztertu zuten. Haurtzaroa zela esan zuten. Belaunaldi bat geroago, aldez aurretik baztertutako arte forma hau estandar bihurtu zen. Nire eremuan ikusten dudana: blockchain-en asmatzaileei ez zitzaien boterea interesatzen, argitalpenak eta aipamen indizea handitzea, zerbait ona egin nahi zuten. Eta horrela eseri eta egiten hasi ziren. Sakontasun teknikoa falta zitzaien, baina hori konpondu daiteke. Askoz zailagoa da ideia sortzaile berriak sortzea, heldutasunik gabekoak zuzentzea eta indartzea baino. Asmatzaile hauei esker, orain badut zer egin!

Alexey: Hau startup-en eta ondare-proiektuen arteko desberdintasunaren antzekoa da. Pentsamenduaren muga, oztopo, eskakizun bereziak eta abar asko heredatzen ditugu.

Maurice: Analogia ona informatika banatua da. Pentsa blockchain-a startup eta banatutako informatika bat izango balitz bezala, enpresa handi eta finkatu gisa. Banatutako informatika blockchain-ekin eskuratu eta batzeko prozesuan dago.

Barbara Liskov-en zuzendaritzapean doktorea

Vitaly: Galdera asko ditugu oraindik! Zure aurrekariak aztertzen ari ginen eta zure doktoretzari buruzko datu interesgarri bat topatu genuen. Bai, hau aspaldikoa zen, baina badirudi gai garrantzitsua dela. Zure doktoretza zure gidaritzapean jaso zenuen Barbara Liskov! Barbara oso ezaguna da programazio-lengoaiaren komunitatean, eta oso pertsona ezaguna, oro har. Logikoa da zure ikerketa programazio lengoaien alorrean izan izana. Nola pasatu zinen konputazio paralelora? Zergatik erabaki zenuen gaia aldatzea?

Maurice: Garai hartan, Barbara eta bere taldea informatika banatua aztertzen ari ziren, oso ideia berria zen. Banatutako informatika zentzugabekeria zela eta ordenagailuak elkarren artean komunikatzea alferrikakoa zela esaten zutenak ere baziren. Konputazio banatuan konputazio zentralizatutik bereizten den gaietako bat akatsen tolerantzia da. Asko ikertu ondoren, konputazio banatutako programazio-lengoaia batek transakzio atomikoen antzeko zerbait izan behar zuela erabaki genuen, inoiz ezin baita ziur egon urruneko dei batek arrakasta izango duenik. Transakzioak dituzunean, aldiberekotasun kudeaketaren arazoa sortzen da. Ondoren, lan handia egin zen transakzio-datuen egitura oso paraleloak lortzeko. Gero, graduatu nintzenean, bertara joan nintzen Carnegie Mellon eta lantzeko gai baten bila hasi zen. Ordenagailu indibidualetatik ordenagailu sareetara pasa dela bururatu zitzaidan. Multiprozesadoreak aurrerapenaren jarraipena naturala izango lirateke - "multi-core" hitza oraindik ez zegoen. Pentsatu nuen: zein da transakzio atomikoen baliokidea nukleo anitzeko sistema baterako? Zalantzarik gabe, ez dira ohiko transakzioak handiegiak eta astunak direlako. Eta horrela sortu zitzaidan ideia linealizagarritasuna eta horrela asmatu nuen itxaron gabeko sinkronizazio osoa. Memoria partekatua duen prozesadore anitzeko sistema baterako transakzio atomikoen analogoa zein den galderari erantzuteko saiakera izan zen. Lehen begiratuan, lan honek guztiz ezberdina dirudi, baina, egia esan, gai beraren jarraipena da.

Mundua nukleo anitzeko zain dago

Vitaly: Aipatu duzu garai hartan nukleo anitzeko ordenagailu gutxi zeudela, ezta?

Maurice: Ez zeuden han. Hainbat prozesadore simetriko deritzonak zeuden, funtsean bus berdinera konektatuta zeuden. Honek ez zuen oso ondo funtzionatu, izan ere, enpresa berri batek antzeko zerbait sortzen zuen bakoitzean Intelek prozesadore bakar bat kaleratzen zuen multiprozesadorearen gainetik.

Alexey: Horrek ez al du esan nahi antzinako garai haietan azterketa teoriko bat gehiago zela?

Maurice: Ez zen azterketa teorikoa izan, ikerketa espekulatiboa baizik. Hori guztia ez zen teorema askorekin lan egitea, baizik eta garai hartan existitzen ez zen arkitektura bati buruzko hipotesiak planteatu genituen. Horretarako da ikerketa! Inongo konpainiak ez zuen horrelakorik egingo; dena etorkizun urruneko zerbait zen. Izan ere, hala izan zen 2004. urtera arte, benetako nukleo anitzeko prozesadoreak agertu ziren arte. Prozesadoreak gehiegi berotzen direnez, prozesadorea are txikiagoa egin dezakezu, baina ezin duzu azkarrago egin. Horregatik, nukleo anitzeko arkitekturarako trantsizioa gertatu zen. Eta gero horrek esan nahi zuen bat-batean iraganean garatu genituen kontzeptu guztien erabilera izan zela.

Alexey: Zergatik uste duzu nukleo anitzeko prozesadoreak XNUMXko hamarkadan bakarrik agertu zirela? Beraz, zergatik da hain berandu?

Maurice: Hau hardware-mugengatik da. Intel, AMD eta beste konpainia batzuk oso onak dira prozesadorearen abiadura handitzeko. Uneren batean prozesadoreak nahikoa txiki bihurtu zirenean, erlojuaren abiadura handitu ezin zutenean, prozesadoreak erretzen hasiko zirelako. Txikiago egin ditzakezu, baina ez azkarrago. Beraien esku dagoena: oso prozesadore txiki baten ordez, zortzi, hamasei edo hogeita hamabi prozesadore sar ditzakete kaxaren bolumen berean, lehen bakarra sartzen zen tokian. Orain, hari anitzeko eta komunikazio azkarra duzu haien artean, cacheak partekatzen dituztelako. Baina ezin dituzu behartu azkarrago korrika egitera - oso abiadura muga zehatza dago. Pixkanaka hobetzen jarraitzen dute, baina jada ez horrenbeste. Fisikaren legeak hobekuntzak oztopatzen zituen.

Mundu berri batek arazo berriak dakartza. NUMA, NVM eta arkitektura-pirateatzea

Alexey: Oso arrazoizkoa dirudi. Nukleo anitzeko prozesadore berriekin arazo berriak etorri ziren. Zuk eta zure lankideek espero zenituen arazo hauek? Agian aldez aurretik ikasi dituzu? Ikasketa teorikoetan askotan ez da oso erraza izaten horrelakoak aurreikustea. Arazoak gertatu zirenean, nola bete zituzten zure eta zure lankideen itxaropenak? Edo guztiz berriak ziren, eta zuk eta zure lankideek denbora asko eman behar izan zenuten arazoak konpontzen agertu ahala?

Vitaly: Alexeyren galderari gehituko diot: behar bezala aurreikusi al zenuen prozesadorearen arkitektura teoria ikasten ari zinela?

Maurice: Ez %100ean. Baina uste dut nire lankideek eta biok lan ona egin dugula memoria partekatua duten nukleo anitzak aurreikusten. Sarrailarik gabe funtzionatzen duten datu-egitura paraleloak garatzeko zailtasunak behar bezala iragarri ditugula uste dut. Horrelako datu-egiturak garrantzitsuak izan dira aplikazio askorentzat, nahiz eta guztiak ez, baina askotan benetan behar duzuna blokeatu gabeko datu-egitura bat da. Asmatu genituenean, askok argudiatu zuten hori zentzugabekeria zela, dena ondo funtzionatzen zuela sarrailekin. Nahiko ondo aurreikusi genuen programazio-arazo askorentzat eta datu-egitura-arazoetarako prest dauden irtenbideak egongo zirela. Arazo konplexuagoak ere bazeuden, esaterako NUMA – Memoriarako sarbide irregularra. Izan ere, nukleo anitzeko prozesadoreak asmatu arte ez ziren kontuan hartu ere zehatzegiak zirelako. Ikerketa-komunitateak orokorrean aurreikus daitezkeen galderen inguruan ari zen lanean. Arkitektura espezifikoekin lotutako hardware arazo batzuek itxaron behar izan zuten -hain zuzen ere, arkitektura horien agerpena-. Esate baterako, inork ez zuen GPUren datu-egituretan benetan landu, orduan GPUak ez baitziren existitzen. Lan asko egin den arren SIMD, algoritmo hauek erabiltzeko prest zeuden hardware egokia eskuragarri egon bezain laster. Hala ere, ezinezkoa da dena aurreikustea.

Alexey: Ondo ulertzen badut, NUMA kostuaren, errendimenduaren eta beste gauza batzuen arteko konpromiso moduko bat da. Ideiarik zergatik atera zen hain berandu NUMA?

Maurice: Uste dut NUMA existitzen dela memoria ekoizteko erabiltzen den hardwarearen arazoengatik: osagaiak zenbat eta urrunago egon, orduan eta motelago sartzen da. Bestalde, abstrakzio horren bigarren balioa memoria-uniformitatea da. Beraz, konputazio paraleloaren ezaugarrietako bat abstrakzio guztiak apur bat hautsita daudela da. Sarbidea guztiz uniformea ​​balitz, memoria guztia berdin-distantea izango litzateke, baina hori ekonomikoki, eta agian fisikoki ere, ezinezkoa da. Beraz, gatazka hau sortzen da. Zure programa memoria uniformea ​​balitz bezala idazten baduzu, ziurrenik zuzena izango da. Erantzun okerrik emango ez duen zentzuan. Baina bere emanaldiak ere ez ditu zeruko izarrak harrapatuko. Era berean, idazten baduzu spinlocks Cache hierarkia ulertu gabe, blokeoa bera zuzena izango da, baina errendimenduaz ahaztu dezakezu. Zentzu batean, oso abstrakzio sinple baten gainean bizi diren programak idatzi behar dituzu, baina abstrakzio hori eman dizuten jendeari iruzur egin behar diezu: jakin behar duzu abstrakzioaren azpian memoriaren hierarkia bat dagoela, badagoela. zure eta memoria honen arteko autobus bat, eta abar. Beraz, nolabaiteko gatazka dago indibidualki baliagarriak diren abstrakzioen artean, eta horrek arazo oso konkretu eta pragmatikoetara garamatza.

Vitaly: Zer gertatzen da etorkizuna? Aurreikus dezakezu nola garatuko diren prozesadoreak hurrengoan? Erantzunetako bat memoria transakzionala dela ideia bat dago. Seguruenik, beste zerbait izango duzu stockean.

Maurice: Erronka handi pare bat daude aurretik. Bata da memoria koherentea abstrakzio zoragarria dela, baina kasu berezietan apurtzen hasten dela. Beraz, adibidez, NUMA memoria uniformea ​​existitzen dela itxuratzen jarrai dezakezun zerbaiten adibide bizia da. Egia esan ez, produktibitateak negar egingo zaitu. Noizbait, arkitektoek memoria-arkitektura bakarraren ideia alde batera utzi beharko dute; ezin duzu betiko itxurak egin. Programazio-eredu berriak beharko dira erabiltzeko aski errazak eta azpian dagoen hardwarea eraginkorra izan dadin nahiko indartsuak. Konpromiso oso zaila da hau, programatzaileei hardwarean benetan erabiltzen den arkitektura erakusten badiezu, zoratu egingo dira. Konplikatuegia da eta ez da eramangarria. Interfaze sinpleegia aurkezten baduzu, errendimendua eskasa izango da. Beraz, oso zailak diren truke asko egin beharko dira nukleo anitzeko prozesadore benetan handiei aplika daitezkeen programazio-eredu erabilgarriak eskaintzeko. Ez nago ziur espezialista bat ez den inor gai denik 2000 nukleoko ordenagailu batean programatzeko. Eta informatika edo kriptografia edo kriptografia edo antzeko zerbait oso espezializatua edo zientifikoa egiten ari ez bazara, oraindik ez dago batere argi nola egin behar den zuzen. 

Antzeko beste arlo bat arkitektura espezializatua da. Azeleragailu grafikoak aspalditik daude, baina konputazio mota espezializatu bat hartu eta txip dedikatu batean exekutatu dezakezunaren adibide klasiko bihurtu dira. Horrek bere erronkak gehitzen ditu: nola komunikatzen zaren horrelako gailu batekin, nola programatzen duzun. Duela gutxi inguruko arazoen inguruan aritu naiz memoria informatikatik gertu. Prozesadore txiki bat hartu eta memoria zati handi batean itsatsi egiten duzu, memoria L1 cache abiaduran exekutatu dadin eta, ondoren, gailu batekin komunikatzen da. TPU – prozesadorea lan berriak kargatzen ari da zure memoria-nukleoan. Mota honetako datu-egiturak eta komunikazio-protokoloak diseinatzea beste adibide interesgarri bat da. Beraz, prozesadore eta hardware pertsonalizatuek hobekuntzak ikusten jarraituko dute denbora luzez.

Alexey: Zer gertatzen da memoria ez-hegazkorrarekin (memoria ez-hegazkorra)?

Maurice: Ai, hori beste adibide bikaina da! NVM-k datuen egiturak bezalako gauzak ikusteko modua asko aldatuko du. Memoria ez-hegazkorra, zentzu batean, gauzak benetan bizkortuko dituela agintzen du. Baina ez du bizitza erraztuko, prozesadore, cache eta erregistro gehienak lurrunkorrak direlako oraindik. Istripu baten ondoren hasten zarenean, zure egoera eta memoriaren egoera ez dira istripuaren aurreko berdinak izango. Oso eskertuta nago NVM-n lan egiten duten pertsonei - asko izango dira ikertzaileek denbora luzez zuzentasun-baldintzak aurkitu nahian. Konputazioak zuzenak dira cacheen eta erregistroen edukiak galtzen diren istripu batean bizirik irauten badute, baina memoria nagusiak bere horretan jarraitzen du.

Konpiladoreak vs prozesadoreak, RISC vs CISC, partekatutako memoria vs mezuak pasatzea

Vladimir: Zer iruditzen zaizu "konpiladoreak vs. prozesadoreak" dilemaz, instrukzio-multzoaren ikuspuntutik? Ezagutzen ez direnentzat azalduko dut: memoria okerra edo antzeko zerbaitetara joaten bagara, komando multzo oso sinple bat erabil genezake eta abantaila berriak aprobetxa ditzakeen kode konplexua sortzeko konpilatzaileari eskatuko genioke. Edo beste bide batetik joan gaitezke: instrukzio konplexuak ezarri eta prozesadoreari aginduak berrantolatzeko eta haiekin beste manipulazio batzuk egiteko eskatu. Zer iruditzen zaizu horretaz?

Maurice: Benetan ez daukat galdera horri erantzunik. Eztabaida honek lau hamarkada daramatza. Bazen garai bat tarteko laburtua agindu multzo bat eta zaila gerra zibilak komando multzo batek egin zituen. Denbora batez, RISC-ek irabazi zuen, baina gero Intelek bere motorrak berreraiki zituen, argibide-multzo murriztua barnean erabiltzeko eta multzo osoa kanpotik esportatu zen. Seguruenik, belaunaldi berri bakoitzak bere konpromisoak aurkitu eta bere erabakiak hartu behar dituen gaia da. Oso zaila da gauza hauetako zein izango den hobea aurreikustea. Beraz, egiten dudan edozein iragarpena egia izango da denbora jakin baterako, eta gero gezurra berriro pixka batean, eta gero berriro egia.

Alexey: Zein ohikoa da industriarentzat ideia batzuek hainbat hamarkadatan irabaztea eta hurrengoan galtzea? Aldizkako aldaketa horien beste adibiderik ba al dago?

Maurice: Informatika banatuaren gaiari dagokionez, badago sinesten duen jendea partekatutako memoria eta sinesten duten pertsonak mezularitza. Hasieran, konputazio banatuan, konputazio paraleloak mezuak pasatzea esan nahi du. Orduan norbaitek aurkitu zuen askoz errazagoa zela memoria partekatuarekin programatzea. Kontrako aldean esan zuen partekatutako memoria korapilatsuegia dela, blokeoak eta antzekoak behar dituelako, beraz, merezi du mezuak pasatzea besterik ez dagoen hizkuntzetara pasatzea. Norbaitek honetatik ateratakoa ikusi zuen eta esan zuen: "Uau, mezularitzaren inplementazio honek memoria partekatua dirudi, modulu txiki horietako asko eta asko sortzen dituzulako, elkarri mezuak bidaltzen dizkiote eta denek. interblokeatzea"Egin dezagun partekatutako memoria datu-base hobea!" Hori guztia behin eta berriz errepikatzen da, eta ezin da esan alderdietako batek arrazoia duen zalantzarik gabe. Aldeetako bat beti izango da nagusi, bietako batek ia irabazi bezain pronto jendeak behin eta berriz asmatzen baitu bestea hobetzeko bideak.

Hari anitzeko kodea hauskorra idazteko artea

Alexey: Hau oso interesgarria da. Adibidez, kodea idazten dugunean, edozein programazio-lengoaia edozein dela ere, normalean irakurri eta idatzi daitezkeen gelaxkak bezalako abstrakzioak sortu behar izaten ditugu. Baina, hain zuzen ere, maila fisikoren batean, ordenagailu ezberdinen eta beste gailu batzuen artean hardware-bus baten bidez mezu bat bidaltzea dirudi. Ematen du lanak abstrakzio bi mailetan aldi berean gertatzen ari direla.

Maurice: Egia da partekatutako memoria mezuak igarotzean eraikitzen dela - autobusak, cacheak eta abar. Baina zaila da mezuak pasatzea erabiliz programak idaztea, beraz hardwareak nahita gezurretan jartzen du, nolabaiteko memoria uniforme bat duzula itxuratuz. Horri esker, errendimendua hondatzen hasi aurretik programa sinple eta zuzenak idaztea erraztuko dizu. Orduan esango duzu: badirudi katxearekin lagunak egiteko garaia dela. Eta orduan hasten zara cachearen kokapenaz kezkatzen, eta hortik doa. Zentzu batean, abstrakzioa pirateatzen ari zara: badakizu ez dela memoria laua eta uniformea, eta ezagutza hori erabiliko duzu cache-a lagungarriak diren programak idazteko. Hau da benetako arazoetan egin beharko duzuna. Emandako abstrakzio gozo, sinple eta politaren eta azpiko hardwarearen inplementazio izugarri konplexuaren arteko gatazka hau bakoitzak bere konpromisoa hartuko du. Prozesadore anitzeko eta sinkronizazioari buruzko liburu bat daukat, eta une batean datu-egiturei buruzko kapitulu bat idatziko nuen. java.util.concurrent. Haiei begiratzen badiezu, horrelakoak omisioak dituzten zerrendak Artelan harrigarriak dira hauek. (Egilearen oharra: Java lengoaia ezagutzen dutenek inplementazioari begiratu beharko diote gutxienez ConcurrentSkipListMap, estekak helbidean ikus ditzakezu API ΠΈ iturburu kodea). Baina nire ikuspuntutik, arduragabekeria litzateke ikasleei erakustea, halako datu-egitura bat hartz-zulo baten gainean soka estuan korrika dabilen zirku bateko tipo baten modukoa delako. Xehetasun txiki bat ere aldatzen baduzu, egitura osoa kolapsatu egingo da. Kode hau oso azkarra eta dotorea da primeran idatzita dagoelako, baina aldaketarik txikienak erabateko porrota ekarriko du. Ikasleei kode hau adibide gisa jartzen badiegu, berehala esango dute: nik ere egin dezaket! Eta orduan hegazkin bat eroriko da edo erreaktore nuklear bat lehertuko da, eta errudun izango naiz une okerrean informazio gehiegi emateaz.

Alexey: Apur bat gazteagoa nintzenean, askotan Doug Leeren iturburu kodea aztertzen saiatu nintzen, adibidez, java.util.concurrent, kode irekia denez, oso erraza da bertan gertatzen dena aurkitzea eta ulertzen saiatzea. Ez zen oso ondo atera: askotan, guztiz ez dago argi zergatik erabaki zuen Doug-ek zerbait modu honetan egitea beste guztiak modu ezberdinean ari direnean. Nola azaldu gauza hauek zure ikasleei? Ba al dago hardcore algoritmo baten xehetasun zehatzak deskribatzeko modu zehatzik, adibidez? Nola egiten duzu hau?

Maurice: Marrazki irakasleek lehen gogoratzen duten topiko bat dute: Picassok bezala marraztu nahi baduzu, lehenik eta behin irudi errealista sinpleak marrazten ikasi behar duzu, eta arauak ezagutzen dituzunean bakarrik has zaitezke hausten. Arauak berehala hausten hasten bazara, nahaspila batean amaitzen zara. Lehenik eta behin, ikasleei kode sinple eta zuzena nola idazten irakasten diet errendimenduaz kezkatu gabe. Esaten dudana zera da: denbora-arazo konplexuak daude hemen ezkutuan, beraz, ez kezkatu cacheez, ez kezkatu memoria ereduez, ziurtatu dena behar bezala funtzionatzen duela. Hau jada nahiko zaila da: programazio modernoa ez da berez erraza, batez ere ikasle berrientzat. Eta programa egokiak idazteko intuizioa dutenean, esaten dut: begiratu bi spinlock inplementazio hauek: bata oso motela da, eta bigarrena ere ez da oso, baina hobea. Hala ere, matematikoki bi algoritmoak berdinak dira. Izan ere, horietako batek cache lokalitatea erabiltzen du. Horietako bat lokalean gordetako datuekin exekutatzen da, eta besteak behin eta berriz egiten ditu eragiketak autobusean zehar. Ezin duzu kode eraginkorrik idatzi zer den ulertzen ez baduzu, eta abstrakzioa apurtu eta azpiko egiturari begiratzen ez badakizu. Baina ezin izango zara hau egiten berehala hasi. Bada jendea hau egiten berehala hasten dena eta bere jenioan sinesten duena, normalean gaizki amaitzen da, printzipioak ulertzen ez dituelako. Inork ez du Picassok bezala marrazten edo Doug Lee bezalako programak idazten ditu unibertsitatetik atera berri den lehen astean. Urteak behar dira ezagutza maila horretara iristeko.

Alexey: Arazoa bi zatitan banatzen duzula ematen du: lehena zuzentasuna da, bigarrena errendimendua?

Maurice: Zehazki. Eta, zehazki, ordena horretan. Arazoaren zati bat da ikasle berriek ez dutela ulertzen zuzentasuna lortzea zaila dela. Lehen begiratuan esaten dute: hau zuzena da, jakina, bizkortzea besterik ez da geratzen. Beraz, batzuetan, hasieran okerra den algoritmo bati buruz esaten diet zuzena balitz bezala.

Nola irakatsi ikasleei hari anitzeko kode konplexua idazten

Alexey: Harrapaketa sumatzen duten ikusteko?

Maurice: Aldez aurretik beti abisatzen dut batzuetan algoritmo okerrak proposatuko ditudala. Ez zenuke jendea engainatu behar. Informazioa gatz ale batekin hartzea proposatzen dut. Zerbait esaten badut eta esaten badut: "begira, hau zuzena da" - hau nonbait engainatzen saiatzen ari zaren seinale da eta galderak egiten hasi beharko zenuke. Jarraian, ikasleak galderak egiten jarraitzera animatzen saiatzen naiz, eta, ondoren, hauxe proposatzen dut: "Zer gertatuko da gauzak dauden bezala uzten baditugu?" Eta berehala ikusten dute akatsa. Baina ikasleak zuzentasunaz kezkatu behar direla konbentzitzea lehen begiratuan dirudiena baino askoz zailagoa da. Ikasle horietako asko programazio esperientziarekin datoz batxilergoan, batzuk lana lortu eta programazioa egin dute bertan, eta denak konfiantzaz gainezka daude. Hau armadaren antzeko zerbait da: lehenik eta behin haien aldartea aldatu behar duzu, sortzen diren arazoak konpontzera pazientziaz heltzeko konbentzitzeko. Edo beharbada monje budistak bezalakoa da: lehenik eta behin zuzentasunari buruz arrazoitzen ikasten dute, eta behin zuzentasunari buruz arrazoitzeko moduak ulertuta, hurrengo mailara pasa eta errendimenduaz kezkatzen hasten dira.

Alexey: Hau da, batzuetan ikasleei lan egiten ez duten adibideak erakusten diezu, eta horri esker, arazoaren funtsa ulertzen duten ala ez, kode okerra eta emaitza okerra aurkitzen duten ala ez adierazten duten iritziak jasotzen dituzu. Beraz, ikasleek zoriontsu edo triste jartzen zaituzte normalean?

Maurice: Ikasleek ia beti aurkitzen dute akatsa azkenean. Astiroegi bilatzen badute, galdera nagusiak egiten ditut, eta hemen garrantzitsua da ulertzea inoiz ez badituzu engainatzen, zure hitzak burugabeki hautematen hasiko direla egia gorena bezala. Ondoren, aspertu eta loak hartzen hasiko dira klasean zehar Facebook ordenagailu eramangarrian irakurtzen duten bitartean. Baina aldez aurretik engainatu egingo direla esaten diezunean, eta ergel itxura izango dute trikimailurik sumatzen ez badute, askoz erneago jartzen dira. Hau modu ezberdinetan ona da. Ikasleek gaiaren ulermena zalantzan jartzeaz gain, irakaslearen autoritatea zalantzan jartzea nahiko nuke. Ideia da ikasle batek edozein unetan eskua altxa dezakeela eta esan: Nik uste dut esan duzuna gaizki dagoela. Ikasteko tresna garrantzitsua da. Ez dut nahi ikasleetako inor eseri eta isil-isilik bere baitan pentsatzea: honek guztiak zentzugabekeria osoa dirudi, baina eskua altxatzea beldurregia da, eta, hala ere, irakaslea da, beraz, esaten duen guztia egia da. Hori dela eta, aldez aurretik kontatzen dena ez dela egiazkoa dela ohartaraziz gero, materialari arreta gehiago jartzeko pizgarri bat dute. Argi daukat eskua altxatzea eta galderak egitea ondo dagoela. Zure galdera ergela edo inozoa dirudi, baina askotan horrela sortzen dira galdera onenak.

Alexey: Oso interesgarria. Normalean jendeak oztopo psikologikoren bat izaten du, irakasle bati galderarik egiten uzten ez diona. Batez ere, gelan jende asko badago, eta denak beldur dira zure galdera ergelak eztabaidatzeak jende hori guztia hartuko ote duen. Ba al dago horri aurre egiteko trikimailurik?

Maurice: Askotan gelditzen naiz eta galdera klasikoak egiten ditut. Adierazpen bat zuzena izango den, edo eztabaidatzen ari den arazoa nola konponduko zuten. Hau funtsezko ekintza da, batez ere ikasgai baten hasieran jendea gauza txikiena ere esateak lotsatzen duenean. Ikasleei galdera bat egiten diezu eta ezer gehiago ez diozu. Isiltasuna dago, denak tentsio pixka bat jartzen dira, tentsioa hazten da, gero bat-batean norbaitek ezin du jasan, hautsi eta erantzuna esaten du. Honela buelta ematen diozu egoerari: isilik jarraitzea zailagoa eta deserosoagoa da erantzutea baino! Hau trikimailu pedagogiko estandarra da. Munduko irakasle guztiek jakin beharko lukete hori nola egin.

Alexey: Orain izenburu bikaina dugu elkarrizketa honetarako: "errazagoa da erantzutea isilik egotea baino".

Vitaly: Utzidazu berriro galdetzen. Froga topologikoetan ari zara lanean. Nola sartu zinen honetan ere, konputazio banatua eta topologia gauza guztiz desberdinak direlako!

Maurice: Ezkutuko konexio bat dago hor. Matematika ikasten ari nintzenean, matematika hutsa ikasi nuen. Ez nuen ordenagailuekiko benetako interesik ikasketak amaitu arte eta lan bat bilatzeko premia larria ikusi nuen. Ikasle bezala topologia aljebraikoa ikasi nuen. Urte asko geroago, izeneko arazo bat lantzen ari zen bitartean "k-Set akordioaren arazoa", arazoa modelatzeko grafikoak erabili nituen eta, garai hartan zirudien bezala, irtenbidea aurkitu nuen. Eseri eta kondearen inguruan ibili behar zenuen. Saiatu grafiko honetan erantzun egoki bat aurkitzen. Baina nire algoritmoak ez zuen funtzionatu: betirako zirkuluetan ibiliko zela atera zen. Zoritxarrez, hori guztia ezin izan da grafoen teoriaren hizkuntza formalean azaldu -informatikalari guztiek ezagutzen duten horretan-. Eta orduan gogoratu nintzen duela urte asko, topologia klaseetan bueltan, kontzeptua erabiltzen genuela "konplexu sinplea", hau da, grafikoen dimentsio handiagoetara orokortzea. Orduan neure buruari galdetu nion: zer gertatuko litzateke arazoa konplexu sinpleen arabera birformulatuko bagenu? Hau bihurtu zen une gakoa. Formalismo indartsuago bat erabiliz, arazoa bat-batean askoz errazagoa bihurtzen da. Jendeak denbora luzez borrokatu zuen haren aurka, grafikoak erabiliz, baina ezin izan zuten ezer egin. Eta orain ere ezin dute - erantzun zuzena ez zen algoritmo bat izan, arazoa konpontzeko ezintasunaren froga bat baizik. Hau da, halako algoritmorik ez da existitzen. Baina ezintasunaren froga oro konplexu sinpleetan edo jendeak konplexu sinpletzat hartzen ez zituen gauzetan oinarrituta. Zerbaiti izen berria deitzen diozunelako, ez du bere esentzia galtzen.

Vitaly: Zortea besterik ez zenuen izan?

Maurice: Zorteaz gain, hala da jarrera. Horrek esan nahi du ez dituzula ahaztu behar lehenago ikasi dituzun "alferrikako" gauzak. Zenbat eta alferrikako gauza gehiago ikasi, orduan eta ideia gehiago atera ditzakezu arazo berri baten aurrean. Ereduen parekatze intuitibo mota hau garrantzitsua da, zeren... Egin dezagun hau, hau kate bat da: hasieran grafikoek ez zutela batere funtzionatzen edo ez zutela batere funtzionatzen aurkitu nuen, zortziko gertakarietako zerbait gogorarazi zidan. duela urte eta nire ikasle urteak, konplexu sinple horiek guztiak aztertu genituenean. Honek, nire topologia-liburu zaharra aurkitu eta berriro buruan kargatu nuen. Baina ezagutza zahar horiengatik ez balitz, ez nuke inoiz aurrerapenik egingo jatorrizko arazoa konpontzeko.

β€œProzesadore anitzeko programazioaren artea” liburuaren edizio berria

Alexey: Hitz batzuk esan dituzu zure liburuari buruz. Ziurrenik ez da sekretu txarrena hari anitzeko munduko libururik ospetsuena idatzi zenuena, "Prozesadore anitzeko programazioaren artea". Dagoeneko 11 urte inguru ditu eta ordutik bakarrik kaleratu da  berrikusitako berrargitalpena. Bigarren ediziorik izango al da?

Maurice: Ona da galdetu izana! Oso laster izango da, hiru hilabete barru edo. Bi egile gehiago daude, material askoz gehiago gehitu dugu, fork/join paralelismoari buruzko atala hobetu dugu, MapReduce-ri buruzko atala idatzi dugu, gauza berri asko gehitu eta beharrezkoak ez diren gauzak bota ditugu, idazteko garaian oso interesgarria zena. lehen edizioa, baina gaur egun ez dago. Emaitza oso serio berrikusitako liburua izan zen.

Alexey: Dagoeneko dena eginda dago, askatzea besterik ez da geratzen?

Maurice: Pare bat kapituluk oraindik lan pixka bat behar dute. Gure argitaletxea (uste dut dagoeneko gorroto gaituela) oraindik ere azkarrago lan egin behar dugula mezua helarazten saiatzen ari da. Oso atzeratuta gaude. Teorian, liburu hau pare bat urte lehenago egin genezake.

Alexey: Gabonak baino lehen liburuaren bertsio berri bat lortzeko aukerarik?

Maurice: Hau da gure helburua! Baina hainbeste aldiz iragarri dut garaipena, non jada inork ez dit sinesten. Ziurrenik ez zenuke nigan gehiegi fidatu behar gai honetan ere.

Alexey: Edonola ere, albiste zoragarria da. Asko gustatu zait liburuaren lehen edizioa. Fana naizela esan liteke.

Maurice: Espero dut edizio berria zure ilusio sutsua merezi izatea, eskerrik asko!

Memoria transakzionala nola asmatu zen

Vitaly: Hurrengo galdera memoria transakzionalari buruzkoa da. Nik ulertzen dudanez, aitzindaria zara arlo honetan, inork horrelakoetan pentsatzen ez zuen garaian asmatu zenuen. Zergatik erabaki zenuen alor honetan sartzea? Zergatik iruditu zitzaizkizun transakzioak garrantzitsuak? Uste al zenuen noizbait hardwarean ezarriko zirela?

Maurice: Transakzioen berri izan dut graduondoko ikerketa egunetik.

Vitaly: Bai, baina hauek transakzio desberdinak dira!

Maurice: Elliott Moss-ekin lan egin nuen blokeorik gabeko zabor bilketan. Gure arazoa zen memorian hitz batzuk atomikoki aldatu nahi genituela eta orduan algoritmoak oso sinpleak bihurtuko zirela, eta horietako batzuk behintzat eraginkorragoak izango zirela. Erabiliz konparatu-eta-trukatu egiteko karga-esteka/denda-baldintzaarkitektura paraleloak eskaintzen duena, posible da zerbait egitea, baina oso eraginkorra eta itsusia da, zeharkako geruzekin aurre egin beharko zenituzkeelako. Memoriako hitzak aldatu nahi ditut eta aldatu egin behar dut erakusle bakarra alda dezakedalako, eta, beraz, direktorio moduko egituraren bat adierazi behar dute. Hardwarea aldatuko bagenu aldibereko grabazioa egin ahal izateko zeinen bikaina izango litzatekeen hitz egin genuen. Badirudi Elliott-ek horretaz ohartu dela: cache-koherentzia-protokoloei erreparatuz gero, beharrezko funtzionalitate gehienak eskaintzen dituzte dagoeneko. Transakzio baikor batean, cachearen koherentzia-protokoloak denbora-gatazka bat dagoela nabarituko du eta cachea bihurtuko da. baliogabe. Zer gertatzen da zure cachean transakzio bat espekulatiboki exekutatzen baduzu eta gatazkak detektatzeko koherentzia-protokoloaren mekanismoak erabiltzen badituzu? Hardware-arkitektura espekulatiboa diseinatzen erraza zen. Beraz, hori idatzi genuen lehen argitalpena transakzio-memoriari buruz. Aldi berean, lanean ari nintzen konpainiak, Digital Equipment Corporation, Alpha izeneko 64 biteko prozesadore berri bat sortzen ari zen. Beraz, Alpha garapen-taldeari aurkezpen bat egin nion gure transakzio-memoria harrigarriari buruz eta galdetu zidaten: Zenbat diru-sarrera gehigarri lortuko luke gure enpresak hori guztia zuzenean prozesadoreari gehitzen badiogu? Eta nik ez nuen erantzunik izan, teknologo bat naizelako, ez naiz marketin espezialista. Benetan ez nuen ezer erantzuteko. Ez ziren oso harritu nik ezer ez nekiela.

Vitaly: Mila milioi! Esan bilioika!

Maurice: Bai, hori da esan beharko nukeena. Orain, startup-en eta guzti, badakit negozio-plan bat idazten. Zure etekin potentzialaren tamainari buruz pixka bat gezurra esan dezakezula. Baina garai haietan inozoa iruditzen zitzaidan, beraz, esan nuen: "Ez dakit". Memoria transakzionalari buruzko argitalpenaren historiari erreparatuz gero, ohartuko zara urtebeteren buruan hainbat aipamen zeudela, eta gero hamar bat urtez inork ez zuela paper hau batere aipatu. Komatxoak 2004 inguruan agertu ziren, benetako multi-nukleoak agertu zirenean. Jendeak kode paraleloa idazteak dirua irabaztea lortu zuenean, ikerketa berriak hasi ziren. Ravi Rajwar artikulu bat idatzi zuen, eta horrek, nolabait, transakzio-memoria kontzeptua nagusira sartu zuen. (Egilearen oharra: artikulu honen bigarren bertsio bat dago, 2010ean kaleratua eta doan eskuragarri PDF gisa). Bat-batean, jendea konturatu zen zehatz-mehatz nola erabil zitekeen hori guztia, nola bizkortu zitezkeen sarrailak dituzten algoritmo tradizionalak. Iraganean arazo akademiko interesgarri bat zirudien zerbaiten adibide ona. Eta bai, orduan galdetu izan bazenu ea etorkizunean hau guztia garrantzitsua izango zela uste nuen, esango nuke: noski, baina noiz ez dago argi. 50 urte barru agian? Praktikan, hamarkada bat besterik ez zen izan. Oso polita da zerbait egiten duzunean eta hamar urte besterik ez ondoren jendeak nabaritzen duenean.

Zergatik merezi du konputazio banatuaren alorrean ikerketak egitea

Vitaly: Ikerketa berriei buruz hitz egiten badugu, zer gomendatuko zenieke irakurleei: informatika banatua edo nukleo anitzekoa eta zergatik? 

Maurice: Gaur egun erraza da nukleo anitzeko prozesadore bat lortzea, baina zailagoa da benetako sistema banatu bat ezartzea. Horiekin lanean hasi nintzen nire doktorego tesitik bestelako zerbait egin nahi nuelako. Hauxe da ikasle berriei beti ematen diedan aholkua: ez idatzi tesiaren jarraipena, saiatu norabide berri batean. Gainera, multithreading erraza da. Ohetik altxatu gabe nire sardexka batekin esperimentatu dezaket ordenagailu eramangarriarekin. Baina bat-batean benetako sistema banatua sortu nahi banu, lan asko egin beharko nuke, ikasleak erakarri eta abar. Pertsona alferra naiz eta nahiago nuke multi-core-n lan egin. Nukleo anitzeko sistemetan esperimentatzea sistema banatuetan esperimentuak egitea baino errazagoa da, sistema banatu ergel batean ere faktore gehiegi kontrolatu behar direlako.

Vitaly: Zertan ari zara orain, blockchain ikertzen? Zein artikuluri erreparatu behar diezu lehenik?

Maurice: Duela gutxi agertu da oso artikulu ona, Vikram Saraf nire ikaslearekin batera idatzi nuena, batez ere hitzaldi baterako Tokenomcs konferentzia Duela hiru aste Parisen. Hau banatutako sistema praktikoei buruzko artikulu bat da, eta bertan Ethereum hari anitzekoa egitea proposatzen dugu. Gaur egun, kontratu adimendunak (bloke-katean exekutatzen den kodea) sekuentzialki exekutatzen dira. Artikulu bat idatzi genuen lehenago, prozesua bizkortzeko transakzio espekulatiboak erabiltzeko moduari buruz hitz egiten zuena. Softwarearen transakzio-memoriatik ideia asko hartu genituen eta esan genuen ideia hauek Etherium makina birtualean parte hartzen badituzu, dena azkarrago funtzionatuko duela. Baina horretarako beharrezkoa da kontratuetan datu-gatazkarik ez egotea. Eta orduan suposatu genuen bizitza errealean ez dagoela halako gatazkarik. Baina ez genuen jakiteko modurik. Orduan bururatu zitzaigun ia hamarkada bateko benetako kontratuen historia geneukala esku artean, beraz, Ethereum blockchain-a bota genuen eta gure buruari galdetu genion: zer gertatuko litzateke erregistro historiko hauek paraleloan exekutatzen badira? Abiaduraren igoera nabarmena aurkitu dugu. Ethereum-en lehen egunetan, abiadura asko handitu zen, baina gaur egun dena zertxobait konplikatuagoa da, kontratu gutxiago daudelako eta serializazioa eskatzen duten datuen inguruko gatazkak izateko probabilitatea handiagoa izan delako. Baina hori guztia benetako datu historikoekin egindako lan esperimentala da. Blockchain-aren gauza polita da dena betirako gogoratzen duela, beraz, denboran atzera egin eta kodea exekutatzeko algoritmo desberdinak erabili izan bagenitu zer gertatuko litzatekeen azter dezakegu. Nola gustatuko litzaioke jendeari iraganean gure ideia berria? Horrelako ikerketak egitea askoz errazagoa eta atseginagoa da, dena kontrolatzen eta dena erregistratzen duen gauza bat baitago. Algoritmoen garapenarekin baino soziologiaren antzeko zerbait da dagoeneko.

Algoritmoen garapena gelditu al da eta nola egin aurrera?

Vitaly: Azken galdera teorikorako garaia! Datu lehiakorren egituretan aurrerapena urtero murrizten ari dela iruditzen al da? Datu-egituren ulermenean goi-lautada batera iritsi garela uste duzu edo hobekuntza handi batzuk egongo direla? Agian ba al dago dena guztiz alda dezaketen ideia burutsu batzuk?

Maurice: Baliteke arkitektura tradizionalen datu-egituretan goi-lautada batera iritsi izana. Baina arkitektura berrietarako datu-egiturak eremu itxaropentsuak dira oraindik. Datu-egiturak sortu nahi badituzu, esate baterako, hardware-azeleragailuetarako, orduan GPU baten datu-egiturak PUZ baten datu-egituretatik oso desberdinak dira. Blockchains-en datu-egiturak garatzen dituzunean, datu-zatiak hash egin behar dituzu eta, ondoren, antzeko zerbaitetan jarri Merkle zuhaitza, faltsutzea ekiditeko. Azkenaldian jarduera gorakada bat izan da arlo honetan, asko lan oso ona egiten ari direlarik. Baina uste dut gertatuko dena arkitektura berriek eta aplikazio berriek datu-egitura berriak ekarriko dituztela. Oinarrizko aplikazioak eta arkitektura tradizionala - baliteke esploraziorako leku handirik ez egotea. Baina bidetik irten eta ertzetatik haratago begiratuz gero, nagusiek serio hartzen ez dituzten gauza zoroak ikusiko dituzu; hor gertatzen dira benetan zirraragarri guztiak.

Vitaly: Horregatik, oso ikertzaile ospetsua izateko, nire arkitektura propioa asmatu behar izan nuen :)

Maurice: Beste norbaiten arkitektura berria "lapurtu" dezakezu - askoz errazagoa dirudi!

Brown Unibertsitatean egiten du lan

Vitaly: Esango al zeniguke buruz gehiago Brown UnibertsitateaNon egiten duzu lan? Informazioaren teknologien testuinguruan berari buruz ez da asko ezagutzen. MITri buruz baino gutxiago, adibidez.

Maurice: Brown University Estatu Batuetako unibertsitate zaharrenetako bat da. Nik uste dut Harvard bakarrik apur bat zaharragoa dela. Brown izenekoaren parte da Ivy League, zortzi unibertsitate zaharrenen bilduma da. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, Pennsylvania, Princeton. Unibertsitate zahar, txiki eta aristokratiko samarra da. Arte liberalen hezkuntza da ardatz nagusia. Ez da MIT bezalakoa izaten saiatzen, MIT oso espezializatua eta teknikoa da. Brown leku paregabea da Errusiako Literatura edo Greziar Klasikoa ikasteko, eta noski, Informatika. Hezkuntza integralean oinarritzen da. Gure ikasle gehienak Facebook, Apple, Google-ra joaten dira; beraz, uste dut gure ikasleek ez dutela arazorik industrian lana aurkitzeko. Brownen lanera joan nintzen, aurretik Bostongo Digital Equipment Corporation-en lan egin nuelako. Gauza interesgarri asko asmatu zituen enpresa bat zen, baina ordenagailu pertsonalen garrantzia ukatzen zuen. Patu zaila duen enpresa bat, bere sortzaileak garai batean iraultzaile gazteak izan baitziren, ez zuten ezer ikasi eta ez zuten ezer ahaztu, eta, beraz, iraultzaileetatik atzerakoi izatera pasa ziren dozena bat urteren buruan. Txantxa egitea gustatzen zitzaien ordenagailu pertsonalak garajean zeudela, abandonatutako garaje bat, noski. Nahiko nabaria da enpresa malguagoak suntsitu zituztela. Konpainiak arazoak zituela argi geratu zenean, nire lagun bati deitu nion Brownen, hau da, Bostonetik ordubete ingurura. Garai hartan ez nuen Bostonetik alde egin nahi beste unibertsitateetan ez zegoelako plaza askorik. Garai honetan ez zegoen Informatikan orain bezainbeste lan. Eta Brownek irekiera bat izan zuen, ez nuen nire etxea mugitu beharrik izan, ez nuen nire familia mugitu beharrik izan, eta asko gustatzen zait Bostonen bizitzea! Horrela erabaki nuen Brownera joatea. Gogoko dut. Ikasleak zoragarriak dira, beraz, ez naiz inoiz saiatu beste norabait joaten. Nire urte sabatikoan Microsoften lan egin nuen urtebetez, Haifako Technionera joan nintzen urtebetez, eta orain Algoranden egongo naiz. Lankide asko ditut nonahi eta, beraz, gure ikasgelen kokapen fisikoa ez da hain garrantzitsua. Baina garrantzitsuena ikasleak dira, hemen onenak dira. Ez naiz inoiz beste norabait joaten saiatu hemen nahiko pozik nagoelako.

Hala ere, Brownek Estatu Batuetan duen ospea izan arren, harrigarriro ezezaguna da kanpoan. Ikusten duzuenez, orain ahal dena egiten ari naiz egoera hau zuzentzeko.

Unibertsitateko eta korporazio barruko ikerketaren arteko aldea

Vitaly: Ados, hurrengo galdera Ekipamendu Digitalari buruzkoa da. Ikertzaile gisa egon zinen. Zein da enpresa handi bateko I+G sailean lan egitearen eta unibertsitatean lan egitearen artean? Zeintzuk dira abantailak eta desabantailak?

Maurice: Hogei urtez Microsoft-en lan egin nuen, Sun Microsystems, Oracle, Facebook eta orain Algorand-eko langileekin estuki lan egin nuen. Hori guztia oinarri hartuta, esan nahi dut posible dela lehen mailako ikerketak egitea bai enpresetan, bai unibertsitateetan. Ezberdintasun garrantzitsua da enpresa batean lankideekin lan egiten duzula. Bat-batean oraindik existitzen ez den proiektu baterako ideia bat badut, nire kideei ideia ona dela sinetsarazi behar diet. Brownen banago, orduan esan diezaieke nire ikasleei: lan dezagun antigrabitatea! Beste norbaitentzat utziko dute edo proiektu bat hartuko dute. Bai, finantzaketa bilatu beharko dut, diru-laguntza eskaera idatzi beharko dut, eta abar. Edonola ere, ikasle asko egongo dira beti, eta erabakiak aldebakarrean hartzeko aukera izango duzu. Baina unibertsitatean ziurrenik ez duzu lan egingo zure mailako jendearekin. Ikerketa industrialaren munduan, lehenik eta behin, denak sinetsarazi behar dituzu zure proiektua hartzea merezi duela. Ezin diot ezer agindu inori. Eta bi lan egiteko modu hauek baliotsuak dira, zeren benetan zoro zerbaitetan lanean ari bazara eta zure lankideak konbentzitzen zailak badira, errazagoa da graduondoko ikasleak konbentzitzea, batez ere ordaintzen ari bazara. Esperientzia eta espezializazio sakona eskatzen duen zerbaitetan lanean ari bazara, orduan "ez, gertatzen da arlo honetan ulertzen dudala eta zure ideia txarra dela, ez du funtzionatuko" esan dezaketen lankideak behar dituzu. Hau oso erabilgarria da denbora galtzeari dagokionez. Gainera, laborategi industrialetan denbora asko ematen baduzu txostenak idazten, unibertsitate batean denbora hori dirua bilatzen saiatzen ari zara. Ikasleak norabait joan ahal izatea nahi badut, beste nonbait bilatu behar dut horretarako dirua. Eta zenbat eta garrantzitsuagoa izan unibertsitatean duzun postua, orduan eta denbora gehiago gastatu behar duzu dirua biltzen. Beraz, orain badakizu zertarako lan egiten dudan - eskale profesional bat! Eskaintzen plater batekin ibiltzen den fraide horietako bat bezala. Oro har, bi jarduera hauek elkarren osagarri dira. Horregatik saiatzen naiz bi munduetan oinak lurrean bizitzen eta mantentzen.

Vitaly: Badirudi enpresa bat konbentzitzea beste zientzialariak konbentzitzea baino zailagoa dela.

Maurice: Zailagoa, eta askoz gehiago. Gainera, arlo ezberdinetan ezberdina da: batzuek eskala osoko ikerketak egiten dituzte, beste batzuek beren gaian jartzen dute arreta. Microsoft-era edo Facebookera joan eta esango banu: egin dezagun grabitatearen aurkakoa, nekez eskertuko lukete. Baina graduondoko ikasleei gauza bera esango banu, ziurrenik berehala hasiko lirateke lanean, nahiz eta orain arazoak izango nituen; azken finean, horretarako dirua aurkitu behar dut. Baina enpresaren helburuekin bat datorren zerbait egin nahi duzun bitartean, enpresa hori oso leku ona izan daiteke ikerketa egiteko.

Hydra eta SPTDC

Vitaly: Nire galderak amaitzen ari dira, beraz, hitz egin dezagun Errusiara datorren bidaiari buruz.

Maurice: Bai, San Petersburgera itzultzeko gogotsu nago.

Alexey: Ohorea naiz aurten gurekin izateak. Bigarren aldia da San Petersburgon, ezta?

Maurice: Dagoeneko hirugarrena!

Alexey: Ulertzen dut, baina SPTDC - zalantzarik gabe bigarrena. Azken aldian eskolara deitu zuten SPTCC, orain letra bat aldatu dugu (C-tik D-ra, Aldiberekora banatuta) aurten informatika banatuarekin bereziki lotutako arlo gehiago daudela azpimarratzeko. Ikastetxean egindako txostenei buruz hitz batzuk esan ditzakezu eta Hydra hitzaldia?

Maurice: Eskolan blockchain-aren oinarriei buruz hitz egin nahi dut eta horrekin egin dezakezunari buruz. Erakutsi nahiko nuke bloke-kateak ezagutzen ditugun hari anitzeko programazioaren oso antzekoak direla, baina Γ±abardura propioekin, eta desberdintasun hauek ulertzea garrantzitsuak dira. Ohiko web aplikazio batean akatsen bat egiten baduzu, gogaikarria besterik ez da. Finantza-aplikazio batean buggy kodea idazten baduzu, norbaitek zure diru guztia lapurtuko dizu. Erantzukizun eta ondorio maila guztiz desberdinak dira. Apur bat hitz egingo dut lanaren frogari buruz, kontratu adimentsuei buruz, bloke ezberdinen arteko transakzioei buruz.

Beste hizlari batzuk egongo dira lanean nire ondoan, blockchain-ari buruz zer esanik ere badutenak, eta elkarrekin koordinatzea adostu genuen, gure istorioak ondo bat egiteko. Baina ingeniaritza-txostenari dagokionez, publiko zabal bati azalpen ulergarria esan nahi diot zergatik ez zenukeen sinestu behar bloke-kateei buruz entzuten duzun guztia, zergatik bloke-kateak eremu bikaina diren, nola egokitzen diren beste ideia ezagun batzuekin eta zergatik ausardiaz begiratu beharko genukeen. etorkizunera.

Alexey: Gainera, esan nahi dut ez dela topaketa edo erabiltzaile talde baten formatuan egingo, duela bi urte bezala. Eskolatik gertu hitzaldi txiki bat egitea erabaki genuen. Arrazoia da Peter Kuznetsov-ekin komunikatu ondoren, eskola ehun, agian 120 pertsonara mugatuta dagoela konturatu ginen. Aldi berean, ingeniari asko daude zurekin komunikatu nahi dutenak, aurkezpenetara joan eta, oro har, gaiarekin interesatuta daudenak. Hori dela eta, hitzaldi berri bat sortu dugu Hydra izenekoa. Bide batez, ideiarik zergatik Hydra?

Maurice: Zazpi hizlari izango direlako? Eta burua moztu daiteke, eta hiztun berriak haziko dira haien ordez?

Alexey: Hiztun berriak hazteko ideia bikaina. Baina, egia esan, istorio bat dago hemen. Gogoratu Odiseoren kondaira, non artean nabigatu behar izan zuen Eszila eta Karibdis? Hydra Karibdis bezalako zerbait da. Istorioa da behin hitzaldi batean hitz egin eta multithreading-ari buruz hitz egin nuela. Biltzar honetan bi bide baino ez zeuden. Erreportajearen hasieran, aretoko entzuleei esan nien orain aukera dutela Eszila eta Karibdisen artean. Nire espiritu animalia Charybdis da, Charybdis buru asko dituelako eta nire gaia hari anitzekoa delako. Horrela agertzen dira jardunaldien izenak.

Nolanahi ere, galdera eta denbora agortu zaizkigu. Beraz, eskerrik asko, lagunak, elkarrizketa bikainagatik, eta SPTDC School and Hydra 2019-n ikusiko gara!

Mauricerekin hizketan jarrai dezakezu Hydra 2019 konferentzian, 11ko uztailaren 12tik 2019ra San Petersburgon ospatuko dena. Txosten batekin etorriko da "Blockchains eta informatika banatuaren etorkizuna". Sarrerak eros daitezke webgune ofizialean.

Iturria: www.habr.com

Gehitu iruzkin berria