Pengarang: Vladas Saulis, PE Prodata, Klaipėda, Lithuania
18 Mei 2024
Abstrak
Kertas kerja ini membentangkan model pengaturcaraan baharu yang boleh menggunakan sistem CPU berbilang teras dengan cara yang mudah dan auto-seimbang. Model ini juga mencadangkan paradigma pengaturcaraan yang lebih mudah untuk membangunkan tugasan dan sistem selari dalam kebanyakan kawasan pengiraan selari secara besar-besaran, seperti ramalan cuaca, fizik nuklear, enjin carian, dll.
Kebelakangan ini kami menghadapi anjakan baharu dalam falsafah pengkomputeran, disebabkan oleh kemajuan seni bina perkakasan baharu dan prestasi yang lebih baik. Seni bina berbilang teras akan menjadi teknologi lazim dalam masa terdekat.
Apa yang boleh kita lakukan untuk memanfaatkan ini? Kertas kerja ini adalah mengenai salah satu penyelesaian yang mungkin kita boleh miliki.
Model pengkomputeran yang dicadangkan (yang dinamakan "Model Aliran Objek") juga menyediakan beberapa jawapan kepada soalan yang dibangkitkan dalam bentuk kertas terbitan terkenal Berkeley [1]. Berikut adalah senarai pendek kelebihan yang boleh dicapai menggunakan model ini:
· Proses pengaturcaraan yang mudah dan penyelenggaraan selanjutnya
· Penyepaduan dan penghijrahan OPU (CPU) semulajadi apabila unit pemprosesan objek (OPU) boleh ditambah atau dialih keluar dengan cepat
· Pengimbangan beban automatik
· Tidak perlu penyegerakan antara bahagian tugas
· Sedikit atau tiada penguncian bersama pada tahap sistem
Semua ciri ini dilaksanakan dalam Mesin JavaScript Selari (PJM), yang diterangkan di bawah dalam dokumen ini. PJM mungkin dianggap sebagai sistem operasi mini yang mengawal berbilang tugas JavaScript, berbilang pengguna dan berbilang konsol hadapan.
Pengenalan
Matlamat utama PJM (OS) adalah untuk memudahkan pengaturcaraan selari dengan memperkenalkan arahan khas (petunjuk) yang diwakili oleh komen yang direka khusus dalam bentuk //#pragma .
Mesin JavaScript Selari menggunakan NodeJS, dan dilaksanakan sebagai pelayan Web untuk bahagian hadapan, serta pelayan untuk OPU yang benar-benar melakukan pelaksanaan kod selari. OPU ialah pelanggan rangkaian JavaScript kecil yang dilaksanakan dalam NodeJS juga. Mungkin terdapat seberapa banyak yang perlu, disambungkan ke pelayan mesin selari utama sama ada secara tempatan atau jauh. Prestasi keseluruhan pemprosesan selari sangat bergantung pada bilangan OPU yang disambungkan.
Semua bahagian sistem, bekerja bersama-sama, boleh difahami sebagai OS mini yang melancarkan dan menghuraikan tugas JavaScript yang sedang berjalan, meletakkan bahagiannya ke dalam baris gilir pelaksanaan sistem dan menyediakan beberapa jenis kerja berbilang tugas yang kooperatif antara bahagian yang dipilih. Keputusan pengiraan dicetak ke konsol klien Web dengan saluran paip console.log keluaran daripada OPU melalui pelayan utama. Setiap OPU diperuntukkan kepada CPUnya sendiri (tempatan atau jauh) dan berfungsi melalui penjadual round-robin yang mudah (akan diterangkan kemudian). Ini dicapai dengan menggunakan modul Node pengurus proses PM2.
“Walaupun keserasian dengan binari lama dan program C adalah berharga kepada industri, dan sesetengah penyelidik cuba membantu rancangan produk berbilang teras berjaya, kami telah memikirkan pemikiran yang lebih berani. Matlamat kami adalah untuk merealisasikan beribu-ribu pemproses…”[1] tidak diperlukan pada komputer fizikal tunggal, tetapi di seluruh rangkaian, semuanya didalangi oleh unit pelayan pusat. Dari sudut pandangan sistem semua CPU/OPU beroperasi melalui protokol soket rangkaian dalaman yang tidak membezakan antara CPU tempatan dan jauh. Pelayan (PJM) dan pelanggan (OPU) — semuanya ditulis dalam JavaScript, jadi ia tidak serasi dengan perduaan C [lagi].
Semua program selari, yang berjalan dalam PJM, mestilah tidak menggunakan sambungan JavaScript ES6+ (mesti menggunakan ES5). Adalah penting untuk menyatakan di sini bahawa pelanjutan seperti kelas, fungsi anak panah, lets dan const, dan, terutamanya, async/waiit hampir tidak boleh disejajarkan, memerlukan penyelidikan dalaman JavaScript yang lebih teliti. Inilah sebabnya mengapa PJM berjalan pada NodeJS V8.2.1. Semua modul nod dikunci pada versi ini untuk prestasi yang lebih baik dan kejelasan konsep.
PJM dikawal dan tugasan dijalankan menggunakan Web Console yang berada di http://parallel-js.net:8888 . Dan beginilah kebiasaannya:
Konsol Web ditulis menggunakan rangka kerja ExtJS dan disambungkan ke pelayan PJM dengan menggunakan express.js modul HTTP NodeJS. Bahagian lain Web Console (dipanggil Console and Messages) disambungkan menggunakan WebSockets. Di sinilah semua output program dan mesej sistem akan datang dalam masa nyata. Adalah penting untuk mengetahui bahawa tiada pengiraan sebenar dilakukan dalam Konsol Web — semua pengiraan dilakukan pada pelayan PJM dan OPU.
…
Jika anda berminat dengan projek ini, sila dapatkan artikel penuh di sini.
Kod sumber untuk projek ini ada di sini.
Atas ialah kandungan terperinci Mesin JavaScript selari. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!