Seperti yang ditunjukkan oleh @Raphael, Distributed Computing adalah bagian dari Parallel Computing; pada gilirannya, Parallel Computing adalah bagian dari Concurrent Computing.
Concurrency mengacu pada berbagisumber daya dalam jangka waktu yang sama. Sebagai contoh, beberapa proses berbagi CPU (atau core CPU) yang sama atau berbagi memori atau perangkat I / O. Sistem operasi mengelola sumber daya bersama. Mesin multiprosesor dan sistem terdistribusi adalah arsitektur di mana kontrol konkurensi memainkan peran penting. Konkurensi terjadi pada tingkat perangkat keras dan perangkat lunak. Beberapa perangkat beroperasi pada saat yang sama, prosesor memiliki paralelisme internal dan bekerja pada beberapa instruksi secara bersamaan, sistem memiliki banyak prosesor, dan sistem berinteraksi melalui komunikasi jaringan. Konkurensi terjadi pada tingkat aplikasi dalam penanganan sinyal, dalam tumpang tindih I / O dan pemrosesan, dalam komunikasi, dan dalam pembagian sumber daya antara proses atau di antara utas dalam proses yang sama.
Dua proses (atau utas) yang dieksekusi pada sistem yang sama sehingga eksekusinya saling terkait dalam waktu bersamaan: proses (utas) berbagi sumber daya CPU. Saya suka definisi berikut: dua proses (utas) yang dieksekusi pada sistem yang sama adalah bersamaan jika dan hanya jika proses kedua (utas) memulai eksekusi ketika proses pertama (utas) belum menghentikan eksekusinya.
Concurrency menjadi paralelisme ketika proses (atau utas) dieksekusi pada CPU yang berbeda (atau inti dari CPU yang sama). Paralelisme dalam hal ini bukan "virtual" tetapi "nyata".
Ketika CPU-CPU itu milik mesin yang sama, kami menyebut komputasi sebagai "paralel"; ketika CPU berasal dari mesin yang berbeda , dapat menyebar secara geografis, kami menyebut komputasi sebagai "didistribusikan".
Oleh karena itu, Komputasi Terdistribusi adalah bagian dari Komputasi Paralel, yang merupakan bagian dari Komputasi Bersamaan.
Tentu saja, memang benar bahwa, secara umum, komputasi paralel dan terdistribusi dianggap berbeda. Komputasi paralel terkait dengan aplikasi yang digabungkan secara ketat, dan digunakan untuk mencapai salah satu tujuan berikut:
- Memecahkan masalah komputasi intensif lebih cepat;
- Memecahkan masalah yang lebih besar dalam jumlah waktu yang sama;
- Memecahkan masalah ukuran yang sama dengan akurasi yang lebih tinggi dalam jumlah waktu yang sama.
Di masa lalu, tujuan pertama adalah alasan utama untuk komputasi paralel: mempercepat solusi masalah. Saat ini, dan jika mungkin, para ilmuwan terutama menggunakan komputasi paralel untuk mencapai tujuan kedua (misalnya, mereka bersedia menghabiskan jumlah waktu yang sama mereka habiskan di masa lalu memecahkan secara paralel masalah ukuran untuk menyelesaikan sekarang masalah ukuran ) atau yang ketiga (yaitu, mereka bersedia untuk menghabiskan jumlah waktu yang sama mereka habiskan di pemecahan sebelumnya secara paralel masalah ukuran untuk menyelesaikan sekarang masalah ukuranx 5 x T x xTx5 xTxxtetapi dengan akurasi yang lebih tinggi menggunakan model yang jauh lebih kompleks, lebih banyak persamaan, variabel dan batasan). Komputasi paralel dapat menggunakan shared-memory, message-passing atau keduanya (misal, shared-memory intra-node menggunakan OpenMP, message-passing inter-node menggunakan MPI); mungkin menggunakan akselerator GPU juga. Karena aplikasi ini berjalan pada satu superkomputer paralel, kami biasanya tidak memperhitungkan masalah akun seperti kegagalan, partisi jaringan dll, karena kemungkinan kejadian ini, untuk tujuan praktis, mendekati nol. Namun, aplikasi paralel besar seperti simulasi perubahan iklim, yang dapat berjalan selama beberapa bulan, biasanya berkaitan dengan kegagalan, dan menggunakan mekanisme checkpointing / restart untuk menghindari memulai simulasi lagi dari awal jika masalah muncul.
Komputasi terdistribusi terkait dengan aplikasi yang digabungkan secara longgar, di mana tujuannya (untuk superkomputer terdistribusi ) adalah untuk memecahkan masalah yang terlalu besar atau yang pelaksanaannya dapat dibagi pada komponen yang berbeda yang dapat mengambil manfaat dari eksekusi pada arsitektur yang berbeda. Ada beberapa model termasuk client-server, peer-to-peer dll. Masalah-masalah yang timbul dalam komputasi terdistribusi, seperti keamanan, kegagalan, partisi jaringan dll harus dipertimbangkan pada waktu desain, karena dalam konteks ini kegagalan adalah aturan dan tidak terkecuali.
Akhirnya, komputasi Grid dan Cloud keduanya merupakan himpunan bagian dari komputasi terdistribusi. Paradigma komputasi grid muncul sebagai bidang baru yang dibedakan dari komputasi terdistribusi tradisional karena fokusnya pada berbagi sumber daya skala besar dan aplikasi inovatif berkinerja tinggi. Sumber daya yang dibagikan, biasanya milik beberapa domain administratif yang berbeda (disebut Organisasi Virtual ). Grid Computing, sementara banyak digunakan oleh para ilmuwan dalam dekade terakhir, secara tradisional sulit bagi pengguna biasa. Cloud computing mencoba menjembatani kesenjangan, dengan memungkinkan pengguna biasa untuk mengeksploitasi banyak mesin dengan mudah, yang terletak di pusat data yang sama dan tidak terdistribusi secara geografis, melalui penggunaan Mesin Virtualyang dapat dirakit oleh pengguna untuk menjalankan aplikasi mereka. Karena perangkat keras, khususnya kurangnya interkoneksi jaringan berkinerja tinggi (seperti Infiniband dll), cloud tidak ditargetkan untuk menjalankan aplikasi MPI paralel. Aplikasi terdistribusi yang berjalan di cloud biasanya diterapkan untuk mengeksploitasi paradigma Peta / Kurangi. Ngomong-ngomong, banyak orang menganggap Map / mengurangi sebagai model aliran data paralel.