Catatan pengantar tentang paralelisasi, khususnya pola masalah dan algoritma

10

Saya mencari catatan Kuliah yang tersedia online atau sumber daya lain yang memberikan pengenalan yang baik ke pemrograman paralel, seperti analog paralel dari kelas dasar dalam ilmu komputer.

Fokus saya adalah sebagai berikut: sementara saya dapat berbicara tentang divide & conquer, algoritma serakah, pemrograman dinamis dan sejenisnya, yaitu pola dasar algoritma sekuensial (dan masalah), dan saya tidak memiliki bahasa yang tepat untuk mengklasifikasikan pendekatan dalam algoritma paralel.

Sebagai contoh, saya ingin memperoleh istilah yang tepat untuk mengungkapkan fakta bahwa pendekatan paralel yang jelas untuk masing-masing masalah berikut memiliki perilaku kualitatif yang berbeda:

  1. pengaturan array bilangan bulat semua-nol (skala sempurna.)
  2. menjumlahkan array bilangan bulat (semakin banyak utas yang Anda gunakan, semakin banyak overhead.)
  3. Diberikan array, daftar produk dari setiap entri dengan entri lainnya (jika kita memparalelkan kanon-ganda-untuk-loop, waktu berjalan akan skala ke sqrt dari jumlah prosesor.)

Lingkungan memori bersama sudah mencukupi, dan komunikasi antarproses tidak begitu relevan bagi saya (pada kenyataannya, saya tertarik pada algoritma yang menghindarinya sama sekali). Selain itu, aspek teknisnya bisa diabaikan bagi saya.

shuhalo
sumber
Dapatkah Anda merumuskan kembali kalimat ini: "Misalnya, saya ingin memiliki bahasa mengapa pendekatan paralel yang jelas untuk masalah-masalah berikut ini memiliki perilaku kualitatif yang berbeda"
Gopi
Selesai Saya harap ini lebih akurat.
shuhalo

Jawaban:

6

Untuk buku pengantar pemrograman paralel (saya tidak tahu tentang materi online), saya telah mempelajarinya dengan Algoritma Paralel oleh Casanova, Legrand dan Robert, yang sangat membantu untuk memulai dalam algoritme paralel teoretis.

Selanjutnya, dalam SPAA'11 adalah diskusi tentang apa yang harus diketahui oleh algoritma paralel dan komputasi terdistribusi dan apa yang harus diajarkan. Inisiatif Kurikulum ini pada Komputasi Paralel dan Terdistribusi , akan membantu Anda untuk menemukan bukan kursus, tetapi daftar topik yang berbeda yang harus dibahas selama kursus sarjana. Maka saya kira lebih mudah untuk menemukan dokumentasi pada setiap topik tertentu.

Gopi
sumber
1
Istilah "bahasa" mengacu pada bahasa alami, bukan bahasa pemrograman atau sejenisnya. Sama seperti matematika adalah bahasa, dan misalnya teori kategori atau teori kelompok dikatakan menyediakan "bahasa" untuk struktur, hubungan, dan fakta tertentu. Tapi Terimakasih.
shuhalo
memang, saya buruk :). Kemudian Untuk tiga pertanyaan yang Anda miliki, saya sangat merekomendasikan buku yang saya tautkan yang sangat teoretis. Mereka mempelajari semua jenis algoritma dan teknik paralel pada berbagai jenis arsitektur paralel. Maka bagian yang mungkin menjawab tiga pertanyaan Anda akan menjadi bagian di Uniform Loops .
Gopi
+1 untuk Prakarsa Kurikulum NSF / IEEE-TCPP, tetapi saya sarankan Anda menghapus OpenMP & MPI, karena mereka tidak benar-benar relevan di sini.
Jukka Suomela
Memang, saya lupa menghapusnya setelah komentar @Martin. Terima kasih.
Gopi
7

Jika Anda tidak ingin mempelajari detail yang mendebarkan, pengantar yang sangat baik untuk pola desain paralelisasi disediakan oleh buku Pola untuk Pemrograman Paralel oleh Mattson, Sanders dan Massingill.

Anda akan menemukan solusi umum, yang dapat diterapkan secara luas untuk paralelisasi dan bahkan pengantar singkat untuk OpenMP dan MPI. Buku ini dimulai dengan memperkenalkan pola desain dan konkurensi. Kemudian, penulis melanjutkan untuk mengilustrasikan bagaimana mengeksploitasi konkurensi, bagaimana menyusun algoritma, dan bagaimana mengimplementasikan algoritma dengan memperhitungkan sinkronisasi dan komunikasi akun.

Sekali lagi, ini bukan buku teks tentang algoritma paralel. Ia melakukan pekerjaan yang sangat baik dalam menyajikan materi yang secara ketat terkait dengan rekayasa perangkat lunak paralel, dengan fokus praktis dan teoretis. Karena itu, harus sesuai dengan kebutuhan Anda.

Massimo Cafaro
sumber
1

MPI_RUBY ... perlu menemukan bangunan stabil terbaru saya. Saya akan menyarankan menambahkan paralel-awalan (pemindaian) ke daftar. Saya hanya akan mengajarkan awalan paralel, dan menunjukkan kepada mereka cara menggunakan kurva pengisian ruang untuk mendapatkan efisiensi cache yang lebih baik pada masalah semua pasangan.

Chad Brewbaker
sumber