Model paralel saat ini untuk perhitungan

30

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?

Nicholas Mancuso
sumber

Jawaban:

19

Ada sejumlah model yang beredar, tetapi beberapa yang paling menonjol adalah:

  1. Model MUD dan Mapreduce yang terutama tentang menangkap kerangka kerja MapReduce, tetapi lebih umum dapat dilihat sebagai model komputasi yang didistribusikan secara paralel.
  2. Berbagai model multicore yang telah diusulkan (tetapi belum berarti merupakan standar)

Ada sebuah lokakarya bulan lalu di DIMACS tentang topik ini: membaca abstrak akan memberi Anda lebih banyak petunjuk.

Suresh Venkat
sumber
Lokakarya DIMAC sangat brilian! Terima kasih.
Nicholas Mancuso
3
Ada lokakarya sebelumnya pada tahun 2009 umiacs.umd.edu/conferences/tmc2009 yang bagi saya tampaknya lebih terasah daripada DIMAC baru-baru ini. Leslie Valiant memperkenalkan model Multi-BSP di sana (dibahas lebih rinci di lokakarya tahun ini), dan Phil Gibbons dari Intel mempresentasikan Teori Pembicaraan provokatif : tertidur di peralihan ke banyak-inti yang layak dilihat. Bagi saya bengkel DIMAC terlalu fokus pada MapReduce, yang tidak lagi digunakan Google untuk membangun indeks web mereka.
András Salamon
itu benar. Saya sudah lupa tentang yang sebelumnya.
Suresh Venkat
22

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.

Daging sapi
sumber
Saya tidak mengerti bagaimana mapreduce membentuk pohon. Bisakah Anda jelaskan?
Riko Jacob
@Riko Jacob, katakanlah Anda memetakan '+' ke (1 2 3 4), secara konseptual ini membuat pohon aplikasi dengan '+' di setiap node dan setiap nomor sebagai daun. kurangi (atau lipat jika Anda dari haskel) akan menutup setiap node dengan data dari anak-anaknya.
Daging sapi
K2,2
Jika Anda tidak memperhitungkan pembuatan grafik itu sendiri (mis. Pemetaan a, b ke pasangan kunci / lembah), Anda mendapatkan dua pohon yang melakukan reduksi, dengan sedikit itikad baik :) Mungkin lebih berupa k-terhubung atau grafik kisi seperti yang Anda katakan. Anda benar bahwa itu sedikit lebih umum daripada pohon sederhana. Saya mencoba membuat perbedaan dengan struktur aliran data DAG yang lebih umum.
Daging sapi
8

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.

Massimo Cafaro
sumber
4

Parallel External Memory (PEM) adalah kombinasi alami dari mesin memori bersama gaya-PRAM dengan model memori eksternal. Ini berfokus pada implikasi dari cache pribadi.

Riko Jacob
sumber
4

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.

labotsirc
sumber
3

Program murni fungsional memungkinkan eksekusi paralel ekspresi independen. Karenanya, saya akan menghitungnya sebagai model komputasi paralel.

Riko Jacob
sumber
Tidak ada model biaya khusus yang disibukkan dengan pemrograman fungsional, jadi ini tidak menjawab pertanyaan. Lihat cstheory.stackexchange.com/questions/376/…
Charles Stewart
2
Mekanisme evaluasi untuk bahasa berbasis lambda-kalkulus adalah reduksi, yang tidak benar-benar memiliki pemetaan langsung ke perangkat keras yang sebenarnya. Inilah sebabnya mengapa Haskell masih harus memperkenalkan konstruksi paralel eksplisit seperti 'par'. referensi: csg.csail.mit.edu/projects/languages/ph.shtml
Beef
3

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.

tumptump

Chad Brewbaker
sumber
-3

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

ay
sumber
lagi. Saya meminta model atau komputasi paralel. Bukan alat. MapReduce adalah salah satu model tersebut. Namun Hadoop dan NoSQL tidak. Hadoop adalah reifikasi MapReduce berbasis java. NoSQL adalah model untuk toko kunci santai dari apa yang saya tahu.
Nicholas Mancuso
MapReduce dimulai sebagai alat dan lulus ke model melalui penggunaan / adopsi yang luas. sama dengan yang lain. Hadoop tidak identik dengan MapReduce, tetapi mungkin serupa. ya, saya kira saya terlempar oleh jawaban suara-tinggi Suresh yang mencakup MapReduce ... orang-orang tampaknya tidak terlalu peduli, atau lebih suka tidak membahas, pkg perangkat lunak yang sebenarnya di situs ini ... tidak peduli seberapa luas digunakan .. bahkan mengingat bahwa mereka menginspirasi / crosspollinate / mendorong teori kemudian yang solid seperti MapReduce lakukan ... my bad = (
vzn
2
intinya adalah, Anda tidak menjawab pertanyaan. kebijakan di sini adalah bahwa saran yang berhubungan dengan pertanyaan bukanlah jawaban yang dapat diterima. jika Anda tidak menyukai kebijakan ini, Anda dapat memilih untuk tidak berpartisipasi. jika Anda memiliki ide aktual tentang bagaimana memodelkan sistem paralel dunia nyata, itu akan lebih pada topik (meskipun masih belum menjawab pertanyaan yang diajukan)
Sasho Nikolov
-3

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:

Algoritma probabilistik adalah metode perkiraan intensif secara komputasi untuk menyelesaikan masalah yang sulit diatasi. Algoritma probabilistik adalah kandidat yang sangat baik untuk komputasi cluster karena mereka memerlukan sedikit komunikasi dan sinkronisasi. Dimungkinkan untuk menentukan struktur kontrol paralel umum sebagai algoritma umum untuk perhitungan klaster probabilistik. Algoritma paralel generik seperti itu dapat direkatkan bersama dengan algoritma sekuensial domain-spesifik untuk memperoleh solusi paralel perkiraan untuk berbagai masalah yang sulit diselesaikan. Dalam makalah ini kami mengusulkan algoritma generik untuk perhitungan probabilistik pada sekelompok workstation. Kami menggunakan algoritma umum ini untuk mendapatkan algoritma paralel spesifik untuk dua masalah optimisasi diskrit: masalah ransel dan masalah tenaga penjual keliling.

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:

Penggunaan pengacakan dalam desain dan analisis algoritma menjanjikan algoritma yang sederhana dan efisien untuk masalah yang sulit, beberapa di antaranya mungkin tidak memiliki solusi deterministik. Keuntungan dalam kesederhanaan, efisiensi, dan solvabilitas ini menghasilkan pertukaran gagasan tradisional tentang kebenaran absolut algoritma untuk gagasan yang lebih kuantitatif: kebenaran dengan probabilitas antara 0 dan 1. Penambahan gagasan paralelisme ke yang sudah tidak intuitif Ide pengacakan membuat penalaran tentang program paralel probabilistik semakin berliku dan sulit. Dalam makalah ini kami membahas masalah menentukan dan memperoleh sifat dari program paralel probabilistik yang baik secara deterministik atau dengan probabilitas 1.

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.

ay
sumber
-6

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

ay
sumber
@vnz, ini tampaknya yang terbaik adalah acak-campur aduk konsep kuantum. Googling "kuantum paralel" dan mencantumkan hasil di sini tidak berguna bagi saya dan orang lain yang membaca ini. Saya pikir akan lebih baik bagi masyarakat untuk benar-benar merespons jawaban yang Anda rasa nyaman dan ketahui, daripada hanya membuat terobosan gila untuk poin reputasi. Tidaklah konstruktif dan mungkin tidak jujur ​​untuk menganggap komputasi kuantum sebagai pencarian paralel. Komputasi kuantum memiliki, untuk menggunakan deskripsi Anda, "analogi / koneksi yang kuat" dengan pencarian probabilistik, bukan paralel.
Nicholas Mancuso
Saya tidak tahu apa yang diajarkan dogma di ruang kelas, tetapi jika seseorang di luar sana benar-benar memiliki REFERENSI daripada sekadar PENANGGULANGAN BERBASIS yang menunjukkan mengapa tidak ada validitas untuk korespondensi QM yang belum terungkap sejauh ini yang menyelesaikan komputasi klasik paralel .... Saya akan BACA SAYA T. Komputasi QM mengembalikan jawaban yang tepat ala / misal faktor anor kalau tidak, itu bukan sistem perhitungan yang sebenarnya ..... ada juga cara lain selain sketsa saya untuk menunjukkan bahwa komputasi QM harus setara dengan komputasi klasik paralel dalam beberapa hal ... mungkin karena tidak ada di buku pelajaran, pasti salah ya !!
vzn
Ada seluruh kursus gratis tentang komputasi kuantum di sini: coursera.org dapat menjelaskan beberapa hal untuk Anda.
Nicholas Mancuso
ps seperti untuk "gado-gado" ... coba sebenarnya MEMBACA THE REFS .. atau mungkin hanya membaca sekilas dalam kasus Anda wink =)
vzn
1
(6.) Referensi Anda. [5] menjelaskan cara-cara di mana algoritma Grover dapat diperluas, lagi tanpa mengatasi paralelisme yang Anda cari dalam perhitungan kuantum. Singkatnya: interpretasi Anda bahwa ada hubungan antara kuantum dan komputasi paralel tampaknya berasal dari Many Worlds Interpretation of QM. Meskipun tidak jelas, itu juga bukan tidak kontroversial, dan tentu saja tidak memungkinkan kita untuk secara produktif menggambarkan perhitungan kuantum sebagai "perhitungan secara paralel", kecuali sejauh kita tidak melihat perhitungan itu ... yang bukan argumen yang kuat untuk kehadiran mereka.
Niel de Beaudrap