. . .

Jumat, 30 April 2021

Komputasi Paralel

Apa itu Komputasi Paralel?

Komputasi Serial

Secara tradisional, perangkat lunak telah ditulis untuk komputasi serial:

  • Masalah dipecah menjadi serangkaian instruksi terpisah
  • Instruksi dijalankan secara berurutan satu demi satu
  • Dieksekusi pada satu prosesor
  • Hanya satu instruksi yang dapat dijalankan setiap saat

TASK
Bagian yang terpisah secara logis dari pekerjaan komputasi. Sebuah tugas biasanya merupakan program atau sekumpulan instruksi seperti program yang dijalankan oleh prosesor. Program paralel terdiri dari banyak tugas yang berjalan pada banyak prosesor.

PIPE
Memecah tugas menjadi langkah-langkah yang dilakukan oleh unit prosesor yang berbeda, dengan input mengalir melalui, seperti jalur perakitan; sejenis komputasi paralel.

SHARED MEMORY
Dari sudut pandang perangkat keras, menjelaskan arsitektur komputer di mana semua prosesor memiliki akses langsung (biasanya berbasis bus) ke memori fisik umum. Dalam pengertian pemrograman, ini menjelaskan model di mana tugas-tugas paralel semua memiliki "gambar" yang sama dari memori dan dapat langsung menangani dan mengakses lokasi memori logis yang sama terlepas dari di mana memori fisik sebenarnya ada.

SIMETRIS MULTI-PROSESOR (SMP)
Arsitektur perangkat keras memori bersama di mana beberapa prosesor berbagi ruang alamat tunggal dan memiliki akses yang sama ke semua sumber daya.

MEMORI TERDISTRIBUSI
Dalam perangkat keras, mengacu pada akses memori berbasis jaringan untuk memori fisik yang tidak umum. Sebagai model pemrograman, tugas hanya dapat secara logis "melihat" memori mesin lokal dan harus menggunakan komunikasi untuk mengakses memori pada mesin lain di mana tugas lain sedang dijalankan.

KOMUNIKASI
Tugas paralel biasanya perlu bertukar data. Ada beberapa cara yang dapat dilakukan, seperti melalui bus memori bersama atau melalui jaringan, namun peristiwa pertukaran data yang sebenarnya biasanya disebut sebagai komunikasi terlepas dari metode yang digunakan.

SINKRONISASI
Koordinasi tugas paralel dalam waktu nyata, sangat sering dikaitkan dengan komunikasi. Seringkali diimplementasikan dengan menetapkan titik sinkronisasi dalam aplikasi di mana tugas tidak dapat dilanjutkan hingga tugas lain mencapai titik yang sama atau secara logis setara.

Sinkronisasi biasanya melibatkan menunggu setidaknya satu tugas, dan oleh karena itu dapat menyebabkan waktu eksekusi jam dinding aplikasi paralel meningkat.

GRANULARITAS
Dalam komputasi paralel, granularitas adalah ukuran kualitatif dari rasio komputasi terhadap komunikasi.

Kasar: jumlah pekerjaan komputasi yang relatif besar dilakukan di antara peristiwa komunikasi
Baik: sejumlah kecil pekerjaan komputasi dilakukan di antara peristiwa komunikasi


OVERHEAD PARALEL
Jumlah waktu yang diperlukan untuk mengoordinasikan tugas paralel, bukan untuk melakukan pekerjaan yang berguna. Overhead paralel dapat mencakup faktor-faktor seperti:
  1. Waktu mulai tugas
  2. Sinkronisasi
  3. Komunikasi data
  4. Overhead perangkat lunak yang dikenakan oleh bahasa paralel, perpustakaan, sistem operasi, dll.
  5. Waktu penghentian tugas

PARALEL LUAR BIASA
Mengacu pada perangkat keras yang terdiri dari sistem paralel tertentu - memiliki banyak elemen pemrosesan. Arti "banyak" terus meningkat, tetapi saat ini, komputer paralel terbesar terdiri dari elemen pemrosesan yang berjumlah ratusan ribu hingga jutaan.

PARALEL JALAN
Memecahkan banyak tugas serupa, tetapi independen secara bersamaan; sedikit atau tidak perlu koordinasi antar tugas.

SKALABILITAS
Mengacu pada kemampuan sistem paralel (perangkat keras dan / atau perangkat lunak) untuk mendemonstrasikan peningkatan yang proporsional dalam percepatan paralel dengan penambahan lebih banyak sumber daya. Faktor-faktor yang berkontribusi pada skalabilitas meliputi:
  • Perangkat keras - terutama bandwidth memori-cpu dan properti komunikasi jaringan
  • Algoritma aplikasi
  • Overhead paralel terkait
  • Karakteristik aplikasi spesifik Anda

Jenis Sinkronisasi

PEMBATAS
Biasanya menyiratkan bahwa semua tugas terlibat
Setiap tugas melakukan tugasnya hingga mencapai penghalang. Kemudian berhenti, atau "memblokir".
Saat tugas terakhir mencapai penghalang, semua tugas disinkronkan.
Apa yang terjadi dari sini berbeda-beda. Seringkali, bagian serial dari pekerjaan harus dilakukan. Dalam kasus lain, tugas secara otomatis dirilis untuk melanjutkan pekerjaannya.

KUNCI / SEMAPHORE
Dapat melibatkan sejumlah tugas
Biasanya digunakan untuk membuat serial (melindungi) akses ke data global atau bagian kode. Hanya satu tugas dalam satu waktu yang dapat menggunakan (memiliki) kunci / semaphore / bendera.
Tugas pertama untuk mendapatkan kunci "set" itu. Tugas ini kemudian dapat dengan aman (serial) mengakses data atau kode yang dilindungi.
Tugas lain dapat mencoba untuk mendapatkan kunci tersebut tetapi harus menunggu hingga tugas yang memiliki kunci tersebut melepaskannya.
Bisa memblokir atau tidak memblokir.

OPERASI KOMUNIKASI SINKRONISASI
Hanya melibatkan tugas-tugas yang menjalankan operasi komunikasi.
Saat tugas melakukan operasi komunikasi, beberapa bentuk koordinasi diperlukan dengan tugas lain yang berpartisipasi dalam komunikasi tersebut. Misalnya, sebelum tugas bisa melakukan operasi pengiriman, itu harus terlebih dahulu menerima pengakuan dari tugas penerima yang boleh dikirim.
Dibahas sebelumnya di bagian Komunikasi.


Dependensi Data

Definisi
Ada ketergantungan antara pernyataan program ketika urutan eksekusi pernyataan mempengaruhi hasil program.
Ketergantungan data dihasilkan dari beberapa penggunaan lokasi yang sama dalam penyimpanan oleh tugas yang berbeda.
Dependensi penting untuk pemrograman paralel karena mereka adalah salah satu penghambat utama paralelisme.

0 komentar:

Posting Komentar