Komputasi Parallel

KOMPUTASI PARALLEL




Apa itu Komputasi Parallel?

Komputasi parallel  merupakan salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberaoa komputer secara bersamaan. Komputasi parallel membutuhkan :

  1. Algortima
  2. Bahasa Pemrogaraman
  3. Compiler

Mengapa menggunakan Komputasi Parallel?

Alasan menggunakan Komputasi Prallel adalah karena sebagai berikut :

  1. Hemat waktu dan / uang.
  2. Memecahkan masalah yang lebih besar / lebih kompleks.
  3. Memberikan Konsurensi.
  4. Mengambil keuntungan dari sumber daya non-lokal.
Lebih baik menggunakan perangkat keras parallel dasar.

Siapa yang menggunakan Komputasi Parallel ?

Komputasi Parallel digunakan di berbagai bidang, seperti :

1. Sains dan Teknik

Komputasi Parallel telah digunakan untuk memodelkan masalah yang sulit di banyak bidang sains dan teknik :

  • Atmosfer, Bumi, Lingkungan. 
  • Fisika - Terapan, nuklir, partikel, materi terkondensasi, tekanan tinggi, fusi, fotonik
  • Biosains, Bioteknologi, Genetika.
  • Kimia, Ilmu Molekuler.
  • Geologi, Seismologi
  • Teknik Mesin - dari prostetik hingga pesawat ruang angkasa.
  • Teknik Elektro, Desain Sirkuit, Mikroelektronika.
  • Ilmu Komputer, Matematika.
  • Pertahanan, Senjata.

2. Industri dan Komersial

Saat ini, aplikasi komersial dan industri membutuhkan pengembangan komputer yang lebih cepat. aplikasi ini membutuhkan pemrosesan data dalam jumlah besar dengan cara yang canggih. Contohnya :

  • "Big Data", database, penambangan data
  • Kecerdasan Buatan (AI)
  • Eksplorasi minyak
  • Mesin pencari web, layanan bisnis berbasis web
  • Pencitraan dan diagnosis medis
  • Desain farmasi
  • Pemodelan keuangan dan ekonomi
  • Manajemen perusahaan nasional dan multinasional
  • Grafik canggih dan virtual reality, khususnya di industri hiburan
  • Video berjaringan dan teknologi multi-media
  • Lingkungan kerja kolaboratif

3. Aplikasi Global

Komputasi paralel sekarang digunakan secara luas di seluruh dunia, dalam berbagai macam aplikasi.


KONSEP DAN TERMINOLOGI KOMPUTASI MODERN

1. Von Neumann Architecture


  • Terdiri dari 4 komponen utama : Memori, Control Unit, ALU, Input / Output.
  • Memori dalam operasinya menggunakan perintah read/write. program untuk memerintah komputer mengerjakan sesuatu. data sebuah informasi yang digunakan oleh program.
  • Control Unit digunakan untuk mengambil data dari memory, menkodekan instruksi dan kemudian secara berurutan mengkoordinasikan operasi untuk menyelesaikan tugas yang diprogarm.

2. Pengelompokan FLYNN

Dibawah ini mendefinisikan 4 kemungkinan klasifikasi menurut Flynn :

  • Komputer SISD (Single Instruction Stream - Single Data Stream).
  • Komputer MISD (Multiple Instruction Stream - Single Data Stream).
  • Komputer MIMD (Multiple Iinstruction Stream - Multiple Data Stream).

3. Beberapa Terminologi Paralel Umum

  • Supercomputing / High performance Computing (HPC).
  • Node.
  • CPU / Socket / Processor / Core.
  • Task
  • Pipelining
  • Shared Memory
  • Symmetric Multi-Processor (SMP)
  • Memory Terdistribusi.
  • Komunikasi.
  • Sinkronisasi.
  • Granuality.
  • Cluster Komputasi

4. Batas dan Biaya Pemrograman Paralel

  • Hukum Amdahl
  • Kompleksitas
  • Portabilitas
  • Persyaratan Sumber Daya
  • Skalabilitas
    • Skala yang kuat
    • Penskalaan lemah


ARSITEKTUR MEMORI KOMPUTER PARALEL

Arsitektur memori komputasi paralel adalah sebagai berikut :

- Shared Memori

  Karakteristik Shared Memori :

  • Memori bersama komputer paralel sangat bervariasi, tetapi umumnya memiliki kesamaan kemampuan untuk semua prosesor untuk mengakses semua memori sebagai ruang alamat global.
  • Beberapa prosesor dapat beroperasi secara independen tetapi berbagi sumber daya memori yang sama.
  • Perubahan lokasi memori yang dilakukan oleh satu prosesor dapat dilihat oleh semua prosesor lainnya.
  • Secara historis, mesin memori bersama telah diklasifikasikan sebagai UMA dan NUMA, berdasarkan waktu akses memori.

          - UMA (Uniform Memory Access)

    • Saat ini paling sering diwakili oleh mesin Symmetric Multiprocessor (SMP)
    • Prosesor identik
    • Akses yang sama dan waktu akses ke memori
    • Kadang-kadang disebut CC-UMA – Cache Coherent UMA. Cache coherent berarti jika satu prosesor memperbarui lokasi dalam memori bersama, semua prosesor lain tahu tentang pembaruan tersebut. Koherensi cache dicapai pada tingkat perangkat keras.

          - NUMA (Non-Uniform Memory Access) 

    • Seringkali dibuat dengan menghubungkan dua atau lebih SMP secara fisik
    • Satu SMP bisa langsung mengakses memori SMP lain
    • Tidak semua prosesor memiliki waktu akses yang sama ke semua memori
    • Akses memori melalui link lebih lambat
    • Jika koherensi cache dipertahankan, maka mungkin juga disebut CC-NUMA - Cache Coherent NUMA

          - Keuntungan :

    • Ruang alamat global memberikan perspektif pemrograman yang ramah pengguna ke memori.
    • Berbagi data antar tugas cepat dan seragam karena kedekatan memori dengan CPU.

          - Kekurangan : 

    • Kerugian utama adalah kurangnya skalabilitas antara memori dan CPU. Menambahkan lebih banyak CPU dapat secara geometris meningkatkan lalu lintas di jalur memori-CPU bersama, dan untuk sistem yang koheren cache, secara geometris meningkatkan lalu lintas yang terkait dengan cache / manajemen memori.
    • Tanggung jawab programmer untuk konstruksi sinkronisasi yang memastikan akses "benar" dari memori global.

  • Memori Terdistribusi

          - Karakteristik Memori Terdistribusi :

    • Seperti sistem memori bersama, sistem memori terdistribusi sangat bervariasi tetapi memiliki karakteristik yang sama. Sistem memori terdistribusi memerlukan jaringan komunikasi untuk menghubungkan memori antar prosesor.
    • Prosesor memiliki memori lokalnya sendiri. Alamat memori dalam satu prosesor tidak dipetakan ke prosesor lain, jadi tidak ada konsep ruang alamat global di semua prosesor.
    • Karena setiap prosesor memiliki memori lokalnya sendiri, ia beroperasi secara independen. Perubahan yang dibuat pada memori lokalnya tidak berpengaruh pada memori prosesor lain. Karenanya, konsep koherensi cache tidak berlaku.
    • Ketika prosesor membutuhkan akses ke data di prosesor lain, biasanya tugas programmer untuk secara eksplisit menentukan bagaimana dan kapan data dikomunikasikan. Sinkronisasi antar tugas juga menjadi tanggung jawab programmer.
    • "Fabric" jaringan yang digunakan untuk transfer data sangat bervariasi, meskipun dapat sesederhana Ethernet.

          - Keuntungan :

    • Memori dapat diskalakan dengan jumlah prosesor. Tingkatkan jumlah prosesor dan ukuran memori meningkat secara proporsional. 
    • Setiap prosesor dapat dengan cepat mengakses memorinya sendiri tanpa gangguan dan tanpa biaya tambahan yang timbul saat mencoba mempertahankan koherensi cache global. 
    • Efektivitas biaya: dapat menggunakan komoditas, prosesor siap pakai, dan jaringan.

          - Kekurangan : 

    • Pemrogram bertanggung jawab atas banyak detail yang terkait dengan komunikasi data antar prosesor.
    • Mungkin sulit untuk memetakan struktur data yang ada, berdasarkan memori global, ke organisasi memori ini.
    • Waktu akses memori yang tidak seragam - data yang berada di node jauh membutuhkan waktu lebih lama untuk diakses daripada data lokal node.

  • Memori Bersama-Terdistribusi Hibrid

          - Karakteristik umum Memori Bersama-Terdistribusi Hibrid

    • Komputer terbesar dan tercepat di dunia saat ini menggunakan arsitektur memori bersama dan terdistribusi. Komponen memori bersama dapat berupa mesin memori bersama dan / atau unit pemrosesan grafis (GPU).
    • Komponen memori terdistribusi adalah jaringan dari beberapa mesin memori / GPU bersama, yang hanya mengetahui memori mereka sendiri - bukan memori di komputer lain. Oleh karena itu, komunikasi jaringan diperlukan untuk memindahkan data dari satu mesin ke mesin lainnya. 
    • Tren saat ini tampaknya menunjukkan bahwa jenis arsitektur memori ini akan terus berlaku dan meningkat pada komputasi kelas atas di masa mendatang.

          - Keuntungan dan kerugian

    • Apa pun yang umum untuk arsitektur memori bersama dan terdistribusi.
    • Peningkatan skalabilitas merupakan keuntungan penting
    • Kompleksitas programmer yang meningkat merupakan kerugian penting

 

Model Pemrograman Paralel

  • Shared Memory Model

          Dalam model pemrograman ini, proses / tugas berbagi ruang alamat yang sama, yang 
          mereka baca dan tulis secara asinkron. Berbagai mekanisme seperti kunci / semaphore 
          digunakan untuk mengontrol akses ke memori bersama, menyelesaikan perselisihan dan 
          untuk mencegah kondisi balapan dan kebuntuan. Ini mungkin model pemrograman
          paralel yang paling sederhana.

  • Threads Model

          Model pemrograman ini adalah jenis pemrograman memori bersama. Dalam model 
          thread pemrograman paralel, satu proses "bobot berat" dapat memiliki beberapa jalur 
          eksekusi bersamaan "bobot ringan".

  • Distributed Memory / Message Passing Model

          Model ini menunjukkan karakteristik berikut:
    • Serangkaian tugas yang menggunakan memori lokalnya sendiri selama komputasi. Beberapa tugas dapat berada di mesin fisik yang sama dan / atau di sejumlah mesin yang berubah-ubah.
    • Tugas bertukar data melalui komunikasi dengan mengirim dan menerima pesan.
    • Transfer data biasanya membutuhkan operasi kooperatif yang akan dilakukan oleh setiap proses. Misalnya, operasi pengiriman harus memiliki operasi terima yang cocok.

  • Data Parallel Model

          Mungkin juga disebut sebagai model Partitioned Global Address Space (PGAS). Pada 
          arsitektur memori bersama, semua tugas mungkin memiliki akses ke struktur data melalui 
          memori global. Pada arsitektur memori terdistribusi, struktur data global dapat 
          dipisahkan secara logis dan / atau fisik di seluruh tugas. 

  • Hybrid Model

          Model hybrid menggabungkan lebih dari satu model pemrograman yang dijelaskan 
          sebelumnya.

  • SPMD dan MPMD

    • Single Program Multiple Data (SPMD)

                    SPMD sebenarnya adalah model pemrograman "tingkat tinggi" yang dapat 
                    dibangun di atas kombinasi model pemrograman paralel yang disebutkan 
                    sebelumnya.

    • Multiple Program Multiple Data (MPMD)

                    Seperti SPMD, MPMD sebenarnya adalah model pemrograman "tingkat tinggi" 
                    yang dapat dibangun di atas kombinasi model pemrograman paralel yang 
                    disebutkan sebelumnya.

Merancang Program Paralel

  • Paralelisasi Otomatis vs. Manual

          Merancang dan mengembangkan program paralel secara khas merupakan proses yang 

          sangat manual. Pemrogram biasanya bertanggung jawab untuk mengidentifikasi dan 

          benar-benar menerapkan paralelisme.

  • Pahami Masalah dan Programnya
  • Mempartisi

          Ada dua cara dasar untuk mempartisi pekerjaan komputasi di antara tugas-tugas paralel: 

          dekomposisi domain dan dekomposisi fungsional.

  • Komunikasi 
  • Sinkroniasi

    • Mengelola urutan pekerjaan dan tugas yang melakukannya adalah pertimbangan desain penting untuk sebagian besar program paralel.
    • Dapat menjadi faktor penting dalam kinerja program (atau kekurangannya)
    • Seringkali membutuhkan "serialisasi" dari segmen program.

  • Dependensi Data

          Ketergantungan ada antara pernyataan program ketika urutan eksekusi pernyataan

          mempengaruhi hasil program Ketergantungan data hasil dari beberapa penggunaan 

          lokasi yang sama dalam penyimpanan oleh tugas yang berbeda Ketergantungan penting 

          untuk pemrograman paralel karena mereka adalah salah satu dari penghambat utama 

          paralelisme.

  • Load Balancing 

          Load Balancing mengacu pada praktik mendistribusikan jumlah pekerjaan yang kira-kira 
          sama di antara tugas-tugas sehingga semua tugas tetap sibuk sepanjang waktu. Ini dapat 
          dianggap sebagai meminimalkan waktu idle tugas.

  • Granuality
  • Input / Output
  • Debugging
  • Analisis Kinerja dan Tuning

Contoh  Parallel :

  • Array Processing
  • Perhitungan PI 
  • Simple Heat Equation
  • 1-D Wave Equation

Referensi :


https://hpc.llnl.gov/training/tutorials/introduction-parallel-computing-tutorial#Examples

      Komentar

      Postingan populer dari blog ini

      Tugas Penulisan Artikel