"Cavab vermək susmaqdan daha asandır" - əməliyyat yaddaşının atası Maurice Herlihy ilə əla müsahibə

Maurice Herlihy - iki sahibi Dijkstra Mükafatları. Birincisi işləmək üçündür "Gözləməsiz Sinxronizasiya" (Braun Universiteti) və ikinci, daha yeni, - "Tranzaksiya yaddaşı: Kilidsiz məlumat strukturları üçün arxitektura dəstəyi" (Virciniya Texnologiya Universiteti). Dijkstra Mükafatı əhəmiyyəti və təsiri ən azı on il ərzində görünən işə görə verilir və Maurice açıq-aydın bu sahədə ən məşhur mütəxəssislərdən biridir. Hal-hazırda Braun Universitetində professor kimi işləyir və bir paraqraf uzunluğunda olan çoxsaylı nailiyyətlərə malikdir. O, hazırda klassik paylanmış hesablamalar kontekstində blokçeyni tədqiq edir.

Əvvəllər Maurice SPTCC üçün artıq Rusiyaya gəlmişdi (video qeyd) və Sankt-Peterburqda JUG.ru Java developer icması ilə əla görüş keçirdi (video qeyd).

Bu habrapost Maurice Herlihy ilə əla müsahibədir. Aşağıdakı mövzuları müzakirə edir:

  • Akademiya və sənaye arasında qarşılıqlı əlaqə;
  • Blockchain Araşdırmaları Fondu;
  • Sıçrayış ideyaları haradan gəlir? Populyarlığın təsiri;
  • Barbara Liskovun rəhbərliyi altında PhD;
  • Dünya çox nüvəli gözləyir;
  • Yeni dünya yeni problemlər gətirir. NVM, NUMA və arxitekturanın sındırılması;
  • Kompilyatorlar prosessorlara qarşı, RISC vs CISC, paylaşılan yaddaş və mesaj ötürülməsi;
  • Kövrək çox yivli kod yazma sənəti;
  • Tələbələrə mürəkkəb çox yivli kodu yazmağı necə öyrətmək;
  • “The Art of Multiprocessor Programming” kitabının yeni nəşri;
  • Tranzaksiya yaddaşı necə icad edilmişdir;   
  • Niyə paylanmış hesablamalar sahəsində tədqiqat aparmağa dəyər;
  • Alqoritmlərin inkişafı dayandırılıb və necə davam etmək;
  • Brown Universitetində işləmək;
  • Universitetdə və korporasiya daxilində tədqiqat arasındakı fərq;
  • Hydra və SPTDC.

Müsahibəni aparır:

Vitali Aksenov — hazırda IST Avstriyada post-doc və ITMO Universitetində Kompüter Texnologiyaları Departamentinin əməkdaşıdır. Rəqabətli məlumat strukturlarının nəzəriyyəsi və təcrübəsi sahəsində tədqiqatlar aparır. IST-də işləməzdən əvvəl professor Peter Kuznetsovun rəhbərliyi altında Paris Didro Universitetində və ITMO Universitetində fəlsəfə doktoru dərəcəsi almışdır.

Aleksey Fedorov - Tərtibatçılar üçün konfranslar təşkil edən Rusiya şirkəti JUG Ru Group-da prodüser. Aleksey 50-dən çox konfransın hazırlanmasında iştirak edib və onun tərcümeyi-halında Oracle-da (JCK, Java Platform Group) inkişaf mühəndisi vəzifəsindən tutmuş, Odnoklassniki-də tərtibatçı vəzifəsinə qədər hər şey var.

Vladimir Sitnikov - Netcracker-də mühəndis. Telekommunikasiya operatorları tərəfindən şəbəkə və şəbəkə avadanlığının idarəetmə proseslərinin avtomatlaşdırılması üçün istifadə olunan proqram təminatı olan NetCracker ƏS-nin performansı və miqyası üzrə on illik iş. Java və Oracle Database performans problemləri ilə maraqlanır. Rəsmi PostgreSQL JDBC sürücüsündə ondan çox performans təkmilləşdirməsinin müəllifidir.

Akademiya və sənaye arasında qarşılıqlı əlaqə

Aleksey: Moris, siz çox uzun müddət akademik mühitdə işləmisiniz və ilk sual akademik və sənaye sahələrinin qarşılıqlı əlaqəsidir. Son vaxtlar onlar arasında qarşılıqlı münasibətlərin necə dəyişdiyi barədə danışa bilərsinizmi? 20-30 il əvvəl nə olub, indi nələr baş verir? 

Moris: Mən həmişə kommersiya şirkətləri ilə sıx işləməyə çalışmışam, çünki onların maraqlı problemləri var. Onlar, bir qayda olaraq, nə öz nəticələrini dərc etməkdə, nə də problemlərinin dünya ictimaiyyətinə ətraflı izahında çox da maraqlı deyillər. Onlar ancaq bu problemlərin həllində maraqlıdırlar. Bir müddət belə şirkətlərdə işləmişəm. Əvvəllər böyük kompüter şirkəti olan Digital Equipment Corporation-da tədqiqat laboratoriyasında beş il tam işlə məşğul oldum. Mən həftədə bir gün Sunda, Microsoft-da, Oracle-da işlədim və Facebook-da bir az işlədim. İndi mən məzuniyyətə çıxacağam (Amerika universitetində professora təxminən altı ildə bir dəfə belə məzuniyyət götürməyə icazə verilir) və Alqorand, bu Bostonda kriptovalyuta şirkətidir. Şirkətlərlə sıx əməkdaşlıq etmək həmişə xoş olub, çünki beləliklə siz yeni və maraqlı şeylər haqqında məlumat əldə edirsiniz. Siz hətta hər kəsin üzərində işlədiyi problemlərin həlli yollarının tədricən təkmilləşdirilməsi üzərində işləmək əvəzinə, seçilmiş mövzuda məqalə dərc edən birinci və ya ikinci şəxs ola bilərsiniz.

Aleksey: Bunun necə baş verdiyini bizə daha ətraflı izah edə bilərsinizmi?

Moris: Əlbəttə. Bilirsiniz, mən Digital Equipment Corporation-da işləyəndə mən və Elliot Moss əməliyyat yaddaşını icad etdik. Hər kəsin informasiya texnologiyaları ilə maraqlanmağa başladığı çox məhsuldar bir dövr idi. Paralellik, o cümlədən çox nüvəli sistemlər hələ mövcud deyildi. Günəş və Oracle günlərində paralel verilənlər strukturları üzərində çox işlədim. Facebook-da onların blokçeyn layihəsi üzərində işləmişəm, bu barədə danışa bilmirəm, amma ümid edirəm ki, tezliklə ictimaiyyətə təqdim olunacaq. Gələn il Algorand-da mən ağıllı müqavilələri öyrənən tədqiqat qrupunda çalışacağam.

Aleksey: Blockchain son bir neçə ildə çox populyar bir mövzuya çevrildi. Bu araşdırmanıza kömək edəcəkmi? Bəlkə bu, qrant almağı asanlaşdıracaq və ya sənayedə fəaliyyət göstərən şirkətlərin resurslarına çıxışı təmin edəcək?

Maurice: Mən artıq Ethereum Fondundan kiçik bir qrant almışam. Blockchain-in populyarlığı tələbələri bu sahədə işləməyə ruhlandırmaqda çox faydalıdır. Onlar bununla çox maraqlanırlar və iştirak etmək üçün həyəcanlanırlar, lakin bəzən kənardan maraqlı görünən tədqiqatın həqiqətən də zəhmət tələb etdiyini başa düşmürlər. Bununla belə, tələbələri cəlb etmək üçün blockchain ətrafında bütün bu mistikadan istifadə etməkdən çox məmnunam. 

Ancaq bu hamısı deyil. Mən bir neçə blockchain startapının məsləhət şurasındayam. Bəziləri uğur qazana bilər, bəziləri olmaya bilər, lakin onların fikirlərini görmək, öyrənmək, insanlara məsləhət vermək həmişə çox maraqlıdır. Ən maraqlısı, insanlara nəyisə etməmək barədə xəbərdarlıq etdiyiniz zamandır. Çox şey ilk baxışdan yaxşı fikir kimi görünür, amma həqiqətənmi?

Blockchain Araşdırmaları Fondu

Vitali: Bəzi insanlar gələcəyin blokçeyn və onun alqoritmlərində olduğunu düşünür. Digər insanlar bunun başqa bir baloncuk olduğunu söyləyirlər. Bu məsələ ilə bağlı fikrinizi bölüşə bilərsinizmi?

Maurice: Blockchain dünyasında baş verənlərin çoxu yanlışdır, bəziləri sadəcə fırıldaqdır, çox şey həddən artıq qiymətləndirilib. Bununla belə, düşünürəm ki, bu araşdırmaların möhkəm elmi əsası var. Blockchain dünyasının ideoloji fərqlərlə dolu olması həyəcan və fədakarlığın səviyyəsini göstərir. Digər tərəfdən, bu, elmi araşdırmalar üçün xüsusilə faydalı deyil. İndi, müəyyən bir alqoritmin çatışmazlıqlarından bəhs edən bir məqalə dərc etsəniz, ortaya çıxan reaksiya həmişə tam elmi deyil. Çox vaxt insanlar duyğularını çölə atırlar. Düşünürəm ki, bu sahədə bu cür həyəcan bəziləri üçün cəlbedici görünə bilər, amma günün sonunda həll edilməli olan real elmi və mühəndislik məsələləri var. Burada çoxlu Kompüter Elmləri var.

Vitali: Deməli, siz blokçeyn tədqiqatının əsasını qoymağa çalışırsınız, elə deyilmi?

Maurice: Mən möhkəm, elmi və riyazi cəhətdən əsaslandırılmış nizam-intizamın əsasını qoymağa çalışıram. Problemin bir hissəsi də ondan ibarətdir ki, bəzən başqa insanların bəzi hədsiz sərt mövqeləri ilə ziddiyyət təşkil etməli və onlara məhəl qoymamalısan. Bəzən soruşurlar ki, mən niyə yalnız terrorçuların və narkotik alverçilərinin maraqlandığı bir ərazidə işləyirəm. Belə bir reaksiya, sözlərinizi kor-koranə təkrarlayan izləyicilərin davranışı qədər mənasızdır. Məncə, həqiqət ortada bir yerdədir. Blockchain cəmiyyətə və qlobal iqtisadiyyata dərin təsir göstərəcək. Amma bu, yəqin ki, müasir texnologiya sayəsində baş verməyəcək. Müasir texnologiyalar inkişaf edəcək və gələcəkdə blokçeyn adlanacaq şey çox vacib olacaq. O, hətta müasir blokçeynlərə bənzəməyə bilər, bu açıq sualdır.

İnsanlar yeni texnologiyalar icad etsələr, onu blockchain adlandırmağa davam edəcəklər. Demək istədiyim odur ki, indiki Fortranın 1960-cı illərdən Fortran dili ilə heç bir əlaqəsi yoxdur, amma hamı onu Fortran adlandırmağa davam edir. UNIX üçün də eynidir. “Blokçeyn” adlanan şey hələ də öz inqilabını edəcək. Ancaq şübhə edirəm ki, bu yeni blockchain bu gün hər kəsin istifadə etdiyi kimi bir şey olacaq.

Sıçrayış ideyaları haradan gəlir? Populyarlığın təsiri

Aleksey: Blokçeynin populyarlığı elmi baxımdan yeni nəticələrə gətirib çıxarıbmı? Daha çox qarşılıqlı əlaqə, daha çox tələbə, ərazidə daha çox şirkət. Populyarlığın bu artımından artıq hansısa nəticələr varmı?

Maurice: Kimsə mənə kifayət qədər çox pul yığan bir şirkət üçün rəsmi flayer verəndə bu mövzu ilə maraqlandım. Haqqında yazıb Bizans generallarının vəzifəsi, mən daha çox tanışam. Vərəqədə yazılanlar açıq şəkildə texniki cəhətdən səhv idi. Bütün bunları yazan insanlar problemin arxasında duran modeli başa düşmədilər... və buna baxmayaraq bu şirkət çoxlu pul topladı. Sonradan şirkət səssizcə bu vərəqəni daha düzgün versiya ilə əvəz etdi - və mən bu şirkətin adının nə olduğunu söyləməyəcəyəm. Onlar hələ də ətrafdadırlar və çox yaxşı işləyirlər. Bu hadisə məni inandırdı ki, birincisi, blokçeyn sadəcə paylanmış hesablamanın bir formasıdır. İkincisi, giriş həddi (ən azı dörd il əvvəl) kifayət qədər aşağı idi. Bu sahədə çalışan insanlar çox enerjili və ağıllı idilər, lakin elmi məqalələr oxumurlar. Onlar məlum şeyləri yenidən kəşf etməyə çalışdılar və səhv etdilər. Bu gün dram azalıb.

Aleksey: Bu, çox maraqlıdır, çünki bir neçə il əvvəl bizdə fərqli bir tendensiya var idi. Brauzer əsaslı qabaqcıl tərtibatçılar arxa planda artıq populyar olan bütün texnologiyaları yenidən ixtira etdikdə, bu, bir az front-end inkişafı kimidir: sistemlərin qurulması, davamlı inteqrasiya və bu kimi şeylər. 

Moris: Razıyam. Ancaq bu təəccüblü deyil, çünki həqiqətən irəliləyiş ideyaları həmişə qurulmuş icmadan kənardan gəlir. Təcrübəli tədqiqatçılar, xüsusən də tanınmış akademiklər, çətin ki, həqiqətən təməlqoyacaq bir şey edə bilsinlər. Keçmiş işinizin nəticələrini bir qədər yaxşılaşdırdığınız barədə növbəti konfrans üçün məqalə yazmaq asandır. Konfransa gedin, dostlarla bir araya gəlin, eyni şeylər haqqında danışın. Və sıçrayış ideyaları ilə partlayan insanlar demək olar ki, həmişə kənardan gəlirlər. Qaydaları bilmirlər, dili bilmirlər, amma buna baxmayaraq... Əgər siz qurulmuş bir cəmiyyətin daxilindəsinizsə, sizə yeni şeylərə, ümumi mənzərəyə uyğun gəlməyən bir şeyə diqqət yetirməyi məsləhət görürəm. Müəyyən mənada xarici, daha axıcı inkişafları artıq anladığımız üsullarla birləşdirməyə cəhd edilə bilər. İlk addım olaraq elmi əsas yaratmağa çalışın və sonra onu yeni irəliləyiş ideyalarına tətbiq etmək üçün dəyişdirin. Düşünürəm ki, blokçeyn təzə, pozucu ideya olmaq üçün əladır.

Aleksey: Sizcə bu niyə baş verir? Çünki “kənarda” insanların cəmiyyətə xas olan xüsusi maneələri yoxdur?

Moris: Burada bir nümunə var. Rəssamlıqda və ümumiyyətlə sənətdə impressionistlərin tarixini oxusanız, bir zamanlar məşhur rəssamlar impressionizmi rədd etdilər. Dedilər ki, bir növ uşaqlıqdır. Bir nəsil sonra, əvvəllər rədd edilən bu sənət növü standart oldu. Öz sahəmdə gördüklərim: blokçeyn ixtiraçıları güclə, nəşrlərin və sitat indeksinin artırılmasında maraqlı deyildilər, sadəcə yaxşı bir şey etmək istəyirdilər. Və beləcə oturdular və bunu etməyə başladılar. Onların müəyyən texniki dərinliyi yox idi, lakin bu, düzəldilə bilər. Yetkin olmayanları düzəltmək və gücləndirməkdənsə, yeni yaradıcı ideyalar irəli sürmək daha çətindir. Bu ixtiraçıların sayəsində indi mənim bir işim var!

Aleksey: Bu, startaplarla köhnə layihələr arasındakı fərqə bənzəyir. Bizə bir çox düşüncə məhdudiyyətləri, maneələr, xüsusi tələblər və s.

Maurice: Yaxşı bir bənzətmə paylanmış hesablamadır. Blockchain-i böyük, köklü bir şirkət kimi bir başlanğıc və paylanmış hesablama kimi düşünün. Paylanmış hesablama əldə edilmə və blokçeynlə birləşdirilmə prosesindədir.

Barbara Liskovun rəhbərliyi altında PhD

Vitali: Hələ çox sualımız var! Biz sizin keçmişinizi araşdırdıq və doktoranturanızla bağlı maraqlı bir fakta rast gəldik. Bəli, bu çoxdan idi, amma deyəsən vacib mövzudur. Siz öz rəhbərliyinizlə PhD dərəcəsi aldınız Barbara Liskov! Barbara proqramlaşdırma dilləri cəmiyyətində çox yaxşı tanınır və ümumiyyətlə çox tanınmış bir şəxsdir. Tədqiqatınızın proqramlaşdırma dilləri sahəsində olması məntiqlidir. Paralel hesablamaya necə keçdiniz? Niyə mövzunu dəyişməyə qərar verdiniz?

Maurice: O zaman Barbara və onun qrupu sadəcə paylanmış hesablamaya baxırdılar, bu çox yeni bir fikir idi. Paylanmış hesablamaların cəfəngiyyat olduğunu, kompüterlərin bir-biri ilə əlaqə saxlamasının mənasız olduğunu söyləyənlər də var idi. Paylanmış hesablamada onu mərkəzləşdirilmiş hesablamalardan fərqləndirən məsələlərdən biri xətalara dözümlülükdür. Çoxlu araşdırmalardan sonra qərara gəldik ki, paylanmış hesablama proqramlaşdırma dili atom əməliyyatları kimi bir şeyə malik olmalıdır, çünki siz heç vaxt uzaqdan edilən zəngin uğur qazanacağına əmin ola bilməzsiniz. Əməliyyatlarınız olduqda, paralellik idarə edilməsi problemi yaranır. Sonra yüksək paralel tranzaksiya məlumat strukturlarının əldə edilməsi üzərində çox iş aparıldı. Sonra məzun olanda getdim Karnegi Mellon və üzərində işləmək üçün mövzu axtarmağa başladı. Mənə elə gəldi ki, hesablama fərdi kompüterlərdən kompüter şəbəkələrinə keçib. Multiprosessorlar tərəqqinin təbii davamı olardı - "çox nüvəli" sözü hələ mövcud deyildi. Düşündüm: çox nüvəli sistem üçün atom əməliyyatlarının ekvivalenti nədir? Mütləq müntəzəm əməliyyatlar deyil, çünki onlar çox böyük və ağırdırlar. Və beləcə fikrim yarandı xəttiləşmə qabiliyyəti və mən bütün gözləməsiz sinxronizasiya ilə gəldim. Bu, ortaq yaddaşa malik çoxprosessorlu sistem üçün atom əməliyyatlarının analoqunun nə olduğu sualına cavab vermək cəhdi idi. İlk baxışdan bu əsər tamamilə fərqli görünsə də, əslində eyni mövzunun davamıdır.

Dünya çox nüvəli gözləyir

Vitali: Siz qeyd etdiniz ki, o vaxt çox nüvəli kompüterlər çox az idi, elə deyilmi?

Maurice: Onlar sadəcə orada deyildilər. Əsasən eyni avtobusa qoşulmuş bir neçə simmetrik multiprosessorlar var idi. Bu o qədər də yaxşı nəticə vermədi, çünki hər dəfə yeni şirkət oxşar bir şey yaratdıqda, Intel multiprosessordan üstün olan tək prosessor buraxırdı.

Aleksey: Bu o demək deyilmi ki, o qədim dövrlərdə bu daha çox nəzəri araşdırma idi?

Maurice: Bu nəzəri bir araşdırma deyil, spekulyativ bir araşdırma idi. Bütün bunlar bir çox teoremlərlə işləməkdən ibarət deyildi, biz o dövrdə mövcud olmayan bir memarlıq haqqında fərziyyələr irəli sürdük. Araşdırmanın məqsədi budur! Heç bir şirkət belə bir şey etməzdi; bunların hamısı uzaq gələcəkdən bir şey idi. Əslində, bu, 2004-cü ilə qədər real çoxnüvəli prosessorlar meydana çıxana qədər belə idi. Prosessorlar həddən artıq qızdığı üçün siz prosessoru daha da kiçik edə bilərsiniz, lakin sürətləndirə bilməzsiniz. Bu səbəbdən çox nüvəli arxitekturaya keçid baş verdi. Və bu o demək idi ki, birdən-birə keçmişdə inkişaf etdirdiyimiz bütün konsepsiyalardan istifadə olunmağa başladı.

Aleksey: Sizcə, niyə çoxnüvəli prosessorlar yalnız XNUMX-ci illərdə ortaya çıxdı? Bəs niyə belə gecdir?

Maurice: Bu, hardware məhdudiyyətləri ilə bağlıdır. Intel, AMD və digər şirkətlər prosessorun sürətini artırmaqda çox bacarıqlıdır. Bir nöqtədə prosessorlar kifayət qədər kiçik olduqda, onlar artıq saat sürətini artıra bilməyəcəklər, çünki prosessorlar yanmağa başlayacaq. Onları daha kiçik edə bilərsiniz, lakin daha sürətli deyil. Onların gücündə olan şey - çox kiçik bir prosessor əvəzinə, əvvəllər yalnız birinin sığa bildiyi eyni həcmdə səkkiz, on altı və ya otuz iki prosessoru yerləşdirə bilər. İndi onlar arasında çox iş parçacığı və sürətli əlaqə var, çünki onlar keşləri paylaşırlar. Ancaq onları daha sürətli qaçmağa məcbur edə bilməzsiniz - çox xüsusi sürət həddi var. Onlar yavaş-yavaş təkmilləşməyə davam edirlər, amma artıq o qədər də deyil. Fizika qanunları təkmilləşmə yolunda dayandı.

Yeni dünya yeni problemlər gətirir. NUMA, NVM və memarlıq sındırılması

Aleksey: Çox ağlabatan səslənir. Yeni çoxnüvəli prosessorlarla yeni problemlər ortaya çıxdı. Siz və həmkarlarınız bu problemləri gözləyirdinizmi? Bəlkə onları əvvəlcədən öyrənmisiniz? Nəzəri tədqiqatlarda belə şeyləri proqnozlaşdırmaq çox vaxt asan olmur. Problemlər baş verəndə sizin və həmkarlarınızın gözləntilərini necə qarşıladılar? Yoxsa onlar tamamilə yeni idilər və siz və həmkarlarınız ortaya çıxan kimi problemləri həll etmək üçün çox vaxt sərf etməli oldunuz?

Vitali: Alekseyin sualına əlavə edəcəyəm: nəzəriyyəni öyrənərkən prosessor arxitekturasını düzgün proqnozlaşdırdınızmı?

Maurice: 100% deyil. Ancaq düşünürəm ki, həmkarlarım və mən paylaşılan yaddaşa malik çox nüvələri proqnozlaşdırmaqda yaxşı iş görmüşük. Hesab edirəm ki, biz kilidsiz işləyən paralel məlumat strukturlarının yaradılmasında çətinlikləri düzgün proqnozlaşdırdıq. Bu cür məlumat strukturları, hamısı olmasa da, bir çox tətbiqlər üçün vacib olmuşdur, lakin çox vaxt sizə həqiqətən lazım olan şey kilidlənməyən məlumat strukturudur. Biz onları icad edəndə çoxları bunun cəfəngiyyat olduğunu, qıfıllarla hər şeyin yaxşı işlədiyini iddia edirdi. Çox yaxşı proqnozlaşdırmışdıq ki, bir çox proqramlaşdırma problemləri və verilənlər strukturu problemləri üçün hazır həllər olacaq. kimi daha mürəkkəb problemlər də var idi IN - yaddaşa qeyri-bərabər giriş. Əslində, çox nüvəli prosessorlar icad edilənə qədər onlar çox spesifik olduqları üçün nəzərə alınmırdı. Tədqiqat icması ümumiyyətlə proqnozlaşdırıla bilən suallar üzərində işləyirdi. Xüsusi arxitekturalarla əlaqəli bəzi hardware problemləri qanadlarda gözləməli oldu - əslində bu arxitekturaların görünüşü. Məsələn, heç kim həqiqətən GPU-ya məxsus məlumat strukturları üzərində işləmirdi, çünki o vaxtlar GPU-lar mövcud deyildi. Baxmayaraq ki, üzərində xeyli iş görülüb SIMD, bu alqoritmlər uyğun avadanlıq əldə olunan kimi istifadəyə hazır idi. Ancaq hər şeyi qabaqcadan görmək mümkün deyil.

Aleksey: Düzgün başa düşdümsə, NUMA bir növ xərc, performans və bəzi başqa şeylər arasında kompromisdir. NUMA niyə bu qədər gec çıxdı?

Moris: Düşünürəm ki, NUMA yaddaş istehsal etmək üçün istifadə olunan avadanlıqla bağlı problemlərə görə mövcuddur: komponentlər nə qədər uzaq olarsa, onlara daxil olmaq bir o qədər yavaş olur. Digər tərəfdən, bu abstraksiyanın ikinci dəyəri yaddaş vahidliyidir. Beləliklə, paralel hesablamanın xüsusiyyətlərindən biri bütün abstraksiyaların bir qədər pozulmasıdır. Əgər giriş tamamilə vahid olsaydı, bütün yaddaş bərabər məsafədə olardı, lakin bu, iqtisadi və bəlkə də fiziki cəhətdən mümkün deyil. Ona görə də bu münaqişə yaranır. Proqramınızı yaddaşın vahid olduğu kimi yazsanız, çox güman ki, düzgün olacaq. O mənada ki, səhv cavablar verməyəcək. Amma onun ifası da göydən ulduzları tutmayacaq. Eləcə də yazsanız spinloklar Keş iyerarxiyasını başa düşmədən, bloklamanın özü düzgün olacaq, ancaq performansı unuda bilərsiniz. Müəyyən mənada çox sadə bir abstraksiya üzərində yaşayan proqramlar yazmalısan, lakin sənə bu abstraksiyanı verən insanları alt-üst etməlisən: bilməlisən ki, mücərrədliyin altında yaddaşın hansısa iyerarxiyası var, səninlə bu yaddaş arasında avtobus və s. Beləliklə, ayrı-ayrılıqda faydalı abstraksiyalar arasında müəyyən ziddiyyət var ki, bu da bizi çox konkret və praqmatik problemlərə aparır.

Vitali: Bəs gələcək? Prosessorların bundan sonra necə inkişaf edəcəyini təxmin edə bilərsinizmi? Cavablardan birinin tranzaksiya yaddaşı olması fikri var. Yəqin ki, anbarınızda başqa bir şey var.

Maurice: Qarşıda bir neçə böyük problem var. Biri odur ki, əlaqəli yaddaş gözəl bir abstraksiyadır, lakin xüsusi hallarda parçalanmağa başlayır. Beləliklə, məsələn, NUMA vahid yaddaşın mövcud olduğunu iddia etməyə davam edə biləcəyiniz bir şeyin canlı nümunəsidir. Əslində yox, məhsuldarlıq sizi ağlatacaq. Nə vaxtsa, memarlar vahid yaddaş arxitekturası ideyasından imtina etməli olacaqlar; siz əbədi olaraq iddia edə bilməzsiniz. İstifadəsi kifayət qədər asan və əsas aparatı səmərəli etmək üçün kifayət qədər güclü yeni proqramlaşdırma modellərinə ehtiyac olacaq. Bu, çox çətin bir kompromisdir, çünki proqramçılara əslində aparatda istifadə olunan arxitekturanı göstərsəniz, onlar dəli olacaqlar. Bu, çox mürəkkəbdir və portativ deyil. Çox sadə interfeys təqdim etsəniz, performans zəif olacaq. Beləliklə, həqiqətən böyük çox nüvəli prosessorlara tətbiq olunan faydalı proqramlaşdırma modellərini təmin etmək üçün bir çox çox çətin mübadilə etmək lazımdır. Mən əmin deyiləm ki, mütəxəssisdən başqa kimsə 2000 nüvəli kompüterdə proqramlaşdırmağı bacarır. Və çox ixtisaslaşmış və ya elmi hesablama və ya kriptoqrafiya və ya buna bənzər bir şey etməsəniz - bunu necə düzgün etmək hələ də aydın deyil. 

Digər oxşar sahə ixtisaslaşmış memarlıqdır. Qrafik sürətləndiricilər çoxdan mövcuddur, lakin onlar xüsusi hesablama növünü götürüb onu xüsusi çipdə necə işlədə biləcəyinizin klassik nümunəsinə çevriliblər. Bu, öz çətinliklərini əlavə edir: belə bir cihazla necə ünsiyyət qurursunuz, onu necə proqramlaşdırırsınız. Bu yaxınlarda bölgədəki problemlər üzərində işləyirəm yaddaş hesablamasının yaxınlığında. Siz kiçik bir prosessor götürürsünüz və onu böyük bir yaddaş parçasına yapışdırırsınız ki, yaddaş L1 keş sürətində işləsin və sonra belə bir cihazla əlaqə saxlasın. TPU – prosessor yaddaş nüvəsinə yeni tapşırıqlar yükləməklə məşğuldur. Bu cür şeylər üçün məlumat strukturlarının və rabitə protokollarının layihələndirilməsi başqa bir maraqlı nümunədir. Beləliklə, xüsusi prosessorlar və aparat bir müddət təkmilləşdirmələri görməyə davam edəcək.

Aleksey: Qeyri-sabit yaddaş haqqında (uçucu olmayan yaddaş)?

Maurice: Oh, bu başqa bir gözəl nümunədir! NVM məlumat strukturları kimi şeylərə baxmağımızı çox dəyişəcək. Qeyri-uçucu yaddaş, müəyyən mənada, işləri həqiqətən sürətləndirməyi vəd edir. Lakin bu, həyatı asanlaşdırmayacaq, çünki əksər prosessorlar, keşlər və registrlər hələ də dəyişkəndir. Qəzadan sonra işə başladığınız zaman vəziyyətiniz və yaddaşınızın vəziyyəti qəzadan əvvəlki kimi olmayacaq. NVM üzərində işləyən insanlara çox minnətdaram - tədqiqatçıların uzun müddət düzgünlük şərtlərini anlamağa çalışacaqları çox şey olacaq. Keşlərin və registrlərin məzmununun itirildiyi, lakin əsas yaddaşın toxunulmaz qaldığı qəzadan sağ çıxa bilsələr, hesablamalar düzgündür.

Kompilyatorlar prosessorlara qarşı, RISC vs CISC, paylaşılan yaddaş və mesaj ötürülməsi

Vladimir: “Tərtibçilər və prosessorlar” dilemması haqqında təlimatlar toplusu baxımından nə düşünürsünüz? Bilməyənlər üçün izah edim: əyri yaddaşa və ya buna bənzər bir şeyə getsək, çox sadə əmrlər toplusundan istifadə edə və kompilyatordan aşkar edilmiş üstünlüklərdən istifadə edə biləcək mürəkkəb kod yaratmağı xahiş edə bilərik. Və ya başqa yolla gedə bilərik: mürəkkəb təlimatları yerinə yetirin və prosessordan təlimatları yenidən sıralamağı və onlarla digər manipulyasiyalar etməyi xahiş edin. Siz bu barədə nə düşünürsünüz?

Moris: Bu suala həqiqətən cavabım yoxdur. Bu mübahisə XNUMX ildir ki, davam edir. Arada bir vaxt olub qısaldılmış əmrlər toplusu və çətin vətəndaş müharibələri bir sıra əmrlərlə aparılırdı. Bir müddət RISC xalqı qalib gəldi, lakin sonra Intel mühərriklərini yenidən qurdu ki, azaldılmış təlimatlar dəsti daxildə istifadə edildi və tam dəst xaricə ixrac edildi. Bu, yəqin ki, hər bir yeni nəslin öz kompromislərini tapmalı və öz qərarlarını verməli olduğu bir mövzudur. Bunlardan hansının daha yaxşı olacağını təxmin etmək çox çətindir. Beləliklə, mənim etdiyim hər hansı proqnoz müəyyən bir müddətə doğru olacaq, sonra bir müddət sonra yenidən yalan olacaq və sonra yenidən doğru olacaq.

Aleksey: Bəzi ideyaların bir neçə onillikdə qalib gəlməsi və sonrakı illərdə uduzması sənaye üçün nə dərəcədə yaygındır? Belə dövri dəyişikliklərin başqa nümunələri varmı?

Maurice: Paylanmış hesablama mövzusunda, inanan insanlar var paylaşılan yaddaş və inanan insanlar mesajlaşma. Əvvəlcə paylanmış hesablamada paralel hesablama mesajın ötürülməsi deməkdir. Sonra kimsə paylaşılan yaddaşla proqramlaşdırmağın daha asan olduğunu kəşf etdi. Qarşı tərəf dedi ki, paylaşılan yaddaş çox mürəkkəbdir, çünki o, kilidlər və buna bənzər şeylər tələb edir, ona görə də mesajın ötürülməsindən başqa heç bir şeyin olmadığı dillərə keçməyə dəyər. Kimsə bundan çıxana baxdı və dedi: “Vay, bu mesajlaşma tətbiqi ortaq yaddaşa çox bənzəyir, çünki siz bu kiçik modulların çoxunu yaradırsınız, onlar bir-birinə mesaj göndərir və hamısı kilidləmək"Daha yaxşı paylaşılan yaddaş verilənlər bazası yaradaq!" Bütün bunlar dönə-dönə təkrarlanır və tərəflərdən birinin qəti şəkildə haqlı olduğunu söyləmək mümkün deyil. Bir tərəf həmişə üstünlük təşkil edəcək, çünki onlardan biri az qala qalib gələn kimi insanlar digərini təkmilləşdirməyin yollarını təkrar-təkrar icad edirlər.

Kövrək Çox Yivli Kod Yazma Sənəti

Aleksey: Bu, çox maraqlıdır. Məsələn, kod yazarkən, hansı proqramlaşdırma dilindən asılı olmayaraq, biz adətən oxuna və yazıla bilən hüceyrələr kimi abstraksiyalar yaratmalıyıq. Amma əslində, bəzi fiziki səviyyədə bu, müxtəlif kompüterlər və digər cihazlar arasında aparat avtobusu vasitəsilə mesaj göndərmək kimi görünə bilər. Belə çıxır ki, iş bir anda hər iki abstraksiya səviyyəsində baş verir.

Moris: Tamamilə doğrudur ki, paylaşılan yaddaş mesaj ötürülməsi üzərində qurulur - avtobuslar, keşlər və s. Ancaq mesaj ötürülməsindən istifadə edərək proqramlar yazmaq çətindir, ona görə də aparat qəsdən yalan danışır, guya sizin bir növ vahid yaddaşınız var. Bu, performansınız pisləşməyə başlamazdan əvvəl sadə, düzgün proqramlar yazmağınızı asanlaşdıracaq. Sonra deyəcəksiniz: keş ilə dostluq etməyin vaxtı gəldi. Və sonra önbelleğin yeri barədə narahat olmağa başlayırsınız və oradan da gedir. Müəyyən mənada siz abstraksiyanı sındırırsınız: bilirsiniz ki, bu, sadəcə düz, vahid yaddaş deyil və siz bu bilikdən keş-dostu proqramlar yazmaq üçün istifadə edəcəksiniz. Həqiqi problemlərdə bunu etməli olacaqsınız. Sizə verilən şirin, sadə, gözəl abstraksiya ilə əsas aparatın dəhşətli dərəcədə mürəkkəb tətbiqi arasındakı bu münaqişə hər kəsin öz güzəştini edəcəyi yerdir. Mənim multiprosessorlar və sinxronizasiya haqqında bir kitabım var və bir nöqtədə məlumat strukturları haqqında bir fəsil yazmaq niyyətində idim. java.util.concurrent. Onlara baxsanız, belə şeylər buraxılmış siyahılar Bunlar heyrətamiz sənət əsərləridir. (Redaktorun qeydi: Java dili ilə tanış olanlar heç olmasa tətbiqə nəzər salmalıdırlar ConcurrentSkipListMap, linklərdən baxa bilərsiniz API и mənbə kodu). Ancaq mənim fikrimcə, onları tələbələrə göstərmək məsuliyyətsizlik olardı, çünki belə bir məlumat strukturu bir növ sirkdəki bir oğlanın ayı çuxurunun üzərində iplə qaçmasına bənzəyir. Bir kiçik detalı belə dəyişdirsəniz, bütün struktur çökəcək. Bu kod sadəcə mükəmməl yazıldığı üçün çox sürətli və zərifdir, lakin ən kiçik dəyişiklik tam uğursuzluğa səbəb olacaq. Bu kodu tələbələrə nümunə olaraq versəm, dərhal deyəcəklər: mən də bunu edə bilərəm! Və sonra hansısa təyyarə qəzaya uğrayacaq və ya nüvə reaktoru partlayacaq və mən onlara səhv zamanda çox məlumat verməkdə günahkar olacağam.

Aleksey: Mən bir az gənc olanda dəfələrlə Doug Lee-nin mənbə kodunu öyrənməyə çalışdım, məsələn, java.util.concurrent, açıq mənbə olduğu üçün onu tapmaq və orada nə baş verdiyini anlamağa çalışmaq çox asandır. Çox yaxşı nəticə vermədi: tez-tez hər kəs bunu fərqli edərkən Doug'un niyə bu şəkildə bir şey etmək qərarına gəldiyi tamamilə aydın deyil. Bunları tələbələrinizə necə izah edirsiniz? Məsələn, sərt alqoritmin xüsusi təfərrüatlarını təsvir etmək üçün düzgün bir yol varmı? Bunu necə edirsiniz?

Maurice: Rəsm müəllimlərinin ilk olaraq xatırladıqları bir klişe var: Pikasso kimi çəkmək istəyirsinizsə, ilk növbədə sadə real şəkillər çəkməyi öyrənməlisiniz və yalnız qaydaları bildiyiniz zaman onları pozmağa başlaya bilərsiniz. Dərhal qaydaları pozmaqla başlasanız, nəticədə qarışıqlıq yaranır. Birincisi, tələbələrə performansdan narahat olmadan sadə, düzgün kod yazmağı öyrədirəm. Dediyim odur ki, burada mürəkkəb zamanlama problemləri gizlənir, ona görə də keşlər haqqında narahat olmayın, yaddaş modelləri üçün narahat olmayın, sadəcə olaraq hər şeyin düzgün işlədiyinə əmin olun. Bu, artıq kifayət qədər çətindir: müasir proqramlaşdırma özlüyündə asan deyil, xüsusən yeni tələbələr üçün. Düzgün proqramları necə yazmaq barədə intuisiyaya sahib olduqları zaman deyirəm: bu iki spinlock tətbiqinə baxın: biri çox yavaş, ikincisi də çox deyil, amma daha yaxşıdır. Ancaq riyazi olaraq iki alqoritm eynidir. Əslində, onlardan biri keş lokalizasiyasından istifadə edir. Onlardan biri yerli olaraq keşlənmiş məlumatlarla işləyir, digəri isə avtobusda dəfələrlə əməliyyatlar yerinə yetirir. Əgər onun nə olduğunu başa düşmürsənsə və mücərrədliyi pozub əsas struktura baxmağı bilmirsənsə, effektiv kod yaza bilməzsən. Ancaq bunu dərhal etməyə başlaya bilməyəcəksiniz. Elə insanlar var ki, bunu dərhal etməyə başlayır və öz dahiliyinə inanır, adətən prinsipləri başa düşmədikləri üçün sonu pis olur. Heç kim Pikasso kimi rəsm çəkmir və ya kollecdən yeni çıxmış Duq Li kimi proqramlar yazmır. Bu bilik səviyyəsinə çatmaq üçün illər lazımdır.

Aleksey: Belə çıxır ki, siz problemi iki hissəyə ayırırsınız: birincisi düzgünlük, ikincisi performansdır?

Maurice: Tam olaraq. Və məhz bu qaydada. Problemin bir hissəsi yeni tələbələrin düzgünlüyün əldə edilməsinin çətin olduğunu başa düşməmələridir. İlk baxışdan deyirlər: bu, açıq-aydın düzgündür, yalnız onu sürətləndirmək qalır. Ona görə də bəzən mən onlara ilkin səhv alqoritm haqqında deyirəm ki, sanki bu düzgün idi.

Tələbələrə mürəkkəb çoxmilli kod yazmağı necə öyrətmək olar

Aleksey: Sadəcə görmək üçün tutduqlarını hiss edə bildilərmi?

Maurice: Mən həmişə əvvəlcədən xəbərdarlıq edirəm ki, bəzən səhv alqoritmlər təklif edəcəyəm. İnsanları aldatmamalısınız. Mən onlara məlumatı duz dənəsi ilə qəbul etməyi təklif edirəm. Bir şey söyləsəm və desəm: "bax, bu açıq-aydın düzgündür" - bu, haradasa sizi aldatmağa çalışdıqlarına işarədir və siz suallar verməyə başlamalısınız. Sonra tələbələri sual verməyə təşviq etməyə çalışıram və sonra təklif edirəm: “Hər şeyi olduğu kimi qoysaq nə olacaq?” Və dərhal səhvini görürlər. Lakin tələbələri düzgünlükdən narahat olmaları lazım olduğuna inandırmaq ilk baxışda göründüyündən qat-qat çətindir. Bu tələbələrin bir çoxu orta məktəbdə proqramlaşdırma təcrübəsi ilə gəlir, bəziləri iş tapıb və orada proqramlaşdırma ilə məşğul olurlar və onların hamısı inamla doludur. Bu, ordu kimi bir şeydir: yaranan problemlərin həllinə səbirlə yanaşmağa inandırmaq üçün əvvəlcə onların əhval-ruhiyyəsini dəyişməlisən. Və ya bəlkə də Buddist rahiblərə bənzəyir: əvvəlcə düzgünlük haqqında düşünməyi öyrənirlər və düzgünlük haqqında düşünmə yollarını başa düşdükdən sonra növbəti səviyyəyə keçməyə və performans barədə narahat olmağa icazə verilir.

Aleksey: Yəni bəzən siz tələbələrə işləməyən nümunələr göstərirsiniz, bunun sayəsində onların problemin mahiyyətini başa düşüb-düşmədiklərini, səhv kodu və yanlış nəticə tapa bildiklərini göstərən rəy alırsınız. Beləliklə, tələbələr sizi adətən sevindirir, yoxsa kədərləndirir?

Maurice: Tələbələr demək olar ki, həmişə səhvi sonunda tapırlar. Əgər çox ləng axtarış etsələr, mən aparıcı suallar verirəm və burada başa düşmək lazımdır ki, əgər onları heç vaxt aldatmazsanız, sözlərinizi ağılsızcasına son həqiqət kimi qəbul etməyə başlayacaqlar. Sonra dərs zamanı noutbukda Facebook-u oxuyarkən darıxıb yuxuya getməyə başlayacaqlar. Amma onlara aldadılacaqlarını, hiylə hiss etməsələr, axmaq görünəcəklərini əvvəlcədən söylədikdə, daha ayıq olurlar. Bu, müxtəlif yollarla yaxşıdır. Mən istərdim ki, tələbələr nəinki məsələni başa düşdüklərini şübhə altına alsınlar, həm də müəllimin nüfuzunu şübhə altına alsınlar. İdeya ondan ibarətdir ki, tələbə istənilən vaxt əlini qaldırıb deyə bilər: Məncə, sizin dediyiniz səhvdir. Bu mühüm öyrənmə vasitəsidir. Tələbələrdən heç birinin oturub səssizcə öz-özünə düşünməsini istəmirəm: bütün bunlar tamamilə cəfəngiyatdır, amma əlini qaldırmaq çox qorxuludur və hər halda, o, professordur, ona görə dediyi hər şey həqiqətdir. Buna görə də, əvvəlcədən xəbərdar edilsələr ki, deyilənlərin hamısı mütləq doğru deyil, materiala daha çox diqqət yetirmək üçün bir stimul var. Mən açıq şəkildə bildirirəm ki, əlinizi qaldırıb sual vermək olar. Sualınız axmaq və ya sadəlövh görünə bilər, lakin ən yaxşı suallar çox vaxt belə yaranır.

Aleksey: Çox maraqlıdır. Adətən insanlarda professora sual verməyə imkan verməyən bir növ psixoloji maneə olur. Xüsusən də otaqda çox adam varsa və hamı sənin axmaq sualını müzakirə etməyin bu insanların bütün vaxtını alacağından qorxursa. Bununla məşğul olmaq üçün hər hansı bir hiylə varmı?

Moris: Mən tez-tez dayanıb klassik suallar verirəm. Bəyanatın doğru olub-olmaması və ya müzakirə olunan problemi necə həll edəcəkləri. Bu, xüsusilə dərsin əvvəlində insanların ən kiçik bir şeyi belə söyləməkdən utandıqları zaman əsas hərəkətdir. Siz tələbələrə sual verirsiniz və daha heç nə demirsiniz. Sükut olur, hamı bir az gərginləşir, gərginlik artır, sonra birdən kimsə dözə bilmir, sınır və cavabı deyir. Vəziyyəti belə dəyişdirirsiniz: susmağa davam etmək cavab verməkdən daha çətin və əlverişsiz olur! Bu standart pedaqoji hiylədir. Dünyadakı hər bir müəllim bunu necə edəcəyini bilməlidir.

Aleksey: İndi bu müsahibə üçün əla başlığımız var: “cavab vermək susmaqdan asandır”.

Vitali: İcazə verin bir daha soruşum. Siz topoloji sübutlar üzərində işləyirsiniz. Siz buna necə qarışdınız, çünki paylanmış hesablama və topologiya tamamilə fərqli şeylərdir!

Moris: Orada gizli bir əlaqə var. Mən riyaziyyat oxuyan tələbə olanda təmiz riyaziyyat oxuyurdum. Tədrislərim başa çatana qədər kompüterə heç bir marağım yox idi və özümü iş axtarmaq ehtiyacı ilə üzləşdim. Tələbə kimi cəbri topologiyanı öyrənmişəm. Uzun illər sonra işləyərkən bir problem çağırdı "k-Set Müqavilə Problemi", Problemi modelləşdirmək üçün qrafiklərdən istifadə etdim və o vaxt göründüyü kimi, həllini tapdım. Sadəcə oturub saymağı dolaşmaq lazım idi. Bu qrafikdə uyğun cavab tapmağa çalışın. Ancaq alqoritmim işləmədi: o, əbədi olaraq dairələrdə qaçacağı ortaya çıxdı. Təəssüf ki, bütün bunları bütün kompüter alimlərinin bildiyi qrafik nəzəriyyəsinin formal dili ilə izah etmək mümkün deyildi. Və sonra xatırladım ki, illər əvvəl topologiya dərslərində biz bu konsepsiyadan istifadə etdik "sadə kompleks", qrafiklərin daha yüksək ölçülərə ümumiləşdirilməsidir. Sonra özümə sual verdim: problemi sadə komplekslər baxımından yenidən tərtib etsək, nə baş verərdi? Bu, əsas məqam oldu. Daha güclü formalizmdən istifadə etməklə problem birdən-birə çox sadələşir. İnsanlar uzun müddət qrafiklərdən istifadə edərək buna qarşı mübarizə apardılar, lakin heç nə edə bilmədilər. İndi də bacarmırlar - düzgün cavab bir alqoritm deyil, problemi həll etməyin mümkünsüzlüyünün sübutu oldu. Yəni belə bir alqoritm sadəcə mövcud deyil. Amma mümkünsüzlüyün hər bir sübutu ya sadə komplekslərə, ya da insanların sadə kompleksləri hesab etmədiklərini iddia etdikləri şeylərə əsaslanır. Sadəcə nəyisə yeni adla çağırdığınız üçün o, mahiyyətini itirmir.

Vitali: Belə çıxır ki, bəxtiniz gətirdi?

Maurice: Uğurdan başqa, həm də hazırlıq. Bu o deməkdir ki, əvvəllər öyrəndiyiniz “faydasız” şeyləri unutmamalısınız. Nə qədər çox faydasız şeylər öyrənsəniz, yeni problemlə qarşılaşdığınız zaman bir o qədər çox fikir çıxara bilərsiniz. Bu cür intuitiv nümunə uyğunluğu ona görə vacibdir ki... Gəlin bunu edək, bu bir zəncirdir: əvvəlcə qrafiklərin ümumiyyətlə işləmədiyini və ya işləmədiyini kəşf etdim, bu mənə səkkiz hadisədən bir şeyi xatırlatdı. illər əvvəl və mənim tələbəlik illərim, bütün bu sadə kompleksləri öyrəndiyimiz zaman. Bu, öz növbəsində mənə köhnə topologiya dərsliyimi tapmağa və onu yenidən ağlıma yükləməyə imkan verdi. Amma o köhnə bilik olmasaydı, mən əsla problemin həllində heç vaxt irəliləyiş əldə etməzdim.

“Çox prosessorlu proqramlaşdırma sənəti” kitabının yeni nəşri

Aleksey: Kitabınız haqqında bir neçə kəlmə dediniz. Çoxilli oxuma mövzusunda dünyanın ən məşhur kitabını yazmağınız yəqin ki, ən pis sirr deyil. "Çox prosessorlu proqramlaşdırma sənəti". Artıq 11 yaşı var və o vaxtdan bəri yalnız buraxılıb  yenidən işlənmiş təkrar çap. İkinci nəşr olacaqmı?

Moris: Nə yaxşı ki, soruşdun! Çox yaxında, üç aydan sonra olacaq. Daha iki müəllif var, biz daha çox material əlavə etdik, çəngəl/qoşulma paralelliyi bölməsini təkmilləşdirdik, MapReduce-da bölmə yazdıq, çoxlu yeni şeylər əlavə etdik və lazımsız şeyləri atdıq – bu yazı yazarkən çox maraqlı idi. ilk nəşr, lakin bu gün artıq yoxdur. Nəticə çox ciddi şəkildə yenidən işlənmiş bir kitab oldu.

Aleksey: Artıq hər şey edilib, qalan onu buraxmaqdır?

Maurice: Bir neçə fəsildə hələ bir az iş lazımdır. Naşirimiz (məncə, artıq bizə nifrət edir) hələ də daha sürətli işləməli olduğumuz mesajını çatdırmağa çalışır. Biz qrafikdən xeyli geri qalmışıq. Teorik olaraq, biz bu kitabı bir neçə il əvvəl edə bilərdik.

Aleksey: Miladdan əvvəl kitabın yeni versiyasını əldə etmək şansınız varmı?

Maurice: Bu bizim məqsədimizdir! Amma qələbəni o qədər proqnozlaşdırmışam ki, artıq heç kim mənə inanmır. Yəqin ki, bu məsələdə də mənə çox güvənməməlisən.

Aleksey: Hər halda, bu fantastik xəbərdir. Kitabın ilk nəşrini çox bəyəndim. Deyə bilərsən ki, mən azarkeşəm.

Moris: Ümid edirəm ki, yeni nəşr sizin qızğın həvəsinizə layiq olacaq, təşəkkür edirəm!

Transaksiya yaddaşı necə icad edilmişdir

Vitali: Növbəti sual əməliyyat yaddaşına aiddir. Mən başa düşdüyümə görə, siz bu sahədə qabaqcılsınız, heç kimin belə şeylər haqqında düşünmədiyi bir vaxtda icad etmisiniz. Niyə bu sahəyə keçməyə qərar verdiniz? Nə üçün əməliyyatlar sizə vacib görünürdü? Onların nə vaxtsa aparatda tətbiq olunacağını düşünürdünüzmü?

Maurice: Mən əməliyyatlar haqqında məzun tədqiqat günlərimdən bəri bilirəm.

Vitali: Bəli, amma bunlar fərqli əməliyyatlardır!

Maurice: Mən Elliott Moss ilə bloklanmayan zibil yığılması üzərində işləmişəm. Problemimiz ondan ibarət idi ki, yaddaşda bir neçə sözü atomik şəkildə dəyişmək istəyirdik və sonra alqoritmlər çox sadələşəcək və heç olmasa bəziləri daha səmərəli olacaq. İstifadə müqayisə et və dəyişdir uğrunda yükləmə-link/mağaza-şərtiParalel arxitektura tərəfindən təmin edilən, nəyisə etmək mümkündür, lakin bu, çox səmərəsiz və çirkindir, çünki dolayı qatlarla məşğul olmaq məcburiyyətində qalacaqsınız. Mən yaddaş sözlərini dəyişmək istəyirəm və keçid etməliyəm, çünki mən yalnız bir göstəricini dəyişə bilərəm, ona görə də onlar bir növ kataloqa bənzər struktura işarə etməlidirlər. Biz eyni vaxtda qeyd apara bilməsi üçün avadanlığı dəyişdirə bilsək, nə qədər gözəl olacağını danışdıq. Elliott, deyəsən, bunu fərq etdi: keş koherentlik protokollarına baxsanız, onlar artıq tələb olunan funksionallığın əksəriyyətini təmin edirlər. Optimist bir əməliyyatda, keş koherentliyi protokolu zamanlama ziddiyyətinin olduğunu görəcək və önbelleğe çevriləcək. etibarsızdır. Əgər spekulyativ olaraq keşinizdə əməliyyat aparsanız və münaqişələri aşkar etmək üçün uyğunluq protokolu mexanizmlərindən istifadə etsəniz nə olacaq? Spekulyativ aparat arxitekturasının dizaynı asan idi. Beləliklə, biz bunu yazdıq ilk nəşridir əməliyyat yaddaşı haqqında. Eyni zamanda, işlədiyim şirkət Digital Equipment Corporation Alpha adlı yeni 64 bitlik prosessor yaradırdı. Mən getdim və Alpha inkişaf qrupuna heyrətamiz əməliyyat yaddaşımız haqqında təqdimat verdim və onlar soruşdular: Bütün bunları birbaşa prosessora əlavə etsək, şirkətimiz nə qədər əlavə gəlir əldə edərdi? Və buna heç bir cavabım yox idi, çünki mən texnoloqam, marketinq mütəxəssisi deyiləm. Həqiqətən cavab verəcək heç nəyim yox idi. Mənim heç nə bilməməyim onlara çox da təsir etmədi.

Vitali: Milyarlarla! Sadəcə milyardlar deyin!

Moris: Bəli, bunu deməliydim. İndi, startaplar və hər şey dövründə, biznes planı necə yazacağımı bilirəm. Potensial qazancınızın ölçüsü haqqında bir az yalan danışa bilərsiniz. Amma o günlər sadəlövh görünürdü, ona görə də sadəcə “bilmirəm” dedim. Transaksiya yaddaşına dair nəşrin tarixinə nəzər salsanız, görərsiniz ki, bir ildən sonra ona bir neçə istinad olub və sonra təxminən on il ərzində heç kim bu yazıya ümumiyyətlə istinad etməyib. Sitatlar 2004-cü ildə, əsl multi-nüvələr meydana çıxdıqda ortaya çıxdı. İnsanlar paralel kod yazmağın pul qazana biləcəyini kəşf etdikdə, yeni araşdırmalar başladı. Ravi Rajvar məqalə yazdı, hansısa şəkildə tranzaksiya yaddaşı anlayışını əsas cərəyana təqdim etdi. (Redaktorun qeydi: Bu məqalənin 2010-cu ildə buraxılmış və sərbəst şəkildə əldə edilə bilən ikinci versiyası var PDF olaraq). Birdən insanlar bütün bunların necə istifadə oluna biləcəyini, kilidləri olan ənənəvi alqoritmlərin necə sürətləndirilə biləcəyini dəqiq başa düşdülər. Keçmişdə sadəcə maraqlı bir akademik problem kimi görünən bir şeyə yaxşı bir nümunə. Bəli, o zaman məndən bütün bunların gələcəkdə vacib olacağını düşünüb-düşünmədiyimi soruşsaydınız, deyərdim: əlbəttə, amma dəqiq nə vaxt aydın deyil. Bəlkə 50 ildən sonra? Praktikada bunun cəmi on il olduğu ortaya çıxdı. Bir şey edəndə və cəmi on ildən sonra insanlar bunu fərq edəndə çox gözəldir.

Niyə paylanmış hesablamalar sahəsində tədqiqat aparmağa dəyər?

Vitali: Əgər yeni tədqiqatlardan danışsaq, oxuculara nə məsləhət görərdiniz - paylanmış hesablamalar, yoxsa çox nüvəli və niyə? 

Maurice: Bu günlərdə çoxnüvəli prosessor əldə etmək asandır, lakin həqiqi paylanmış sistemi qurmaq daha çətindir. Onlar üzərində işləməyə başladım, çünki namizədlik dissertasiyamdan fərqli bir iş görmək istəyirdim. Həmişə yeni tələbələrə verdiyim məsləhət budur: dissertasiyanızın davamını yazmayın - yeni istiqamətə getməyə çalışın. Və həmçinin, multithreading asandır. Yataqdan qalxmadan öz çəngəlimlə laptopumda işləyə biləcəyim təcrübəni edə bilərəm. Amma birdən real paylanmış sistem yaratmaq istəsəm, çox iş görməli, tələbələri cəlb etməli və s. Mən tənbəl insanam və çox nüvə üzərində işləməyi üstün tuturam. Çox nüvəli sistemlərdə təcrübə aparmaq, paylanmış sistemlərdə təcrübə aparmaqdan daha asandır, çünki hətta axmaq paylanmış sistemdə də nəzarət edilməli olan çoxlu amillər var.

Vitali: İndi nə edirsən, blockchain-i araşdırırsan? İlk olaraq hansı məqalələrə diqqət etməlisiniz?

Maurice: Bu yaxınlarda ortaya çıxdı çox yaxşı məqalə, tələbəm Vikram Saraf ilə birlikdə, xüsusən də söhbət üçün yazdım Tokenomcs konfransı üç həftə əvvəl Parisdə. Bu, Ethereum-u çox yivli etməyi təklif etdiyimiz praktik paylanmış sistemlər haqqında məqalədir. Hazırda ağıllı müqavilələr (blokçeyndə işləyən kod) ardıcıl olaraq icra olunur. Biz daha əvvəl bir məqalə yazmışdıq, burada prosesi sürətləndirmək üçün spekulyativ əməliyyatlardan istifadə etməyin yollarından bəhs etmişdik. Biz proqramın əməliyyat yaddaşından çoxlu ideyalar götürdük və dedik ki, əgər siz bu ideyaları Etherium virtual maşınının bir hissəsi etsəniz, onda hər şey daha sürətli işləyəcək. Ancaq bunun üçün müqavilələrdə heç bir məlumat ziddiyyətinin olmaması lazımdır. Və sonra biz güman etdik ki, real həyatda həqiqətən belə münaqişələr yoxdur. Ancaq öyrənmək üçün heç bir yolumuz yox idi. Sonra ağlımıza gəldi ki, əlimizdə demək olar ki, onillik real müqavilə tariximiz var, buna görə Ethereum blokçeynini atdıq və özümüzə sual verdik: bu tarixi qeydlər paralel olaraq icra edilsə nə olacaq? Sürətdə əhəmiyyətli bir artım tapdıq. Ethereum-un ilk günlərində sürət çox artdı, lakin bu gün hər şey bir qədər mürəkkəbdir, çünki daha az müqavilələr var və serializasiya tələb edən məlumatlar üzərində münaqişələrin olma ehtimalı daha yüksək olub. Ancaq bütün bunlar real tarixi məlumatlarla eksperimental işdir. Blockchain-in gözəl tərəfi odur ki, o, hər şeyi əbədi olaraq xatırlayır, ona görə də biz keçmişə qayıdıb kodu işlətmək üçün müxtəlif alqoritmlərdən istifadə etsəydik nə baş verə biləcəyini öyrənə bilərik. Keçmişdə insanlar bizim yeni ideyamızı necə bəyənərdilər? Belə bir araşdırma aparmaq daha asan və daha zövqlüdür, çünki hər şeyi izləyən və hər şeyi qeyd edən bir şey var. Bu, artıq alqoritmlərin hazırlanmasından daha çox sosiologiyaya bənzəyir.

Alqoritmlərin inkişafı dayanıb və necə davam etmək olar?

Vitali: Son nəzəri sualın vaxtı gəldi! Rəqabətli məlumat strukturlarında irəliləyişin hər il azaldığı hiss olunurmu? Sizcə, məlumat strukturları haqqında anlayışımızda bir platoya çatdıqmı və ya bəzi böyük irəliləyişlər olacaq? Bəlkə hər şeyi tamamilə dəyişdirə biləcək bəzi ağıllı fikirlər var?

Maurice: Biz ənənəvi memarlıqlar üçün məlumat strukturlarında bir yaylaya çatmış ola bilərik. Lakin yeni arxitekturalar üçün məlumat strukturları hələ də çox perspektivli sahədir. Əgər siz, məsələn, aparat sürətləndiriciləri üçün məlumat strukturları yaratmaq istəyirsinizsə, onda GPU üçün məlumat strukturları CPU üçün məlumat strukturlarından çox fərqlidir. Blockchainlər üçün məlumat strukturlarını hazırladığınız zaman, məlumat parçalarını hash etməli və sonra onları bənzər bir şeyə yerləşdirməlisiniz Merkle ağacı, saxtakarlığın qarşısını almaq üçün. Son vaxtlar bu sahədə aktivlik müşahidə olunur, çoxları çox yaxşı işlər görürlər. Ancaq düşünürəm ki, yeni arxitekturalar və yeni tətbiqlər yeni məlumat strukturlarına gətirib çıxaracaq. Köhnə tətbiqlər və ənənəvi memarlıq - artıq kəşfiyyat üçün çox yer olmaya bilər. Amma yoldan çıxsanız və kənarlara baxsanız, əsas axının ciddi qəbul etmədiyi çılğın şeylər görəcəksiniz - bütün maraqlı şeylər həqiqətən burada baş verir.

Vitali: Ona görə də çox məşhur tədqiqatçı olmaq üçün öz memarlığımı icad etməli oldum :)

Maurice: Başqasının yeni arxitekturasını "oğurlaya" bilərsiniz - bu, daha asan görünür!

Brown University adlı yerdə işləyir

Vitali: Bizə daha ətraflı məlumat verə bilərsiniz Brown Universitetiharada işləyirsən? İnformasiya texnologiyaları kontekstində onun haqqında çox şey məlum deyil. Məsələn, MIT-dən daha az.

Maurice: Brown Universiteti ABŞ-ın ən qədim universitetlərindən biridir. Məncə, yalnız Harvard bir az yaşlıdır. Qəhvəyi sözdə bir hissəsidir Ivy Liqasəkkiz ən qədim universitetin toplusudur. Harvard, Braun, Kornell, Yale, Kolumbiya, Dartmut, Pensilvaniya, Prinston. Bu, bir növ köhnə, kiçik və bir az aristokratik bir universitetdir. Əsas diqqət liberal sənət təhsilinə yönəlib. MIT kimi olmağa çalışmır, MİT çox ixtisaslaşmış və texnikidir. Brown rus ədəbiyyatını və ya klassik yunan dilini və əlbəttə ki, kompüter elmlərini öyrənmək üçün əla yerdir. O, hərtərəfli təhsilə diqqət yetirir. Tələbələrimizin çoxu Facebook, Apple, Google-a gedir - buna görə də düşünürəm ki, tələbələrimiz sənayedə iş tapmaqda heç bir problem görmürlər. Mən Brown-da işləməyə getdim, çünki əvvəllər Bostonda Digital Equipment Corporation-da işləmişəm. Bu, bir çox maraqlı şeylər icad edən, lakin fərdi kompüterlərin əhəmiyyətini inkar edən bir şirkət idi. Təsisçiləri bir vaxtlar gənc inqilabçılar olan çətin taleyi olan bir şirkət, onlar heç nə öyrənmədilər və heç nəyi unutmadılar və buna görə də təxminən on il ərzində inqilabçılardan mürtəceyə çevrildilər. Onlar şəxsi kompüterlərin qaraja - əlbəttə ki, tərk edilmiş qaraja aid olması ilə bağlı zarafat etməyi xoşlayırdılar. Onların daha çevik şirkətlər tərəfindən məhv edildiyi aydındır. Şirkətin problem içində olduğu aydın olanda Bostondan təxminən bir saat kənarda yerləşən Braundakı dostuma zəng etdim. O vaxt Bostonu tərk etmək istəmirdim, çünki başqa universitetlərdə çoxlu açılışlar yox idi. Bu, Kompüter Elmində indiki qədər çox işin olmadığı bir dövr idi. Və Braunun açılışı var idi, mən evimi köçürməli deyildim, ailəmi köçürməli deyildim və mən Bostonda yaşamağı çox sevirəm! Beləliklə, mən Brauna getməyə qərar verdim. Mənim bundan xoşum gəlir. Tələbələr gözəldir, ona görə də heç vaxt başqa yerə getməyə çalışmamışam. Tətildə olduğum müddətdə bir il Microsoft-da işlədim, bir il Hayfadakı Technion-a getdim və indi Algorand-da olacağam. Hər yerdə çoxlu həmkarlarım var və buna görə də sinif otaqlarımızın fiziki yeri o qədər də vacib deyil. Amma ən əsası tələbələrdir, onlar burada ən yaxşısıdırlar. Heç vaxt başqa yerə getməyə çalışmamışam, çünki burada çox xoşbəxtəm.

Braunun ABŞ-dakı şöhrətinə baxmayaraq, xaricdə təəccüblü şəkildə tanınmır. Gördüyünüz kimi, mən indi bu vəziyyəti düzəltmək üçün mümkün olan hər şeyi edirəm.

Universitetdə və korporasiya daxilində tədqiqat arasında fərq

Vitali: Yaxşı, növbəti sual Rəqəmsal Avadanlıqlar haqqındadır. Siz tədqiqatçı kimi orada idiniz. Böyük bir şirkətin R&D şöbəsində işləmək ilə universitetdə işləmək arasında nə fərq var? Üstünlükləri və mənfi cəhətləri hansılardır?

Maurice: İyirmi il Microsoft-da işləmişəm, Sun Microsystems, Oracle, Facebook və indi Algorand-ın əməkdaşları ilə sıx əməkdaşlıq etmişəm. Bütün bunlara əsaslanaraq demək istəyirəm ki, həm şirkətlərdə, həm də universitetlərdə birinci dərəcəli tədqiqatlar aparmaq mümkündür. Əhəmiyyətli fərq odur ki, bir şirkətdə həmkarlarınızla işləyirsiniz. Əgər birdən əlimə hələ mövcud olmayan layihə ilə bağlı ideya gəlsə, həmyaşıdlarımı bunun yaxşı fikir olduğuna inandırmalıyam. Əgər mən Braundayamsa, o zaman tələbələrimə deyə bilərəm: gəlin antiqravitasiya üzərində işləyək! Ya başqasına gedəcəklər, ya da bir layihə götürəcəklər. Bəli, maliyyə tapmalı olacağam, qrant ərizəsi yazmalıyam və s. Hər halda, həmişə çoxlu tələbə olacaq və siz birtərəfli qaydada qərar verə biləcəksiniz. Amma universitetdə çox güman ki, səviyyənizdə olan insanlarla işləməyəcəksiniz. Sənaye tədqiqatları dünyasında əvvəlcə hər kəsi layihənizin üzərinə götürməyə dəyər olduğuna inandırmalısınız. Heç kimə heç nə sifariş edə bilmərəm. Və bu iş üsullarının hər ikisi dəyərlidir, çünki həqiqətən dəli bir şey üzərində işləyirsinizsə və həmkarlarınızı inandırmaq çətindirsə, aspirantları inandırmaq daha asandır - xüsusən də onlara pul ödəyirsinizsə. Əgər siz çoxlu təcrübə və dərin təcrübə tələb edən bir iş üzərində işləyirsinizsə, o zaman sizə “yox, elə olur ki, mən bu sahədə başa düşürəm və sizin fikriniz pisdir, işləməyəcək” deyə bilən həmkarlarınız lazımdır. Bu, vaxt itkisi baxımından çox faydalıdır. Həmçinin sənaye laboratoriyalarında hesabat yazmağa çox vaxt sərf edirsənsə, universitetdə bu vaxtı pul tapmağa sərf edirsən. Əgər tələbələrin harasa gedə bilməsini istəyirəmsə, bunun üçün pulu başqa yerdə tapmalıyam. Və universitetdəki vəzifəniz nə qədər vacib olsa, pul toplamağa bir o qədər çox vaxt sərf etməlisiniz. Beləliklə, indi bilirsiniz ki, nə üçün işləyirəm - peşəkar dilənçi! Təklif qabı ilə gəzən rahiblərdən biri kimi. Ümumiyyətlə, bu iki fəaliyyət bir-birini tamamlayır. Ona görə də hər iki dünyada yaşamağa, ayaqlarımı yerdə saxlamağa çalışıram.

Vitali: Belə görünür ki, bir şirkəti inandırmaq digər alimləri inandırmaqdan daha çətindir.

Maurice: Daha çətin və daha çox. Üstəlik, müxtəlif sahələrdə fərqlidir: bəziləri tam miqyaslı tədqiqat aparır, digərləri isə mövzularına diqqət yetirirlər. “Microsoft”a və ya “Facebook”a gedib desəm ki, anti-qravitasiya edək, çətin ki, qiymətləndirsinlər. Ancaq aspirantlarıma eyni şeyi desəm, onlar çox güman ki, dərhal işə düşəcəklər, baxmayaraq ki, indi problemlərim olacaq - axı, bunun üçün pul tapmalıyam. Ancaq şirkətin məqsədlərinə uyğun bir şey etmək istədiyiniz müddətcə, bu şirkət araşdırma aparmaq üçün çox yaxşı bir yer ola bilər.

Hydra və SPTDC

Vitali: Suallarım başa çatmaq üzrədir, gəlin bir az Rusiyaya qarşıdakı səfərdən danışaq.

Moris: Bəli, mən Sankt-Peterburqa qayıtmağı səbirsizliklə gözləyirəm.

Aleksey: Bu il sizin yanımızda olmaqdan qürur duyuram. Bu, ikinci dəfədir ki, Sankt-Peterburqdasınız, elə deyilmi?

Maurice: Artıq üçüncüdür!

Aleksey: Başa düşürəm, amma SPTDC - mütləq ikinci. Keçən dəfə məktəbə zəng etdilər SPTCC, bu il xüsusi olaraq paylanmış hesablama ilə əlaqəli daha çox sahənin olduğunu vurğulamaq üçün indi bir hərfi (C-dən D, Concurrent to Distributed) dəyişdik. Məktəbdəki hesabatlarınız haqqında bir neçə söz deyə bilərsiniz və Hydra konfransı?

Maurice: Məktəbdə mən blokçeynin əsasları və onunla nə edə biləcəyiniz haqqında danışmaq istəyirəm. Göstərmək istərdim ki, blokçeynlər bizə tanış olan çox yivli proqramlaşdırmaya çox bənzəyir, lakin öz nüansları ilə və bu fərqləri başa düşmək vacibdir. Adi bir veb proqramında səhv etsəniz, bu, sadəcə olaraq bezdiricidir. Əgər maliyyə proqramında buggy kodu yazsanız, kimsə mütləq bütün pullarınızı oğurlayacaq. Bunlar tamamilə fərqli məsuliyyət səviyyələri və nəticələrdir. Mən işin sübutu, ağıllı müqavilələr, müxtəlif blokçeynlər arasında əməliyyatlar haqqında bir az danışacağam.

Yanımda işləyən digər natiqlər də olacaq ki, onların da blokçeyn haqqında deyəcəkləri var və biz bir-birimizlə koordinasiya etməyə razılaşdıq ki, hekayələrimiz bir-birinə yaxşı uyğun olsun. Lakin mühəndislik hesabatı üçün mən geniş auditoriyaya nə üçün blokçeynlər haqqında eşitdiyiniz hər şeyə inanmamağınız, blokçeynlərin niyə böyük bir sahə olduğunu, digər məlum ideyalarla necə uyğunlaşdığını və nə üçün cəsarətlə baxmaq lazım olduğuna dair başa düşülən izahat vermək istəyirəm. gələcəyə.

Aleksey: Bundan əlavə, demək istəyirəm ki, bu, iki il əvvəl olduğu kimi, görüş və ya istifadəçi qrupu formatında baş tutmayacaq. Məktəbin yaxınlığında kiçik bir konfrans keçirmək qərarına gəldik. Səbəb odur ki, Pyotr Kuznetsovla ünsiyyətdən sonra anladıq ki, məktəb cəmi yüz, bəlkə də 120 nəfərlə məhdudlaşır. Eyni zamanda sizinlə ünsiyyət qurmaq, təqdimatlarda iştirak etmək istəyən, ümumiyyətlə mövzu ilə maraqlanan çoxlu sayda mühəndis var. Bu səbəbdən biz yeni konfrans yaratdıq Hydra adlanır. Yeri gəlmişkən, Hydra nə üçün bir fikir var?

Maurice: Çünki yeddi natiq olacaq? Və onların başları kəsilə bilər və onların yerində yeni natiqlər böyüyəcək?

Aleksey: Yeni natiqlər yetişdirmək üçün əla fikir. Amma əslində burada bir hekayə var. Odysseus əfsanəsini xatırlayın, o, arasında üzmək məcburiyyətində qaldı Scylla və Charybdis? Hydra Charybdis kimi bir şeydir. Hekayə ondan ibarətdir ki, bir dəfə konfransda çıxış etdim və multithreading haqqında danışdım. Bu konfransda cəmi iki trek var idi. Məruzənin əvvəlində zaldakı tamaşaçılara dedim ki, indi Scylla və Charybdis arasında seçim edirlər. Mənim ruhi heyvanım Charybdisdir, çünki Charybdisin çoxlu başı var və mövzum çox yivlidir. Konfransların adları belə görünür.

Hər halda, suallarımız və vaxtımız tükəndi. Beləliklə, dostlar, əla müsahibə üçün təşəkkür edirik və SPTDC School və Hydra 2019-da görüşənədək!

Maurice ilə söhbətinizi 2019-11 iyul 12-cu il tarixlərində Sankt-Peterburqda keçiriləcək Hydra 2019 konfransında davam etdirə bilərsiniz. O, hesabatla gələcək "Blokçeynlər və paylanmış hesablamaların gələcəyi". Biletləri əldə etmək olar rəsmi saytında.

Mənbə: www.habr.com

Добавить комментарий