Komputasi Paralel Definisi, Contoh, Jenis, dan Teknik

AnugrahRiyanHadiTirtana
0

 


Komputasi paralel adalah arsitektur komputasi yang membagi masalah menjadi tugas-tugas yang lebih kecil dan menjalankannya secara bersamaan. Komputasi paralel memiliki kemampuan untuk memproses beberapa tugas secara bersamaan, sehingga jauh lebih cepat daripada komputer sekuensial. Komputasi paralel membantu memecahkan masalah yang besar dan kompleks dalam waktu yang jauh lebih singkat.

Konsep komputasi paralel bukanlah hal baru. Konsep ini muncul pada pertengahan abad ke-20 saat diperkenalkan untuk mempercepat perhitungan numerik. Kini, berkat kemajuan teknologi, komputasi paralel digunakan dalam berbagai aplikasi, termasuk analisis data besar, kecerdasan buatan, prakiraan cuaca, dan penelitian ilmiah. Sistem komputasi paralel modern dapat ditingkatkan hingga jutaan komputer dan melakukan operasi pada kumpulan data besar dalam sepersekian detik.

Kelas Komputer Paralel

Komputer paralel diklasifikasikan berdasarkan struktur dan cara mereka menangani tugas. Berikut adalah jenis-jenis utamanya:

Komputasi Multi-Inti

Salah satu bentuk komputasi paralel yang paling umum adalah komputasi multi-inti. Ini melibatkan satu komponen komputasi dengan dua atau lebih unit pemrosesan independen, yang dikenal sebagai inti. Setiap inti dapat menjalankan instruksi secara independen dari yang lain.

Prosesor multi-inti telah menjadi norma dalam komputer pribadi dan server, karena meningkatkan kinerja dan efisiensi energi. Prosesor ini sangat berguna dalam lingkungan multitugas di mana beberapa program berjalan secara bersamaan.

Multiproses Simetris

Multiprosesor simetris (SMP) adalah kelas arsitektur komputasi paralel di mana dua atau lebih prosesor identik dihubungkan ke satu memori utama bersama. Sebagian besar sistem SMP menggunakan arsitektur akses memori seragam (UMA), di mana semua prosesor berbagi memori fisik.

Sistem SMP sangat efisien saat menjalankan beberapa tugas yang memerlukan komunikasi antarprosesor secara berkala. Sistem ini umumnya digunakan di server, di mana banyak tugas perlu dijalankan secara bersamaan. Keuntungan utama sistem SMP adalah kemampuannya untuk meningkatkan kecepatan komputasi sambil mempertahankan kesederhanaan sistem prosesor tunggal.

Komputasi Terdistribusi

Dalam komputasi terdistribusi, satu tugas dibagi menjadi banyak subtugas yang lebih kecil yang didistribusikan ke beberapa komputer. Komputer-komputer ini mungkin terletak di lokasi fisik yang sama, atau mungkin tersebar di lokasi geografis yang berbeda.

Sistem komputasi terdistribusi sangat scalable, karena lebih banyak komputer dapat ditambahkan ke jaringan untuk meningkatkan daya komputasi. Sistem ini digunakan untuk tugas-tugas yang memerlukan data dan sumber daya komputasi dalam jumlah besar, seperti pemrosesan basis data besar, simulasi ilmiah, dan aplikasi web berskala besar.

Komputasi Klaster

Komputasi klaster adalah jenis komputasi paralel di mana sekelompok komputer dihubungkan bersama untuk membentuk satu sumber daya komputasi yang terpadu. Komputer-komputer ini, yang dikenal sebagai node, bekerja sama untuk menjalankan tugas lebih cepat daripada yang dapat dilakukan oleh satu komputer.

Komputasi klaster berguna untuk tugas-tugas yang memerlukan kinerja, keandalan, dan ketersediaan tinggi. Dengan mendistribusikan tugas-tugas ke beberapa node, komputasi klaster mengurangi risiko kegagalan sistem, karena meskipun satu node gagal, node-node yang tersisa dapat terus memproses.

Komputasi Paralel Masif

Komputasi paralel masif adalah jenis komputasi paralel yang menggunakan ratusan atau ribuan prosesor untuk melakukan serangkaian komputasi terkoordinasi secara bersamaan. Jenis komputasi ini digunakan untuk tugas-tugas yang memerlukan daya komputasi tinggi, seperti pengurutan genetik, pemodelan iklim, dan simulasi dinamika fluida.

Komputer paralel masif menggunakan arsitektur memori terdistribusi, di mana setiap prosesor memiliki memori pribadinya sendiri. Komunikasi antarprosesor dicapai melalui berbagai metode, termasuk sistem pengiriman pesan dan memori bersama.

Komputasi Grid

Komputasi grid merupakan suatu bentuk komputasi terdistribusi di mana superkomputer virtual tersusun dari komputer-komputer berjaringan yang saling terhubung secara longgar, yang digunakan untuk melakukan tugas-tugas besar.

Komputasi grid digunakan untuk tugas-tugas yang memerlukan sejumlah besar sumber daya komputasi yang tidak dapat dipenuhi oleh satu komputer saja tetapi tidak memerlukan kinerja tinggi dari sebuah superkomputer. Komputasi grid umumnya digunakan dalam penelitian ilmiah, matematika, dan akademis, serta di perusahaan-perusahaan besar untuk tugas-tugas yang membutuhkan banyak sumber daya.

Jenis Arsitektur Komputasi Paralel

Sistem Memori Bersama

Dalam sistem memori bersama, beberapa prosesor mengakses memori fisik yang sama. Hal ini memungkinkan komunikasi yang efisien antara prosesor karena mereka langsung membaca dan menulis ke ruang memori yang sama. Sistem memori bersama biasanya lebih mudah diprogram daripada sistem memori terdistribusi karena kesederhanaan akses memori.

Namun, sistem memori bersama dapat menghadapi tantangan terkait skalabilitas dan perebutan memori. Seiring bertambahnya jumlah prosesor, permintaan akses memori dapat menyebabkan kemacetan, di mana prosesor menunggu akses ke memori bersama. 

Contoh umum sistem memori bersama meliputi multiprosesor simetris (SMP) dan prosesor multiinti yang ditemukan di komputer desktop dan server modern. Sistem ini sangat cocok untuk aplikasi yang memerlukan kopling ketat dan komunikasi yang sering antara prosesor, seperti pemrosesan data waktu nyata dan simulasi kompleks.

Sistem Memori Terdistribusi

Sistem memori terdistribusi terdiri dari beberapa prosesor, yang masing-masing memiliki memori pribadinya sendiri. Prosesor berkomunikasi dengan mengirimkan pesan melalui jaringan. Desain ini dapat ditingkatkan secara lebih efektif daripada sistem memori bersama, karena setiap prosesor beroperasi secara independen, dan jaringan dapat menangani komunikasi di antara mereka.

Tantangan utama dalam sistem memori terdistribusi adalah kompleksitas komunikasi dan sinkronisasi. Programmer perlu mengelola distribusi data dan penyampaian pesan secara eksplisit, sering kali menggunakan pustaka seperti MPI (Message Passing Interface). Latensi dan lebar pita jaringan juga dapat memengaruhi kinerja.

Sistem memori terdistribusi umumnya digunakan dalam lingkungan komputasi kinerja tinggi (HPC), seperti superkomputer dan kluster skala besar. Sistem ini cocok untuk aplikasi yang dapat diurai menjadi tugas-tugas independen dengan komunikasi antarproses yang minimal, seperti simulasi skala besar dan analisis data.

Sistem Hibrida

Sistem hibrida menggabungkan elemen arsitektur memori bersama dan terdistribusi. Sistem ini biasanya memiliki node yang menggunakan memori bersama, yang saling terhubung oleh jaringan memori terdistribusi. Setiap node beroperasi sebagai sistem memori bersama, sementara komunikasi antar node mengikuti model memori terdistribusi.

Di dalam sebuah node, tugas-tugas dapat berkomunikasi dengan cepat menggunakan memori bersama, sedangkan komunikasi antar-node menggunakan penyampaian pesan. 

Salah satu kasus penggunaan umum untuk sistem hibrida adalah dalam komputasi ilmiah berskala besar, di mana komputasi dibagi menjadi tugas-tugas yang lebih kecil dalam node dan dikoordinasikan di seluruh jaringan yang lebih besar. Sistem hibrida dapat secara efisien menangani beban kerja kompleks yang memerlukan komputasi lokal berkecepatan tinggi dan pemrosesan terdistribusi di sejumlah besar prosesor.

Teknik Komputasi Paralel

Berikut adalah teknik utama yang digunakan untuk memparalelkan tugas pada sistem komputasi:

Paralelisme Tingkat Bit

Paralelisme tingkat bit adalah jenis komputasi paralel yang berupaya meningkatkan jumlah bit yang diproses dalam satu instruksi. Bentuk paralelisme ini bermula pada era komputer awal, saat ditemukan bahwa penggunaan ukuran kata yang lebih besar dapat mempercepat komputasi secara signifikan.

Dalam paralelisme tingkat bit, fokus utamanya adalah pada ukuran register prosesor. Register ini menampung data yang sedang diproses. Dengan meningkatkan ukuran register, lebih banyak bit dapat ditangani secara bersamaan, sehingga meningkatkan kecepatan komputasi. Pergeseran dari komputasi 32-bit ke 64-bit pada awal tahun 2000-an merupakan contoh utama paralelisme tingkat bit.

Meskipun implementasi paralelisme tingkat bit sebagian besar berbasis perangkat keras, penting untuk memahami implikasinya. Bagi programmer, memahami paralelisme tingkat bit dapat membantu merancang algoritma yang lebih efisien, terutama untuk tugas yang melibatkan komputasi numerik yang berat.

Paralelisme Tingkat Instruksi

Paralelisme tingkat instruksi (ILP) adalah bentuk lain dari komputasi paralel yang berfokus pada pelaksanaan beberapa instruksi secara bersamaan. Tidak seperti paralelisme tingkat bit, yang berfokus pada data, ILP berfokus pada instruksi.

Ide di balik ILP sederhana: alih-alih menunggu satu instruksi selesai sebelum instruksi berikutnya dimulai, sistem dapat mulai menjalankan instruksi berikutnya bahkan sebelum instruksi pertama selesai. Pendekatan ini, yang dikenal sebagai pipelining, memungkinkan eksekusi instruksi secara bersamaan dan dengan demikian meningkatkan kecepatan komputasi.

Namun, tidak semua instruksi dapat dipipeline secara efektif. Ketergantungan antar instruksi dapat membatasi efektivitas ILP. Misalnya, jika satu instruksi bergantung pada hasil instruksi lain, instruksi tersebut tidak dapat dimulai hingga instruksi pertama selesai.

Paralelisme Tingkat Superword

Paralelisme Tingkat Superword (SLP) adalah jenis komputasi paralel yang berfokus pada operasi vektorisasi pada data yang disimpan dalam register vektor pendek. Ini adalah bentuk paralelisme data yang beroperasi pada array atau vektor data.

Dalam paralelisme tingkat superword, operasi instruksi tunggal, beberapa data (SIMD) dilakukan, di mana satu instruksi diterapkan ke beberapa bagian data secara bersamaan. Teknik ini sangat efektif dalam aplikasi yang mengharuskan operasi yang sama dilakukan pada kumpulan data besar, seperti dalam pemrosesan gambar dan sinyal.

SLP memerlukan dukungan perangkat keras dalam bentuk register vektor dan dukungan kompiler untuk mengidentifikasi peluang vektorisasi. Dengan demikian, memanfaatkan SLP secara efektif dapat menjadi tantangan, tetapi potensi peningkatan kinerja menjadikannya alat yang berharga dalam perangkat komputasi paralel.

Paralelisme Tugas

Sementara paralelisme tingkat bit dan tingkat instruksi berfokus pada data dan instruksi, dalam paralelisme tugas, fokusnya adalah pada pendistribusian tugas di seluruh prosesor yang berbeda.

Tugas, dalam konteks ini, adalah unit kerja yang dilakukan oleh suatu proses. Tugas dapat berupa apa saja, mulai dari operasi aritmatika sederhana hingga prosedur komputasi yang rumit. Ide utama di balik paralelisme tugas adalah bahwa dengan mendistribusikan tugas di antara beberapa prosesor, kita dapat menyelesaikan lebih banyak pekerjaan dalam waktu yang lebih singkat.

Bentuk paralelisme ini memerlukan perencanaan dan koordinasi yang cermat. Tugas-tugas perlu dibagi sedemikian rupa sehingga dapat dijalankan secara independen. Lebih jauh lagi, tugas-tugas mungkin perlu saling berkomunikasi, yang memerlukan koordinasi tambahan.

Komputasi Paralel vs Pemrosesan Paralel

Komputasi paralel adalah istilah umum yang mencakup seluruh bidang pelaksanaan beberapa komputasi secara bersamaan. Istilah ini mencakup berbagai arsitektur, teknik, dan model yang digunakan untuk mencapai pelaksanaan tugas secara bersamaan.

Pemrosesan paralel mengacu pada tindakan melakukan beberapa operasi pada saat yang bersamaan. Ini adalah bagian dari komputasi paralel yang berfokus pada aspek eksekusi. Pemrosesan paralel dapat terjadi pada berbagai tingkatan, seperti paralelisme tingkat bit, tingkat instruksi, tingkat data, dan tingkat tugas. Setiap tingkatan menangani berbagai aspek komputasi untuk meningkatkan kinerja.

Sementara komputasi paralel melibatkan desain dan implementasi sistem yang dapat melakukan pemrosesan paralel, pemrosesan paralel berkaitan dengan pelaksanaan operasi sesungguhnya secara bersamaan.

Komputasi Paralel vs Komputasi Sekuensial

Proses komputasi sekuensial mengerjakan tugas satu per satu, secara linier. Setiap tugas harus selesai sebelum tugas berikutnya dimulai, yang dapat menyebabkan inefisiensi, terutama untuk masalah yang besar atau rumit. Komputasi sekuensial mudah diimplementasikan dan di-debug tetapi kinerjanya dibatasi oleh kecepatan prosesor tunggal.

Komputasi paralel membagi tugas menjadi subtugas yang lebih kecil yang dapat dijalankan secara bersamaan di beberapa prosesor. Hal ini secara signifikan mengurangi waktu yang dibutuhkan untuk menyelesaikan komputasi besar. Komputasi paralel lebih rumit untuk dirancang dan diterapkan karena perlunya koordinasi dan sinkronisasi antartugas.

Contoh dan Kasus Penggunaan Pemrosesan Paralel

Komputasi paralel memiliki aplikasi praktis di berbagai bidang. Berikut ini beberapa contoh di dunia nyata:

Superkomputer untuk Penggunaan dalam Astronomi

Dalam astronomi, superkomputer yang dilengkapi dengan kemampuan pemrosesan paralel digunakan untuk memproses sejumlah besar data yang dihasilkan oleh teleskop dan instrumen pengamatan lainnya.

Komputer super ini dapat melakukan kalkulasi rumit dalam waktu yang jauh lebih singkat daripada komputer berprosesor tunggal. Hal ini memungkinkan para astronom untuk membuat simulasi terperinci benda-benda angkasa, menganalisis spektrum cahaya dari bintang-bintang yang jauh, dan mencari pola dalam sejumlah besar data yang dapat menunjukkan keberadaan eksoplanet.

Misalnya, superkomputer Pleiades di Pusat Penelitian Ames NASA menggunakan pemrosesan paralel untuk mendukung beberapa simulasi paling rumit milik badan tersebut, termasuk yang terkait dengan studi materi gelap dan evolusi galaksi.

Membuat Prediksi dalam Pertanian

Dalam bidang pertanian, komputasi paralel digunakan untuk menganalisis data dan membuat prediksi yang dapat meningkatkan hasil panen dan efisiensi. Misalnya, dengan menganalisis data cuaca, kondisi tanah, dan faktor-faktor lainnya, petani dapat membuat keputusan yang tepat tentang kapan menanam, mengairi, dan memanen tanaman.

Komputasi paralel memungkinkan pemrosesan data ini secara cepat dan akurat. Misalnya, komputer super dapat menganalisis data dari ribuan stasiun cuaca, citra satelit, dan sampel tanah untuk memperkirakan waktu tanam yang optimal untuk tanaman tertentu.

Efek Pasca Produksi Video

Komputasi paralel memainkan peran penting dalam bidang efek pascaproduksi video. Efek-efek ini, yang meliputi animasi 3D, gradasi warna, dan efek visual (VFX), memerlukan daya komputasi tingkat tinggi. Komputasi sekuensial, yang memproses satu tugas dalam satu waktu, sering kali tidak memadai untuk tugas-tugas ini karena kompleksitasnya.

Dengan membagi tugas-tugas ini menjadi subtugas yang lebih kecil dan memprosesnya secara bersamaan, komputasi paralel secara drastis mengurangi waktu yang dibutuhkan untuk merender dan memproses efek video. Studio film menggunakan superkomputer dan render farm (jaringan komputer) untuk dengan cepat menciptakan efek visual dan rangkaian animasi yang menakjubkan. Tanpa komputasi paralel, efek visual mengesankan yang kita lihat dalam film-film laris dan gim video berkualitas tinggi hampir mustahil dicapai dalam jangka waktu praktis.

Pencitraan Medis yang Akurat

Bidang lain yang mendapat dampak besar dari komputasi paralel adalah bidang pencitraan medis. Teknik seperti Magnetic Resonance Imaging (MRI) dan Computed Tomography (CT) menghasilkan sejumlah besar data yang perlu diproses dengan cepat dan akurat.

Komputasi paralel memungkinkan pemrosesan gambar yang lebih cepat, sehingga meningkatkan akurasi dan efisiensi teknik pencitraan ini. Pemrosesan data gambar secara simultan memungkinkan ahli radiologi memperoleh gambar 3D beresolusi tinggi secara real-time, sehingga membantu diagnosis dan perawatan yang lebih akurat. Komputasi paralel juga mendukung teknik pencitraan canggih seperti MRI fungsional (fMRI), yang menangkap dan memproses data dinamis tentang fungsi otak.

Dengan meningkatkan kecepatan dan keakuratan pencitraan medis, komputasi paralel memainkan peran penting dalam memajukan hasil perawatan kesehatan, memungkinkan dokter untuk mendeteksi dan mengobati penyakit secara lebih efektif.

Tantangan dalam Komputasi Paralel

Ada beberapa tantangan yang terkait dengan penerapan komputasi paralel.

Sinkronisasi dan Koordinasi

]Mekanisme sinkronisasi, seperti kunci, semaphore, dan penghalang, digunakan untuk mengelola akses ke sumber daya bersama dan memastikan konsistensi data. Tanpa sinkronisasi yang tepat, kondisi balapan dapat terjadi, yang menyebabkan hasil yang salah atau sistem mogok. Koordinasi melibatkan pengelolaan urutan dan pengaturan waktu tugas untuk mengoptimalkan kinerja dan menghindari kemacetan. 

Penyeimbangan Beban

Penyeimbangan beban adalah proses mendistribusikan tugas secara merata di beberapa prosesor untuk memastikan tidak ada satu prosesor pun yang kewalahan sementara prosesor lainnya tidak aktif. Penyeimbangan beban yang buruk dapat menyebabkan kinerja yang kurang optimal dan peningkatan waktu komputasi. Penyeimbangan beban statis menetapkan tugas ke prosesor sebelum eksekusi dimulai, sementara penyeimbangan beban dinamis mendistribusikan ulang tugas selama eksekusi berdasarkan beban kerja saat ini.

Komunikasi Overhead

Dalam komputasi paralel, prosesor sering kali perlu berkomunikasi satu sama lain untuk bertukar data dan mengoordinasikan tugas. Komunikasi ini dapat menimbulkan overhead, yang dapat memengaruhi kinerja, terutama dalam sistem memori terdistribusi di mana data harus ditransfer melalui jaringan. 

Debugging dan Profiling

Dalam komputasi paralel, masalah seperti kondisi balapan, kebuntuan, dan perilaku nondeterministik dapat muncul, sehingga sulit untuk mengidentifikasi dan memperbaiki bug. Alat profil digunakan untuk menganalisis kinerja aplikasi paralel, mengidentifikasi hambatan dan inefisiensi. Alat ini harus menangani kompleksitas eksekusi bersamaan dan memberikan wawasan tentang bagaimana tugas berinteraksi.

3 Cara Mencapai Paralelisasi dalam Rekayasa Perangkat Lunak

Bahkan dengan sistem komputasi paralel, insinyur perangkat lunak perlu menggunakan teknik khusus untuk mengelola paralelisasi tugas dan instruksi. Berikut tiga teknik umum.

Pemeriksaan Titik Aplikasi

Pemeriksaan titik aplikasi melibatkan penyimpanan status aplikasi secara berkala selama eksekusinya. Jika terjadi kegagalan, aplikasi dapat melanjutkan dari status terakhir yang disimpan, sehingga mengurangi hilangnya komputasi dan waktu.

Pemeriksaan titik aplikasi mencegah hilangnya semua komputasi yang telah dilakukan sejauh ini jika terjadi kegagalan atau penghentian sistem, sehingga menjadikannya komponen penting dari sistem komputasi terdistribusi. Hal ini memungkinkan untuk mematikan instans sistem komputasi paralel secara sewenang-wenang dan memindahkan beban kerja ke instans lain.

Paralelisasi Otomatis

Paralelisasi otomatis adalah teknik yang digunakan kompilator untuk mengidentifikasi bagian-bagian program yang dapat dieksekusi secara paralel. Hal ini mengurangi kebutuhan programmer untuk mengidentifikasi dan membuat kode secara manual untuk eksekusi paralel, menyederhanakan proses pengembangan, dan memastikan penggunaan sumber daya komputasi yang lebih efisien.

Meskipun paralelisasi otomatis tidak selalu sempurna dan mungkin tidak mencapai tingkat efisiensi yang sama seperti paralelisasi manual, paralelisasi otomatis merupakan alat yang ampuh di tangan pengembang. Paralelisasi otomatis memungkinkan mereka memanfaatkan manfaat komputasi paralel tanpa memerlukan pengetahuan yang luas tentang pemrograman paralel dan arsitektur perangkat keras.

Bahasa Pemrograman Paralel

Bahasa pemrograman paralel dirancang untuk menyederhanakan proses penulisan program paralel. Bahasa-bahasa ini mencakup konstruksi untuk mengekspresikan paralelisme, yang memungkinkan pengembang untuk menentukan tugas-tugas paralel tanpa perlu khawatir tentang detail tingkat rendah dari penjadwalan tugas, sinkronisasi, dan komunikasi antarproses.

Contoh bahasa pemrograman paralel meliputi OpenMP, MPI, dan CUDA. Bahasa-bahasa ini menyediakan beragam model paralelisme, mulai dari paralelisme memori bersama (OpenMP) hingga paralelisme penyampaian pesan (MPI) dan paralelisme data (CUDA). Dengan menggunakan bahasa-bahasa ini, pengembang dapat memanfaatkan sistem komputasi paralel secara maksimal, mengembangkan aplikasi yang memecahkan masalah kompleks dengan lebih cepat dan lebih efisien.

 


Sumber : https://www.run.ai/guides/distributed-computing/parallel-computing

Post a Comment

0Comments

Post a Comment (0)