“Lebih mudah menjawab daripada diam” - wawancara hebat dengan bapak memori transaksional, Maurice Herlihy

Maurice Herlihy - pemilik dua Hadiah Dijkstra. Yang pertama adalah untuk dikerjakan "Sinkronisasi Tanpa Tunggu" (Brown University) dan yang kedua, yang lebih baru, - "Memori Transaksional: Dukungan Arsitektur untuk Struktur Data Bebas Kunci" (Universitas Teknologi Virginia). Hadiah Dijkstra diberikan untuk karya yang signifikansi dan pengaruhnya telah terlihat setidaknya selama sepuluh tahun dan Maurice jelas merupakan salah satu spesialis paling terkenal di bidangnya. Dia saat ini bekerja sebagai profesor di Brown University dan memiliki banyak prestasi sepanjang satu paragraf. Dia saat ini sedang meneliti blockchain dalam konteks komputasi terdistribusi klasik.

Sebelumnya Maurice sudah datang ke Rusia untuk SPTCC (kaset video) dan mengadakan pertemuan luar biasa dengan komunitas pengembang Java JUG.ru di St.kaset video).

Habrapost ini adalah wawancara yang bagus dengan Maurice Herlihy. Ini membahas topik-topik berikut:

  • Interaksi antara akademisi dan industri;
  • Landasan Penelitian Blockchain;
  • Dari mana datangnya ide-ide terobosan? Pengaruh popularitas;
  • PhD di bawah pengawasan Barbara Liskov;
  • Dunia sedang menunggu multi-core;
  • Dunia baru membawa masalah baru. NVM, NUMA dan peretasan arsitektur;
  • Kompiler vs prosesor, RISC vs CISC, memori bersama vs penyampaian pesan;
  • Seni menulis kode multi-utas yang rapuh;
  • Bagaimana cara mengajar siswa menulis kode multi-utas yang kompleks;
  • Edisi baru buku “The Art of Multiprocessor Programming”;
  • Bagaimana memori transaksional ditemukan;   
  • Mengapa penelitian di bidang komputasi terdistribusi layak dilakukan;
  • Apakah pengembangan algoritme telah berhenti, dan bagaimana cara melanjutkannya;
  • Bekerja di Universitas Brown;
  • Perbedaan antara penelitian di universitas dan di perusahaan;
  • Hydra dan SPTDC.

Wawancara dilakukan oleh:

Vitaly Aksenov — saat ini, pasca doktoral di IST Austria dan karyawan Departemen Teknologi Komputer di Universitas ITMO. Melakukan penelitian di bidang teori dan praktik struktur data kompetitif. Sebelum bekerja di IST, ia menerima gelar PhD dari Paris Diderot University dan ITMO University di bawah pengawasan Profesor Peter Kuznetsov.

Alexey Fedorov - Produser di JUG Ru Group, sebuah perusahaan Rusia yang menyelenggarakan konferensi untuk pengembang. Alexei berpartisipasi dalam persiapan lebih dari 50 konferensi, dan resumenya mencakup segala hal mulai dari posisi insinyur pengembangan di Oracle (JCK, Java Platform Group) hingga posisi pengembang di Odnoklassniki.

Vladimir Sitnikov - Insinyur di Netcracker. Sepuluh tahun bekerja pada kinerja dan skalabilitas NetCracker OS, perangkat lunak yang digunakan oleh operator telekomunikasi untuk mengotomatisasi proses manajemen jaringan dan peralatan jaringan. Tertarik dengan masalah kinerja Java dan Oracle Database. Penulis lebih dari selusin peningkatan kinerja pada driver resmi PostgreSQL JDBC.

Interaksi antara akademisi dan industri

Alexei: Maurice, Anda sudah lama bekerja di lingkungan akademik dan pertanyaan pertama adalah interaksi antara bidang akademik dan industri. Bisakah Anda menjelaskan perubahan interaksi di antara mereka akhir-akhir ini? Apa yang terjadi 20-30 tahun lalu dan apa yang terjadi sekarang? 

Maurice: Saya selalu berusaha bekerja sama dengan perusahaan komersial karena mereka mempunyai masalah yang menarik. Mereka, pada umumnya, tidak terlalu tertarik untuk mempublikasikan hasil mereka atau menjelaskan secara rinci masalah mereka kepada masyarakat dunia. Mereka hanya tertarik untuk menyelesaikan permasalahan tersebut. Saya bekerja untuk perusahaan seperti itu selama beberapa waktu. Saya menghabiskan lima tahun bekerja penuh waktu di laboratorium penelitian di Digital Equipment Corporation, yang dulunya merupakan perusahaan komputer besar. Saya bekerja satu hari dalam seminggu di Sun, di Microsoft, di Oracle, dan melakukan sedikit pekerjaan di Facebook. Sekarang saya akan mengambil cuti panjang (seorang profesor di universitas Amerika diperbolehkan mengambil cuti selama satu tahun kira-kira setiap enam tahun sekali) dan bekerja di Algorand, ini adalah perusahaan cryptocurrency di Boston. Bekerja sama dengan perusahaan selalu menyenangkan karena dengan cara itulah Anda belajar hal-hal baru dan menarik. Anda bahkan mungkin menjadi orang pertama atau kedua yang menerbitkan artikel tentang topik yang dipilih, alih-alih berupaya meningkatkan solusi secara bertahap terhadap masalah yang sudah ditangani orang lain.

Alexei: Bisakah Anda memberi tahu kami lebih detail bagaimana hal ini bisa terjadi?

Maurice: Tentu saja. Anda tahu, ketika saya bekerja di Digital Equipment Corporation, saya dan Elliot Moss, kami menemukan memori transaksional. Itu adalah periode yang sangat bermanfaat ketika semua orang mulai tertarik pada teknologi informasi. Paralelisme, termasuk, meskipun sistem multi-core belum ada. Selama masa Sun dan Oracle, saya banyak bekerja pada struktur data paralel. Di Facebook saya mengerjakan proyek blockchain mereka, yang tidak dapat saya bicarakan, tapi saya berharap proyek ini segera dipublikasikan. Tahun depan, di Algorand, saya akan bekerja di kelompok penelitian yang mempelajari kontrak pintar.

Alexei: Blockchain telah menjadi topik yang sangat populer dalam beberapa tahun terakhir. Apakah ini akan membantu penelitian Anda? Mungkinkah hal ini akan mempermudah memperoleh hibah atau memberikan akses terhadap sumber daya dari perusahaan yang beroperasi di industri ini?

Maurice: Saya sudah menerima hibah kecil dari Ethereum Foundation. Kepopuleran blockchain sangat membantu menginspirasi mahasiswa untuk berkarya di bidang ini. Mereka sangat tertarik dan bersemangat untuk terlibat, namun terkadang mereka tidak menyadari bahwa penelitian yang terdengar menarik di luar ternyata membutuhkan kerja keras. Namun, saya sangat bersemangat untuk menggunakan semua mistik seputar blockchain untuk membantu menarik siswa. 

Tapi itu belum semuanya. Saya berada di dewan penasihat beberapa startup blockchain. Beberapa di antara mereka mungkin berhasil, beberapa di antaranya mungkin tidak, namun selalu menarik untuk melihat ide-ide mereka, mempelajarinya, dan menasihati orang. Hal yang paling mengasyikkan adalah ketika Anda memperingatkan orang untuk tidak melakukan sesuatu. Banyak hal yang tampak seperti ide bagus pada awalnya, tapi benarkah?

Landasan Penelitian Blockchain

Vitaly: Beberapa orang berpikir bahwa masa depan terletak pada blockchain dan algoritmanya. Dan orang lain mengatakan itu hanyalah gelembung biasa. Bisakah Anda membagikan pendapat Anda tentang masalah ini?

Maurice: Banyak hal yang terjadi di dunia blockchain yang salah, ada pula yang hanya penipuan, banyak juga yang dilebih-lebihkan. Namun, menurut saya ada dasar ilmiah yang kuat untuk penelitian ini. Fakta bahwa dunia blockchain penuh dengan perbedaan ideologi menunjukkan tingkat kegembiraan dan dedikasinya. Di sisi lain, hal ini tidak terlalu bermanfaat bagi penelitian ilmiah. Sekarang, jika Anda menerbitkan artikel yang membahas tentang kekurangan algoritma tertentu, reaksi yang dihasilkan tidak selalu sepenuhnya ilmiah. Seringkali orang meluapkan emosinya. Saya pikir kegembiraan di bidang ini mungkin tampak menarik bagi sebagian orang, namun pada akhirnya, ada masalah ilmiah dan teknik nyata yang perlu diatasi. Ada banyak Ilmu Komputer di sini.

Vitaly: Jadi Anda mencoba meletakkan dasar untuk penelitian blockchain, bukan?

Maurice: Saya mencoba untuk meletakkan dasar bagi disiplin ilmu yang kokoh, sehat secara ilmiah dan matematis. Dan sebagian masalahnya adalah terkadang Anda harus menentang beberapa pendirian orang lain yang terlalu keras dan mengabaikannya. Terkadang orang bertanya mengapa saya bekerja di wilayah yang hanya diminati oleh teroris dan pengedar narkoba. Reaksi seperti itu tidak ada artinya seperti perilaku pengikut yang mengulangi perkataan Anda secara membabi buta. Saya pikir kebenarannya ada di tengah-tengah. Blockchain akan mempunyai dampak yang besar terhadap masyarakat dan perekonomian global. Namun hal ini mungkin tidak akan terjadi berkat teknologi modern. Teknologi modern akan berkembang dan apa yang disebut blockchain di masa depan akan menjadi sangat penting. Ini mungkin tidak terlihat seperti blockchain modern, itu adalah pertanyaan terbuka.

Jika orang menemukan teknologi baru, mereka akan terus menyebutnya blockchain. Maksud saya, sama seperti Fortran saat ini tidak ada hubungannya dengan bahasa Fortran dari tahun 1960-an, tetapi semua orang tetap menyebutnya Fortran. Sama untuk UNIX. Apa yang disebut “blockchain” masih akan melakukan revolusi. Tapi saya ragu blockchain baru ini akan menjadi sesuatu yang disukai semua orang saat ini.

Dari mana datangnya ide-ide terobosan? Dampak popularitas

Alexei: Apakah popularitas blockchain membawa hasil baru dari sudut pandang ilmiah? Lebih banyak interaksi, lebih banyak pelajar, lebih banyak perusahaan di area tersebut. Apakah sudah ada dampak dari peningkatan popularitas ini?

Maurice: Saya menjadi tertarik dengan hal ini ketika seseorang memberi saya brosur resmi untuk sebuah perusahaan yang baru saja mengumpulkan cukup banyak uang. Itu menulis tentang tugas para jenderal Bizantium, yang sangat saya kenal. Apa yang tertulis di brosur itu jelas-jelas salah secara teknis. Orang-orang yang menulis semua ini tidak begitu memahami model di balik masalah ini... namun perusahaan ini mengumpulkan banyak uang. Selanjutnya, perusahaan diam-diam mengganti selebaran ini dengan versi yang jauh lebih benar - dan saya tidak akan menyebutkan apa nama perusahaan ini. Mereka masih ada dan melakukannya dengan sangat baik. Kejadian ini meyakinkan saya bahwa, pertama, blockchain hanyalah sebuah bentuk komputasi terdistribusi. Kedua, ambang masuk (setidaknya empat tahun lalu) cukup rendah. Orang-orang yang bekerja di bidang ini sangat energik dan cerdas, tetapi mereka tidak membaca karya ilmiah. Mereka mencoba menemukan kembali hal-hal yang diketahui dan melakukan kesalahan. Hari ini dramanya sudah berkurang.

Alexei: Ini menarik sekali, karena beberapa tahun lalu kita punya tren yang berbeda. Ini seperti pengembangan front-end, ketika pengembang front-end berbasis browser menemukan kembali seluruh teknologi yang sudah populer di back-end: membangun sistem, integrasi berkelanjutan, dan hal-hal seperti itu. 

Maurice: Saya setuju. Namun hal ini tidak mengherankan, karena ide-ide terobosan selalu datang dari luar komunitas yang sudah mapan. Peneliti yang sudah mapan, khususnya akademisi yang sudah mapan, kemungkinan besar tidak akan melakukan sesuatu yang benar-benar inovatif. Sangat mudah untuk menulis makalah untuk konferensi berikutnya tentang bagaimana Anda sedikit meningkatkan hasil pekerjaan Anda sebelumnya. Pergi ke konferensi, berkumpul dengan teman-teman, membicarakan hal yang sama. Dan orang-orang yang memunculkan ide-ide terobosan hampir selalu datang dari luar. Mereka tidak tahu aturannya, mereka tidak tahu bahasanya, namun demikian... Jika Anda berada dalam komunitas yang sudah mapan, saya menyarankan Anda untuk memperhatikan hal-hal baru, pada sesuatu yang tidak sesuai dengan gambaran keseluruhan. Dalam arti tertentu, upaya dapat dilakukan untuk menggabungkan perkembangan eksternal yang lebih cair dengan metode yang sudah kita pahami. Sebagai langkah awal, cobalah membangun landasan ilmiah, lalu mengubahnya agar bisa diterapkan pada ide-ide terobosan baru. Menurut saya, blockchain sangat bagus karena merupakan ide yang segar dan disruptif.

Alexei: Menurut Anda mengapa hal ini terjadi? Karena orang-orang “luar” tidak memiliki hambatan khusus yang melekat dalam komunitas?

Maurice: Ada pola yang terjadi di sini. Jika membaca sejarah kaum Impresionis dalam seni lukis dan seni rupa pada umumnya, maka pada suatu masa seniman-seniman terkenal menolak impresionisme. Mereka bilang itu kekanak-kanakan. Satu generasi kemudian, bentuk seni yang sebelumnya ditolak ini menjadi standar. Apa yang saya lihat di bidang saya: penemu blockchain tidak tertarik pada kekuasaan, pada peningkatan publikasi dan indeks kutipan, mereka hanya ingin melakukan sesuatu yang baik. Maka mereka duduk dan mulai melakukannya. Mereka kurang memiliki kedalaman teknis tertentu, tapi itu bisa diperbaiki. Jauh lebih sulit untuk memunculkan ide-ide kreatif baru daripada mengoreksi dan memperkuat ide-ide yang belum matang. Berkat para penemu ini, sekarang ada yang harus saya lakukan!

Alexei: Ini mirip dengan perbedaan antara startup dan proyek lama. Kita mewarisi banyak keterbatasan berpikir, hambatan, persyaratan khusus, dan sebagainya.

Maurice: Analogi yang bagus adalah komputasi terdistribusi. Bayangkan blockchain seolah-olah itu adalah startup dan komputasi terdistribusi sebagai perusahaan besar dan mapan. Komputasi terdistribusi sedang dalam proses diakuisisi dan digabungkan dengan blockchain.

PhD di bawah pengawasan Barbara Liskov

Vitaly: Kami masih memiliki banyak pertanyaan! Kami memeriksa latar belakang Anda dan menemukan fakta menarik tentang gelar doktor Anda. Ya, ini sudah lama sekali, tapi sepertinya ini topik yang penting. Anda menerima gelar PhD di bawah bimbingan diri Anda sendiri Barbara Liskov! Barbara sangat terkenal di komunitas bahasa pemrograman, dan orang yang sangat terkenal pada umumnya. Masuk akal jika penelitian Anda berada di bidang bahasa pemrograman. Bagaimana Anda beralih ke komputasi paralel? Mengapa Anda memutuskan untuk mengubah topik?

Maurice: Pada saat itu, Barbara dan kelompoknya baru saja mempelajari komputasi terdistribusi, yang merupakan ide yang sangat baru. Ada juga yang mengatakan bahwa komputasi terdistribusi adalah omong kosong dan komputer yang berkomunikasi satu sama lain tidak ada gunanya. Salah satu masalah yang ditangani dalam komputasi terdistribusi yang membedakannya dari komputasi terpusat adalah toleransi kesalahan. Setelah melakukan banyak penelitian, kami memutuskan bahwa bahasa pemrograman komputasi terdistribusi memerlukan sesuatu seperti transaksi atom karena Anda tidak pernah dapat yakin bahwa panggilan jarak jauh akan berhasil. Setelah Anda melakukan transaksi, masalah manajemen konkurensi muncul. Lalu ada banyak pekerjaan untuk mendapatkan struktur data transaksional yang sangat paralel. Kemudian, ketika saya lulus, saya pergi ke Carnegie Mellon dan mulai mencari topik untuk dikerjakan. Terlintas dalam benak saya bahwa komputasi telah berpindah dari komputer individual ke jaringan komputer. Multiprosesor akan menjadi kelanjutan alami dari kemajuan - kata “multi-core” belum ada. Saya berpikir: apa yang setara dengan transaksi atom untuk sistem multi-inti? Jelas bukan transaksi biasa karena terlalu besar dan berat. Dan itulah bagaimana saya mendapatkan ide tersebut kemampuan linierisasi dan begitulah cara saya membuat sinkronisasi tanpa menunggu secara keseluruhan. Ini adalah upaya untuk menjawab pertanyaan tentang analogi transaksi atom untuk sistem multiprosesor dengan memori bersama. Sekilas karya ini mungkin terlihat sangat berbeda, namun nyatanya merupakan kelanjutan dari tema yang sama.

Dunia sedang menunggu multi-core

Vitaly: Anda menyebutkan bahwa pada saat itu hanya ada sedikit komputer multi-core, bukan?

Maurice: Mereka tidak ada di sana. Ada beberapa yang disebut multiprosesor simetris, yang pada dasarnya terhubung ke bus yang sama. Hal ini tidak berjalan dengan baik karena setiap kali perusahaan baru menciptakan sesuatu yang serupa, Intel akan merilis satu prosesor yang lebih unggul dari multiprosesor.

Alexei: Bukankah ini berarti bahwa pada zaman dahulu, hal ini lebih merupakan kajian teoretis?

Maurice: Ini bukan kajian teoretis, melainkan kajian spekulatif. Semua ini bukan tentang bekerja dengan banyak teorema; melainkan, kami mengajukan hipotesis tentang arsitektur yang belum ada pada saat itu. Inilah gunanya penelitian! Tidak ada perusahaan yang melakukan hal seperti ini; semuanya terjadi di masa depan yang jauh. Faktanya, hal ini terjadi hingga tahun 2004, ketika prosesor multi-core yang sebenarnya muncul. Karena prosesor terlalu panas, Anda dapat membuat prosesor menjadi lebih kecil, namun Anda tidak dapat membuatnya lebih cepat. Karena itu, terjadi transisi ke arsitektur multi-core. Dan itu berarti tiba-tiba ada kegunaan dari semua konsep yang telah kita kembangkan di masa lalu.

Alexei: Menurut Anda mengapa prosesor multi-core baru muncul pada tahun XNUMX-an? Jadi mengapa ini sangat terlambat?

Maurice: Hal ini disebabkan keterbatasan perangkat keras. Intel, AMD dan perusahaan lain sangat pandai meningkatkan kecepatan prosesor. Ketika suatu saat prosesor menjadi cukup kecil sehingga tidak dapat lagi meningkatkan kecepatan clock karena prosesor akan mulai kehabisan tenaga. Anda bisa membuatnya lebih kecil, tapi tidak lebih cepat. Apa yang ada dalam kekuatan mereka - alih-alih prosesor yang sangat kecil, mereka dapat memasukkan delapan, enam belas, atau tiga puluh dua prosesor ke dalam volume casing yang sama, yang sebelumnya hanya dapat memuat satu. Sekarang Anda memiliki multithreading dan komunikasi cepat di antara mereka karena mereka berbagi cache. Namun Anda tidak bisa memaksa mereka untuk berlari lebih cepat - ada batas kecepatan yang sangat spesifik. Mereka terus berkembang sedikit demi sedikit, namun tidak sebanyak itu lagi. Hukum fisika menghalangi perbaikan.

Dunia baru membawa masalah baru. NUMA, NVM dan peretasan arsitektur

Alexei: Kedengarannya sangat masuk akal. Dengan prosesor multi-core baru, muncul masalah baru. Apakah Anda dan kolega Anda memperkirakan masalah ini? Mungkin Anda telah mempelajarinya sebelumnya? Dalam kajian teoritis seringkali tidak mudah untuk memprediksi hal-hal seperti itu. Ketika masalah benar-benar terjadi, bagaimana masalah tersebut dapat memenuhi harapan Anda dan kolega Anda? Atau apakah masalah tersebut benar-benar baru, dan Anda serta kolega Anda harus menghabiskan banyak waktu untuk memecahkan masalah yang muncul?

Vitaly: Saya akan menambahkan pertanyaan Alexei: apakah Anda memprediksi arsitektur prosesor dengan benar saat mempelajari teorinya?

Maurice: Tidak 100%. Namun menurut saya, saya dan rekan-rekan saya telah melakukan pekerjaan yang baik dalam memprediksi multi-core dengan memori bersama. Saya pikir kami memperkirakan dengan tepat kesulitan dalam mengembangkan struktur data paralel yang beroperasi tanpa kunci. Struktur data seperti itu penting untuk banyak aplikasi, meskipun tidak semua, namun sering kali yang benar-benar Anda perlukan adalah struktur data non-locking. Ketika kami menemukannya, banyak yang berpendapat bahwa ini tidak masuk akal, bahwa semuanya berfungsi baik dengan kunci. Kami memperkirakan dengan cukup baik bahwa akan ada solusi siap pakai untuk banyak masalah pemrograman dan masalah struktur data. Ada juga masalah yang lebih kompleks, seperti NUMA – akses tidak merata ke memori. Faktanya, mereka bahkan tidak dipertimbangkan sampai prosesor multi-core ditemukan karena terlalu spesifik. Komunitas riset sedang mengerjakan pertanyaan-pertanyaan yang secara umum dapat diprediksi. Beberapa masalah perangkat keras yang terkait dengan arsitektur tertentu harus menunggu - pada kenyataannya, kemunculan arsitektur ini. Misalnya, tidak ada yang benar-benar mengerjakan struktur data khusus GPU karena GPU belum ada pada saat itu. Meskipun banyak pekerjaan telah dilakukan SIMD, algoritme ini siap digunakan segera setelah perangkat keras yang sesuai tersedia. Namun, tidak mungkin untuk meramalkan segalanya.

Alexei: Jika saya memahaminya dengan benar, NUMA adalah semacam kompromi antara biaya, kinerja, dan beberapa hal lainnya. Adakah yang tahu kenapa NUMA keluar sangat terlambat?

Maurice: Menurut saya NUMA ada karena masalah pada perangkat keras yang digunakan untuk memproduksi memori: semakin jauh komponennya, semakin lambat aksesnya. Di sisi lain, nilai kedua dari abstraksi ini adalah keseragaman memori. Jadi salah satu ciri komputasi paralel adalah semua abstraksinya sedikit rusak. Jika akses benar-benar seragam, semua memori akan memiliki jarak yang sama, namun hal ini secara ekonomi, dan bahkan mungkin secara fisik, tidak mungkin. Oleh karena itu konflik ini muncul. Jika Anda menulis program Anda seolah-olah memorinya seragam, kemungkinan besar program itu benar. Dalam artian tidak akan memberikan jawaban yang salah. Tapi penampilannya juga tidak menarik bintang dari langit. Begitu pula jika Anda menulis spinlock Tanpa memahami hierarki cache, pemblokiran itu sendiri akan benar, tetapi Anda bisa melupakan kinerja. Dalam arti tertentu, Anda harus menulis program yang berada di atas abstraksi yang sangat sederhana, namun Anda harus mengecoh orang yang memberi Anda abstraksi itu: Anda harus tahu bahwa di bawah abstraksi tersebut terdapat hierarki memori, bahwa ada bus antara Anda dan memori ini, dan seterusnya. Jadi, ada beberapa konflik antara abstraksi yang berguna secara individual, yang membawa kita pada masalah yang sangat konkrit dan pragmatis.

Vitaly: Bagaimana dengan masa depan? Bisakah Anda memprediksi bagaimana prosesor akan berkembang selanjutnya? Ada anggapan bahwa salah satu jawabannya adalah memori transaksional. Anda mungkin memiliki stok lain.

Maurice: Ada beberapa tantangan besar ke depan. Salah satunya adalah bahwa ingatan yang koheren adalah abstraksi yang luar biasa, tetapi ingatan itu mulai rusak dalam kasus-kasus khusus. Jadi, misalnya, NUMA adalah contoh nyata dari sesuatu di mana Anda dapat terus berpura-pura bahwa memori yang seragam itu ada. Sebenarnya tidak, produktivitas akan membuat Anda menangis. Pada titik tertentu, arsitek harus meninggalkan gagasan arsitektur memori tunggal; Anda tidak bisa berpura-pura selamanya. Dibutuhkan model pemrograman baru yang cukup mudah digunakan dan cukup kuat untuk membuat perangkat keras yang mendasarinya menjadi efisien. Ini adalah kompromi yang sangat sulit, karena jika Anda menunjukkan kepada pemrogram arsitektur yang sebenarnya digunakan dalam perangkat keras, mereka akan menjadi gila. Itu terlalu rumit dan tidak portabel. Jika Anda menyajikan antarmuka yang terlalu sederhana, kinerjanya akan buruk. Oleh karena itu, banyak pengorbanan yang sangat sulit perlu dilakukan untuk menyediakan model pemrograman yang berguna yang dapat diterapkan pada prosesor multi-core yang sangat besar. Saya tidak yakin ada orang lain selain seorang spesialis yang mampu memprogram pada komputer dengan 2000 inti. Dan kecuali Anda melakukan komputasi atau kriptografi yang sangat terspesialisasi atau ilmiah atau semacamnya - masih belum jelas bagaimana melakukannya dengan benar. 

Bidang serupa lainnya adalah arsitektur khusus. Akselerator grafis telah ada sejak lama, namun telah menjadi contoh klasik tentang bagaimana Anda dapat menggunakan jenis komputasi khusus dan menjalankannya pada chip khusus. Hal ini menambah tantangan tersendiri: bagaimana Anda berkomunikasi dengan perangkat tersebut, bagaimana Anda memprogramnya. Saya baru-baru ini sedang mengerjakan masalah di area tersebut dekat komputasi memori. Anda mengambil prosesor kecil dan merekatkannya ke sejumlah besar memori sehingga memori tersebut berjalan pada kecepatan cache L1 dan kemudian berkomunikasi dengan perangkat seperti TPU – prosesor sedang sibuk memuat tugas baru ke dalam inti memori Anda. Merancang struktur data dan protokol komunikasi untuk hal semacam ini adalah contoh menarik lainnya. Jadi prosesor dan perangkat keras khusus akan terus mengalami peningkatan selama beberapa waktu.

Alexei: Bagaimana dengan memori non-volatil (memori non-volatile)?

Maurice: Oh, itu contoh bagus lainnya! NVM akan sangat mengubah cara kita memandang hal-hal seperti struktur data. Memori non-volatil, dalam arti tertentu, menjanjikan untuk mempercepat segalanya. Namun hal ini tidak akan membuat hidup menjadi lebih mudah karena sebagian besar prosesor, cache, dan register masih bersifat fluktuatif. Saat Anda memulai setelah crash, status Anda dan status memori Anda tidak akan sama persis dengan sebelum crash. Saya sangat berterima kasih kepada orang-orang yang mengerjakan NVM - akan ada banyak hal yang harus dilakukan para peneliti dalam waktu lama untuk mencoba mencari tahu kondisi kebenarannya. Perhitungan dikatakan benar jika dapat bertahan dari crash dimana isi cache dan register hilang, namun memori utama tetap utuh.

Kompiler vs prosesor, RISC vs CISC, memori bersama vs penyampaian pesan

Vladimir: Apa pendapat Anda tentang dilema “kompiler vs. prosesor” dari sudut pandang set instruksi? Izinkan saya menjelaskan bagi mereka yang belum mengetahuinya: jika kita menggunakan memori miring atau yang serupa, kita dapat menggunakan serangkaian perintah yang sangat sederhana dan meminta kompiler untuk menghasilkan kode kompleks yang dapat memanfaatkan keuntungan yang ditemukan. Atau kita dapat melakukan cara lain: menerapkan instruksi yang rumit dan meminta prosesor untuk menyusun ulang instruksi tersebut dan melakukan manipulasi lain dengannya. Apa yang Anda pikirkan?

Maurice: Saya tidak punya jawaban untuk pertanyaan itu. Perdebatan ini telah berlangsung selama empat dekade. Ada saatnya di antara keduanya disingkat satu set perintah dan sulit perang saudara terjadi melalui serangkaian komando. Untuk sementara, orang-orang RISC menang, tapi kemudian Intel membangun kembali mesin mereka sehingga serangkaian instruksi yang dikurangi digunakan secara internal, dan set lengkap diekspor secara eksternal. Ini mungkin sebuah topik di mana setiap generasi baru harus menemukan komprominya sendiri dan membuat keputusannya sendiri. Sangat sulit untuk memprediksi mana yang lebih baik. Jadi prediksi apa pun yang saya buat akan menjadi benar pada suatu waktu tertentu, kemudian salah lagi untuk beberapa waktu, dan kemudian menjadi benar lagi.

Alexei: Seberapa umumkah dalam industri ini bahwa beberapa ide menang dalam beberapa dekade dan kalah di dekade berikutnya? Apakah ada contoh lain dari perubahan periodik tersebut?

Maurice: Mengenai topik komputasi terdistribusi, ada orang yang percaya Berbagi memori dan orang-orang yang beriman pertukaran pesan. Awalnya, dalam komputasi terdistribusi, komputasi paralel berarti penyampaian pesan. Kemudian seseorang menemukan bahwa memprogram dengan memori bersama jauh lebih mudah. Sisi sebaliknya mengatakan bahwa memori bersama terlalu rumit, karena memerlukan kunci dan sejenisnya, jadi ada baiknya beralih ke bahasa yang tidak ada apa-apa selain penyampaian pesan. Seseorang melihat hasilnya dan berkata, “wow, penerapan perpesanan ini sangat mirip dengan memori bersama, karena Anda membuat banyak sekali modul kecil ini, modul-modul tersebut saling mengirim pesan, dan semuanya berpaut“Mari kita buat database memori bersama yang lebih baik!” Semua ini terjadi berulang kali, dan tidak mungkin untuk mengatakan bahwa salah satu pihak benar. Satu pihak akan selalu mendominasi karena begitu salah satu dari mereka hampir menang, orang-orang terus menerus mencari cara untuk memperbaiki pihak lain.

Seni Menulis Kode Multithread yang Rapuh

Alexei: Ini sangat menarik. Misalnya, ketika kita menulis kode, apa pun bahasa pemrogramannya, biasanya kita harus membuat abstraksi seperti sel yang dapat dibaca dan ditulis. Namun pada kenyataannya, pada tingkat fisik tertentu, ini mungkin terlihat seperti mengirim pesan melalui bus perangkat keras antara komputer yang berbeda dan perangkat lain. Ternyata pekerjaan terjadi pada kedua tingkat abstraksi sekaligus.

Maurice: Benar sekali bahwa memori bersama dibangun berdasarkan penyampaian pesan - bus, cache, dan sebagainya. Namun sulit untuk menulis program menggunakan penyampaian pesan, sehingga perangkat keras sengaja berbohong, berpura-pura bahwa Anda memiliki semacam memori yang seragam. Ini akan memudahkan Anda menulis program yang sederhana dan benar sebelum kinerjanya mulai menurun. Kemudian Anda akan berkata: sepertinya sudah waktunya berteman dengan cache. Dan kemudian Anda mulai khawatir tentang lokasi cache, dan dari sanalah seterusnya. Dalam arti tertentu, Anda meretas abstraksi: Anda tahu itu bukan hanya memori datar dan seragam, dan Anda akan menggunakan pengetahuan itu untuk menulis program yang ramah cache. Inilah yang harus Anda lakukan dalam masalah nyata. Konflik antara abstraksi yang manis, sederhana, dan bagus yang diberikan kepada Anda dan implementasi perangkat keras yang sangat rumit adalah tempat setiap orang akan membuat komprominya sendiri. Saya memiliki buku tentang multiprosesor dan sinkronisasi, dan suatu saat saya akan menulis bab tentang struktur data java.util.bersamaan. Jika Anda melihatnya, hal-hal seperti daftar dengan kelalaian Ini adalah karya seni yang menakjubkan. (Catatan Editor: Mereka yang akrab dengan bahasa Java setidaknya harus melihat implementasinya SkipListMap secara bersamaan, Anda dapat melihat tautannya di API и Kode sumber). Namun dari sudut pandang saya, menunjukkannya kepada siswa adalah tindakan yang tidak bertanggung jawab, karena struktur data seperti itu seperti seorang pria di sirkus yang berlari di atas tali di atas lubang beruang. Jika Anda mengubah satu detail kecil saja, seluruh struktur akan runtuh. Kode ini sangat cepat dan elegan hanya karena ditulis dengan sempurna, namun perubahan sekecil apa pun akan menyebabkan kegagalan total. Jika saya memberikan kode ini sebagai contoh kepada siswa, mereka akan langsung berkata: Saya juga bisa! Dan kemudian sebuah pesawat akan jatuh atau reaktor nuklir akan meledak, dan saya akan bersalah karena memberi mereka terlalu banyak informasi pada waktu yang salah.

Alexei: Ketika saya masih kecil, berkali-kali saya mencoba mempelajari kode sumber Doug Lee, misalnya, java.util.bersamaan, karena open source, sangat mudah untuk menemukan dan mencoba memahami apa yang terjadi di sana. Hasilnya tidak terlalu baik: sering kali, sama sekali tidak jelas mengapa Doug memutuskan melakukan sesuatu dengan cara ini ketika orang lain melakukannya dengan cara yang berbeda. Bagaimana Anda menjelaskan hal-hal ini kepada siswa Anda? Apakah ada cara tertentu yang benar untuk mendeskripsikan detail spesifik dari algoritma hardcore, misalnya? Bagaimana kamu melakukan ini?

Maurice: Guru menggambar memiliki sebuah klise yang pertama-tama mereka ingat: jika Anda ingin menggambar seperti Picasso, Anda harus terlebih dahulu belajar cara menggambar gambar realistis sederhana, dan hanya jika Anda mengetahui aturannya, Anda dapat mulai melanggarnya. Jika Anda langsung mulai melanggar peraturan, Anda akan berakhir dalam kekacauan. Pertama, saya mengajari siswa cara menulis kode yang sederhana dan benar tanpa mengkhawatirkan performa. Maksud saya adalah, ada masalah pengaturan waktu yang rumit yang mengintai di sini, jadi jangan khawatir tentang cache, jangan khawatir tentang model memori, pastikan saja semuanya berfungsi dengan benar. Ini sudah cukup sulit: pemrograman modern itu sendiri tidak mudah, terutama bagi mahasiswa baru. Dan ketika mereka memiliki intuisi tentang cara menulis program yang benar, saya katakan: lihat dua implementasi spinlock ini: yang satu sangat lambat, dan yang kedua juga tidak terlalu lambat, tetapi lebih baik. Namun secara matematis kedua algoritma tersebut sama. Faktanya, salah satunya menggunakan lokalitas cache. Salah satunya berjalan pada data cache lokal, dan yang lainnya berulang kali melakukan operasi di seluruh bus. Anda tidak dapat menulis kode yang efisien jika Anda tidak memahaminya, dan tidak tahu cara memecahkan abstraksi dan melihat struktur yang mendasarinya. Namun Anda tidak akan bisa langsung melakukan ini. Ada orang yang langsung melakukan hal ini dan percaya pada kejeniusannya sendiri, biasanya berakhir buruk karena tidak memahami prinsipnya. Tidak ada yang menggambar seperti Picasso atau menulis program seperti Doug Lee yang baru lulus kuliah di minggu pertamanya. Dibutuhkan waktu bertahun-tahun untuk mencapai tingkat pengetahuan ini.

Alexei: Ternyata masalahnya Anda bagi menjadi dua bagian: yang pertama benar, yang kedua kinerja?

Maurice: Tepat sekali. Dan, persis dalam urutan itu. Salah satu masalahnya adalah siswa baru tidak memahami bahwa kebenaran sulit dicapai. Sekilas mereka berkata: ini jelas benar, yang tersisa hanyalah mempercepatnya. Jadi terkadang saya memberi tahu mereka tentang algoritma yang awalnya salah seolah-olah algoritma itu benar.

Cara mengajar siswa menulis kode multithread yang kompleks

Alexei: Hanya untuk melihat apakah mereka bisa merasakan hasil tangkapannya?

Maurice: Saya selalu memperingatkan sebelumnya bahwa terkadang saya akan mengusulkan algoritma yang salah. Anda tidak boleh menipu orang. Saya menyarankan mereka mengambil informasi tersebut dengan hati-hati. Jika saya mengatakan sesuatu dan berkata: "lihat, ini jelas benar" - ini adalah sinyal bahwa di suatu tempat mereka mencoba menipu Anda, dan Anda harus mulai mengajukan pertanyaan. Selanjutnya, saya mencoba mendorong siswa untuk terus bertanya, dan kemudian saya menyarankan, “Apa yang akan terjadi jika kita membiarkan segala sesuatunya apa adanya?” Dan mereka segera melihat kesalahannya. Namun meyakinkan siswa bahwa mereka perlu mengkhawatirkan kebenarannya jauh lebih sulit daripada yang terlihat pada pandangan pertama. Banyak dari siswa ini memiliki pengalaman pemrograman di sekolah menengah, beberapa telah mendapatkan pekerjaan dan pernah melakukan pemrograman di sana, dan mereka semua sangat percaya diri. Ini seperti tentara: pertama-tama Anda harus mengubah suasana hati mereka untuk meyakinkan mereka agar dengan sabar mendekati penyelesaian masalah yang muncul. Atau mungkin seperti para biksu Buddha: pertama mereka belajar bernalar tentang kebenaran, dan begitu mereka memahami cara berpikir tentang kebenaran, mereka diperbolehkan untuk naik ke tingkat berikutnya dan mulai mengkhawatirkan kinerja.

Alexei: Artinya, terkadang Anda menunjukkan contoh yang tidak berfungsi kepada siswa, sehingga Anda mendapatkan umpan balik yang menunjukkan apakah mereka memahami inti masalahnya, apakah mereka dapat menemukan kode yang salah dan hasil yang salah. Jadi, biasanya mahasiswa bikin kamu senang atau sedih?

Maurice: Siswa hampir selalu menemukan kesalahan pada akhirnya. Jika mereka mencari terlalu lambat, saya mengajukan pertanyaan-pertanyaan yang mengarahkan, dan di sini penting untuk dipahami bahwa jika Anda tidak pernah menipu mereka, mereka akan mulai menganggap kata-kata Anda sebagai kebenaran hakiki. Kemudian mereka akan bosan dan mulai tertidur saat membaca Facebook di laptop selama kelas. Namun jika Anda memberi tahu mereka sebelumnya bahwa mereka akan ditipu, dan mereka akan terlihat bodoh jika tidak merasakan tipuan, mereka menjadi lebih waspada. Ini bagus dalam berbagai cara. Saya ingin siswa tidak hanya mempertanyakan pemahaman mereka tentang masalah ini, tetapi juga mempertanyakan otoritas guru. Idenya adalah siswa dapat mengangkat tangannya kapan saja dan berkata: Menurut saya apa yang baru saja Anda katakan salah. Ini adalah alat pembelajaran yang penting. Saya tidak ingin ada siswa yang duduk dan diam-diam berpikir sendiri: semua ini tampak seperti omong kosong, tetapi mengangkat tangan terlalu menakutkan, dan lagi pula, dia seorang profesor, jadi semua yang dia katakan adalah kebenaran. Oleh karena itu, jika mereka diperingatkan sebelumnya bahwa tidak semua yang diceritakan benar, mereka mempunyai insentif untuk lebih memperhatikan materi tersebut. Saya jelaskan bahwa tidak apa-apa untuk mengangkat tangan dan mengajukan pertanyaan. Pertanyaan Anda mungkin terdengar bodoh atau naif, tetapi sering kali pertanyaan terbaik muncul seperti ini.

Alexei: Sangat menarik. Biasanya orang memiliki semacam hambatan psikologis yang tidak memungkinkan mereka mengajukan pertanyaan kepada profesor. Apalagi jika ada banyak orang di ruangan itu, dan semua orang takut membicarakan pertanyaan bodoh Anda akan menyita banyak waktu orang-orang tersebut. Apakah ada trik untuk mengatasi hal ini?

Maurice: Saya sering berhenti dan menanyakan pertanyaan klasik. Apakah pernyataan tersebut benar, atau bagaimana mereka memecahkan masalah yang sedang dibahas. Ini adalah tindakan penting, terutama di awal pembelajaran ketika orang merasa malu untuk mengatakan hal terkecil sekalipun. Anda mengajukan pertanyaan kepada siswa dan tidak berkata apa-apa lagi. Ada keheningan, semua orang menjadi sedikit tegang, ketegangan bertambah, lalu tiba-tiba ada yang tidak tahan, putus asa dan mengatakan jawabannya. Beginilah cara Anda membalikkan keadaan: terus berdiam diri menjadi lebih sulit dan merepotkan daripada menjawab! Ini adalah trik pedagogi standar. Setiap guru di dunia harus mengetahui cara melakukan hal ini.

Alexei: Sekarang kami memiliki judul yang bagus untuk wawancara ini: “lebih mudah menjawab daripada diam.”

Vitaly: Izinkan saya bertanya lagi. Anda sedang mengerjakan bukti topologi. Bagaimana Anda bisa terlibat dalam hal ini, karena komputasi terdistribusi dan topologi adalah hal yang sangat berbeda!

Maurice: Ada hubungan tersembunyi di sana. Ketika saya masih seorang siswa yang belajar matematika, saya mempelajari matematika murni. Saya tidak benar-benar tertarik pada komputer sampai studi saya berakhir dan saya dihadapkan pada kebutuhan mendesak untuk mencari pekerjaan. Sebagai seorang mahasiswa saya mempelajari topologi aljabar. Bertahun-tahun kemudian, saat mengerjakan suatu masalah bernama "k-Set Masalah Perjanjian", saya menggunakan grafik untuk memodelkan masalahnya dan, tampaknya pada saat itu, saya telah menemukan solusinya. Anda hanya perlu duduk dan menghitung. Cobalah untuk menemukan jawaban yang sesuai pada grafik ini. Tapi algoritma saya tidak berhasil: ternyata dia akan berputar-putar selamanya. Sayangnya, semua ini tidak dapat dijelaskan dalam bahasa formal teori graf – yang diketahui semua ilmuwan komputer. Dan kemudian saya teringat beberapa tahun yang lalu, di kelas topologi, kami menggunakan konsep tersebut "kompleks sederhana", yang merupakan generalisasi grafik ke dimensi yang lebih tinggi. Lalu saya bertanya pada diri sendiri: apa yang akan terjadi jika kita memformulasikan ulang permasalahan dalam bentuk kompleks sederhana? Ini menjadi momen kuncinya. Dengan menggunakan formalisme yang lebih kuat, permasalahan tiba-tiba menjadi lebih sederhana. Orang-orang berjuang melawannya untuk waktu yang lama, menggunakan grafik, tapi mereka tidak bisa berbuat apa-apa. Dan bahkan sekarang mereka tidak bisa - jawaban yang benar ternyata bukanlah suatu algoritma, tetapi bukti ketidakmungkinan memecahkan masalah. Artinya, algoritma seperti itu tidak ada. Tetapi setiap bukti ketidakmungkinan berdasarkan pada kompleks sederhana atau pada hal-hal yang orang pura-pura tidak pertimbangkan sebagai kompleks sederhana. Hanya karena Anda menyebut sesuatu dengan nama baru, hal itu tidak kehilangan esensinya.

Vitaly: Ternyata kamu hanya beruntung?

Maurice: Selain keberuntungan, itu juga kesiapan. Artinya, Anda tidak boleh melupakan hal-hal “tidak berguna” yang Anda pelajari sebelumnya. Semakin banyak hal tidak berguna yang Anda pelajari, semakin banyak ide yang bisa Anda gali saat menghadapi masalah baru. Pencocokan pola intuitif semacam ini penting karena... Mari kita lakukan ini, ini adalah sebuah rantai: pada awalnya saya menemukan bahwa grafiknya tidak berfungsi sama sekali atau tidak berfungsi sama sekali, ini mengingatkan saya pada sesuatu dari peristiwa delapan tahun yang lalu dan tahun-tahun mahasiswa saya, ketika kami mempelajari semua kompleks sederhana ini. Hal ini pada gilirannya memungkinkan saya menemukan buku teks topologi lama saya dan memuatnya kembali ke kepala saya. Tetapi jika bukan karena pengetahuan lama itu, saya tidak akan pernah mencapai kemajuan apa pun dalam memecahkan masalah awal.

Edisi baru buku “The Art of Multiprocessor Programming”

Alexei: Anda mengatakan beberapa patah kata tentang buku Anda. Mungkin bukan rahasia terburuknya Anda menulis buku paling terkenal di dunia tentang multithreading, "Seni Pemrograman Multiprosesor". Usianya sudah sekitar 11 tahun dan sejak itu baru dirilis  cetak ulang yang direvisi. Apakah akan ada edisi kedua?

Maurice: Senang sekali Anda bertanya! Ini akan segera terjadi, dalam tiga bulan atau lebih. Ada dua penulis lagi, kami menambahkan lebih banyak materi, memperbaiki bagian paralelisme fork/join, menulis bagian di MapReduce, menambahkan banyak hal baru dan membuang hal-hal yang tidak perlu - sesuatu yang sangat menarik pada saat penulisan edisi pertama, namun sudah tidak ada lagi saat ini. Hasilnya adalah buku yang direvisi dengan sangat serius.

Alexei: Semuanya sudah selesai, tinggal rilis saja?

Maurice: Beberapa bab masih perlu diperbaiki. Penerbit kami (yang menurut saya sudah membenci kami) masih berusaha menyampaikan pesan bahwa kami harus bekerja lebih cepat. Kami jauh terlambat dari jadwal. Secara teoritis, kita bisa menyelesaikan buku ini beberapa tahun sebelumnya.

Alexei: Adakah kemungkinan mendapatkan versi baru buku ini sebelum Natal?

Maurice: Ini adalah tujuan kami! Tapi aku sudah meramalkan kemenangan berkali-kali sehingga tidak ada lagi yang percaya padaku. Anda mungkin juga tidak boleh terlalu mempercayai saya dalam hal ini.

Alexei: Bagaimanapun, ini adalah berita yang luar biasa. Saya sangat menyukai edisi pertama buku ini. Bisa dibilang saya adalah penggemarnya.

Maurice: Saya harap edisi baru ini dapat memenuhi antusiasme Anda yang luar biasa, terima kasih!

Bagaimana Memori Transaksional Diciptakan

Vitaly: Pertanyaan selanjutnya adalah tentang memori transaksional. Sejauh yang saya pahami, Anda adalah pionir di bidang ini, Anda menemukannya pada saat tidak ada orang yang memikirkan hal seperti itu. Mengapa Anda memutuskan untuk pindah ke bidang ini? Mengapa transaksi tampak penting bagi Anda? Apakah menurut Anda suatu hari nanti hal tersebut akan diimplementasikan pada perangkat keras?

Maurice: Saya sudah mengetahui tentang transaksi sejak masa penelitian pascasarjana saya.

Vitaly: Ya, tapi ini transaksi yang berbeda!

Maurice: Saya bekerja dengan Elliott Moss dalam pengumpulan sampah tanpa pemblokiran. Masalah kami adalah kami ingin mengubah beberapa kata di memori secara atom dan kemudian algoritme akan menjadi sangat sederhana, dan setidaknya beberapa di antaranya akan menjadi lebih efisien. Menggunakan bandingkan-dan-tukar untuk tautan muat/penyimpanan bersyaratdisediakan oleh arsitektur paralel, adalah mungkin untuk melakukan sesuatu, namun sangat tidak efisien dan jelek karena Anda harus berurusan dengan lapisan tipuan. Saya ingin mengubah kata-kata memori dan saya perlu beralih karena saya hanya dapat mengubah satu penunjuk, jadi kata-kata itu perlu menunjuk ke semacam struktur seperti direktori. Kami berbicara tentang betapa hebatnya jika kami dapat mengubah perangkat keras sehingga dapat melakukan perekaman secara bersamaan. Elliott tampaknya telah memperhatikan hal ini: jika Anda melihat protokol koherensi cache, mereka sudah menyediakan sebagian besar fungsionalitas yang diperlukan. Dalam transaksi optimis, protokol koherensi cache akan melihat adanya konflik waktu dan cache akan menjadi tidak sah. Apa yang terjadi jika Anda secara spekulatif menjalankan transaksi pada cache dan menggunakan mekanisme protokol koherensi untuk mendeteksi konflik? Arsitektur perangkat keras spekulatif mudah dirancang. Jadi kami menulis yang itu publikasi pertama tentang memori transaksional. Pada saat yang sama, perusahaan tempat saya bekerja, Digital Equipment Corporation, menciptakan prosesor 64-bit baru yang disebut Alpha. Jadi saya pergi dan memberikan presentasi kepada grup pengembangan Alpha tentang memori transaksional kami yang luar biasa dan mereka bertanya: Berapa banyak pendapatan tambahan yang akan diperoleh perusahaan kami jika kami menambahkan semua ini langsung ke prosesor? Dan saya sama sekali tidak punya jawaban untuk ini, karena saya seorang teknolog, saya bukan spesialis pemasaran. Aku benar-benar tidak punya jawaban apa pun. Mereka tidak terlalu terkesan karena saya tidak tahu apa-apa.

Vitaly: Miliaran! Katakan saja miliaran!

Maurice: Ya, itulah yang seharusnya saya katakan. Sekarang, di zaman startup dan segalanya, saya tahu cara menulis rencana bisnis. Bahwa Anda bisa berbohong sedikit tentang besarnya potensi keuntungan Anda. Namun pada masa itu hal itu tampak naif, jadi saya hanya berkata, “Saya tidak tahu.” Jika Anda melihat sejarah publikasi memori transaksional, Anda akan melihat bahwa setelah satu tahun ada beberapa referensi ke sana, dan kemudian selama sekitar sepuluh tahun tidak ada yang mengutip makalah ini sama sekali. Kutipan tersebut muncul sekitar tahun 2004, ketika multi-core yang sebenarnya muncul. Ketika orang-orang menemukan bahwa menulis kode paralel dapat menghasilkan uang, penelitian baru dimulai. Ravi Rajwar menulis sebuah artikel, yang dalam beberapa hal memperkenalkan konsep memori transaksional ke arus utama. (Catatan Editor: Ada versi kedua dari artikel ini, dirilis pada tahun 2010 dan tersedia secara gratis sebagai PDF). Tiba-tiba orang menyadari dengan tepat bagaimana semua ini dapat digunakan, bagaimana algoritma tradisional dengan kunci dapat dipercepat. Sebuah contoh yang baik tentang sesuatu yang di masa lalu tampak seperti masalah akademis yang menarik. Dan ya, jika Anda bertanya kepada saya pada saat itu apakah menurut saya semua ini akan penting di masa depan, saya akan menjawab: tentu saja, tetapi kapan tepatnya tidak jelas. Mungkin dalam 50 tahun? Dalam praktiknya, hal ini ternyata hanya berlangsung selama satu dekade. Sangat menyenangkan ketika Anda melakukan sesuatu dan setelah sepuluh tahun orang menyadarinya.

Mengapa perlu melakukan penelitian di bidang komputasi terdistribusi

Vitaly: Jika kita berbicara tentang penelitian baru, apa yang akan Anda sarankan kepada pembaca - komputasi terdistribusi atau multi-core dan mengapa? 

Maurice: Saat ini sangat mudah untuk mendapatkan prosesor multi-core, namun lebih sulit untuk menyiapkan sistem terdistribusi yang sebenarnya. Saya mulai mengerjakannya karena saya ingin melakukan sesuatu yang berbeda dari tesis PhD saya. Inilah nasihat yang selalu saya berikan kepada mahasiswa baru: jangan menulis lanjutan disertasi Anda—cobalah ke arah yang baru. Dan juga, multithreading itu mudah. Saya dapat bereksperimen dengan fork saya sendiri yang berjalan di laptop saya tanpa harus bangun dari tempat tidur. Tetapi jika saya tiba-tiba ingin membuat sistem terdistribusi yang nyata, saya harus melakukan banyak pekerjaan, menarik siswa, dan sebagainya. Saya orang yang malas dan lebih suka bekerja pada multi-core. Bereksperimen pada sistem multi-core juga lebih mudah daripada melakukan eksperimen pada sistem terdistribusi, karena bahkan dalam sistem terdistribusi yang bodoh pun terdapat terlalu banyak faktor yang perlu dikontrol.

Vitaly: Apa yang kamu lakukan sekarang, meneliti blockchain? Artikel mana yang harus Anda perhatikan terlebih dahulu?

Maurice: Baru-baru ini muncul artikel yang sangat bagus, yang saya tulis bersama murid saya, Vikram Saraf, khusus untuk bahan ceramah Konferensi Tokenomcs di Paris tiga minggu lalu. Ini adalah artikel tentang sistem terdistribusi praktis, di mana kami mengusulkan pembuatan Ethereum multi-threaded. Saat ini, kontrak pintar (kode yang berjalan di blockchain) dijalankan secara berurutan. Kami menulis artikel sebelumnya yang membahas tentang cara menggunakan transaksi spekulatif untuk mempercepat prosesnya. Kami mengambil banyak ide dari memori transaksional perangkat lunak dan mengatakan bahwa jika Anda menjadikan ide ini bagian dari mesin virtual Etherium, maka semuanya akan bekerja lebih cepat. Namun untuk itu perlu tidak ada konflik data dalam kontrak. Dan kemudian kita berasumsi bahwa dalam kehidupan nyata sebenarnya tidak ada konflik seperti itu. Tapi kami tidak punya cara untuk mengetahuinya. Kemudian terpikir oleh kami bahwa kami memiliki hampir satu dekade sejarah kontrak nyata, jadi kami membuang blockchain Ethereum dan bertanya pada diri sendiri: apa yang akan terjadi jika catatan sejarah ini dieksekusi secara paralel? Kami menemukan peningkatan kecepatan yang signifikan. Pada masa-masa awal Ethereum, kecepatannya meningkat pesat, tetapi saat ini segalanya menjadi lebih rumit, karena kontraknya lebih sedikit dan kemungkinan konflik data yang memerlukan serialisasi menjadi lebih tinggi. Namun semua ini hanyalah karya eksperimental dengan data sejarah nyata. Hal yang menyenangkan tentang blockchain adalah ia mengingat segalanya selamanya, sehingga kita dapat kembali ke masa lalu dan mempelajari apa yang akan terjadi jika kita menggunakan algoritma berbeda untuk menjalankan kodenya. Bagaimana orang-orang di masa lalu akan menyukai ide baru kita? Penelitian seperti ini jauh lebih mudah dan menyenangkan untuk dilakukan, karena ada sesuatu yang memantau segala sesuatu dan mencatat segala sesuatu. Ini sudah lebih mirip dengan sosiologi daripada pengembangan algoritma.

Apakah pengembangan algoritme telah berhenti dan bagaimana cara melanjutkannya?

Vitaly: Waktunya untuk pertanyaan teoretis terakhir! Apakah kemajuan dalam struktur data kompetitif terasa menurun setiap tahunnya? Menurut Anda, apakah pemahaman kita tentang struktur data sudah mencapai puncaknya atau akankah ada perbaikan besar? Mungkin ada beberapa ide cerdas yang bisa mengubah segalanya?

Maurice: Kita mungkin telah mencapai titik tertinggi dalam struktur data untuk arsitektur tradisional. Namun struktur data untuk arsitektur baru masih merupakan bidang yang sangat menjanjikan. Jika Anda ingin membuat struktur data untuk, misalnya, akselerator perangkat keras, maka struktur data untuk GPU sangat berbeda dengan struktur data untuk CPU. Saat Anda mengembangkan struktur data untuk blockchain, Anda perlu melakukan hash pada potongan data dan kemudian memasukkannya ke dalam sesuatu seperti Pohon merkle, untuk mencegah pemalsuan. Ada lonjakan aktivitas di bidang ini akhir-akhir ini, dan banyak yang melakukan pekerjaan dengan sangat baik. Namun menurut saya apa yang akan terjadi adalah arsitektur baru dan aplikasi baru akan menghasilkan struktur data baru. Aplikasi warisan dan arsitektur tradisional - mungkin tidak ada banyak ruang untuk eksplorasi lagi. Namun jika Anda keluar dari jalur umum dan melihat lebih jauh, Anda akan melihat hal-hal gila yang tidak dianggap serius oleh arus utama - di situlah semua hal menarik benar-benar terjadi.

Vitaly: Oleh karena itu, untuk menjadi peneliti yang sangat terkenal, saya harus menciptakan arsitektur saya sendiri :)

Maurice: Anda dapat "mencuri" arsitektur baru orang lain - tampaknya jauh lebih mudah!

Bekerja di Universitas Brown

Vitaly: Bisakah Anda ceritakan lebih banyak kepada kami Universitas Coklatdimana kamu bekerja? Tidak banyak yang diketahui tentang dirinya dalam konteks teknologi informasi. Kurang dari tentang MIT, misalnya.

Maurice: Brown University adalah salah satu universitas tertua di Amerika Serikat. Saya pikir hanya Harvard yang sedikit lebih tua. Coklat adalah bagian dari apa yang disebut Liga Ivy, yang merupakan kumpulan delapan universitas tertua. Harvard, Brown, Cornell, Yale, Kolumbia, Dartmouth, Pennsylvania, Princeton. Ini semacam universitas yang tua, kecil, dan agak aristokrat. Fokus utamanya adalah pada pendidikan seni liberal. Ini tidak berusaha menjadi seperti MIT, MIT sangat terspesialisasi dan teknis. Brown adalah tempat yang bagus untuk belajar Sastra Rusia atau Yunani Klasik, dan tentu saja, Ilmu Komputer. Ini berfokus pada pendidikan komprehensif. Sebagian besar siswa kami menggunakan Facebook, Apple, Google - jadi menurut saya siswa kami tidak memiliki masalah dalam mencari pekerjaan di industri ini. Saya bekerja di Brown karena saya sebelumnya bekerja di Digital Equipment Corporation di Boston. Ini adalah perusahaan yang menemukan banyak hal menarik, namun mengabaikan pentingnya komputer pribadi. Sebuah perusahaan dengan nasib yang sulit, yang pendirinya dulunya adalah kaum muda revolusioner, mereka tidak belajar apa pun dan tidak melupakan apa pun, sehingga mereka berubah dari kaum revolusioner menjadi kaum reaksioner dalam waktu sekitar belasan tahun. Mereka suka bercanda bahwa komputer pribadi ada di garasi—garasi yang ditinggalkan, tentu saja. Jelas sekali bahwa mereka dihancurkan oleh perusahaan yang lebih fleksibel. Ketika jelas bahwa perusahaan sedang dalam masalah, saya menelepon teman saya di Brown, yang jaraknya sekitar satu jam di luar Boston. Saya tidak ingin meninggalkan Boston saat itu karena tidak banyak lowongan di universitas lain. Ini adalah masa ketika jumlah pekerjaan di bidang Ilmu Komputer tidak sebanyak sekarang. Dan Brown mendapat kesempatan, saya tidak perlu pindah rumah, saya tidak perlu pindah keluarga, dan saya sangat senang tinggal di Boston! Begitulah cara saya memutuskan untuk pergi ke Brown. Saya suka itu. Murid-muridnya luar biasa, jadi saya bahkan tidak pernah mencoba pergi ke tempat lain. Selama cuti panjang saya, saya bekerja di Microsoft selama setahun, kuliah di Technion di Haifa selama setahun, dan sekarang saya akan berada di Algorand. Saya mempunyai banyak kolega dimana-mana dan oleh karena itu lokasi fisik ruang kelas kami tidak begitu penting. Tapi yang terpenting adalah siswanya, mereka yang terbaik di sini. Saya belum pernah mencoba pergi ke tempat lain karena saya cukup senang di sini.

Meskipun Brown terkenal di Amerika, secara mengejutkan ia tidak dikenal di luar negeri. Seperti yang Anda lihat, saya sekarang melakukan segala kemungkinan untuk memperbaiki keadaan ini.

Perbedaan antara penelitian di universitas dan di dalam perusahaan

Vitaly: Oke, pertanyaan selanjutnya tentang Peralatan Digital. Anda berada di sana sebagai peneliti. Apa perbedaan antara bekerja di departemen R&D di perusahaan besar dan bekerja di universitas? Apa kelebihan dan kekurangannya?

Maurice: Selama dua puluh tahun saya bekerja di Microsoft, bekerja sama dengan karyawan Sun Microsystems, Oracle, Facebook, dan sekarang Algorand. Berdasarkan semua ini, saya ingin mengatakan bahwa penelitian kelas satu dapat dilakukan baik di perusahaan maupun di universitas. Perbedaan pentingnya adalah di perusahaan Anda bekerja dengan rekan kerja. Jika saya tiba-tiba mempunyai ide untuk sebuah proyek yang belum ada, saya harus meyakinkan rekan-rekan saya bahwa ini adalah ide yang bagus. Jika saya di Brown, maka saya dapat memberi tahu murid-murid saya: mari kita bahas antigravitasi! Mereka akan pergi ke orang lain atau mengerjakan sebuah proyek. Ya, saya perlu mencari pendanaan, saya perlu menulis permohonan hibah, dan sebagainya. Bagaimanapun, akan selalu ada banyak siswa, dan Anda akan dapat mengambil keputusan secara sepihak. Namun di universitas kemungkinan besar Anda tidak akan bekerja dengan orang-orang setingkat Anda. Dalam dunia penelitian industri, pertama-tama Anda harus meyakinkan semua orang bahwa proyek Anda layak untuk dilaksanakan. Saya tidak bisa memesan apa pun kepada siapa pun. Dan kedua cara kerja ini sangat berharga, karena jika Anda sedang mengerjakan sesuatu yang benar-benar gila dan kolega Anda sulit diyakinkan, akan lebih mudah untuk meyakinkan mahasiswa pascasarjana – terutama jika Anda membayar mereka. Jika Anda sedang mengerjakan sesuatu yang membutuhkan banyak pengalaman dan keahlian yang mendalam, maka Anda membutuhkan rekan kerja yang bisa berkata “tidak, kebetulan saya paham di bidang ini dan ide Anda buruk, tidak akan berhasil”. Ini sangat berguna dalam hal membuang-buang waktu. Selain itu, jika di laboratorium industri Anda menghabiskan banyak waktu untuk menulis laporan, maka di universitas Anda menghabiskan waktu tersebut untuk mencari uang. Jika saya ingin siswa dapat pergi ke suatu tempat, saya harus mencari uang untuk itu di tempat lain. Dan semakin penting posisi Anda di universitas, semakin banyak waktu yang Anda habiskan untuk mengumpulkan uang. Jadi sekarang Anda tahu untuk apa saya bekerja - seorang pengemis profesional! Seperti salah satu bhikkhu yang berjalan berkeliling membawa piring persembahan. Secara umum kedua kegiatan ini saling melengkapi. Itu sebabnya saya mencoba untuk hidup dan tetap membumi di kedua dunia.

Vitaly: Tampaknya meyakinkan suatu perusahaan lebih sulit daripada meyakinkan ilmuwan lain.

Maurice: Lebih sulit, dan masih banyak lagi. Selain itu, hal ini berbeda di berbagai bidang: beberapa melakukan penelitian skala penuh, sementara yang lain fokus pada topik mereka. Jika saya membuka Microsoft atau Facebook dan berkata: ayo buat anti-gravitasi, mereka tidak akan menghargainya. Tetapi jika saya mengatakan hal yang persis sama kepada mahasiswa pascasarjana saya, kemungkinan besar mereka akan langsung bekerja, meskipun sekarang saya akan mendapat masalah - lagipula, saya perlu mencari uang untuk ini. Namun selama Anda ingin melakukan sesuatu yang selaras dengan tujuan perusahaan, perusahaan tersebut bisa menjadi tempat yang baik untuk melakukan penelitian.

Hydra dan SPTDC

Vitaly: Pertanyaan saya akan segera berakhir, jadi mari kita bicara sedikit tentang perjalanan mendatang ke Rusia.

Maurice: Ya, saya menantikan untuk kembali ke St. Petersburg.

Alexei: Saya merasa terhormat Anda bersama kami tahun ini. Ini kedua kalinya Anda ke St. Petersburg, bukan?

Maurice: Sudah yang ketiga!

Alexei: Saya mengerti, tapi SPTDC – pasti yang kedua. Terakhir kali sekolah dipanggil SPTCC, kami sekarang telah mengubah satu huruf (C ke D, Concurrent to Distributed) untuk menekankan bahwa ada lebih banyak bidang yang terkait secara khusus dengan komputasi terdistribusi tahun ini. Bisakah Anda mengatakan beberapa kata tentang laporan Anda di Sekolah dan Konferensi Hydra?

Maurice: Di Sekolah saya ingin berbicara tentang dasar-dasar blockchain dan apa yang dapat Anda lakukan dengannya. Saya ingin menunjukkan bahwa blockchain sangat mirip dengan pemrograman multi-thread yang kita kenal, namun dengan nuansa tersendiri, dan perbedaan ini penting untuk dipahami. Jika Anda melakukan kesalahan pada aplikasi web biasa, itu hanya mengganggu. Jika Anda menulis kode buggy di aplikasi keuangan, seseorang pasti akan mencuri semua uang Anda. Ini adalah tingkat tanggung jawab dan konsekuensi yang sangat berbeda. Saya akan berbicara sedikit tentang bukti kerja, tentang kontrak pintar, tentang transaksi antar blockchain yang berbeda.

Akan ada pembicara lain yang bekerja di samping saya yang juga ingin menyampaikan pendapatnya tentang blockchain, dan kami sepakat untuk berkoordinasi satu sama lain agar cerita kami cocok satu sama lain. Namun untuk laporan teknik, saya ingin menyampaikan kepada khalayak luas penjelasan yang dapat dimengerti tentang mengapa Anda tidak boleh mempercayai semua yang Anda dengar tentang blockchain, mengapa blockchain adalah bidang yang bagus, bagaimana blockchain cocok dengan ide-ide lain yang sudah dikenal, dan mengapa kita harus berani melihat ke dalamnya. untuk kedepannya.

Alexei: Selain itu, saya ingin mengatakan bahwa ini tidak akan diadakan dalam format pertemuan atau grup pengguna, seperti yang terjadi dua tahun lalu. Kami memutuskan untuk mengadakan konferensi kecil di dekat sekolah. Pasalnya setelah berkomunikasi dengan Peter Kuznetsov, kami menyadari bahwa sekolah tersebut dibatasi hanya untuk seratus, mungkin 120 orang. Pada saat yang sama, ada banyak insinyur yang ingin berkomunikasi dengan Anda, menghadiri presentasi, dan umumnya tertarik dengan topik tersebut. Untuk alasan ini kami telah membuat konferensi baru disebut Hidra. Ngomong-ngomong, ada ide kenapa Hydra?

Maurice: Karena akan ada tujuh pembicara? Dan kepala mereka bisa dipenggal, dan pembicara baru akan tumbuh menggantikan mereka?

Alexei: Ide bagus untuk mengembangkan pembicara baru. Namun nyatanya, ada cerita di sini. Ingat legenda Odysseus, di mana dia harus berlayar di antaranya Scylla dan Charybdis? Hydra mirip dengan Charybdis. Ceritanya suatu kali saya berbicara di sebuah konferensi dan berbicara tentang multithreading. Hanya ada dua lagu di konferensi ini. Di awal laporan, saya memberi tahu hadirin di aula bahwa mereka sekarang punya pilihan antara Scylla dan Charybdis. Hewan roh saya adalah Charybdis karena Charybdis memiliki banyak kepala dan tema saya multi-threading. Ini adalah bagaimana nama-nama konferensi muncul.

Bagaimanapun, kita sudah kehabisan pertanyaan dan waktu. Jadi terima kasih teman-teman atas wawancaranya yang menyenangkan, dan sampai jumpa di SPTDC School dan Hydra 2019!

Anda dapat melanjutkan percakapan Anda dengan Maurice di konferensi Hydra 2019 yang akan diadakan pada 11-12 Juli 2019 di St. Dia akan datang membawa laporan "Blockchain dan masa depan komputasi terdistribusi". Tiket dapat dibeli di situs web resmi.

Sumber: www.habr.com

Tambah komentar