Komputasi paralel dan terdistribusi

15

Apa perbedaan antara komputasi paralel dan terdistribusi? Ketika datang ke skalabilitas dan efisiensi, sangat umum untuk melihat solusi berurusan dengan perhitungan dalam kelompok mesin, dan kadang-kadang disebut sebagai pemrosesan paralel, atau sebagai pemrosesan terdistribusi.

Dengan cara tertentu, perhitungannya tampaknya selalu paralel, karena ada hal-hal yang berjalan bersamaan. Tetapi apakah perhitungan terdistribusi hanya terkait dengan penggunaan lebih dari satu mesin, atau adakah kekhususan lebih lanjut yang membedakan kedua jenis pemrosesan ini? Bukankah berlebihan untuk mengatakan, misalnya, bahwa suatu komputasi adalah paralel DAN didistribusikan ?

Rubens
sumber

Jawaban:

16

Secara sederhana, 'paralel' berarti berjalan secara bersamaan pada sumber daya yang berbeda (CPU), sedangkan 'didistribusikan' berarti berjalan di komputer yang berbeda, yang melibatkan masalah yang berkaitan dengan jaringan.

Komputasi paralel menggunakan misalnya OpenMP tidak didistribusikan, sedangkan komputasi paralel dengan Message Passing sering didistribusikan.

Berada dalam lingkungan yang 'terdistribusi tetapi tidak paralel' akan berarti sumber daya yang kurang digunakan sehingga jarang ditemukan tetapi secara konseptual dimungkinkan.

damienfrancois
sumber
4

Istilah "komputasi paralel" dan "komputasi terdistribusi" tentu memiliki tumpang tindih yang besar, tetapi dapat dibedakan lebih lanjut. Sebenarnya, Anda sudah melakukan ini dalam pertanyaan Anda, dengan kemudian bertanya tentang "pemrosesan paralel" dan "pemrosesan terdistribusi".

Seseorang dapat mempertimbangkan "komputasi terdistribusi" sebagai istilah yang lebih umum yang melibatkan "pemrosesan terdistribusi" serta, misalnya, "penyimpanan terdistribusi". Istilah umum, "didistribusikan", biasanya merujuk pada semacam Melewati Pesan melalui jaringan, antara mesin yang terpisah secara fisik.

Istilah "komputasi paralel" juga sedang dalam proses untuk didefinisikan lebih lanjut, misalnya dengan secara eksplisit membedakan antara istilah "paralel" dan "bersamaan", di mana - kira-kira - yang pertama merujuk paralelisme data dan yang terakhir ke tugas paralelisme , meskipun ada bukanlah definisi yang sangat ketat dan mengikat.

Jadi orang bisa mengatakan itu

  • "pemrosesan terdistribusi" biasanya (walaupun tidak harus) berarti juga "pemrosesan paralel"
  • "komputasi terdistribusi" lebih umum, dan juga mencakup aspek-aspek yang tidak terkait dengan paralelisme
  • dan jelas, "komputasi paralel" / "pemrosesan paralel" tidak menyiratkan bahwa itu "didistribusikan"
Marco13
sumber
3

Jawaban yang disajikan sejauh ini sangat bagus, tetapi saya juga mengharapkan penekanan pada perbedaan tertentu antara pemrosesan paralel dan terdistribusi: kode dieksekusi. Mempertimbangkan proses paralel, kode yang dieksekusi adalah sama, terlepas dari tingkat paralelisme (instruksi, data, tugas). Anda menulis kode tunggal , dan itu akan dieksekusi oleh utas / prosesor yang berbeda, misalnya, saat menghitung produk matriks, atau menghasilkan permutasi.

Di sisi lain, komputasi terdistribusi melibatkan eksekusi berbagai algoritma / program pada saat yang sama di prosesor yang berbeda (dari satu atau lebih mesin). Komputasi semacam itu kemudian digabungkan menjadi hasil antara / akhir dengan menggunakan sarana komunikasi / sinkronisasi data yang tersedia (memori bersama, jaringan). Selanjutnya, komputasi terdistribusi sangat menarik untuk pemrosesan BigData, karena memungkinkan untuk mengeksploitasi paralelisme disk (biasanya hambatan untuk database besar).

Akhirnya, untuk tingkat paralelisme, ini dapat dianggap sebagai kendala pada sinkronisasi. Sebagai contoh, dalam GPGPU, yang merupakan data tunggal-instruksi tunggal (SIMD), paralelisme terjadi dengan memiliki input yang berbeda untuk satu instruksi, setiap pasangan (data_i, instruksi) dieksekusi oleh utas yang berbeda. Tersebut adalah pengekangan bahwa, dalam kasus cabang yang berbeda, perlu untuk membuang banyak perhitungan yang tidak perlu, sampai thread kembali. Untuk utas CPU, biasanya mereka berbeda; namun, seseorang dapat menggunakan struktur sinkronisasi untuk memberikan eksekusi bersamaan dari bagian spesifik dari kode.

Rubens
sumber