1980-an memunculkan model komputasi paralel paralel PRAM dan BSP . Tampaknya masa kejayaan kedua model adalah selama akhir 80-an dan awal 90-an.
Apakah area ini masih aktif dalam hal penelitian untuk algoritma paralel? Apakah ada model yang lebih baru dan lebih canggih untuk komputasi paralel? Apakah model umum masih populer, atau apakah para peneliti mencoba untuk mengkhususkan diri dengan komputasi berbasis GPGPU atau Cloud yang sedang populer?
ds.algorithms
dc.parallel-comp
dc.distributed-comp
Nicholas Mancuso
sumber
sumber
Saya meminta maaf sebelumnya untuk format posting blog dari jawaban saya. Saya tidak bisa menahan diri untuk membuat ikhtisar kecil tentang dunia komputasi paralel.
Anda dapat mengategorikan model pemrograman paralel dalam kira-kira dua kategori: model kontrol aliran dan data aliran.
The model kontrol aliran mencoba untuk membuat pekerjaan paralelisme dalam konteks program eksplisit kontrol, pada dasarnya setiap komputer diprogram hari ini. Masalah mendasar yang dihadapi adalah bahwa 'arsitektur Von Neumann' seperti itu tidak dirancang untuk eksekusi paralel, tetapi perhitungan sekuensial yang efisien. Paralelisme dalam konteks tersebut diperoleh dengan menduplikasi bagian-bagian modul dasar (memori, kontrol, aritmatika).
Duplikasi hanya aritmatika memberi Anda instruksi SIMD, semua ALU berbagi Program Counter (PC) yang sama dan dengan demikian selalu menjalankan operasi yang sama secara paralel, meskipun pada data yang berbeda.
Menggandakan ALU dan PC tetapi menjaga sequencer instruksi di dalam unit kontrol memberi Anda eksekusi Out of Order (OoO) yang menghasilkan beberapa paralelisme pipa. Dalam kategori ini Anda juga memiliki teknik Instruksi Kata Sangat Panjang (VLWI) dan prediksi dedak. Anda jarang melihat kategori ini di tingkat perangkat lunak.
Melangkah lebih jauh adalah menduplikasi seluruh 'inti' tetapi menjaga memori tetap digunakan bersama, ini adalah prosesor multicore saat ini yang memberi Anda tugas (atau utas) paralelisme. Berbagi memori dalam konteks ini memberi Anda masalah konkurensi yang sangat, sangat keras, dan halus . Komputasi paralel pada multicore saat ini dengan demikian sepenuhnya berputar di sekitar masalah sinkronisasi / konkurensi, keseimbangan kinerja yang cermat (tanpa sinkronisasi) dan semantik yang diinginkan (sepenuhnya disinkronkan, semantik eksekusi berurutan). Contoh dari ini adalah PRAM atau lebih populer hari ini Cilk ofshoots seperti fork / join ( IntelTBB , Java.Utils.Concurrency). Model CSP dan Aktor adalah model konkurensi, tetapi seperti yang disebutkan di atas konkurensi dan paralelisme menjadi kabur dalam lingkungan memori bersama. nb paralelisme adalah untuk kinerja, konkurensi untuk mempertahankan semantik yang benar.
Memori duplikat juga memberi Anda komputer jaringan yang diprogram dengan MPI dan sejenisnya atau hanya arsitektur non-Von Neumann yang aneh seperti prosesor jaringan-on-a-chip (prosesor cloud, Transputer, Tilera). Model memori seperti UMA atau NUMA mencoba untuk mempertahankan ilusi memori bersama dan dapat ada pada tingkat perangkat lunak atau perangkat keras. MPI mempertahankan paralelisme tingkat program dan hanya berkomunikasi melalui pengiriman pesan. Pesan lewat juga digunakan pada tingkat perangkat keras untuk komunikasi dan konkurensi (Transputer).
Kategori kedua adalah model aliran data . Ini dirancang pada awal era komputer sebagai cara untuk menulis dan menjalankan komputasi paralel, menghindari desain Von Neumann. Ini telah keluar dari mode (untuk komputasi paralel) pada tahun 80-an setelah kinerja berurutan naik secara eksponensial. Namun, banyak sistem pemrograman paralel seperti Google MapReduce, Dryad Microsoft atau Collections Collections Intel sebenarnya adalah model komputasi aliran data. Pada titik tertentu mereka mewakili perhitungan sebagai grafik dan menggunakannya untuk memandu eksekusi.
Dengan menentukan bagian-bagian dari model Anda mendapatkan berbagai kategori dan semantik untuk model aliran data. Apa yang Anda batasi bentuk grafik untuk: DAG (CnC, Dryad), pohon (mapreduce), digraf? Apakah ada semantik sinkronisasi yang ketat ( Kilau, pemrograman reaktif]? Apakah Anda melarang rekursi untuk dapat memiliki jadwal statis (StreaMIT) atau apakah Anda memberikan kekuatan yang lebih ekspresif dengan memiliki penjadwal dinamis (Intel CnC)? Apakah ada batasan jumlah tepi yang masuk atau keluar? Apakah semantik firing memungkinkan menembakkan node ketika subset dari data yang masuk tersedia? Apakah tepi aliran data (pemrosesan aliran) atau token data tunggal (penugasan statis / dinamis tunggal). Untuk pekerjaan terkait Anda bisa mulai dengan melihat pekerjaan penelitian aliran data orang-orang seperti Arvind, K. Kavi, j. Sharp, W. Ackerman, R. Jagannathan, dll.
Sunting: Demi kelengkapan. Saya harus menunjukkan ada juga model paralel -driven dan model-driven . Untuk strategi reduksi, Anda memiliki pengurangan grafik dan pengurangan string secara luas. Haskell pada dasarnya menggunakan pengurangan grafik, yang merupakan strategi yang sangat efisien pada sistem shared-memory berurutan. Duplikat pengurangan-string berfungsi, tetapi memiliki properti memori-pribadi yang membuatnya lebih cocok untuk diparalelkan secara implisit. Model yang digerakkan oleh pola adalah bahasa logika paralel, seperti prolog bersamaan. Model Aktor juga merupakan model yang digerakkan oleh pola, tetapi dengan karakteristik memori pribadi.
PS. Saya menggunakan istilah 'model' secara luas, mencakup mesin-mesin abstrak untuk keperluan formal dan pemrograman.
sumber
Untuk arsitektur pesan-lewat, model yang sangat mirip dengan BSP tetapi lebih mudah untuk ditangani dan dengan analisis kinerja yang dekat dengan apa yang Anda dapatkan dari mesin nyata tentunya adalah CGM atau Multicomputer Kasar Berwarna. Itu diusulkan oleh Frank Dehne, dan Anda akan menemukan banyak makalah menarik yang menyajikan algoritma yang dikembangkan dalam konteks ini.
CGM cocok dengan arsitektur berbutir kasar dengan asumsi prosesor p, masing-masing dengan memori lokal O (n / p) dan ukuran input n jauh lebih besar (urutan besarnya terpisah) daripada p, yaitu p≪n. Oleh karena itu, model memetakan jauh lebih baik daripada yang lain pada arsitektur saat ini; telah dipelajari secara luas. Model ini didasarkan pada asumsi berikut: (i) algoritma mengeksekusi apa yang disebut supersteps, yang terdiri dari satu fase komputasi lokal dan satu fase komunikasi interprocessor dengan sinkronisasi penghalang menengah, (ii) semua prosesor p memiliki akses ke O (n / p) memori lokal, (iii) di setiap superstep, prosesor dapat mengirim dan menerima paling banyak elemen O (n / p) dan (iv) jaringan komunikasi antara prosesor dapat berubah-ubah. Dalam model ini, suatu algoritma dievaluasi dengan waktu komputasi dan jumlah putaran komunikasi. Meskipun modelnya sederhana, namun memberikan prediksi yang masuk akal tentang kinerja aktual dari algoritma paralel; memang, algoritma paralel untuk CGM biasanya memiliki analisis kompleksitas teoretis yang sangat dekat dengan waktu aktual yang ditentukan secara eksperimental ketika menerapkan dan membandingkannya.
sumber
Parallel External Memory (PEM) adalah kombinasi alami dari mesin memori bersama gaya-PRAM dengan model memori eksternal. Ini berfokus pada implikasi dari cache pribadi.
sumber
Dari apa yang saya tahu, model BSP dan LogP digunakan hari ini untuk algoritma terdistribusi. Juga, sejak komputasi GPU, PRAM menjadi kembali populer, namun seseorang harus memasukkan hierarki memori dalam analisis. Anda dapat memeriksa model UPMH (Hirarki memori Paralel Seragam) yang sesuai dengan PRAM.
B. Alpern, L. Carter, E. Feig, dan T. Selker. Model komputasi hierarki memori yang seragam. Algorithmica, 12: 72–109, 1994. 10.1007 / BF01185206.
Bowen Alpern, Larry Carter, dan Jeanne Ferrante. Memodelkan komputer paralel sebagai hierarki memori. In In Proc. Model Pemrograman untuk Komputer Paralel Masif, halaman 116–123. IEEE Computer Society Press, 1993.
Juga untuk komputasi GPU, telah ada proposal untuk model komputasi teoretis; model-K:
Gabriele Capannini, Fabrizio Silvestri, dan Ranieri Baraglia. K-model: Model komputasi baru untuk prosesor aliran. Dalam Prosiding Konferensi Internasional ke-12 IEEE 2010 tentang Komputasi Kinerja Tinggi dan Komunikasi, HPCC '10, halaman 239–246, Washington, DC, USA, 2010. IEEE Computer Society.
Terakhir, saya telah melihat automata seluler (CA) dimodelkan sebagai komputer paralel, secara pribadi saya pikir ini adalah topik penelitian yang sangat menarik. Siapa tahu di masa depan prosesor akan dibuat dengan cara ini, seperti ruang komputasi kecil. Saya tidak punya referensi yang kuat untuk ini, Anda bisa mencarinya di web.
sumber
Program murni fungsional memungkinkan eksekusi paralel ekspresi independen. Karenanya, saya akan menghitungnya sebagai model komputasi paralel.
sumber
Saya lebih suka pendekatan Bader-Jaja (lihat bagian 2.1). Anda memodelkan kompleksitas sebagai masalah pengiriman pesan. Untuk setiap pesan yang dikirim ada variabel untuk latensi untuk memulai komunikasi dan variabel untuk bandwidth.
sumber
Anda menyebutkan cloud computing secara spesifik. telah hanya dalam beberapa tahun inovasi yang intens di daerah ini dengan Amazon menghitung elastis awan, yang mesin google app & berbagai alat dan terkait pengolahan "model" mereka paralel konseptual.
alat sumber terbuka khusus termasuk Google Mapreduce , Apache Hadoop, dan database NoSQL yang muncul sebagai standar baru, kuat, dan banyak diadaptasi dalam algoritma paralelisasi "praktik terbaik" dan "pola desain". juga memcacheD semakin banyak digunakan sebagai basis data terdistribusi dalam memori. contoh dari ini digunakan di Facebook yang dijelaskan dalam makalah terbaru [1].
[1] Banyak penyimpanan nilai kunci inti oleh Berezecki et al
sumber
sudut lain tentang ini. memang ini dapat dianggap sebagai sesuatu yang tidak jelas atau tidak jelas oleh beberapa orang, tetapi ada beberapa yang bekerja untuk memparalelkan, secara umum, algoritma probabilistik, yang dinyatakan agak cocok secara alami untuk paralelisme.
lihat misalnya Komputasi Probabilitas Paralel pada Kelompok Kerja Radenski, Vann, Norris:
dalam hal ini tidak jelas, "struktur kontrol paralel umum sebagai algoritma generik" yang dirujuk bersama dengan perhitungan probabilistik, dan konversi keseluruhan, adalah "model".
bisa dikatakan bahwa perhitungan probabilistik tidak sepenuhnya komputasi klasik atau Turing lengkap. jadi perhatikan ada beberapa pekerjaan dalam mengikat klasik dengan perhitungan probabilistik juga secara khusus dalam konteks paralel misalnya
Alasan tentang program paralel probabilistik oleh Rao:
tentu saja komputasi QM sangat mirip dengan komputasi probabilistik (ref yang bagus yang menekankan ini adalah One Complexity Theorist's View of Quantum Computing oleh Fortnow ) & ada beberapa petunjuk bahwa pendekatan ini mungkin diperluas di sana, misalnya dalam pekerjaan dalam simulasi QM paralel.
sumber
ini akan dianggap kontroversial oleh sebagian orang, dan bahkan para pendukung sudut ini harus mengakui hal itu pada tahap awal penelitian, tetapi pada dasarnya komputasi kuantum tampaknya memiliki banyak koneksi ke paralelisme dan komputasi paralel. referensi sekarang tersebar tetapi tema yang muncul dapat dilihat oleh seorang peneliti yang ditentukan.
mungkin koneksi terbaik adalah dengan algoritma pencarian Grovers yang baru-baru ini telah terbukti lebih umum dalam arti dapat digunakan untuk mempercepat pada sebagian besar masalah lengkap NP secara umum [5]. Algoritma Grovers tampaknya memiliki analogi / koneksi yang kuat dengan algoritma pencarian database paralel. algoritma serial klasik terbaik tidak dapat memenuhi kinerja yang sama tetapi setidaknya satu otoritas baru-baru ini berpendapat bahwa pendekatan QM untuk pencarian sebenarnya tidak mengungguli algoritma klasik paralel. [1]
bukti lebih lanjut adalah skema yang secara eksplisit melihat paralelisme dalam pencarian kuantum misalnya [2]. juga simulator kuantum telah diusulkan yang didasarkan pada pemrosesan paralel / terdistribusi [3] [4] dan karena skema ini cocok & mengarah pada simulasi yang efisien dan dapat ditelusuri (30 qubit disimulasikan dalam ref [3]), konversi ini jelas bukan hanya kebetulan dan menunjukkan jembatan yang lebih dalam antara komputasi klasik paralel dan komputasi QM, tetapi mungkin sejauh ini terungkap.
[1] Apakah pencarian kuantum praktis? oleh Viamontes et al
[2] Pencarian kuantum yang tepat dengan skema diskriminasi kesatuan paralel oleh Wu / Dian
[3] Simulator paralel tujuan umum untuk komputasi kuantum oleh Niwa, Matsumoto, Imai.
[4] komputasi kuantum terdistribusi efisien oleh Beals et al 2012
[5] Memecahkan masalah lengkap NP dengan pencarian kuantum oleh Furer 2008
sumber