„Je ľahšie odpovedať, ako mlčať“ – skvelý rozhovor s otcom transakčnej pamäte Mauriceom Herlihym

Maurice Herlihy - majiteľ dvoch Ceny Dijkstra. Prvý je pre prácu "Synchronizácia bez čakania" (Brown University) a druhá, novšia, - "Transakčná pamäť: Architektonická podpora pre dátové štruktúry bez uzamknutia" (Virginia Tech University). Cena Dijkstra sa udeľuje za diela, ktorých význam a vplyv je badateľný už najmenej desať rokov a Maurice je, samozrejme, jedným z najznámejších odborníkov v tejto oblasti. V súčasnosti je profesorom na Brownovej univerzite a má za sebou dlhé úspechy. Teraz sa venuje výskumu blockchainu v kontexte klasickej distribuovanej výpočtovej techniky.

Maurice už predtým prišiel do Ruska na SPTCC (videokazeta) a uskutočnili vynikajúce stretnutie komunity vývojárov Java JUG.ru v Petrohrade (videokazeta).

Tento habrapost je skvelý rozhovor s Mauriceom Herlihym. Rozoberá tieto témy:

  • Interakcia medzi akademickou obcou a priemyslom;
  • základ pre výskum blockchainu;
  • Odkiaľ pochádzajú prelomové nápady? Vplyv popularity;
  • PhD pod vedením Barbary Liskov;
  • Svet čaká na viacjadrové;
  • Nový svet, nové problémy. NVM, NUMA a hackovanie architektúry;
  • Kompilátory vs CPU, RISC vs CISC, zdieľaná pamäť vs odovzdávanie správ;
  • Umenie písania krehkého viacvláknového kódu;
  • Ako naučiť študentov písať zložitý viacvláknový kód;
  • Nové vydanie knihy „The Art of Multiprocessor Programming“;
  • Ako bola vynájdená transakčná pamäť?   
  • Prečo sa oplatí robiť výskum v oblasti distribuovaných počítačov;
  • Zastavil sa vývoj algoritmov a ako ďalej žiť;
  • Práca na Brown University;
  • Rozdiel medzi univerzitným a podnikovým výskumom;
  • Hydra a SPTDC.

Rozhovory vedú:

Vitalij Aksenov — v súčasnosti postdoktorand na IST Austria a zamestnanec Katedry počítačových technológií na univerzite ITMO. Venuje sa výskumu v oblasti teórie a praxe konkurenčných dátových štruktúr. Pred nástupom do IST získal doktorát na Univerzite Paris Diderot a Univerzite ITMO pod vedením prof. Petra Kuznecova.

Alexej Fedorov je producentom v ruskej spoločnosti JUG Ru Group, ktorá organizuje konferencie pre vývojárov. Alexey sa podieľal na príprave viac ako 50 konferencií a jeho životopis obsahuje všetko od pozície vývojového inžiniera v Oracle (JCK, Java Platform Group) až po pozíciu vývojára v Odnoklassniki.

Vladimír Sitnikov je inžinier v spoločnosti Netcracker. Desať rokov pracuje na výkone a škálovateľnosti operačného systému NetCracker, softvéru používaného telekomunikačnými operátormi na automatizáciu procesov správy sietí a sieťových zariadení. Zaujímate sa o problémy s výkonom Java a Oracle Database. Autor viac ako tuctu vylepšení výkonu v oficiálnom ovládači PostgreSQL JDBC.

Interakcia medzi akademickou obcou a priemyslom

Alexey: Maurice, na akademickej pôde pracuješ už veľmi dlho a prvá otázka sa týka interakcie medzi akademickou obcou a priemyslom. Mohli by ste nám povedať, ako sa v poslednej dobe zmenili interakcie medzi nimi? Čo bolo pred 20-30 rokmi a čo sa deje teraz? 

Maurice: Vždy som sa snažil úzko spolupracovať s komerčnými spoločnosťami, pretože majú zaujímavé výzvy. Spravidla nemajú veľký záujem ani o zverejňovanie svojich výsledkov, ani o podrobné vysvetľovanie svojich problémov svetovému spoločenstvu. Zaujíma ich len riešenie týchto problémov. V niektorých z týchto spoločností som istý čas pracoval. Strávil som päť rokov prácou na plný úväzok vo výskumnom laboratóriu v spoločnosti Digital Equipment Corporation, ktorá bola kedysi významnou počítačovou spoločnosťou. Pracoval som jeden deň v týždni v Sune, v Microsofte, v Oracle, trochu som pracoval na Facebooku. Teraz idem na sabatálnu dovolenku (profesor na americkej univerzite si smie takú dovolenku na rok zobrať tak raz za šesť rokov) a pracovať v r. Algorand, to je taká kryptomenová spoločnosť v Bostone. Úzka spolupráca s firmami bola vždy potešením, pretože tak sa dozviete nové a zaujímavé veci. Vo všeobecnosti môžete byť prvým alebo druhým človekom, ktorý uverejní článok na zvolenú tému, namiesto postupného zlepšovania riešení problémov, na ktorých už pracujú všetci ostatní.

Alexey: Môžete nám povedať viac o tom, ako sa to deje?

Maurice: Samozrejme. Viete, keď som bol v Digital Equipment Corporation, ja a Elliot Moss sme vynašli transakčnú pamäť. Bolo to veľmi plodné obdobie, keď sa všetci začali zaujímať o informačné technológie. Súbežnosť zahŕňala, hoci viacjadrové systémy ešte neexistovali. V časoch Sun a Oracle som veľa pracoval na paralelných dátových štruktúrach. Na Facebooku som bol zapojený do ich blockchainového projektu, o ktorom nemôžem hovoriť, ale dúfam, že sa čoskoro dostane na verejnosť. Budúci rok budem v Algorande pracovať vo výskumnom tíme, ktorý študuje inteligentné zmluvy.

Alexey: V posledných rokoch sa blockchain stal veľmi populárnou témou. Pomôže to vášmu výskumu? Možno to uľahčí získavanie grantov alebo prístup k zdrojom spoločností pôsobiacich v tomto odvetví?

Maurice: Už som dostal malý grant od Ethereum Foundation. Obľúbenosť blockchainu je veľmi užitočná pre inšpiráciu študentov k práci v tejto oblasti. Veľmi ich to zaujíma a sú radi, že sa do toho zapájajú, no niekedy si neuvedomujú, že výskum, ktorý navonok znie lákavo, si vyžaduje naozaj tvrdú prácu. Celú túto mystiku okolo blockchainu však veľmi rád využívam, pomáha to prilákať študentov. 

To však nie je všetko. Som v poradnej rade niekoľkých blockchainových startupov. Niekomu sa to možno podarí, niekomu nie, ale vždy je veľmi zaujímavé vidieť ich nápady, študovať ich a radiť ľuďom. Najvzrušujúcejšie je, keď varujete ľudí, aby niečo nerobili. Veľa vecí sa na prvý pohľad zdá ako dobrý nápad, ale je to naozaj tak?

Základ pre výskum blockchainu

Vitaly: Niektorí ľudia si myslia, že blockchain a jeho algoritmy sú budúcnosť. A iní ľudia hovoria, že je to len ďalšia bublina. Môžete sa podeliť o svoj názor na túto záležitosť?

Maurice: Veľa z toho, čo sa deje vo svete blockchainu, nefunguje správne, niektoré sú len podvody, veľa vecí sa preceňuje. Myslím si však, že tieto štúdie majú solídny vedecký základ. Skutočnosť, že svet blockchainu je plný ideologických rozdielov, ukazuje úroveň vzrušenia a odhodlania. Na druhej strane nie je zvlášť prínosná pre vedecký výskum. Ak teraz publikujete článok, ktorý hovorí o nedostatkoch konkrétneho algoritmu, prijatá reakcia nie je vždy úplne vedecká. Ľudia často vyjadrujú svoje emócie. Myslím si, že takýto humbuk v tejto oblasti sa môže niekomu zdať atraktívny, no v konečnom dôsledku sú tu skutočné vedecké a inžinierske problémy, ktoré ešte treba riešiť. Je tu veľa informatiky.

Vitaliy: Takže sa snažíte položiť základy výskumu blockchainu, však?

Maurice: Snažím sa položiť základy solídnej, vedecky a matematicky podloženej disciplíny. A súčasťou problému je, že niekedy musíte protirečiť niektorým príliš tvrdým postojom iných ľudí, aby ste ich ignorovali. Niekedy sa ľudia pýtajú, prečo pracujem v oblasti, ktorá zaujíma iba teroristov a drogových dílerov. Takáto reakcia je rovnako nezmyselná ako správanie sledovateľov, ktorí slepo opakujú vaše slová. Myslím, že pravda je niekde uprostred. Blockchain zatiaľ nebude mať zásadný vplyv na spoločnosť a globálnu ekonomiku. Ale pravdepodobne sa to nestane vďaka modernej technológii. Moderné technológie sa budú rozvíjať a to, čo sa v budúcnosti bude nazývať blockchain, bude veľmi dôležité. Možno to ani nebude vyzerať ako moderné blockchainy, to je otvorená otázka.

Ak ľudia vymyslia nové technológie, budú to naďalej nazývať blockchain. Teda, rovnako ako dnešný Fortran nemá nič spoločné s Fortranom zo 1960. rokov, ale všetci ho stále volajú Fortran. To isté pre UNIX. To, čo sa nazýva „blockchain“, ešte len nezažije revolúciu. Pochybujem však, že tento nový blockchain bude taký, aký dnes každý rád používa.

Odkiaľ pochádzajú prelomové nápady? Vplyv popularity

Alexey: Viedla popularita blockchainu k novým výsledkom z vedeckého hľadiska? Viac interakcie, viac študentov, viac firiem v okolí. Existujú už nejaké výsledky tohto rastu popularity?

Maurice: Začal som sa o to zaujímať, keď mi niekto odovzdal oficiálny leták spoločnosti, ktorá práve vyzbierala dosť veľa peňazí. Písala o úlohou byzantských generálovs ktorými som viac než oboznámený. Napísané v letáku bolo zjavne technicky nesprávne. Ľudia, ktorí to napísali, v skutočnosti nerozumeli modelu problému... a napriek tomu táto spoločnosť vyzbierala veľa peňazí. Následne spoločnosť v tichosti nahradila tento leták za oveľa správnejšiu verziu - a to už nepoviem, ako sa táto spoločnosť volala. Stále existujú a darí sa im veľmi dobre. Tento prípad ma presvedčil, že po prvé, blockchain je len forma distribuovaného počítača. Po druhé, vstupný prah (v tom čase pred štyrmi rokmi) bol dosť nízky. Ľudia pracujúci v tejto oblasti boli veľmi energickí a bystrí, no nečítali vedecké práce. Snažili sa znovu objaviť známe veci a urobili to zle. Dnes bola dráma zredukovaná.

Alexey: Je to veľmi zaujímavé, pretože pred niekoľkými rokmi sme mali iný trend. Je to trochu ako vývoj front-endu, kde vývojári rozhrania prehliadačov znovu objavili celé technológie, ktoré už boli v tom čase populárne v back-ende: zostavovanie systémov, nepretržitá integrácia a podobne. 

Maurice: Súhlasím. To však nie je prekvapujúce, pretože skutočne prelomové nápady vždy prichádzajú mimo etablovanej komunity. Je nepravdepodobné, že by etablovaní výskumníci, najmä autority na akademickej pôde, urobili niečo skutočne prelomové. Je ľahké napísať správu na ďalšiu konferenciu o tom, ako ste mierne zlepšili výsledky svojej minulej práce. Choďte na konferenciu, stretnite sa s priateľmi, rozprávajte sa o rovnakých veciach. A ľudia, ktorí prichádzajú s prelomovými myšlienkami, takmer vždy prichádzajú zvonku. Nepoznajú pravidlá, nepoznajú jazyk, ale predsa... Ak ste vo vnútri etablovanej komunity, radím vám, aby ste si všímali nové veci, niečo, čo sa nehodí do veľkej obrázok. V istom zmysle sa možno pokúsiť spojiť vonkajší, plynulejší vývoj s technikami, ktorým už rozumieme. Ako prvý krok sa pokúste vytvoriť vedeckú základňu a potom ju upraviť tak, aby sa dala použiť na nové prelomové myšlienky. Myslím si, že blockchain je skvelý pre úlohu nového prelomového nápadu.

Alexej: Prečo si myslíš, že sa to deje? Pretože ľudia „zvonku“ nemajú žiadne špecifické bariéry vlastné komunite?

Maurice: Tu je vzor. Ak čítate históriu impresionistov v maľbe a umení vo všeobecnosti, potom slávni umelci odmietli impresionizmus. Povedali, že je to nejaký druh detinskosti. O generáciu neskôr sa táto predtým odmietaná forma umenia stala štandardom. Čo vidím vo svojom odbore: vynálezcov blockchainu nezaujímala moc, likvidácia publikácií a citačný index, chceli len urobiť niečo dobré. A tak si sadli a začali to robiť. Chýbala im určitá technická hĺbka, ale to sa dá napraviť. Prichádzať s novými kreatívnymi nápadmi je oveľa ťažšie, ako naprávať a umocňovať nedostatočne zrelé. Vďaka týmto vynálezcom mám teraz čo robiť!

Alexey: Je to podobné ako rozdiel medzi startupmi a staršími projektmi. Zdedíme veľa myšlienkových obmedzení, bariér, špeciálnych požiadaviek atď.

Maurice: Dobrá analógia je distribuovaná výpočtová technika. Premýšľajte o blockchaine, ako keby to bol startup a distribuovaný výpočtový systém ako veľká zavedená spoločnosť. Distribuovaná výpočtová technika je v procese nákupu a spájania s blockchainom.

PhD pod vedením Barbary Liskov

Vitaliy: Stále máme veľa otázok! Skúmali sme váš životopis a zistili sme zaujímavý fakt o vašom PhD. Áno, bolo to už dávno, ale zdá sa, že téma je dôležitá. Doktorát ste získali pod vedením o Barbara Liskov! Barbara je v komunite vývoja programovacích jazykov veľmi dobre známa a vo všeobecnosti veľmi slávna osoba. Je logické, že váš výskum bol v oblasti programovacích jazykov. Ako ste prešli na paralelné výpočty? Prečo ste sa rozhodli zmeniť tému?

Maurice: V tom čase sa Barbara a jej skupina len pozerali na distribuované počítače, čo bol veľmi nový nápad. Našli sa aj takí, ktorí povedali, že distribuované výpočty sú nezmysel, komunikácia medzi počítačmi nemá zmysel. Jedným z problémov zvažovaných pri distribuovaných výpočtoch, ktorý ich odlišuje od centralizovaných výpočtov, je odolnosť voči chybám. Po veľkom výskume sme sa rozhodli, že v programovacom jazyku pre distribuované výpočty potrebujete mať niečo ako atómové transakcie, pretože si nikdy nemôžete byť istí, že vzdialené volanie bude úspešné. Akonáhle máte transakcie, je tu problém kontroly súbežnosti. Potom bolo veľa práce na získavaní vysoko paralelných transakčných dátových štruktúr. Potom, keď som zmaturoval, išiel som do Carnegie Mellon a začal hľadať námet na prácu. Napadlo mi, že výpočtová technika sa presunula z jednotlivých počítačov do sietí počítačov. Prirodzeným pokračovaním pokroku by boli multiprocesory – slovo „multi-core“ vtedy ešte neexistovalo. Pomyslel som si: aký je ekvivalent atómových transakcií pre viacjadrový systém? Bežné transakcie určite nie, pretože sú príliš veľké a ťažké. A tak som prišiel na nápad linearizovateľnosť a takto som vymyslel celú synchronizáciu bez čakania. Išlo o pokus odpovedať na otázku, aká je analógia atómových transakcií pre multiprocesorový systém so zdieľanou pamäťou. Na prvý pohľad môže toto dielo vyzerať celkom inak, no v skutočnosti ide o pokračovanie tej istej témy.

Svet čaká na viac jadier

Vitaly: Spomínali ste, že v tom čase bolo veľmi málo viacjadrových počítačov, však?

Maurice: Jednoducho neexistovali. Existovalo niekoľko takzvaných symetrických multiprocesorov, ktoré boli v podstate pripojené na rovnakú zbernicu. Nefungovalo to veľmi dobre, pretože zakaždým, keď niečo také vytvorila nová spoločnosť, Intel vydal jediný procesor, ktorý prekonal multiprocesor.

Alexej: Neznamená to, že v tých dávnych dobách to bola skôr teoretická štúdia?

Maurice: Nebola to teoretická, ale skôr špekulatívna štúdia. Toto všetko nebolo o práci s množstvom teorém, skôr sme predložili hypotézy o architektúre, ktorá v tom čase neexistovala. Na to je výskum! Žiadna spoločnosť by to neurobila, všetko to bolo niečo z ďalekej budúcnosti. V skutočnosti to bolo až do roku 2004, keď sa objavili skutočné viacjadrové procesory. Vzhľadom na to, že sa procesory prehrievajú, môžete procesor ešte zmenšiť, ale nie zrýchliť. Z tohto dôvodu došlo k prechodu na viacjadrové architektúry. A potom to znamenalo, že zrazu existuje využitie všetkých konceptov, ktoré sme v minulosti vyvinuli.

Alexey: Prečo si myslíte, že sa viacjadrové procesory objavili až v roku XNUMX? Tak prečo tak neskoro?

Maurice: Je to kvôli hardvérovým obmedzeniam. Intel, AMD a ďalšie spoločnosti sú veľmi dobré pri zvyšovaní rýchlosti procesorov. Keď sa v určitom momente procesory natoľko zmenšili, že už nemohli zvýšiť rýchlosť hodín, pretože by procesory začali horieť. Môžete ich zmenšiť, ale nie rýchlejšie. Čo je v ich silách – namiesto veľmi malého procesora vmestiť osem, šestnásť alebo tridsaťdva procesorov do rovnakého objemu skrine, kam sa predtým zmestil iba jeden. Teraz máte multithreading a rýchlu komunikáciu medzi nimi, pretože zdieľajú vyrovnávaciu pamäť. Nemôžete ich však prinútiť bežať rýchlejšie – existuje veľmi špecifický rýchlostný limit. Postupne sa zlepšujú, ale nie až tak. Do cesty sa postavili fyzikálne zákony.

Nový svet, nové problémy. NUMA, NVM a hackovanie architektúry

Alexej: Znie to veľmi rozumne. S novými viacjadrovými procesormi prišli aj nové problémy. Očakávali ste vy a vaši kolegovia tieto problémy? Možno ste ich študovali vopred? V teoretických štúdiách často nie je ľahké predvídať takéto veci. Keď sa vyskytli problémy, do akej miery splnili vaše očakávania a očakávania vašich kolegov? Alebo boli úplne nové a vy a vaši kolegovia ste museli stráviť veľa času riešením vzniknutých problémov?

Vitaliy: Doplním k Alexejovej otázke: predpovedali ste správne architektúru procesorov, keď ste študovali teóriu?

Maurice: Nie všetko na 100%. Myslím si však, že sme s kolegami odviedli dobrú prácu pri predpovedaní viacerých jadier zdieľanej pamäte. Myslím, že sme správne predpovedali ťažkosti pri navrhovaní paralelných dátových štruktúr, ktoré fungujú bez zámkov. Takéto dátové štruktúry boli dôležité pre mnohé aplikácie, aj keď nie pre všetky, ale často skutočne potrebujete dátovú štruktúru bez zámkov. Keď sme ich vymýšľali, mnohí tvrdili, že je to nezmysel, že so zámkami všetko funguje dobre. Celkom dobre sme predvídali, že budú existovať hotové riešenia mnohých problémov s programovaním a problémov so štruktúrou údajov. Vyskytli sa aj zložitejšie problémy, ako napr NUMA – Nerovnomerný prístup k pamäti. V skutočnosti sa o nich až do vynálezu viacjadrových procesorov ani neuvažovalo, pretože boli príliš špecifické. Výskumná komunita pracovala na otázkach, ktoré boli vo všeobecnosti predvídateľné. Niektoré hardvérové ​​problémy spojené so špecifickými architektúrami museli čakať v krídlach - v skutočnosti vzhľad týchto architektúr. Napríklad nikto v skutočnosti nepracoval na dátových štruktúrach špecifických pre GPU, pretože GPU vtedy neexistovali. Aj keď sa urobilo veľa práce SIMD, boli tieto algoritmy pripravené na použitie hneď, ako sa objavil správny hardvér. Nedá sa však predvídať všetko.

Alexey: Ak tomu správne rozumiem, NUMA je akýmsi kompromisom medzi cenou, výkonom a niektorými ďalšími vecami. Máte predstavu, prečo NUMA prišlo tak neskoro?

Maurice: Myslím si, že NUMA existuje kvôli problémom s hardvérom používaným na vytváranie pamäte: čím sú komponenty ďalej, tým pomalšie sa k nim pristupuje. Na druhej strane, druhou hodnotou tejto abstrakcie je uniformita pamäti. Preto jednou z charakteristík paralelných výpočtov je, že všetky abstrakcie sú mierne rozbité. Ak by bol prístup dokonale jednotný, všetka pamäť by bola rovnako vzdialená, ale to je ekonomicky a možno aj fyzicky nemožné. Tak vzniká tento konflikt. Ak napíšete svoj program tak, ako keby bola pamäť jednotná, s najväčšou pravdepodobnosťou bude správna. V tom zmysle, že nebude dávať nesprávne odpovede. Ale výkon jej hviezd z neba neuchmatne. Podobne, ak píšete spinlocky bez pochopenia hierarchie skrýš bude samotný zámok správny, ale na výkon môžete zabudnúť. V istom zmysle musíte písať programy, ktoré žijú na vrchole veľmi jednoduchej abstrakcie, ale musíte prekabátiť ľudí, ktorí vám túto abstrakciu dali: musíte vedieť, že pod abstrakciou je nejaká hierarchia pamäte, že existuje autobus medzi vami a touto spomienkou atď. Existuje teda určitý konflikt medzi abstrakciami, ktoré sú užitočné samy osebe, čo nás vedie k veľmi špecifickým a pragmatickým problémom.

Vitaliy: A čo budúcnosť? Viete predpovedať, ako sa budú procesory ďalej vyvíjať? Existuje názor, že jednou z odpovedí je transakčná pamäť. Pravdepodobne máte na sklade niečo iné.

Maurice: Pred nami je niekoľko veľkých výziev. Jedným z nich je, že koherentná pamäť je úžasná abstrakcia, ale v špeciálnych prípadoch sa začína rozpadávať. Takže napríklad NUMA je živým príkladom niečoho, kde môžete stále predstierať, že existuje jednotná pamäť. Vlastne – nie, predstavenie vás rozplače. V určitom okamihu budú musieť architekti opustiť myšlienku architektúry zjednotenej pamäte, ktorú nemôžete predstierať navždy. Budú potrebné nové programovacie modely, ktoré budú dostatočne jednoduché na používanie a dostatočne výkonné na to, aby bol základný hardvér efektívny. Ide o veľmi ťažký kompromis, pretože ak programátorom ukážete architektúru, ktorá sa v hardvéri skutočne používa, zbláznia sa. Je príliš komplikovaný a nie je prenosný. Ak prezentujete rozhranie, ktoré je príliš jednoduché, výkon bude slabý. Preto bude potrebné urobiť veľa veľmi zložitých kompromisov, aby sa poskytli užitočné programovacie modely použiteľné pre skutočne veľké viacjadrové procesory. Nie som si istý, že niekto iný ako úzky špecialista je schopný programovať na 2000 jadrovom počítači. A pokiaľ nerobíte veľmi špecializované alebo vedecké výpočty, kryptografiu alebo čokoľvek iné, stále nie je vôbec jasné, ako to urobiť správne. 

Ďalším podobným smerom sú špecializované architektúry. Grafické akcelerátory existujú už dlho, ale už sa stali akýmsi klasickým príkladom toho, ako môžete použiť špecializovaný typ výpočtu a spustiť ho na dedikovanom čipe. To pridáva svoje vlastné výzvy: ako s takýmto zariadením komunikujete, ako ho naprogramujete. Nedávno som pracoval na úlohách v oblasti výpočtovej techniky blízkej pamäti. Zoberiete malý procesor a prilepíte ho na obrovský kus pamäte, aby pamäť bežala rýchlosťou vyrovnávacej pamäte L1, a potom komunikuje so zariadením, ako je TPU - procesor je zaneprázdnený nahrávaním nových úloh do vášho pamäťového jadra. Ďalším zaujímavým príkladom je vývoj dátových štruktúr a komunikačných protokolov pre tento druh vecí. Špecializované procesory a hardvér teda budú ešte nejaký čas podliehať vylepšeniam.

Alexey: A čo energetická pamäť (energeticky nezávislá pamäť)?

Maurice: Oh, to je ďalší skvelý príklad! NVM výrazne zmení spôsob, akým sa pozeráme na veci, ako sú dátové štruktúry. Energeticky nezávislá pamäť v istom zmysle sľubuje skutočné zrýchlenie. Život to však neuľahčí, pretože väčšina procesorov, vyrovnávacích pamätí a registrov je stále volatilná. Keď spustíte po havárii, váš stav a stav pamäte nebudú úplne rovnaké ako pred haváriou. Som veľmi vďačný ľuďom zapojeným do NVM - výskumníci budú mať dlho čo robiť, snažiac sa zistiť podmienky správnosti. Výpočty sú správne, ak dokážu prežiť haváriu, pri ktorej sa stratí obsah vyrovnávacích pamätí a registrov, ale hlavná pamäť zostane nedotknutá.

Kompilátory vs CPU, RISC vs CISC, zdieľaná pamäť vs odovzdávanie správ

Vladimír: Čo si myslíte o dileme kompilátor versus procesor z hľadiska inštrukčnej sady? Na vysvetlenie pre tých, ktorí nie sú v tejto téme: ak sa dostaneme do nerovnomernej pamäte alebo niečoho podobného, ​​mohli by sme použiť veľmi jednoduchú sadu inštrukcií a požiadať kompilátor, aby vygeneroval zložitý kód, ktorý dokáže využiť objavené výhody. Alebo môžeme ísť inou cestou: implementovať zložité inštrukcie a požiadať procesor, aby zmenil poradie pokynov a vykonal s nimi ďalšie manipulácie. Čo si o tom myslíš?

Maurice: Na túto otázku vlastne nemám odpoveď. Táto diskusia prebieha už štyri desaťročia. Medzi tým bol čas skrátené súbor príkazov a komplexné občianske vojny viedla skupina tímov. Na chvíľu vyhrali ľudia z RISC, ale potom Intel prerobil ich motory tak, že vnútri sa používala zmenšená inštrukčná sada a von sa vyviezla plná. Možno je to téma, v ktorej musí každá nová generácia nájsť svoje vlastné kompromisy a robiť vlastné rozhodnutia. Je veľmi ťažké predpovedať, ktorá z týchto vecí dopadne lepšie. Takže každá predpoveď, ktorú urobím, bude na určitý čas pravdivá a potom sa na chvíľu opäť stane nepravdivou a potom bude opäť pravdivá.

Alexey: Aké bežné je pre priemysel vo všeobecnosti, že niektoré nápady vyhrávajú v priebehu niekoľkých desaťročí a v ďalšom prehrávajú? Existujú ďalšie príklady takýchto periodických zmien?

Maurice: V oblasti distribuovaných počítačov sú ľudia, ktorí veria zdieľaná pamäť a ľudí, ktorí veria messaging. Pôvodne v distribuovaných výpočtoch, paralelné výpočty znamenajú odovzdávanie správ. Potom niekto zistil, že zdieľaná pamäť značne zjednodušila programovanie. Druhá strana povedala, že zdieľaná pamäť je príliš komplikovaná, pretože potrebuje zámky a podobne, takže stojí za to prejsť do jazykov, kde nič iné ako odovzdávanie správ jednoducho neexistuje. Niekto sa pozrel na to, čo z toho vzišlo a povedal: „Wow, táto implementácia správ vyzerá veľmi podobne ako zdieľaná pamäť, pretože vytvoríte veľa, veľa týchto malých modulov, posielajú si správy a všetky patová situácia, - poďme vylepšiť databázu zdieľanej pamäte!". Toto všetko sa opakuje stále dokola a nedá sa povedať, že by niektorá zo strán mala jednoznačne pravdu. Jedna strana bude vždy dominovať, pretože akonáhle jedna z nich takmer vyhrá, ľudia znova a znova vymýšľajú spôsoby, ako zlepšiť druhú.

Umenie písania krehkého viacvláknového kódu

Alexej: To je veľmi zaujímavé. Napríklad, keď píšeme kód, bez ohľadu na programovací jazyk, zvyčajne musíme vytvárať abstrakcie, ako sú bunky, ktoré sa dajú čítať a zapisovať. Ale v skutočnosti to na určitej fyzickej úrovni môže vyzerať ako odoslanie správy na hardvérovej zbernici medzi rôznymi počítačmi a inými zariadeniami. Ukazuje sa, že existuje práca na oboch úrovniach abstrakcie naraz.

Maurice: Je absolútna pravda, že zdieľaná pamäť je postavená na odovzdávaní správ – autobusy, vyrovnávacie pamäte atď. Je však ťažké písať programy pomocou odovzdávania správ, takže hardvér úmyselne klame a predstiera, že máte nejakú jednotnú pamäť. To vám uľahčí písanie jednoduchých a správnych programov skôr, ako začne klesať výkon. Potom poviete: vyzerá to, že je čas spriateliť sa s keškou. A vtedy sa začnete obávať o umiestnenie kešky a ide sa na to. V istom zmysle porušujete abstrakciu: viete, že to nie je len plochá, jednotná pamäť, a tieto znalosti využijete na písanie programov priateľských k vyrovnávacej pamäti. To je to, čo musíte robiť v skutočných úlohách. Tento konflikt medzi peknou jednoduchou abstrakciou, ktorú ste dostali, a strašne zložitou implementáciou základného hardvéru je miestom, kde každý robí svoj vlastný kompromis. Mám knihu o multiprocesoroch a synchronizácii a jedného dňa som sa chystal napísať kapitolu o dátových štruktúrach java.util.concurrent. Ak sa na ne pozriete, veci ako preskočiť zoznamy Sú to úžasné umelecké diela. (Pozn. redakcie: tí, ktorí poznajú jazyk Java, by sa mali aspoň pozrieť na implementáciu ConcurrentSkipListMap, Môžete sa pozrieť na odkazy pre API и zdrojový kód). Ale z môjho pohľadu by bolo nezodpovedné ukazovať ich študentom, pretože takáto dátová štruktúra je akýsi chlap v cirkuse, ktorý premáva po lane po medvedej jame. Ak zmeníte čo i len jeden malý detail, celá konštrukcia sa zrúti. Tento kód je veľmi rýchly a elegantný už len preto, že je perfektne napísaný, no najmenšia zmena povedie k úplnému zlyhaniu. Ak tento kód uvediem ako príklad študentom, okamžite si povedia: Toto dokážem aj ja! A potom sa zrúti nejaké lietadlo alebo vybuchne jadrový reaktor a bude to moja chyba, že som im nedal príliš veľa informácií v správnom čase.

Alexey: Keď som bol trochu mladší, veľakrát som sa pokúšal študovať zdrojový kód Douga Leeho, napr. java.util.concurrent, pretože je to open source, je veľmi ľahké ho nájsť a pokúsiť sa pochopiť, čo sa tam deje. Nedopadlo to veľmi dobre: ​​často je úplne nejasné, prečo sa Doug rozhodol urobiť niečo týmto spôsobom, keď všetci ostatní to robia inak. Ako tieto veci vysvetľujete svojim študentom? Existuje konkrétny správny spôsob, ako opísať konkrétne detaily napríklad hardcore algoritmu? Ako to robíš?

Maurice: Učitelia kreslenia majú klišé, ktoré si pamätajú ako prvé: ak chcete kresliť ako Picasso, musíte sa najprv naučiť kresliť jednoduché realistické obrázky a až keď poznáte pravidlá, môžete ich začať porušovať. Ak okamžite začnete porušovaním pravidiel, dostanete neporiadok. Najprv učím študentov, ako písať jednoduchý, správny kód bez obáv o výkon. Hovorím, že tu číhajú zložité problémy s časovaním, takže sa nestarajte o vyrovnávacie pamäte, nestarajte sa o modely pamäte, len sa uistite, že všetko funguje správne. Už to je dosť ťažké: moderné programovanie nie je samo o sebe ľahké, najmä pre nových študentov. A keď majú intuíciu o tom, ako písať správne programy, hovorím: pozrite sa na tieto dve implementácie spinlockov: jedna je veľmi pomalá a druhá tiež nie je veľmi dobrá, ale už lepšia. Matematicky sú však tieto dva algoritmy rovnaké. V skutočnosti jeden z nich používa lokalitu cache. Jeden z nich sa točí na dátach uložených v lokálnej vyrovnávacej pamäti a druhý opakovane vykonáva operácie prechádzajúce cez zbernicu. Nemôžete napísať efektívny kód, ak mu nerozumiete, ak neviete, ako prelomiť abstrakciu a pozrieť sa na základnú štruktúru. Ale nebudete môcť začať robiť hneď. Sú ľudia, ktorí to začnú robiť hneď a veria vo vlastnú genialitu, väčšinou to skončí zle, lebo nerozumejú princípom. Nikto nekreslí ako Picasso a nepíše programy ako Doug Lee, čerstvo po univerzite, počas prvého týždňa. Dosiahnutie tejto úrovne vedomostí trvá roky.

Alexey: Ukazuje sa, že problém rozdeľujete na dve časti: prvá je správnosť, druhá je výkon?

Maurice: Presne tak. A v tomto poradí. Časť problému spočíva v tom, že noví študenti si neuvedomujú, že je ťažké dosiahnuť správnosť. Na prvý pohľad hovoria: to je samozrejme správne, zostáva to len urýchliť. Niekedy im teda hovorím o inherentne nesprávnom algoritme, ako keby bol správny.

Ako naučiť študentov písať zložitý viacvláknový kód

Alexei: Len aby zistili, či vycítia ten trik?

Maurice: Vždy vás vopred varujem, že niekedy prídem na nesprávne algoritmy. Nemali by ste klamať ľudí. Odporúčam, aby boli k informáciám skeptickí. Ak niečo poviem a poviem: „pozri, toto je očividne správne“ - je to signál, že sa vás niekde snažia oklamať a mali by ste sa začať pýtať. Ďalej sa snažím povzbudiť študentov, aby neustále kládli otázky a potom vyzvali: „Čo sa stane, ak necháme všetko tak? A hneď vidia chybu. Presvedčiť žiakov, že si treba robiť starosti so správnosťou, je ale ťažšie, ako sa na prvý pohľad zdá. Mnohí z týchto študentov prichádzajú s programátorskými skúsenosťami na strednej škole, niektorí tam už zakotvili a programovali a všetci sú plní sebavedomia. Je to niečo vojenské: najprv musíte zmeniť ich myslenie, aby ste ich presvedčili, aby trpezlivo pristupovali k riešeniu vznikajúcich problémov. Alebo možno je to ako u budhistických mníchov: najprv sa naučia uvažovať o správnosti, a keď pochopia spôsoby uvažovania o správnosti, môžu prejsť na ďalšiu úroveň a začať sa starať o výkon.

Alexey: To znamená, že študentom niekedy ukážete nefungujúce príklady, vďaka ktorým získate spätnú väzbu, ktorá ukazuje, či rozumejú podstate problému, či dokážu nájsť nesprávny kód a nesprávny výsledok. No, ako zvyčajne študenti potešia alebo rozčúlia?

Maurice: Takmer vždy študenti nakoniec nájdu chybu. Ak hľadajú príliš pomaly, kladiem navádzacie otázky a tu je dôležité pochopiť, že ak ich nikdy neoklamú, začnú vaše slová bezmyšlienkovite vnímať ako konečnú pravdu. Potom sa nudia a počas vyučovania zaspia pri čítaní Facebooku na notebooku. Ale keď im vopred dáte vedieť, že budú oklamaní a že budú vyzerať hlúpo, ak nebudú cítiť trik, stanú sa oveľa ostražitejšími. To je dobré v mnohých smeroch. Bol by som rád, keby študenti spochybňovali nielen pochopenie problematiky, ale aj autoritu učiteľa. Ide o to, že študent môže kedykoľvek zdvihnúť ruku a povedať: Myslím si, že to, čo ste práve povedali, je nesprávne. Je to dôležitý vzdelávací nástroj. Nechcem, aby niekto zo študentov sedel a ticho si premýšľal: všetko to vyzerá ako úplný nezmysel, ale je príliš strašidelné zdvihnúť ruku, a skutočne, je to profesor, takže všetko, čo hovorí, je pravda. Preto, ak sú vopred upozornení, že nie všetko, čo sa hovorí, je nevyhnutne pravda, majú motiváciu venovať materiálu väčšiu pozornosť. Výslovne uvádzam, že zdvihnúť ruku a klásť otázky je v poriadku. Vaša otázka môže znieť hlúpo alebo naivne, no práve takto vznikajú často tie najlepšie otázky.

Alexej: Veľmi zaujímavé. Ľudia majú zvyčajne nejakú psychologickú bariéru, ktorá im bráni položiť profesorovi otázku. Najmä ak je v miestnosti veľa ľudí a každý sa bojí, že diskusia o vašej hlúpej otázke zaberie čas všetkým týmto ľuďom. Existujú nejaké triky, ako sa s tým vysporiadať?

Maurice: Často sa zastavím a pýtam sa klasické otázky. Bude nejaké tvrdenie správne, alebo ako by vyriešili diskutovaný problém. Toto je kľúčový krok, najmä na začiatku relácie, keď sa ľudia hanbia povedať aj tú najmenšiu vec. Položíte študentom otázku a nič viac nepoviete. Je ticho, každý sa trochu napne, napätie narastá, potom sa zrazu niekto zlomí, zlomí a povie odpoveď. Takto otočíte situáciu: je ťažšie a nepohodlnejšie mlčať ako odpovedať! Toto je štandardný pedagogický trik. Každý učiteľ na svete by mal vedieť, ako to urobiť.

Alexey: Teraz máme skvelý názov pre tento rozhovor: "Je ľahšie odpovedať, ako mlčať."

Vitaly: Spýtam sa ťa ešte na jednu vec. Pracujete na topologických dôkazoch. Ako ste sa do toho vôbec dostali, pretože distribuované výpočty a topológia sú úplne odlišné veci!

Maurice: Je tam skrytý vzťah. Keď som bol študent a študoval som matematiku, študoval som čistú matematiku. Až do konca štúdia som nemal o počítače skutočný záujem a ocitol som sa v nutkavej potrebe hľadať si prácu. Ako študent som študoval algebraickú topológiu. O mnoho rokov neskôr, pri práci na probléme tzv "Problém s dohodou k-set", na modelovanie problému som použil grafy a ako sa vtedy zdalo, našiel som riešenie. Stačilo si sadnúť a obísť graf. Pokúste sa nájsť vhodnú odpoveď na tomto grafe. Ale môj algoritmus nefungoval: ukázalo sa, že vždy beží v kruhoch. Žiaľ, nič z toho nebolo možné vysvetliť vo formálnom jazyku teórie grafov, v jazyku, ktorý poznajú všetci informatici. A potom som si spomenul, že pred mnohými rokmi sme tento koncept používali aj na hodinách topológie "jednoduchý komplex", čo je zovšeobecnenie grafov do vyšších dimenzií. Potom som sa opýtal sám seba: čo sa stane, ak problém preformulujeme z hľadiska jednoduchých komplexov? Toto sa stalo kľúčom. Použitím silnejšieho formalizmu sa problém zrazu stáva oveľa jednoduchším. Ľudia sa s tým dlho trápili pomocou grafov, no nezmohli sa na nič. A ani teraz nemôžu - správnou odpoveďou nebol algoritmus, ale dôkaz nemožnosti vyriešiť problém. To znamená, že takýto algoritmus jednoducho neexistuje. ale každý dôkaz nemožnosti je založené buď na simpliciálnych komplexoch, alebo na veciach, o ktorých sa ľudia tvária, že ich nepovažujú za simpliciálne komplexy. Z toho, že ste niečo nazvali novým názvom, to nestráca svoju podstatu.

Vitaliy: Ukazuje sa, že ste mali len šťastie?

Maurice: Okrem šťastia je to tiež pripravenosť. To znamená, že by ste nemali zabúdať na „neužitočné“ veci, ktoré ste sa predtým naučili. Čím viac zbytočných vecí sa naučíte, tým viac poznatkov budete môcť získať, keď budete čeliť novému problému. Tento druh intuitívneho priraďovania vzorov je dôležitý, pretože... Povedzme, že ide o reťaz: na začiatku som zistil, že grafy celkom nefungujú alebo nefungujú vôbec, pripomenulo mi to niečo spred ôsmich rokov a študentské roky, keď sme študovali všetky tieto jednoduché komplexy. Na druhej strane mi to umožnilo nájsť moju starú učebnicu topológie a načítať si ju späť do hlavy. Ale nebyť tých starých vedomostí, nikdy by som v riešení pôvodného problému nepokročil.

Nové vydanie The Art of Multiprocessor Programming

Alexej: Povedal si pár slov o svojej knihe. Pravdepodobne nie je najväčším tajomstvom, že ste napísali svetovo najznámejšiu knihu o multithreadingu, "Umenie viacprocesorového programovania". Má už asi 11 rokov a odvtedy len vyšla  revidovaná dotlač. Bude aj druhé vydanie?

Maurice: Dobre, že si sa opýtal! Bude to veľmi skoro, asi o tri mesiace. Sú tu ďalší dvaja autori, pridali sme oveľa viac materiálu, vylepšili sekciu o paralelizme fork / join, napísali sekciu o MapReduce, pridali veľa nových vecí a vyhodili nepotrebné - niečo, čo bolo v čase písania veľmi zaujímavé prvé vydanie, ale dnes už nie je. Ukázalo sa, že je to veľmi vážne prepracovaná kniha.

Alexei: Všetko už bolo urobené, zostáva len vydať?

Maurice: Na niekoľkých kapitolách je ešte potrebné popracovať. Náš vydavateľ (myslím, že nás už nenávidí) sa nám stále snaží naznačiť, že by sme mali pracovať rýchlejšie. Zaostávame za plánom. Teoreticky sme túto knihu mohli urobiť o pár rokov skôr.

Alexey: Je nejaká šanca získať novú verziu knihy pred Vianocami?

Maurice: To je náš cieľ! Ale už toľkokrát som predpovedal víťazstvo, že mi už nikto neverí. Ani v tejto veci by ste mi asi nemali príliš dôverovať.

Alexei: V každom prípade je to fantastická správa. Prvé vydanie knihy sa mi veľmi páčilo. Dalo by sa povedať, že som fanúšik.

Maurice: Dúfam, že nové vydanie bude hodné vášho vrúcneho nadšenia, ďakujem!

Ako bola vynájdená transakčná pamäť

Vitaly: Ďalšia otázka sa týka transakčnej pamäte. Pokiaľ som dobre pochopil, ty si priekopník v tejto oblasti, vymyslel si to v čase, keď sa nad takýmito vecami nikto nezamýšľal. Prečo ste sa rozhodli presťahovať do tejto oblasti? Prečo boli pre vás transakcie dôležité? Mysleli ste si, že raz budú stelesnené v železe?

Maurice: O transakciách viem už od môjho postgraduálneho štúdia.

Vitaliy: Áno, ale toto sú iné transakcie!

Maurice: Pracoval som s Elliottom Mossom na neblokovanom zbere odpadu. Naším problémom bolo, že sme chceli atómovo zmeniť niekoľko slov v pamäti a potom by sa algoritmy stali veľmi jednoduchými a aspoň niektoré by sa stali efektívnejšími. Použitím porovnať a vymeniť pre load-link/store-conditionalposkytovaná paralelnou architektúrou, je možné niečo urobiť, ale je to veľmi neefektívne a škaredé, pretože by ste sa museli vysporiadať s úrovňami nepriamosti. Chcem zmeniť pamäťové slová a potrebujem prepnúť, pretože môžem zmeniť iba jeden ukazovateľ, takže musia ukazovať na nejakú adresárovú štruktúru. Hovorili sme o tom, aké by bolo skvelé, keby sme mohli zmeniť hardvér tak, aby mohol nahrávať súčasne. Zdá sa, že Elliot si to všimol: ak sa pozriete na protokoly koherencie vyrovnávacej pamäte, už poskytujú väčšinu požadovaných funkcií. V optimistickej transakcii protokol koherencie vyrovnávacej pamäte zaznamená prítomnosť konfliktu načasovania a vyrovnávacia pamäť sa stane prázdno. Čo sa stane, ak špekulatívne spustíte transakciu na svojej vyrovnávacej pamäti a použijete mechanizmy koherenčného protokolu na detekciu konfliktov? Špekulatívnu hardvérovú architektúru bolo ľahké navrhnúť. Tak sme to napísali úplne prvá publikácia o transakčnej pamäti. V rovnakom čase spoločnosť, pre ktorú som pracoval, Digital Equipment Corporation, stavala nový 64-bitový procesor s názvom Alpha. A tak som šiel a dal vývojovému tímu Alpha prezentáciu o našej úžasnej transakčnej pamäti a oni sa pýtali: aký dodatočný príjem získa naša spoločnosť, ak to všetko vložíme priamo do procesora? A na to som nemal absolútne žiadnu odpoveď, pretože som technológ, nie som marketingový človek. Naozaj som nemal čo povedať. To, že nič neviem, ich veľmi nezaujalo.

Vitaly: Miliardy! Stačí povedať „miliardy“!

Maurice: Áno, to som mal povedať. Teraz, v ére startupov a toho všetkého, viem, ako napísať biznis plán. Že o veľkosti potenciálneho zisku môžete trochu klamať. Ale v tých časoch sa mi to zdalo naivné, tak som len povedal: "Neviem." Ak sa pozriete na históriu publikácie o transakčnej pamäti, všimnete si, že po roku na ňu bolo niekoľko odkazov a potom asi desať rokov tento článok nikto vôbec necitoval. Úvodzovky sa objavili okolo roku 2004, keď vzniklo skutočné viacjadro. Keď ľudia zistili, že písanie paralelného kódu môže zarábať peniaze, začal sa nový výskum. Ravi Rajwar napísal článok, ktorý nejakým spôsobom zaviedol mainstream do konceptu transakčnej pamäte. (Poznámka redakcie: Tento článok má druhú verziu vydanú v roku 2010 a je voľne dostupný ako PDF). Zrazu si ľudia uvedomili, ako presne sa to všetko dá využiť, ako sa dajú zrýchliť tradičné algoritmy pomocou zámkov. Dobrý príklad niečoho, čo sa v minulosti javilo ako zaujímavý akademický problém. A áno, keby ste sa ma vtedy opýtali, či si myslím, že toto všetko bude v budúcnosti dôležité, povedal by som: samozrejme, ale nie je jasné, kedy presne. Možno o 50 rokov? V praxi sa ukázalo, že ide len o desaťročie. Je veľmi pekné, keď niečo robíte, a len o desať rokov si to ľudia všimnú.

Prečo sa oplatí robiť výskum v oblasti distribuovaných výpočtov

Vitaly: Ak hovoríme o novom výskume, čo by ste poradil čitateľom – distribuované počítače alebo viacjadrové a prečo? 

Maurice: V dnešnej dobe je ľahké získať viacjadrový procesor, ale ťažšie je nastaviť skutočný distribuovaný systém. Začal som na nich pracovať, pretože som chcel robiť niečo iné ako PhD. Toto je rada, ktorú vždy dávam začiatočníkom: nepíšte nadväzujúcu dizertačnú prácu – skúste ísť novým smerom. Viacvláknové spracovanie je navyše jednoduché. Môžem experimentovať na vlastnej vidlici bežiacej na notebooku bez toho, aby som vstal z postele. Ale ak by som zrazu chcel vytvoriť skutočný distribuovaný systém, musel by som urobiť veľa práce, prilákať študentov atď. Som lenivý človek a najradšej by som pracoval na multi-core. Experimentovanie s viacjadrovými systémami je tiež jednoduchšie ako experimentovanie s distribuovanými, pretože aj v hlúpom distribuovanom systéme je príliš veľa faktorov na kontrolu.

Vitaliy: Čo teraz robíš, skúmaš blockchain? Ktorým článkom by ste mali venovať pozornosť ako prvé?

Maurice: Nedávno sa objavil velmi dobry clanokktorú som napísal so svojím študentom Vikramom Sarafom špeciálne pre Tokenomcs konferencie v Paríži pred tromi týždňami. Toto je článok o užitočných distribuovaných systémoch, v ktorých navrhujeme vytvoriť Ethereum viacvláknové. Teraz sa inteligentné zmluvy (kód, ktorý beží na blockchaine) vykonávajú postupne. Predtým sme napísali článok, ktorý hovoril o spôsobe, ako využiť špekulatívne transakcie na urýchlenie procesu. Prevzali sme veľa nápadov zo softvérovej transakčnej pamäte a povedali sme, že ak tieto nápady urobíte súčasťou virtuálneho stroja Etherium, všetko bude fungovať rýchlejšie. Na to je však potrebné, aby v zmluvách nedochádzalo ku konfliktom údajov. A potom sme predpokladali, že v skutočnom živote k takýmto konfliktom naozaj nedochádza. Ale nemali sme možnosť to zistiť. Potom nám napadlo, že máme takmer desať rokov skutočnej histórie zmlúv, a tak sme vyložili blockchain Etherium a pýtali sme sa: čo by sa stalo, keby tieto historické záznamy bežali paralelne? Zistili sme výrazné zvýšenie rýchlosti. V začiatkoch Etheria sa rýchlosť veľmi zvýšila, ale dnes je všetko trochu komplikovanejšie, pretože existuje menej zmlúv a pravdepodobnosť konfliktov pri údajoch, ktoré vyžadujú serializáciu, sa zvýšila. Ale to všetko je experimentálna práca so skutočnými historickými údajmi. Na blockchaine je pekné, že si všetko pamätá navždy, takže sa môžete vrátiť v čase a študovať, čo by sa stalo, keby sme na spustenie kódu použili iné algoritmy. Ako by sa ľuďom v minulosti páčil náš nový nápad. Robiť takýto prieskum je oveľa jednoduchšie a príjemnejšie, pretože existuje vec, ktorá všetko sleduje a všetko zaznamenáva. Toto je už niečo viac ako sociológia ako vývoj algoritmov.

Zastavil sa vývoj algoritmov a ako ďalej žiť

Vitaly: Čas na poslednú teoretickú otázku! Máte pocit, že pokroky v konkurenčných dátových štruktúrach sa každým rokom zmenšujú? Myslíte si, že sme dosiahli plató v našom chápaní dátových štruktúr, alebo dôjde k nejakým zásadným zlepšeniam? Možno existujú nejaké šikovné nápady, ktoré môžu úplne zmeniť všetko?

Maurice: Možno sme dosiahli plató v dátových štruktúrach pre tradičné architektúry. Dátové štruktúry pre nové architektúry sú však stále veľmi sľubnou oblasťou. Ak chcete vytvoriť dátové štruktúry pre, povedzme, hardvérové ​​akcelerátory, potom dátové štruktúry GPU sú veľmi odlišné od dátových štruktúr CPU. Keď navrhujete dátové štruktúry pre blockchainy, potrebujete hashovať časti dát a potom ich vložiť do niečoho podobného merkle strom, aby sa zabránilo falšovaniu. V poslednej dobe je v tejto oblasti prudký nárast, mnohí odvádzajú veľmi dobrú prácu. Ale myslím si, že sa stane to, že nové architektúry a nové aplikácie povedú k novým dátovým štruktúram. Staršie aplikácie a tradičná architektúra – možno už nie je veľa priestoru na výskum. Ak však vyjdete zo zabehnutých koľají a pozriete sa cez okraj, uvidíte bláznivé veci, ktoré mainstream neberie vážne – tam sa vlastne dejú všetky tie vzrušujúce veci.

Vitaly: Preto, aby som bol veľmi slávnym výskumníkom, musel som vymyslieť svoju vlastnú architektúru 🙂

Maurice: Môžete „ukradnúť“ niekomu inú novú architektúru – zdá sa to oveľa jednoduchšie!

Práca na Brown University

Vitaliy: Mohli by ste nám o tom povedať viac? Brown Universityv ktorom pracuješ? V kontexte informačných technológií sa o ňom veľa nevie. Menej ako o MIT napr.

Maurice: Brown University je jednou z najstarších univerzít v Spojených štátoch. Myslím, že len Harvard je trochu starší. Hnedá je súčasťou tzv brečtanové ligy, čo je zbierka ôsmich najstarších univerzít. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, Pennsylvania, Princeton. Toto je akási stará, malá a trochu aristokratická univerzita. Dôraz je kladený na vzdelávanie v oblasti slobodných umení. Nesnaží sa to byť ako MIT, MIT je veľmi špecializované a technické. Brown je skvelým miestom na štúdium ruskej literatúry alebo klasickej gréčtiny a, samozrejme, informatiky. Zameriava sa na komplexné vzdelávanie. Väčšina našich študentov chodí na Facebook, Apple, Google, takže si myslím, že naši študenti nemajú problém zamestnať sa v tomto odvetví. Išiel som pracovať do Brown, pretože predtým som pracoval v Digital Equipment Corporation v Bostone. Bola to spoločnosť, ktorá vymyslela veľa zaujímavých vecí, no poprela dôležitosť osobných počítačov. Firma s ťažkým osudom, ktorej zakladateľmi boli kedysi mladí revolucionári, nič sa nenaučili a nezabudli, a preto sa z revolucionárov v priebehu asi desaťročia zmenili na reakcionárov. Radi žartovali, že osobné počítače patria do garáže – samozrejme do opustenej garáže. Je úplne zrejmé, že ich zničili flexibilnejšie firmy. Keď bolo jasné, že spoločnosť má problémy, zavolal som svojmu priateľovi z Brown, ktorý je asi hodinu od Bostonu. Z Bostonu som vtedy odísť nechcel, pretože iné univerzity nemali veľa voľných miest. Bolo to obdobie, keď v oblasti informatiky nebolo toľko voľných miest ako teraz. A Brown mal prácu, nemusel som sa sťahovať z domu, nemusel som sťahovať rodinu a život v Bostone si naozaj užívam! Tak som sa rozhodol ísť do Browna. Páči sa mi to. Študenti sú skvelí, takže som nikdy ani neskúšal ísť niekam inam. Na sabatical som rok pracoval v Microsofte, rok som išiel do Technionu v Haife a teraz budem v Algorande. Všade mám veľa kolegov a preto fyzické umiestnenie našich učební nie je až také dôležité. Najdôležitejší sú však študenti, tí sú tu najlepší. Nikdy som neskúšal ísť nikam inam, pretože som tu celkom spokojný.

Napriek Brownovej sláve v Spojených štátoch je v zámorí prekvapivo neznámy. Ako vidíte, teraz robím všetko pre to, aby som tento stav napravil.

Rozdiel medzi univerzitným a podnikovým výskumom

Vitaliy: Dobre, ďalšia otázka sa týka digitálneho vybavenia. Boli ste tam výskumníkom. Aký je rozdiel medzi prácou na oddelení výskumu a vývoja veľkej spoločnosti a prácou na univerzite? Aké sú výhody a nevýhody?

Maurice: V Microsofte som dvadsať rokov a úzko spolupracujem s ľuďmi zo Sun Microsystems, Oracle, Facebook a teraz Algorand. Na základe toho všetkého chcem povedať, že ako vo firmách, tak aj na univerzite sa dá robiť prvotriedny výskum. Dôležitý rozdiel je v tom, že vo firme pracujete s kolegami. Ak zrazu dostanem nápad na projekt, ktorý ešte neexistuje, musím presvedčiť svojich rovesníkov, že je to dobrý nápad. Ak som v Browne, potom môžem povedať svojim študentom: poďme pracovať na antigravitácii! Buď pôjdu k niekomu inému, alebo sa ujmú projektu. Áno, budem musieť nájsť financie, budem musieť napísať žiadosť o grant a podobne. V každom prípade, študentov bude vždy veľa a vy sa budete môcť rozhodovať jednostranne. Ale na univerzite s najväčšou pravdepodobnosťou nebudete pracovať s ľuďmi vašej úrovne. Vo svete priemyselného výskumu musíte najskôr všetkých presvedčiť, že váš projekt stojí za to. Nemôžem si od nikoho nič objednať. A obidva tieto spôsoby práce sú cenné, pretože ak pracujete na niečom naozaj bláznivom a vašich kolegov je ťažké presvedčiť, je ľahšie presvedčiť postgraduálnych študentov – najmä ak im zaplatíte. Ak pracujete na niečom, čo si vyžaduje veľa skúseností a hlbokú odbornosť, potom potrebujete kolegov, ktorí vedia povedať „nie, náhodou tejto oblasti rozumiem a váš nápad je zlý, nič z toho nebude“. To je veľmi užitočné z hľadiska straty času. A tiež, ak v priemyselných laboratóriách trávite veľa času písaním správ, potom na univerzite trávite tento čas hľadaním peňazí. Ak chcem, aby študenti mohli niekam cestovať, musím na to nájsť peniaze niekde inde. A čím je vaša pozícia na univerzite dôležitejšia, tým viac času musíte venovať vyberaniu peňazí. Takže, teraz už viete, ako pracujem - profesionálny žobrák! Ako jeden z tých mníchov, ktorí chodia s darovacím tanierom. Vo všeobecnosti sa tieto dve činnosti navzájom dopĺňajú. Preto sa snažím žiť a stáť pevne v oboch svetoch.

Vitaliy: Zdá sa, že presvedčiť spoločnosť je ťažšie ako presvedčiť iných vedcov.

Maurice: Tvrdšie a oveľa viac. Navyše v rôznych oblastiach je to iné: niekto vykonáva rozsiahly výskum a niekto sa zameriava na svoju tému. Keby som išiel do Microsoftu alebo Facebooku a povedal, poďme robiť antigravitáciu, sotva by to ocenili. Ale keby som presne to isté povedal svojim absolventom, s najväčšou pravdepodobnosťou by sa okamžite pustili do práce, aj keď teraz by som už mal problémy - pretože na to musíte nájsť peniaze. Ale pokiaľ chcete urobiť niečo v súlade s cieľmi spoločnosti, táto spoločnosť môže byť veľmi dobrým miestom na výskum.

Hydra a SPTDC

Vitaliy: Moje otázky sa blížia ku koncu, poďme si teda povedať niečo o nadchádzajúcej ceste do Ruska.

Maurice: Áno, teším sa na návrat do Petrohradu.

Alexey: Je pre mňa veľkou cťou, že ste tento rok s nami. Ste druhýkrát v Petrohrade, však?

Maurice: Už tretí!

Alexej: Chápem, ale SPTDC - presne ten druhý. Naposledy sa volala škola SPTCC, teraz sme zmenili jedno písmeno (C na D, súbežne na Distribuované), aby sme zdôraznili, že v tomto roku je viac oblastí súvisiacich s distribuovanou výpočtovou technikou. Môžete povedať pár slov o svojich prezentáciách v škole a Hydra konferencie?

Maurice: V škole chcem hovoriť o základoch blockchainu a o tom, čo s ním môžete robiť. Chcel by som ukázať, že blockchainy sú veľmi podobné viacvláknovému programovaniu, ktoré poznáme, ale majú svoje vlastné nuansy a je dôležité pochopiť tieto rozdiely. Ak urobíte chybu v bežnej webovej aplikácii, je to len nepríjemné. Ak napíšete buggy kód do finančnej aplikácie, niekto vám určite ukradne všetky peniaze. To je úplne iná úroveň zodpovednosti a dôsledkov. Budem hovoriť trochu o proof-of-work, smart kontraktoch, transakciách medzi rôznymi blockchainmi.

Vedľa mňa budú pracovať ďalší rečníci, ktorí majú k blockchainu tiež čo povedať a dohodli sme sa, že sa budeme medzi sebou skoordinovať, aby naše príbehy dobre sedeli. Ale čo sa týka inžinierskej prednášky, chcem dať jasné vysvetlenie širokému publiku, prečo by ste nemali veriť všetkému, čo počujete o blockchainoch, prečo sú blockchainy skvelá oblasť, ako sa hodí k iným známym myšlienkam a prečo by sme mali smelo hľadieť do budúcnosti.

Alexey: Okrem toho chcem povedať, že to nebude prebiehať vo formáte stretnutia alebo skupiny používateľov, ako to bolo pred dvoma rokmi. Rozhodli sme sa urobiť malú konferenciu v blízkosti školy. Dôvodom je, že po rozhovore s Petrom Kuznecovom sme si uvedomili, že škola je obmedzená len na sto, možno 120 ľudí. Zároveň je tu veľa inžinierov, ktorí s vami chcú hovoriť, navštevovať správy a vo všeobecnosti sa o túto tému zaujímajú. Na tento účel sme vytvorili novú konferenciu s názvom Hydra. Mimochodom, viete prečo práve Hydra?

Maurice: Pretože bude mať sedem reproduktorov? A môžu im odrezať hlavy a namiesto nich vyrastú nové reproduktory?

Alexey: Skvelý nápad na pestovanie nových reproduktorov. Ale v skutočnosti je tu príbeh. Spomeňte si na legendu o Odyseovi, kde sa medzitým musel plaviť Scylla a Charybda? Hydra je niečo ako Charybdis. Príbeh je taký, že raz som hovoril na konferencii a hovoril som o multithreadingu. Na tejto konferencii boli len dve skladby. Na začiatku reportáže som divákom v sále povedal, že teraz majú na výber medzi Scyllou a Charybdou. Mojím duchovným zvieraťom je Charybda, pretože Charybda má veľa hláv a mojou témou je multivlákno. Takto sa objavujú názvy konferencií.

V každom prípade nám došli otázky aj čas. Takže ďakujeme priatelia za skvelý rozhovor a vidíme sa na SPTDC a Hydra 2019!

S Mauriceom bude možné pokračovať v komunikácii na konferencii Hydra 2019, ktorá sa bude konať 11. – 12. júla 2019 v Petrohrade. Príde so správou „Blockchainy a budúcnosť distribuovaných výpočtov“. Lístky je možné zakúpiť na oficiálnej webovej stránke.

Zdroj: hab.com

Pridať komentár