"Është më e lehtë të përgjigjesh sesa të heshtësh" - një intervistë e mrekullueshme me babain e kujtesës transaksionale, Maurice Herlihy

Maurice Herlihy - pronari i dy Çmimet Dijkstra. E para është për punë "Sinkronizimi pa pritje" (Universiteti Brown) dhe i dyti, më i fundit, - "Kujtesa transaksionale: Mbështetje arkitekturore për strukturat e të dhënave pa kyçje" (Universiteti Teknik Virginia). Çmimi Dijkstra jepet për vepra, rëndësia dhe ndikimi i të cilave vihet re prej të paktën dhjetë vitesh dhe, padyshim, Maurice është një nga specialistët më të njohur në këtë fushë. Ai është aktualisht profesor në Universitetin Brown dhe ka arritje të gjata. Tani ai është i angazhuar në kërkimin e blockchain në kontekstin e llogaritjes klasike të shpërndarë.

Më parë, Maurice tashmë ka ardhur në Rusi për SPTCC (videokasetë) dhe bëri një takim të shkëlqyer të komunitetit të zhvilluesve JUG.ru Java në Shën Petersburg (videokasetë).

Ky habrapost është një intervistë e mrekullueshme me Maurice Herlihy. Ai diskuton temat e mëposhtme:

  • Ndërveprimi midis akademisë dhe industrisë;
  • Fondacioni për kërkimin e blockchain;
  • Nga vijnë idetë e reja? Ndikimi i popullaritetit;
  • PhD nën drejtimin e Barbara Liskov;
  • Bota është duke pritur për multi-core;
  • Botë e re, probleme të reja. NVM, NUMA dhe hakimi i arkitekturës;
  • Kompiluesit kundrejt CPU-ve, RISC vs CISC, memoria e përbashkët kundrejt kalimit të mesazheve;
  • Arti i shkrimit të kodit të brishtë me shumë fije;
  • Si t'i mësoni studentët se si të shkruajnë kode komplekse me shumë fije;
  • Botimi i ri i librit "Arti i Programimit Multiprocesor";
  • Si u shpik kujtesa transaksionale?   
  • Pse ia vlen të bëhen kërkime në fushën e informatikës së shpërndarë;
  • A është ndalur zhvillimi i algoritmeve dhe si të jetojmë;
  • Punon tek Brown University;
  • Dallimi midis kërkimit universitar dhe atij të korporatës;
  • Hidra dhe SPTDC.

Intervistat zhvillohen nga:

Vitaly Aksenov — aktualisht një post-doc në IST Austria dhe një punonjës i Departamentit të Teknologjive Kompjuterike në Universitetin ITMO. Ai është i angazhuar në kërkime në fushën e teorisë dhe praktikës së strukturave konkurruese të të dhënave. Para se t'i bashkohej IST-së, ai mori doktoraturën nga Universiteti Paris Diderot dhe Universiteti ITMO nën Prof. Petr Kuznetsov.

Alexey Fedorov është një prodhues në JUG Ru Group, një kompani ruse që organizon konferenca për zhvilluesit. Alexey mori pjesë në përgatitjen e më shumë se 50 konferencave dhe rezymeja e tij përmban gjithçka nga pozicioni i një inxhinieri zhvillimi në Oracle (JCK, Java Platform Group) deri në pozicionin e një zhvilluesi në Odnoklassniki.

Vladimir Sitnikov është inxhinier në Netcracker. Për dhjetë vjet ai ka punuar në performancën dhe shkallëzueshmërinë e NetCracker OS, softuer i përdorur nga operatorët e telekomit për të automatizuar proceset e menaxhimit të pajisjeve të rrjetit dhe rrjetit. I interesuar për çështjet e performancës së Java dhe Oracle Database. Autor i mbi një duzinë përmirësimesh të performancës në drejtuesin zyrtar të PostgreSQL JDBC.

Ndërveprimi midis akademisë dhe industrisë

Alexey: Maurice, ju keni punuar në akademi për një kohë shumë të gjatë dhe pyetja e parë ka të bëjë me ndërveprimin midis akademisë dhe industrisë. Mund të na thoni se si kanë ndryshuar ndërveprimet mes tyre së fundmi? Çfarë ishte 20-30 vjet më parë dhe çfarë po ndodh tani? 

Maurice: Gjithmonë jam përpjekur të punoj ngushtë me kompanitë tregtare sepse kanë sfida interesante. Si rregull, ata nuk janë shumë të interesuar as për publikimin e rezultateve të tyre dhe as për shpjegime të hollësishme të problemeve të tyre para komunitetit botëror. Ata janë të interesuar vetëm për zgjidhjen e këtyre problemeve. Kam punuar për disa nga këto kompani për një kohë. Kam kaluar pesë vjet duke punuar me kohë të plotë në një laborator kërkimor në Digital Equipment Corporation, e cila dikur ishte një kompani e madhe kompjuterash. Punoja një ditë në javë në Sun, në Microsoft, në Oracle, punoja pak në Facebook. Tani unë do të shkoj në një pushim sabatik (një profesor në një universitet amerikan lejohet të marrë një pushim të tillë për një vit rreth një herë në gjashtë vjet) dhe të punoj në Algorand, kjo është një kompani e tillë kriptovalutash në Boston. Të punosh ngushtë me kompanitë ka qenë gjithmonë një kënaqësi, sepse kështu mëson për gjëra të reja dhe interesante. Në përgjithësi, ju mund të jeni personi i parë ose i dytë që publikon një artikull mbi një temë të zgjedhur, në vend që të përmirësoni gradualisht zgjidhjet e problemeve për të cilat të gjithë të tjerët tashmë janë duke punuar.

Alexey: Mund të na tregoni më shumë se si ndodh kjo?

Maurice: Sigurisht. E dini, kur isha në Digital Equipment Corporation, unë dhe Elliot Moss, shpikëm kujtesën transaksionale. Ishte një periudhë shumë e frytshme kur të gjithë filluan të interesoheshin për teknologjinë e informacionit. Konkurrenca e përfshirë, megjithëse sistemet me shumë bërthama nuk ekzistonin ende. Në ditët e Sun dhe Oracle, bëra shumë punë në strukturat paralele të të dhënave. Në Facebook, unë isha i përfshirë në projektin e tyre blockchain, për të cilin nuk mund të flas, por shpresoj të bëhet publik së shpejti. Vitin e ardhshëm, në Algorand, do të punoj në një ekip kërkimor që studion kontratat inteligjente.

Alexey: Në vitet e fundit, blockchain është bërë një temë shumë e njohur. A do ta ndihmojë kërkimin tuaj? Ndoshta do ta bëjë më të lehtë marrjen e granteve ose dhënien e aksesit në burimet e kompanive që operojnë në industri?

Maurice: Unë kam marrë tashmë një grant të vogël nga Fondacioni Ethereum. Popullariteti i blockchain është shumë i dobishëm për të frymëzuar studentët që të punojnë në këtë fushë. Ata janë shumë të interesuar për të dhe të lumtur që përfshihen, por ndonjëherë nuk e kuptojnë se hulumtimi që tingëllon joshëse nga jashtë rezulton të përfshijë punë vërtet të vështirë. Megjithatë, jam shumë i lumtur që përdor gjithë këtë mistikë rreth blockchain, kjo ndihmon për të tërhequr studentët. 

Por kjo nuk është e gjitha. Unë jam në bordin këshillues të disa startup-eve të blockchain. Disa prej tyre mund të kenë sukses, disa prej tyre mund të mos kenë sukses, por është gjithmonë shumë interesante të shohësh idetë e tyre, t'i studiosh ato dhe të këshillosh njerëzit. Gjëja më emocionuese është kur i paralajmëron njerëzit të mos bëjnë diçka. Shumë gjëra duken si një ide e mirë në fillim, por a janë vërtet?

Fondacioni për kërkimin e blockchain

Vitaly: Disa njerëz mendojnë se blockchain dhe algoritmet e tij janë e ardhmja. Dhe njerëz të tjerë thonë se është vetëm një flluskë tjetër. A mund të ndani mendimin tuaj për këtë çështje?

Maurice: Shumë nga ato që po ndodhin në botën e blockchain nuk po funksionojnë siç duhet, disa janë thjesht mashtrime, shumë gjëra janë të mbivlerësuara. Megjithatë, mendoj se ka një bazë solide shkencore për këto studime. Fakti që bota e blockchain është plot me ndarje ideologjike tregon nivelin e eksitimit dhe përkushtimit. Nga ana tjetër, nuk është veçanërisht e dobishme për kërkimin shkencor. Tani, nëse publikoni një artikull që flet për mangësitë e një algoritmi të veçantë, reagimi i marrë nuk është gjithmonë plotësisht shkencor. Shpesh njerëzit shprehin emocionet e tyre. Mendoj se dikujt mund t'i duket tërheqëse një zhurmë e tillë në këtë fushë, por në fund, ka çështje reale shkencore dhe inxhinierike që ende nuk janë adresuar. Këtu ka shumë Shkenca Kompjuterike.

Vitaliy: Pra, ju po përpiqeni të vendosni themelet për kërkimin e blockchain, apo jo?

Maurice: Po përpiqem të hedh themelet për një disiplinë të fortë, shkencërisht dhe matematikisht. Dhe një pjesë e problemit është se ndonjëherë ju duhet të kundërshtoni disa nga pozicionet tepër të ashpra të njerëzve të tjerë, për t'i injoruar ato. Ndonjëherë njerëzit pyesin pse punoj në një fushë për të cilën interesohen vetëm terroristët dhe tregtarët e drogës. Një reagim i tillë është po aq i pakuptimtë sa sjellja e ndjekësve që përsërisin verbërisht fjalët tuaja. Unë mendoj se e vërteta është diku në mes. Blockchain nuk ka ende një ndikim të thellë në shoqëri dhe ekonominë globale. Por, me siguri, kjo nuk do të ndodhë falë teknologjisë moderne. Teknologjitë moderne do të zhvillohen dhe ajo që do të quhet blockchain në të ardhmen do të bëhet shumë e rëndësishme. Ndoshta nuk do të duket as si blockchains moderne, kjo është një pyetje e hapur.

Nëse njerëzit shpikin teknologji të reja, ata do të vazhdojnë ta quajnë atë blockchain. Dua të them, ashtu si Fortran-i i sotëm nuk ka asnjë lidhje me gjuhën Fortran nga vitet 1960, por të gjithë vazhdojnë ta quajnë atë Fortran. E njëjta gjë për UNIX. Ajo që quhet "blockchain" nuk ka bërë ende revolucionin e saj. Por dyshoj se ky blockchain i ri do të jetë si ai që të gjithë duan të përdorin sot.

Nga vijnë idetë e reja? Ndikimi i popullaritetit

Alexey: A ka çuar popullariteti i blockchain në rezultate të reja nga pikëpamja shkencore? Më shumë ndërveprim, më shumë studentë, më shumë kompani në zonë. A ka ndonjë rezultat të kësaj rritje në popullaritet tashmë?

Maurice: U interesova për këtë kur dikush më dha një fletëpalosje zyrtare për një kompani që sapo kishte mbledhur shumë para. Ajo shkroi për detyra e gjeneralëve bizantinëme të cilat jam më se i njohur. Shkrimi në fletëpalosje ishte qartësisht teknikisht i pasaktë. Njerëzit që e shkruan këtë nuk e kuptuan vërtet modelin pas problemit... dhe megjithatë kjo kompani mblodhi shumë para. Më pas, kompania e zëvendësoi në heshtje këtë fletëpalosje me një version shumë më të saktë - dhe nuk do të them se cili ishte emri i kësaj kompanie. Ato ekzistojnë ende dhe po ecin shumë mirë. Ky rast më bindi se, së pari, blockchain është vetëm një formë e llogaritjes së shpërndarë. Së dyti, pragu i hyrjes (në atë kohë, katër vjet më parë) ishte mjaft i ulët. Njerëzit që punonin në këtë fushë ishin shumë energjikë dhe të zgjuar, por nuk lexonin punime shkencore. Ata u përpoqën të rishpiknin gjëra të njohura dhe e bënë gabim. Sot drama është reduktuar.

Alexey: Është shumë interesante, sepse disa vite më parë kishim një trend tjetër. Është paksa si zhvillimi në front-end, ku zhvilluesit e ndërfaqes së shfletuesit rishpikën teknologji të tëra që ishin tashmë të njohura në pjesën e pasme deri në atë kohë: ndërtimi i sistemeve, integrimi i vazhdueshëm dhe gjëra të tilla. 

Maurice: Jam dakord. Por kjo nuk është për t'u habitur, sepse idetë vërtet përparimtare vijnë gjithmonë nga jashtë komunitetit të krijuar. Studiuesit e njohur, veçanërisht autoritetet në akademi, nuk kanë gjasa të bëjnë ndonjë gjë vërtet novator. Është e lehtë të shkruani një raport për konferencën e ardhshme se si i keni përmirësuar pak rezultatet e punës suaj të kaluar. Shkoni në një konferencë, mblidhuni me miqtë, flisni për të njëjtat gjëra. Dhe njerëzit që shpërthejnë me ide të reja pothuajse gjithmonë vijnë nga jashtë. Ata nuk i dinë rregullat, nuk e dinë gjuhën, por gjithsesi... Nëse jeni brenda një komuniteti të krijuar, ju këshilloj t'i kushtoni vëmendje gjërave të reja, diçkaje që nuk i përshtatet gjërave të mëdha. Foto. Në një farë kuptimi, mund të bëhet një përpjekje për të kombinuar zhvillimet e jashtme, më të rrjedhshme me teknikat që ne tashmë i kuptojmë. Si hap i parë, përpiquni të krijoni një bazë shkencore dhe më pas ta modifikoni në mënyrë që të mund të zbatohet në ide të reja përparimtare. Unë mendoj se blockchain është i shkëlqyeshëm për rolin e një ideje të re të zbulimit.

Alexei: Pse mendoni se po ndodh kjo? Sepse njerëzit "jashtë" nuk kanë ndonjë pengesë specifike të natyrshme në komunitet?

Maurice: Ka një model këtu. Nëse lexoni historinë e impresionistëve në pikturë dhe art në përgjithësi, atëherë në një kohë artistët e famshëm hodhën poshtë impresionizmin. Ata thanë se ishte një lloj fëmijërie. Një brez më vonë, kjo formë arti e refuzuar më parë u bë standardi. Ajo që shoh në fushën time: shpikësit e blockchain nuk ishin të interesuar për fuqinë, për mbylljen e botimeve dhe indeksit të citimeve, ata thjesht donin të bënin diçka të mirë. Dhe kështu ata u ulën dhe filluan ta bënin atë. Atyre u mungonte një sasi e caktuar thellësie teknike, por kjo është e rregullueshme. Është shumë më e vështirë të lindësh ide të reja krijuese sesa të korrigjosh dhe përforcosh ato që nuk janë mjaftueshëm të pjekura. Falë këtyre shpikësve, tani kam diçka për të bërë!

Alexey: Ky është i ngjashëm me ndryshimin midis startupeve dhe projekteve të trashëgimisë. Ne trashëgojmë shumë kufizime të mendimit, barriera, kërkesa të veçanta etj.

Maurice: Një analogji e mirë është llogaritja e shpërndarë. Mendoni për blockchain sikur të ishte një startup dhe informatikë e shpërndarë si një kompani e madhe e themeluar. Informatika e shpërndarë është në proces të blerjes dhe bashkimit me blockchain.

PhD nën Barbara Liskov

Vitaliy: Kemi ende shumë pyetje! Ne kemi studiuar biografinë tuaj dhe kemi hasur në një fakt interesant për doktoraturën tuaj. Po, ishte shumë kohë më parë, por tema duket se është e rëndësishme. Ju keni marrë doktoraturën nën mbikëqyrjen e Barbara Liskov! Barbara është shumë e njohur në komunitetin e zhvillimit të gjuhëve të programimit, dhe një person shumë i famshëm në përgjithësi. Është logjike që kërkimi juaj ka qenë në fushën e gjuhëve të programimit. Si kaluat në llogaritjen paralele? Pse vendosët të ndryshoni temën?

Maurice: Në atë kohë, Barbara dhe grupi i saj po shikonin vetëm llogaritjen e shpërndarë, që ishte një ide shumë e re. Kishte edhe nga ata që thoshin se llogaritja e shpërndarë është e pakuptimtë, komunikimi mes kompjuterëve është i pakuptimtë. Një nga çështjet e konsideruara në llogaritjen e shpërndarë, e cila i dallon ato nga llogaritja e centralizuar, është toleranca ndaj gabimeve. Pas shumë kërkimesh, vendosëm që në një gjuhë programimi për llogaritjen e shpërndarë, duhet të keni diçka si transaksione atomike, sepse nuk mund të jeni kurrë i sigurt se një thirrje në distancë do të ketë sukses. Pasi të keni transaksione, ka një problem të kontrollit të konkurencës. Pastaj u bë shumë punë për marrjen e strukturave të të dhënave shumë paralele të transaksioneve. Pastaj kur u diplomova shkova në Carnegie Mellon dhe filloi të kërkonte një temë për punë. Më shkoi mendja se kompjuteri kishte kaluar nga kompjuterët individualë në rrjetet e kompjuterëve. Një vazhdim i natyrshëm i përparimit do të ishin multiprocesorët - fjala "multi-core" nuk ekzistonte atëherë. Mendova: cili është ekuivalenti i transaksioneve atomike për një sistem me shumë bërthama? Definitivisht jo transaksione të zakonshme, sepse janë shumë të mëdha dhe të rënda. Dhe kështu më lindi ideja linearizimi dhe kështu dola me gjithë sinkronizimin pa pritje. Ishte një përpjekje për t'iu përgjigjur pyetjes se cili është analog i transaksioneve atomike për një sistem multiprocesorësh me memorie të përbashkët. Në pamje të parë, kjo vepër mund të duket krejt ndryshe, por në fakt është vazhdim i së njëjtës temë.

Bota në pritje të multi-core

Vitaly: Ju përmendët se kishte shumë pak kompjuterë me shumë bërthama në atë kohë, apo jo?

Maurice: Ata thjesht nuk ekzistonin. Kishte disa të ashtuquajtur multiprocesorë simetrik, të cilët në thelb ishin të lidhur me të njëjtin autobus. Nuk funksionoi shumë mirë, sepse sa herë që një kompani e re krijonte diçka të tillë, Intel lëshonte një procesor të vetëm që tejkalonte shumëprocesorin.

Alexei: A nuk do të thotë kjo se në ato kohëra të lashta ishte më shumë një studim teorik?

Maurice: Nuk ishte një studim teorik, por një studim spekulativ. E gjithë kjo nuk ishte për të punuar me shumë teorema, përkundrazi, ne parashtruam hipoteza për arkitekturën që nuk ekzistonte në atë kohë. Për këtë është kërkimi! Asnjë kompani nuk do ta kishte bërë këtë, e gjitha ishte diçka nga e ardhmja e largët. Në fakt, kjo ishte deri në vitin 2004, kur u shfaqën procesorë të vërtetë me shumë bërthama. Për shkak të faktit se procesorët mbinxehen, ju mund ta bëni procesorin edhe më të vogël, por nuk mund ta bëni më të shpejtë. Për shkak të kësaj, pati një tranzicion në arkitekturat me shumë bërthama. Dhe më pas do të thoshte se krejt papritur kishte një përdorim për të gjitha konceptet që kishim zhvilluar në të kaluarën.

Alexey: Pse mendoni se procesorët me shumë bërthama u shfaqën vetëm në vitet XNUMX? Pra, pse kaq vonë?

Maurice: Është për shkak të kufizimeve të harduerit. Intel, AMD dhe kompani të tjera janë shumë të mira në rritjen e shpejtësisë së procesorit. Kur në një moment procesorët u zvogëluan aq sa nuk mund të rrisnin më shpejtësinë e orës sepse procesorët do të fillonin të digjen. Ju mund t'i bëni ato më të vogla, por jo më të shpejta. Çfarë është në fuqinë e tyre - në vend të një procesori shumë të vogël, vendosni tetë, gjashtëmbëdhjetë ose tridhjetë e dy procesorë në të njëjtin vëllim të kasës, ku dikur përshtatej vetëm një. Tani ju keni komunikim multithreading dhe të shpejtë mes tyre, sepse ata ndajnë cache. Por ju nuk mund t'i bëni ato të vrapojnë më shpejt - ekziston një kufi shumë specifik i shpejtësisë. Ata vazhdojnë të përmirësohen pak nga pak, por jo aq shumë. Ligjet e fizikës penguan.

Botë e re, probleme të reja. NUMA, NVM dhe hakimi i arkitekturës

Alexei: Tingëllon shumë e arsyeshme. Me procesorë të rinj me shumë bërthama erdhën probleme të reja. A i prisnit ju dhe kolegët tuaj këto probleme? Ndoshta i keni studiuar paraprakisht? Në studimet teorike shpesh nuk është shumë e lehtë të parashikohen gjëra të tilla. Kur u shfaqën problemet, në çfarë mase i përmbushën ato pritshmëritë tuaja dhe të kolegëve tuaj? Apo ishin krejt të reja dhe ju dhe kolegët tuaj duhej të kalonit shumë kohë për të zgjidhur problemet që lindnin?

Vitaliy: Unë do t'i shtoj pyetjes së Alexey: a e parashikuat saktë arkitekturën e përpunuesve ndërsa studionit teorinë?

Maurice: Jo të gjithë 100%. Por unë mendoj se kolegët e mi dhe unë bëmë një punë të mirë për të parashikuar memorien e përbashkët multi-core. Mendoj se kemi parashikuar saktë vështirësitë në hartimin e strukturave paralele të të dhënave që funksionojnë pa bravë. Struktura të tilla të dhënash kanë qenë të rëndësishme për shumë aplikacione, megjithëse jo për të gjitha, por shpesh ju duhet vërtet një strukturë e të dhënave pa bllokim. Kur i shpikëm, shumë argumentuan se kjo është e pakuptimtë, se gjithçka funksionon mirë me bravë. E parashikuam mjaft mirë se do të kishte zgjidhje të gatshme për shumë probleme programimi dhe probleme të strukturës së të dhënave. Kishte edhe probleme më komplekse, si p.sh – Akses i pabarabartë në kujtesë. Në fakt, ata as që u konsideruan deri në shpikjen e procesorëve me shumë bërthama, sepse ishin shumë specifikë. Komuniteti hulumtues punoi në pyetje që ishin përgjithësisht të parashikueshme. Disa probleme harduerike të lidhura me arkitektura specifike duhej të prisnin në krahë - në fakt, shfaqja e këtyre arkitekturave. Për shembull, askush nuk ka punuar me të vërtetë në strukturat e të dhënave specifike për GPU, sepse GPU nuk ekzistonte në atë kohë. Edhe pse është bërë shumë punë në SIMD, këto algoritme ishin gati për përdorim sapo u shfaq hardueri i duhur. Sidoqoftë, është e pamundur të parashikosh gjithçka.

Alexey: Nëse e kuptoj mirë, NUMA është një lloj kompromisi midis kostos, performancës dhe disa gjërave të tjera. A keni ndonjë ide pse NUMA erdhi kaq vonë?

Maurice: Mendoj se NUMA ekziston për shkak të një problemi me harduerin e përdorur për të krijuar memorie: sa më larg të jenë komponentët, aq më ngadalë aksesohen. Nga ana tjetër, vlera e dytë e këtij abstraksioni është uniformiteti i kujtesës. Prandaj, një nga karakteristikat e llogaritjes paralele është se të gjitha abstraksionet janë thyer pak. Nëse qasja do të ishte krejtësisht uniforme, e gjithë memoria do të ishte e barabartë, por kjo është ekonomikisht, dhe ndoshta edhe fizikisht e pamundur. Pra lind ky konflikt. Nëse e shkruani programin tuaj sikur kujtesa të ishte uniforme, atëherë ka shumë të ngjarë që do të jetë e saktë. Në kuptimin që nuk do të japë përgjigje të gabuara. Por performanca e yjeve të saj nga qielli nuk do të rrëmbejë. Në mënyrë të ngjashme, nëse shkruani spinlocks pa kuptuar hierarkinë e cache-ve, vetë bllokimi do të jetë i saktë, por mund të harroni performancën. Në një farë kuptimi, ju duhet të shkruani programe që jetojnë në krye të një abstraksioni shumë të thjeshtë, por duhet të tejkaloni njerëzit që ju dhanë atë abstraksion: duhet të dini se nën abstraksion ka një hierarki të kujtesës, që ekziston një autobus mes jush dhe këtij kujtimi, e kështu me radhë. Kështu, ka njëfarë konflikti midis abstraksioneve që janë të dobishme më vete, gjë që na çon në probleme shumë specifike dhe pragmatike.

Vitali: Po për të ardhmen? A mund të parashikoni se si procesorët do të zhvillohen më tej? Ekziston një ide se një nga përgjigjet është kujtesa transaksionale. Ju ndoshta keni diçka tjetër në magazinë.

Maurice: Ka disa sfida të mëdha përpara. Njëra është se kujtesa koherente është një abstraksion i mrekullueshëm, por fillon të prishet në raste të veçanta. Kështu, për shembull, NUMA është një shembull i gjallë i diçkaje ku mund të vazhdoni të pretendoni se ekziston një memorie uniforme. Në fakt - jo, performanca do t'ju bëjë të qani. Në një moment, arkitektët do të duhet të braktisin idenë e një arkitekture të unifikuar memorie, nuk mund të pretendosh përgjithmonë. Do të nevojiten modele të reja programimi që janë mjaft të lehta për t'u përdorur dhe mjaftueshëm të fuqishëm për ta bërë harduerin bazë efikas. Ky është një kompromis shumë i vështirë, sepse nëse u tregoni programuesve arkitekturën që përdoret aktualisht në harduer, ata do të çmenden. Është shumë e ndërlikuar dhe jo e lëvizshme. Nëse prezantoni një ndërfaqe që është shumë e thjeshtë, performanca do të jetë e dobët. Kështu, do të duhet të bëhen shumë kompromise shumë të vështira në mënyrë që të sigurohen modele të dobishme programimi të zbatueshme për procesorë shumë të mëdhenj me shumë bërthama. Nuk jam i sigurt se dikush tjetër përveç një specialisti të ngushtë është i aftë të programojë në një kompjuter me 2000 bërthama. Dhe nëse nuk jeni duke bërë llogaritje shumë të specializuara ose shkencore, kriptografi ose çfarëdo tjetër, ende nuk është aspak e qartë se si ta bëni atë siç duhet. 

Një drejtim tjetër i ngjashëm janë arkitekturat e specializuara. Përshpejtuesit grafikë kanë ekzistuar për një kohë të gjatë, por tashmë janë bërë një lloj shembulli klasik se si mund të merrni një lloj llogaritjeje të specializuar dhe ta ekzekutoni atë në një çip të dedikuar. Kjo shton sfidat e veta: si komunikoni me një pajisje të tillë, si e programoni atë. Kohët e fundit kam punuar në detyra në atë zonë afër llogaritjes së memories. Ju merrni një procesor të vogël dhe e ngjisni atë në një pjesë të madhe të memories në mënyrë që memoria të funksionojë me shpejtësinë e cache-së L1, dhe më pas ajo komunikon me një pajisje si TPU - procesori është i zënë duke ngarkuar detyra të reja në bërthamën tuaj të memories. Zhvillimi i strukturave të të dhënave dhe protokolleve të komunikimit për këtë lloj gjëje është një shembull tjetër interesant. Kështu, përpunuesit dhe pajisjet e specializuara do t'i nënshtrohen përmirësimeve për mjaft kohë.

Alexey: Po memoria jo e paqëndrueshme (memorje jo e paqëndrueshme)?

Maurice: Oh, ky është një shembull tjetër i mrekullueshëm! NVM do të ndryshojë shumë mënyrën se si ne i shikojmë gjërat si strukturat e të dhënave. Kujtesa jo e paqëndrueshme, në njëfarë kuptimi, premton t'i shpejtojë gjërat vërtet. Por kjo nuk do ta bëjë jetën më të lehtë, sepse shumica e përpunuesve, cache-ve dhe regjistrave janë ende të paqëndrueshëm. Kur filloni pas një përplasjeje, gjendja juaj dhe gjendja e kujtesës nuk do të jenë saktësisht të njëjta si përpara përplasjes. Unë jam shumë mirënjohës për njerëzit e përfshirë në NVM - për një kohë të gjatë, studiuesit do të kenë diçka për të bërë, duke u përpjekur të kuptojnë kushtet e korrektësisë. Llogaritjet janë të sakta nëse mund t'i mbijetojnë një përplasjeje në të cilën përmbajtja e cache-ve dhe regjistrave humbet, por memoria kryesore mbetet e paprekur.

Kompiluesit kundrejt CPU-ve, RISC vs CISC, memoria e përbashkët kundrejt kalimit të mesazheve

Vladimir: Çfarë mendoni për dilemën e përpiluesve kundër përpunuesve për sa i përket grupit të udhëzimeve? Për të shpjeguar për ata që nuk janë në këtë temë: nëse shkojmë në memorie të pabarabartë ose diçka të tillë, ne mund të aplikojmë një grup shumë të thjeshtë udhëzimesh dhe t'i kërkojmë kompajlerit të gjenerojë kod kompleks që mund të përfitojë nga përfitimet e zbuluara. Ose mund të shkojmë në anën tjetër: të zbatojmë udhëzime komplekse dhe t'i kërkojmë procesorit të rirendisë udhëzimet dhe të bëjë manipulime të tjera me to. Çfarë mendoni ju në lidhje me të?

Maurice: Nuk kam vërtet një përgjigje për këtë pyetje. Ky debat ka vazhduar për katër dekada. Kishte një kohë në mes shkurtuar grup komandash dhe vështirë luftërat civile u zhvilluan nga një grup ekipesh. Për një kohë, njerëzit e RISC fituan, por më pas Intel rindërtoi motorët e tyre në mënyrë që një grup udhëzues i reduktuar u përdor brenda dhe i plotë u eksportua jashtë. Ndoshta kjo është një temë në të cilën çdo brez i ri duhet të gjejë kompromiset e veta dhe të marrë vendimet e veta. Është shumë e vështirë të parashikohet se cila nga këto gjëra do të dalë më mirë. Pra, çdo parashikim që bëj do të jetë i vërtetë për një kohë të caktuar, dhe pastaj do të bëhet përsëri i rremë për një kohë, dhe më pas do të jetë përsëri i vërtetë.

Alexey: Sa e zakonshme është për industrinë në përgjithësi që disa ide fitojnë gjatë disa dekadave dhe humbasin në të ardhmen? A ka shembuj të tjerë të ndryshimeve të tilla periodike?

Maurice: Në fushën e informatikës së shpërndarë, ka njerëz që besojnë në kujtim i përbashkët dhe njerëzit që besojnë në mesazheve. Fillimisht në llogaritjen e shpërndarë, llogaritja paralele nënkupton kalimin e mesazhit. Pastaj dikush zbuloi se memoria e përbashkët e bëri programimin shumë më të lehtë. Pala tjetër tha se kujtesa e përbashkët është shumë e ndërlikuar, sepse ata kanë nevojë për bravë dhe të ngjashme, kështu që ia vlen të kalosh në gjuhë ku thjesht nuk ekziston asgjë tjetër përveç kalimit të mesazhit. Dikush shikoi se çfarë doli prej tij dhe tha: "wow, ky zbatim i mesazheve duket shumë i ngjashëm me kujtesën e përbashkët, sepse ju krijoni shumë, shumë nga këto module të vogla, ata i dërgojnë mesazhe njëri-tjetrit dhe të gjitha bllokim, - le të bëjmë më të mirë një bazë të dhënash memorie të përbashkët!". E gjithë kjo përsëritet vazhdimisht, dhe është e pamundur të thuhet se njëra nga palët ka padyshim të drejtë. Njëra palë do të dominojë gjithmonë, sepse sapo njëra prej tyre pothuajse fiton, njerëzit vazhdimisht shpikin mënyra për të përmirësuar tjetrën.

Arti i shkrimit të kodit të brishtë me shumë fije

Alexei: Kjo është shumë interesante. Për shembull, kur shkruajmë kodin, pavarësisht nga gjuha e programimit, zakonisht duhet të krijojmë abstraksione si qeliza që mund të lexohen dhe shkruhen. Por në fakt, në një nivel fizik, mund të duket si dërgimi i një mesazhi në një autobus harduerësh midis kompjuterëve të ndryshëm dhe pajisjeve të tjera. Rezulton se ka punë në të dy nivelet e abstraksionit njëherësh.

Maurice: Është absolutisht e vërtetë që kujtesa e përbashkët ndërtohet në transmetimin e mesazheve - autobusët, memoriet e fshehta, etj. Por është e vështirë të shkruash programe duke përdorur transmetimin e mesazheve, kështu që hardueri gënjen qëllimisht, duke pretenduar se ke një lloj memorie uniforme. Kjo do ta bëjë më të lehtë për ju që të shkruani programe të thjeshta dhe korrekte përpara se performanca të fillojë të bjerë. Pastaj ju thoni: duket se është koha për të bërë miq me cache. Dhe kjo është kur ju filloni të shqetësoheni për vendndodhjen e cache-it, dhe më pas ne ikim. Në njëfarë kuptimi, ju po thyeni abstraksionin: ju e dini se nuk është vetëm memorie e sheshtë dhe uniforme, dhe do ta përdorni atë njohuri për të shkruar programe të përshtatshme për cache. Kjo është ajo që duhet të bëni në detyra reale. Ky konflikt midis abstraksionit të thjeshtë të këndshëm që ju është dhënë dhe zbatimit tmerrësisht kompleks të harduerit themelor është vendi ku secili bën kompromisin e tij. Unë kam një libër mbi multiprocesorët dhe sinkronizimin, dhe një ditë do të shkruaja një kapitull mbi strukturat e të dhënave në java.util.concurrent. Nëse i shikoni ato, gjëra të tilla si kapërceni listat Këto janë vepra arti të mahnitshme. (Shënim i redaktorit: ata që janë të njohur me gjuhën Java duhet të paktën t'i hedhin një sy zbatimit ConcurrentSkipListMap, Ju mund të shikoni lidhjet për API и Kodi i burimit). Por nga këndvështrimi im, do të ishte e papërgjegjshme t'u tregoja studentëve, sepse një strukturë e tillë të dhënash është një lloj tipi në cirk, që vrapon në një litar të ngushtë mbi një gropë ariu. Nëse ndryshoni qoftë edhe një detaj të vogël, e gjithë struktura do të shembet. Ky kod është shumë i shpejtë dhe elegant vetëm sepse është shkruar në mënyrë perfekte, por ndryshimi më i vogël do të çojë në dështim të plotë. Nëse ua jap këtë kod si shembull studentëve, ata menjëherë do të thonë: mund ta bëj edhe unë këtë! Dhe pastaj do të rrëzohet ndonjë aeroplan ose do të shpërthejë një reaktor bërthamor dhe do të jetë faji im që nuk u dhashë atyre shumë informacion në kohën e duhur.

Alexey: Kur isha pak më i ri, shumë herë u përpoqa të studioja kodin burimor të Doug Lee, për shembull, java.util.concurrent, sepse është me kod të hapur, është shumë e lehtë ta gjesh dhe të përpiqesh të kuptosh se çfarë po ndodh atje. Nuk doli shumë mirë: shpesh, është plotësisht e paqartë pse Doug vendosi të bënte diçka në këtë mënyrë, kur të gjithë të tjerët e bëjnë atë ndryshe. Si ua shpjegoni këto gjëra nxënësve tuaj? A ka ndonjë mënyrë të veçantë të saktë për të përshkruar detajet specifike të një algoritmi të fortë, për shembull? Si e bëni ju atë?

Maurice: Mësuesit e vizatimit kanë një klishe që ata e mbajnë mend fillimisht: nëse doni të vizatoni si Picasso, fillimisht duhet të mësoni se si të vizatoni piktura të thjeshta realiste dhe vetëm kur t'i dini rregullat mund të filloni t'i thyeni ato. Nëse filloni menjëherë duke thyer rregullat, ju merrni një rrëmujë. Së pari, unë u mësoj studentëve se si të shkruajnë kod të thjeshtë e të saktë pa u shqetësuar për performancën. Unë po them se këtu fshihen çështje komplekse të kohës, kështu që mos u shqetësoni për cache, mos u shqetësoni për modelet e memories, thjesht sigurohuni që gjithçka të funksionojë siç duhet. Është mjaft e vështirë tashmë: Programimi modern nuk është i lehtë në vetvete, veçanërisht për studentët e rinj. Dhe kur ata kanë një intuitë se si të shkruajnë programe të sakta, unë them: shikoni këto dy implementime spinlock: njëri është shumë i ngadalshëm dhe i dyti gjithashtu nuk është shumë i mirë, por tashmë më i mirë. Megjithatë, matematikisht këto dy algoritme janë të njëjta. Në fakt, njëri prej tyre përdor lokalitetin e cache. Njëri prej tyre rrotullohet në të dhëna të ruajtura në memorien lokale, dhe tjetri kryen në mënyrë të përsëritur operacione duke kaluar nëpër autobus. Ju nuk mund të shkruani kod efikas nëse nuk e kuptoni atë, nëse nuk dini si të thyeni abstraksionin dhe të shikoni strukturën themelore. Por nuk do të mund të filloni ta bëni menjëherë. Ka njerëz që fillojnë ta bëjnë këtë menjëherë dhe besojnë në gjenialitetin e tyre, zakonisht përfundon keq sepse nuk i kuptojnë parimet. Askush nuk vizaton si Picasso ose nuk shkruan programe si Doug Lee, sapo ka mbaruar universitetin, në javën e tij të parë. Duhen vite për të arritur këtë nivel njohurish.

Alexey: Rezulton se e ndani problemin në dy pjesë: e para është korrektësia, e dyta është performanca?

Maurice: Pikërisht. Dhe, në atë mënyrë. Një pjesë e problemit është se studentët e rinj nuk e kuptojnë se korrektësia është e vështirë të arrihet. Ata thonë në shikim të parë: kjo është padyshim e saktë, mbetet vetëm për ta përshpejtuar. Kështu që ndonjëherë u them atyre për një algoritëm të pasaktë në thelb sikur të ishte i saktë.

Si t'i mësoni studentët se si të shkruajnë kode komplekse me shumë fije

Alexei: Vetëm për të parë nëse ata mund ta kuptojnë mashtrimin?

Maurice: Unë gjithmonë ju paralajmëroj paraprakisht se ndonjëherë do të dal me algoritme të gabuara. Ju nuk duhet të mashtroni njerëzit. Unë sugjeroj që ata të jenë skeptikë në lidhje me informacionin. Nëse them diçka dhe them: "shikoni, kjo është padyshim e saktë" - ky është një sinjal se diku po përpiqen t'ju mashtrojnë, dhe ju duhet të filloni të bëni pyetje. Më pas, përpiqem t'i inkurajoj studentët që të vazhdojnë të bëjnë pyetje dhe më pas të bëj thirrje: "çfarë ndodh nëse lëmë gjithçka ashtu siç është?". Dhe ata menjëherë e shohin gabimin. Por të bindësh studentët se duhet të shqetësohen për korrektësinë është më e vështirë sesa duket në shikim të parë. Shumë nga këta studentë vijnë me përvojë programimi në shkollë të mesme, disa tashmë kanë gjetur punë dhe janë programuar atje, dhe të gjithë janë plot vetëbesim. Kjo është diçka ushtarake: së pari duhet të ndryshoni mentalitetin e tyre në mënyrë që t'i bindni që t'i qasen me durim zgjidhjes së problemeve të shfaqura. Ose ndoshta është si murgjit budistë: së pari ata mësojnë të arsyetojnë për korrektësinë dhe pasi të kuptojnë mënyrat e arsyetimit për korrektësinë, ata lejohen të shkojnë në nivelin tjetër dhe të fillojnë të shqetësohen për performancën.

Alexey: Kjo do të thotë, ndonjëherë ju u tregoni studentëve shembuj jofunksional, falë të cilëve merrni reagime që tregojnë nëse ata e kuptojnë thelbin e problemit, nëse mund të gjejnë kodin e gabuar dhe rezultatin e gabuar. Epo, si kënaqen ose mërziten zakonisht studentët?

Maurice: Pothuajse gjithmonë studentët e gjejnë përfundimisht gabimin. Nëse ata kërkojnë shumë ngadalë, unë bëj pyetje kryesore dhe këtu është e rëndësishme të kuptojmë se nëse nuk mashtrohen kurrë, ata do të fillojnë t'i perceptojnë pa menduar fjalët tuaja si të vërtetën përfundimtare. Më pas ata mërziten dhe bien në gjumë duke lexuar Facebook në laptop gjatë orës së mësimit. Por kur i njoftoni paraprakisht se do të mashtrohen dhe se do të duken budallenj nëse nuk e ndiejnë mashtrimin, ata bëhen shumë më vigjilentë. Kjo është e mirë në shumë mënyra. Unë do të doja që studentët jo vetëm të vënë në dyshim të kuptuarit e tyre për këtë çështje, por edhe të vënë në dyshim autoritetin e mësuesit. Ideja është që studenti mund të ngrejë dorën në çdo kohë dhe të thotë: Unë mendoj se ajo që sapo thatë është e gabuar. Është një mjet i rëndësishëm mësimor. Nuk dua që asnjë nga studentët të ulet dhe të mendojë në heshtje: e gjithë kjo duket e pakuptimtë, por është shumë e frikshme të ngresh dorën, dhe në të vërtetë, ai është profesor, kështu që gjithçka që thotë është e vërtetë. Prandaj, nëse paralajmërohen paraprakisht se jo gjithçka që thuhet është domosdoshmërisht e vërtetë, ata kanë një nxitje për t'i kushtuar më shumë vëmendje materialit. Unë them në mënyrë eksplicite që të ngrini dorën dhe të bëni pyetje është në rregull. Pyetja juaj mund të tingëllojë si budalla ose naive, por shpesh kështu lindin pyetjet më të mira.

Alexei: Shumë interesante. Zakonisht njerëzit kanë një lloj pengese psikologjike që i pengon ata të bëjnë një pyetje profesorit. Sidomos nëse ka shumë njerëz në dhomë dhe të gjithë kanë frikë se diskutimi i pyetjes suaj budallaqe do t'ju marrë kohën e gjithë këtyre njerëzve. A ka ndonjë truk për t'u marrë me këtë?

Maurice: Unë shpesh ndalem dhe bëj pyetjet klasike. A do të jetë ndonjë deklaratë e saktë, apo si do ta zgjidhnin problemin në diskutim. Ky është një hap kyç, veçanërisht në fillim të një seance, kur njerëzit kanë turp të thonë edhe gjënë më të vogël. Ju bëni një pyetje studentëve dhe nuk thoni asgjë më shumë. Bëhet heshtje, të gjithë tensionohen pak, tensioni rritet, pastaj papritur dikush prishet, prishet dhe thotë përgjigjen. Kështu që ju shpalosni situatën: bëhet më e vështirë dhe e pakëndshme të heshtësh sesa të përgjigjesh! Ky është një truk standard pedagogjik. Çdo mësues në botë duhet të dijë se si ta bëjë këtë.

Alexey: Tani kemi një titull të mrekullueshëm për këtë intervistë: "është më e lehtë të përgjigjesh sesa të heshtësh".

Vitali: Më lejoni t'ju pyes edhe një gjë. Ju jeni duke punuar në prova topologjike. Si u përfshi në këtë, sepse informatika e shpërndarë dhe topologjia janë gjëra krejtësisht të ndryshme!

Maurice: Ka një marrëdhënie të fshehur atje. Kur isha student dhe studioja matematikë, studioja matematikë të pastër. Deri në fund të studimeve nuk kisha asnjë interes real për kompjuterët dhe e gjeta veten në nevojën urgjente për të kërkuar punë. Si student kam studiuar topologji algjebrike. Shumë vite më vonë, ndërsa punonte për një problem të quajtur "Problemi i marrëveshjes k-Set", përdora grafikët për të modeluar problemin dhe, siç dukej atëherë, gjeta një zgjidhje. Thjesht duhet të ulesh dhe të kalosh numërimin. Mundohuni të gjeni një përgjigje të përshtatshme në këtë grafik. Por algoritmi im nuk funksionoi: doli që ai gjithmonë do të vraponte në qarqe. Fatkeqësisht, asnjë nga këto nuk mund të shpjegohej në gjuhën formale të teorisë së grafikëve, gjuhën që njohin të gjithë shkencëtarët e kompjuterave. Dhe pastaj m'u kujtua se shumë vite më parë, edhe në klasat e topologjisë, ne e përdornim konceptin "kompleks i thjeshtë", i cili është një përgjithësim i grafikëve në dimensione më të larta. Pastaj pyeta veten: çfarë ndodh nëse e riformulojmë problemin në termat e komplekseve të thjeshta? Ky u bë çelësi. Duke përdorur një formalizëm më të fuqishëm, problemi befas bëhet shumë më i thjeshtë. Njerëzit luftuan me të për një kohë të gjatë, duke përdorur grafikët, por ata nuk mund të bënin asgjë. Dhe edhe tani ata nuk munden - përgjigja e saktë nuk ishte algoritmi, por prova e pamundësisë së zgjidhjes së problemit. Kjo do të thotë, një algoritëm i tillë thjesht nuk ekziston. Por çdo provë e pamundësisë bazohet ose në komplekse të thjeshta, ose në gjëra që njerëzit pretendojnë se nuk i konsiderojnë komplekse të thjeshta. Nga fakti që ju e quajtët diçka me një emër të ri, ajo nuk e humbet thelbin e saj.

Vitaliy: Rezulton se keni qenë thjesht me fat?

Maurice: Përveç fatit, është edhe gatishmëri. Do të thotë, nuk duhet të harroni gjërat "të kota" që keni mësuar më parë. Sa më shumë gjëra të padobishme të mësoni, aq më shumë njohuri do të jeni në gjendje të nxirrni kur të përballeni me një problem të ri. Ky lloj përputhjeje intuitive modeli është i rëndësishëm sepse... Le të themi, është një zinxhir: në fillim, kuptova se grafikët nuk funksiononin plotësisht ose nuk funksiononin fare, më kujtoi diçka nga tetë vjet më parë dhe vitet studentore kur studionim të gjitha këto komplekse të thjeshta. Nga ana tjetër, kjo më lejoi të gjeja librin tim të vjetër të topologjisë dhe ta ngarkoja përsëri në kokën time. Por nëse nuk do të ishte për atë njohuri të vjetër, nuk do të kisha bërë kurrë ndonjë përparim në zgjidhjen e problemit fillestar.

Edicioni i ri i Artit të Programimit Multiprocesor

Alexei: Ju thatë disa fjalë për librin tuaj. Ndoshta nuk është sekreti më i madh që keni shkruar librin më të famshëm në botë për multithreading, "Arti i programimit me shumë procesor". Ajo tashmë është rreth 11 vjeç dhe që atëherë ka dalë vetëm  ribotim i rishikuar. A do të ketë një botim të dytë?

Maurice: Është mirë që pyete! Do të jetë shumë shpejt, pas tre muajsh apo më shumë. Ka edhe dy autorë të tjerë, ne shtuam shumë më tepër materiale, përmirësuam seksionin për paralelizmin fork / bashkohu, shkruam një seksion në MapReduce, shtuam shumë gjëra të reja dhe hodhëm të panevojshme - diçka që ishte shumë interesante në kohën e shkrimit botimi i parë, por sot nuk është më. Doli të ishte një libër i rishikuar shumë seriozisht.

Alexei: Gjithçka tashmë është bërë, mbetet vetëm për të lëshuar?

Maurice: Duhet të punohet ende për disa kapituj. Botuesi ynë (mendoj se ai tashmë na urren) është ende duke u përpjekur të përcjellë se ne duhet të punojmë më shpejt. Jemi shumë prapa planit. Teorikisht, ne mund ta kishim bërë këtë libër disa vjet më parë.

Alexey: A ka ndonjë shans për të marrë një version të ri të librit përpara Krishtlindjeve?

Maurice: Ky është qëllimi ynë! Por e kam parashikuar fitoren aq herë sa askush nuk më beson më. Ndoshta nuk duhet të më besoni shumë as në këtë çështje.

Alexei: Në çdo rast, ky është një lajm fantastik. Më pëlqeu shumë botimi i parë i librit. Mund të thuash që jam fans.

Maurice: Shpresoj që edicioni i ri të jetë i denjë për entuziazmin tuaj të zjarrtë, faleminderit!

Si u shpik kujtesa transaksionale

Vitaly: Pyetja tjetër ka të bëjë me kujtesën transaksionale. Me sa kuptoj je pionier ne kete fushe, e ke shpikur ne kohen qe askush nuk i shkonte mendja per gjera te tilla. Pse vendosët të transferoheni në këtë zonë? Pse transaksionet ishin të rëndësishme për ju? Menduat se një ditë do të mishërohen në hekur?

Maurice: Unë kam njohur për transaksionet që nga studimet e mia pasuniversitare.

Vitaliy: Po, por këto janë transaksione të ndryshme!

Maurice: Kam punuar me Elliott Moss për mbledhjen e mbeturinave pa bllokim. Problemi ynë ishte se ne donim të ndryshonim në mënyrë atomike disa fjalë në memorie dhe më pas algoritmet do të bëheshin shumë të thjeshta, dhe të paktën disa prej tyre do të bëheshin më efikase. Duke përdorur krahaso-dhe-ndërroj për load-link / dyqan-kushtëzuare parashikuar nga arkitektura paralele, është e mundur të bësh diçka, por është shumë joefikase dhe e shëmtuar sepse do të duhej të merreshe me nivele indirekte. Dua të ndryshoj fjalët e kujtesës dhe më duhet të ndërroj sepse mund të ndryshoj vetëm një tregues, kështu që ato duhet të tregojnë një lloj strukture të ngjashme me drejtorinë. Ne folëm se sa mirë do të ishte nëse mund të ndryshonim harduerin në mënyrë që të mund të regjistronte njëkohësisht. Elliot duket se e ka vënë re këtë: nëse shikoni protokollet e koherencës së cache, ato tashmë ofrojnë shumicën e funksionalitetit të kërkuar. Në një transaksion optimist, protokolli i koherencës së cache do të vërejë praninë e një konflikti të kohës dhe cache do të bëhet e pavlefshme. Çfarë ndodh nëse në mënyrë spekulative filloni një transaksion në cache-in tuaj dhe përdorni mekanizmat e protokollit të koherencës për të zbuluar konfliktet? Arkitektura spekulative e harduerit ishte e lehtë për t'u dizajnuar. Kështu e kemi shkruar publikimi i parë në lidhje me kujtesën transaksionale. Në të njëjtën kohë, kompania për të cilën punoja, Digital Equipment Corporation, po ndërtonte një procesor të ri 64-bit të quajtur Alpha. Dhe kështu shkova dhe i dhashë një prezantim ekipit të zhvillimit të Alpha në lidhje me kujtesën tonë të mrekullueshme transaksionale, dhe ata pyetën: çfarë të ardhurash shtesë do të marrë kompania jonë nëse i vendosim të gjitha këto drejtpërdrejt në procesor? Dhe nuk kisha absolutisht asnjë përgjigje për këtë, sepse unë jam teknolog, nuk jam specialist marketingu. Vërtet nuk kisha asgjë për të thënë. Nuk u bënte shumë përshtypje që nuk dija asgjë.

Vitaly: Miliarda! Thjesht thuaj "miliarda"!

Maurice: Po, këtë duhet të kisha thënë. Tani, në epokën e startup-eve dhe gjithë kësaj, unë di të shkruaj një plan biznesi. Që mund të gënjeni pak për madhësinë e fitimit të mundshëm. Por në ato ditë më dukej naive, ndaj thashë: "Nuk e di". Nëse shikoni historinë e botimit në lidhje me kujtesën transaksionale, do të vini re se pas një viti kishte disa referenca për të, dhe më pas për rreth dhjetë vjet askush nuk e citoi fare këtë artikull. Kuotat u shfaqën rreth vitit 2004, kur u krijuan shumë bërthama të vërteta. Kur njerëzit zbuluan se shkrimi i kodit paralel mund të fitonte para, filluan kërkimet e reja. Ravi Rajwar shkroi një artikull, i cili në një farë mënyre prezantoi rrjedhën kryesore me konceptin e kujtesës transaksionale. (Shënim i redaktorit: Ky artikull ka një version të dytë të lëshuar në 2010 dhe është i disponueshëm falas si PDF). Papritur, njerëzit kuptuan saktësisht se si mund të përdoret e gjithë kjo, si mund të shpejtojnë algoritmet tradicionale me bravë. Një shembull i mirë i diçkaje që në të kaluarën dukej si një problem interesant akademik. Dhe po, nëse do të më kishit pyetur në atë kohë nëse mendoja se e gjithë kjo do të ishte e rëndësishme në të ardhmen, do të kisha thënë: sigurisht, por kur saktësisht nuk është e qartë. Ndoshta në 50 vjet? Në praktikë, doli të ishte vetëm një dekadë. Është shumë bukur kur bën diçka dhe në vetëm dhjetë vjet njerëzit e vënë re atë.

Pse ia vlen të bësh kërkime në fushën e informatikës së shpërndarë

Vitaly: Nëse flasim për kërkime të reja, çfarë do t'i këshillonit lexuesit - informatikë e shpërndarë apo multi-core dhe pse? 

Maurice: Është e lehtë të marrësh një procesor me shumë bërthama këto ditë, por është më e vështirë të krijosh një sistem të vërtetë të shpërndarë. Fillova të punoja me to sepse doja të bëja diçka ndryshe nga doktoratura ime. Kjo është këshilla që u jap gjithmonë fillestarëve: mos shkruani një disertacion pasues - përpiquni të shkoni në një drejtim të ri. Plus, multithreading është i lehtë. Mund të eksperimentoj me pirunin tim që funksionon në laptop pa u ngritur nga shtrati. Por nëse papritmas do të doja të krijoja një sistem të vërtetë të shpërndarë, do të më duhej të bëja shumë punë, të tërhiqja studentë, etj. Unë jam një person dembel dhe do të preferoja të punoja në multi-core. Eksperimentimi me sisteme me shumë bërthama është gjithashtu më i lehtë sesa eksperimentimi me ato të shpërndara, sepse edhe në një sistem të shpërndarë budalla ka shumë faktorë për t'u kontrolluar.

Vitaliy: Çfarë jeni duke bërë tani, duke hulumtuar blockchain? Cilat artikuj duhet t'i kushtoni vëmendje fillimisht?

Maurice: U shfaq së fundmi artikull shumë i mirëtë cilën e shkrova me studentin tim, Vikram Saraf, posaçërisht për Konferenca Tokenomcs në Paris tre javë më parë. Ky është një artikull rreth sistemeve të dobishme të shpërndara në të cilat ne propozojmë ta bëjmë Ethereum me shumë fije. Tani kontratat inteligjente (kodi që funksionon në blockchain) ekzekutohen në mënyrë sekuenciale. Ne shkruam një artikull më parë që fliste për një mënyrë për të përdorur transaksionet spekulative për të përshpejtuar procesin. Ne morëm shumë ide nga memoria transaksionale e softuerit dhe thamë se nëse i bëni këto ide pjesë të makinës virtuale Etherium, atëherë gjithçka do të funksionojë më shpejt. Por për këtë është e nevojshme që të mos ketë konflikte të dhënash në kontrata. Dhe atëherë supozuam se në jetën reale nuk ka vërtet konflikte të tilla. Por ne nuk kemi pasur rastin ta zbulojmë. Më pas na shkoi mendja se kishim pothuajse dhjetë vjet histori reale të kontratës në duart tona, kështu që shkarkuam zinxhirin e bllokut Etherium dhe pyetëm veten: çfarë do të ndodhte nëse këto regjistrime historike do të funksiononin paralelisht? Ne gjetëm një rritje të konsiderueshme të shpejtësisë. Në ditët e para të Etherium-it, shpejtësia u rrit shumë, por sot gjithçka është disi më e ndërlikuar, sepse ka më pak kontrata dhe gjasat për konflikte për të dhënat që kërkojnë serializim janë rritur. Por e gjithë kjo është punë eksperimentale me të dhëna reale historike. Gjëja e bukur për blockchain është se ai kujton gjithçka përgjithmonë, kështu që ju mund të ktheheni në kohë dhe të studioni se çfarë do të ndodhte nëse do të përdornim algoritme të tjera për të ekzekutuar kodin. Sa njerëzit në të kaluarën do ta kishin pëlqyer idenë tonë të re. Është shumë më e lehtë dhe më e këndshme të bësh një hulumtim të tillë, sepse ekziston një gjë që monitoron gjithçka dhe regjistron gjithçka. Kjo tashmë është diçka më shumë si sociologji sesa zhvillimi i algoritmeve.

A është ndalur zhvillimi i algoritmeve dhe si të jetojmë

Vitaly: Koha për pyetjen e fundit teorike! A ndihet sikur përparimet në strukturat konkurruese të të dhënave po tkurren çdo vit? A mendoni se kemi arritur një rrafshnaltë në kuptimin tonë të strukturave të të dhënave, apo do të ketë disa përmirësime të mëdha? Ndoshta ka disa ide të zgjuara që mund të ndryshojnë plotësisht gjithçka?

Maurice: Ne mund të kemi arritur një pllajë në strukturat e të dhënave për arkitekturat tradicionale. Por strukturat e të dhënave për arkitekturat e reja janë ende një zonë shumë premtuese. Nëse dëshironi të krijoni struktura të dhënash për, të themi, përshpejtuesit e harduerit, atëherë strukturat e të dhënave GPU janë shumë të ndryshme nga strukturat e të dhënave të CPU. Kur hartoni struktura të dhënash për zinxhirët e bllokut, ju duhet të hash pjesë të të dhënave dhe më pas t'i vendosni ato në diçka të tillë pemë merkle, për të parandaluar falsifikimin. Kohët e fundit ka pasur një rritje të aktivitetit në këtë fushë, shumë po bëjnë një punë shumë të mirë. Por unë mendoj se ajo që do të ndodhë është se arkitekturat e reja dhe aplikacionet e reja do të çojnë në struktura të reja të dhënash. Aplikacionet e vjetra dhe arkitektura tradicionale - ndoshta nuk ka më shumë hapësirë ​​për kërkime. Por nëse dilni nga rruga e rrahur dhe shikoni përtej skajit, do të shihni gjëra të çmendura që rryma kryesore nuk i merr seriozisht - këtu ndodhin të gjitha gjërat emocionuese.

Vitaly: Prandaj, për të qenë një studiues shumë i famshëm, më duhej të shpikja arkitekturën time 🙂

Maurice: Ju mund të "vjedhni" arkitekturën e re të dikujt tjetër - duket shumë më e lehtë!

Punon tek Brown University

Vitali: Mund të na tregoni më shumë rreth Universiteti Brownne te cilen punoni? Nuk dihet shumë për të në kontekstin e teknologjisë së informacionit. Më pak se në lidhje me MIT, për shembull.

Maurice: Universiteti Brown është një nga universitetet më të vjetra në Shtetet e Bashkuara. Unë mendoj se vetëm Harvardi është pak më i vjetër. Brown është pjesë e të ashtuquajturit ligat e dredhkës, i cili është një koleksion i tetë universiteteve më të vjetra. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, Pennsylvania, Princeton. Ky është një lloj universiteti i vjetër, i vogël dhe pak aristokratik. Fokusi është në edukimin e arteve liberale. Nuk po përpiqet të jetë si MIT, MIT është shumë i specializuar dhe teknik. Brown është një vend i mrekullueshëm për të studiuar letërsinë ruse ose greqishten klasike dhe, natyrisht, shkencat kompjuterike. Ai fokusohet në edukimin gjithëpërfshirës. Shumica e studentëve tanë shkojnë në Facebook, Apple, Google, kështu që unë mendoj se studentët tanë nuk e kanë problem të gjejnë një punë në industri. Shkova për të punuar në Brown sepse më parë kam punuar në Digital Equipment Corporation në Boston. Ishte një kompani që shpiku shumë gjëra interesante, por mohoi rëndësinë e kompjuterëve personalë. Një kompani me fat të vështirë, themeluesit e së cilës dikur ishin revolucionarë të rinj, ata nuk mësuan asgjë dhe nuk harruan asgjë dhe për këtë arsye u kthyen nga revolucionarë në reaksionarë brenda rreth një dekade. Atyre u pëlqente të bënin shaka se kompjuterët personalë i përkisnin një garazhi - një garazh i braktisur, sigurisht. Është mjaft e qartë se ato u shkatërruan nga kompani më fleksibël. Kur u bë e qartë se kompania ishte në telashe, thirra mikun tim nga Brown, i cili është rreth një orë nga Bostoni. Nuk doja të largohesha nga Bostoni në atë kohë, sepse universitetet e tjera nuk kishin shumë vende të lira. Ishte një kohë kur nuk kishte aq vende të lira në fushën e Shkencave Kompjuterike sa ka tani. Dhe Brown kishte një punë, nuk më duhej të largohesha nga shtëpia ime, nuk më duhej të zhvendosja familjen time dhe më pëlqen shumë të jetoj në Boston! Kështu që mora vendimin të shkoja në Brown. Më pëlqen. Studentët janë të mrekullueshëm, kështu që asnjëherë nuk u përpoqa të shkoj diku tjetër. Në një pushim, punova në Microsoft për një vit, shkova në Technion në Haifa për një vit, dhe tani do të jem në Algorand. Unë kam shumë kolegë kudo dhe për këtë arsye vendndodhja fizike e klasave tona nuk është aq e rëndësishme. Por më e rëndësishmja janë studentët, ata janë më të mirët këtu. Unë kurrë nuk kam provuar të shkoj diku tjetër, sepse jam mjaft i lumtur këtu.

Megjithatë, pavarësisht famës së Brown në Shtetet e Bashkuara, ai është çuditërisht i panjohur jashtë shtetit. Siç mund ta shihni, tani po bëj çmos për të korrigjuar këtë gjendje.

Dallimi midis kërkimit universitar dhe korporatës

Vitaliy: Mirë, pyetja tjetër ka të bëjë me pajisjet dixhitale. Ju keni qenë një studiues atje. Cili është ndryshimi midis punës në departamentin R&D të një kompanie të madhe dhe punës në një universitet? Cilat janë avantazhet dhe disavantazhet?

Maurice: Unë kam qenë në Microsoft për njëzet vjet, duke punuar ngushtë me njerëz në Sun Microsystems, Oracle, Facebook dhe tani Algorand. Bazuar në të gjitha këto, dua të them se është e mundur të kryhen kërkime të klasit të parë si në kompani ashtu edhe në universitet. Dallimi i rëndësishëm është se në një kompani ju punoni me kolegë. Nëse papritmas kam një ide për një projekt që ende nuk ekziston, duhet të bind bashkëmoshatarët e mi se kjo është një ide e mirë. Nëse jam në Brown, atëherë mund t'u them studentëve të mi: le të punojmë për antigravitetin! Ata ose do të shkojnë te dikush tjetër ose do të marrin përsipër projektin. Po, do të më duhet të gjej fonde, do të më duhet të shkruaj një aplikim për grant e kështu me radhë. Në çdo rast, gjithmonë do të ketë shumë studentë dhe do të mund të merrni vendime në mënyrë të njëanshme. Por në universitet, me shumë mundësi nuk do të punoni me njerëz të nivelit tuaj. Në botën e kërkimit industrial, së pari duhet të bindni të gjithë se projekti juaj ia vlen të ndërmerret. Unë nuk mund të porosis asgjë nga askush. Dhe të dyja këto mënyra të punës janë të vlefshme, sepse nëse jeni duke punuar në diçka vërtet të çmendur dhe kolegët tuaj janë të vështirë për t'u bindur, është më e lehtë të bindësh studentët e diplomuar - veçanërisht nëse i paguan. Nëse jeni duke punuar në diçka që kërkon shumë përvojë dhe ekspertizë të thellë, atëherë keni nevojë për kolegë që mund të thonë "jo, ndodh që unë e kuptoj këtë fushë dhe ideja juaj është e keqe, asgjë nuk do të dalë". Kjo është shumë e dobishme për të humbur kohë. Dhe gjithashtu, nëse në laboratorët industrialë kaloni shumë kohë duke shkruar raporte, atëherë në universitet e kaloni këtë kohë duke gjetur para. Nëse dua që studentët të mund të udhëtojnë diku, duhet t'i gjej paratë për të diku tjetër. Dhe sa më i rëndësishëm pozicioni juaj në universitet, aq më shumë kohë duhet të shpenzoni për të mbledhur para. Pra, tani e dini se si punoj - lypës profesionist! Si një nga ata murgjit që ecin me një pjatë dhurimi. Në përgjithësi, këto dy aktivitete plotësojnë njëra-tjetrën. Kjo është arsyeja pse unë përpiqem të jetoj dhe të qëndroj fort në të dy botët.

Vitaliy: Duket se të bindësh një kompani është më e vështirë sesa të bindësh shkencëtarët e tjerë.

Maurice: Më e vështirë, dhe shumë më tepër. Për më tepër, në fusha të ndryshme është ndryshe: dikush kryen kërkime në shkallë të plotë dhe dikush është i përqendruar në temën e tij. Po të shkoja te Microsoft ose Facebook dhe të thosha, le të bëjmë anti-gravitetin, vështirë se do ta vlerësonin. Por nëse do t'u thosha saktësisht të njëjtën gjë studentëve të mi të diplomuar, ata me shumë mundësi do të hynin në punë menjëherë, megjithëse tani do të kisha probleme - sepse ju duhet të gjeni para për këtë. Por për sa kohë që dëshironi të bëni diçka në përputhje me qëllimet e kompanisë, ajo kompani mund të jetë një vend shumë i mirë për të bërë kërkime.

Hidra dhe SPTDC

Vitaliy: Pyetjeve të mia po i vjen fundi, ndaj le të flasim pak për udhëtimin e ardhshëm në Rusi.

Maurice: Po, mezi pres të kthehem në Petersburg.

Alexey: Është një nder i madh për mua që jeni me ne këtë vit. Kjo është hera juaj e dytë në Shën Petersburg, apo jo?

Maurice: Tashmë i treti!

Alexei: E kuptova, por SPTDC - pikërisht e dyta. Herën e fundit që u thirr shkolla SPTCC, tani kemi ndryshuar një shkronjë (C në D, Concurrent to Distributed) për të theksuar se ka më shumë fusha që lidhen me llogaritjen e shpërndarë këtë vit. A mund të thoni disa fjalë për prezantimet tuaja në Shkollë dhe Konferencat e Hidrës?

Maurice: Në shkollë, dua të flas për bazat e blockchain dhe çfarë mund të bësh me të. Do të doja të tregoja se zinxhirët e bllokimit janë shumë të ngjashëm me programimin me shumë fije me të cilat jemi njohur, por me nuancat e tyre dhe është e rëndësishme të kuptohen këto dallime. Nëse bëni një gabim në një aplikacion normal në internet, është thjesht i bezdisshëm. Nëse shkruani kodin e gabimeve në një aplikacion financiar, dikush patjetër do t'ju vjedhë të gjitha paratë tuaja. Ky është një nivel krejtësisht i ndryshëm përgjegjësie dhe pasojash. Do të flas pak për provën e punës, kontratat inteligjente, transaksionet midis blockchains të ndryshëm.

Pranë meje do të punojnë folës të tjerë, të cilët gjithashtu kanë diçka për të thënë për blockchain dhe ne ramë dakord të koordinohemi mes vete në mënyrë që historitë tona të përshtaten mirë. Por për bisedën inxhinierike, dua të jap një shpjegim të qartë për një audiencë të gjerë pse nuk duhet të besoni gjithçka që dëgjoni për blockchains, pse blockchains janë një fushë e shkëlqyer, si përshtatet me ide të tjera të njohura dhe pse ne duhet shikoni me guxim të ardhmen.

Alexey: Përveç kësaj, dua të them se kjo nuk do të bëhet në formatin e një takimi ose një grupi përdoruesish, siç ishte dy vjet më parë. Vendosëm të bënim një konferencë të vogël pranë shkollës. Arsyeja është se pasi biseduam me Peter Kuznetsov, kuptuam se shkolla është e kufizuar në vetëm njëqind, ndoshta 120 njerëz. Në të njëjtën kohë, ka shumë inxhinierë që duan të flasin me ju, të marrin pjesë në raporte dhe në përgjithësi janë të interesuar për temën. Për këtë ne kemi krijuar një konferencë të re i quajtur Hidra. Nga rruga, ndonjë ide pse Hidra?

Maurice: Sepse do të ketë shtatë folës? Dhe mund t'u pritet koka dhe në vend të tyre do të rriten folës të rinj?

Alexey: Ide e shkëlqyeshme për rritjen e folësve të rinj. Por në të vërtetë, këtu ka një histori. Kujtoni legjendën e Odiseut, ku ai duhej të lundronte mes tyre Scylla dhe Charybdis? Hidra është diçka si Charybdis. Historia është se një herë fola në një konferencë dhe fola për multithreading. Kishte vetëm dy këngë në këtë konferencë. Në fillim të raportit, i thashë audiencës në sallë se ata tani kanë një zgjedhje midis Scylla dhe Charybdis. Kafsha ime shpirtërore është Charybdis, sepse Charybdis ka shumë koka dhe tema ime është shumëfijesh. Kështu dalin emrat e konferencave.

Në çdo rast na mbaruan pyetjet dhe koha. Pra, faleminderit miq për një intervistë të mrekullueshme dhe shihemi në SPTDC dhe Hydra 2019!

Komunikimi me Maurice do të mund të vazhdojë në konferencën Hydra 2019, e cila do të mbahet në datat 11-12 korrik 2019 në Shën Petersburg. Ai do të vijë me një raport "Blockchains dhe e ardhmja e informatikës së shpërndarë". Biletat mund të blihen në faqen zyrtare.

Burimi: www.habr.com

Shto një koment