Jumat, 26 Juni 2015

MULRIPROCESSING DAN KOMPUTER PARALEL

PENGERTIAN KONSEP DISTRIBUTED PROCESSING
Yang dimaksud dengan Distributed Processing adalah mengerjakan semua proses pengolahan data secara bersama antara komputer pusat dengan beberapa komputer yang lebih kecil dan saling dihubungkan melalui jalur komunikasi. Setiap komputer tersebut memiliki prosesor mandiri sehingga mampu mengolah sebagian data secara terpisah, kemudian hasil pengolahan tadi digabungkan menjadi satu penyelesaian total. Jika salah satu prosesor mengalami kegagalan atau masalah yang lain akan mengambil alih tugasnya.


ARSITEKTUR KOMPUTER PARALEL
Pemrosesan paralel (parallel processing) adalah penggunaaan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Idealnya, parallel processing membuat program berjalan lebih cepat karena semakin banyak CPU yang digunakan. Tetapi dalam praktek, seringkali sulit membagi program sehingga dapat dieksekusi oleh CPU yang berbea-beda tanpa berkaitan di antaranya.
Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer secara bersamaan. Biasanya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar ataupun karena tuntutan proses komputasi yang banyak. Untuk melakukan aneka jenis komputasi paralel ini diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. Untuk itu diperlukan aneka perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi.
Sesuai taksonomi Flynn, seorang Designer Processor, Organisasi Prosesor dibagi menjadi 4 :
  • SISD (Single Instruction Single Data Stream) Arus Instruksi Tunggal dan Data Tunggal
  • SIMD (Single Instruction Multiple Data Stream) Arus Instruksi Tunggal dan Multiple Data
  • MISD (Multiple Instruction Single Data Stream) Arus Multiple Instruksi dan Data Tunggal
  • MIMD (Multiple Instruction Multiple Data Stream) Arus Multiple Instruksi dan Multiple Data
1.    Organisasi Prosesor SISD
  • Prosesor tunggal
  • Aliran instruksi tunggal
  • Data disimpan dalam memori tunggal
  • Uni-processor
2.    Single Instruction, Multiple Data Stream – SIMD
  • Single machine instruction
  • Mengontrol eksekusi secara simultan
  • sejumlah elemen-elemen pengolahan
  • Berdasarkan Lock-step
  • Setiap pengolahan elemen memiliki hubungan dengan memori data
  • Setiap instruksi dieksekusi pada kumpulan data yang berbeda oleh prosesor yang berbeda
  • Prosesor Vector and array
3.    Multiple Instruction, Single Data Stream – MISD
  • Rangkaian dari data
  • Dikirimkan ke kumpulan prosesor
  • Setiap prosesor mengeksekusi urutan instruksi yang berbeda
  • Belum pernah diimplementasikan (komesial)
4.    Multiple Instruction, Multiple Data Stream- MIMD
  • Kumpulan/sejumlah prosesor
  • Mengeksekusi secara simultan urutan instruksi yang berbeda
  • Kumpulan data yang berbeda
  • SMP, Cluster and sistem NUMA


THREAD PROGRAMMING
Thread yaitu kemampuan untuk membuat aplikasi yang tangguh, karena thread dalam program memiliki fungsi dan tugas tersendiri. Dengan adanya thread, dapat membuat program yang lebih efisien dalam hal kecepatan maupun penggunaan sumber daya, karena kita dapat membagi proses dalam aplikasi kita pada waktu yang sama. Thread umumnya digunakan untuk pemrograman multitasking, networking, yang melibatkan pengaksesan ke sumber daya secara konkuren. Thread sangat berguna untuk membuat proses yang interaktif; misalnya pada permainan (game). Dengan menggunakan sejumlah thread, program tetap dapat menggerakkan sejumlah objek sembari memberikan kesempatan pemakai untuk melakukan tanggapan melalui keyboard. Web browser merupakan contoh lain penggunaan thread. Tanpa thread, Web browser akan menghentikan segala tanggapan.
Sebuah thread memungkinkan untuk memiliki beberapa state:
  • Running Sebuah thread yang pada saat ini sedang dieksekusi dan didalam control dari CPU.
  • Ready to run Thread yang sudah siap untuk dieksekusi, tetapi masih belum ada kesempatan untuk melakukannya.
  • Resumed Setelah sebelumnya di block atau diberhentikan sementara, state ini kemudian siap untuk dijalankan.
  • Suspended Sebuah thread yang berhenti sementara, dan kemudian memperbolehkan CPU untuk menjalankan thread lain bekerja.
  • Blocked Sebuah thread yang di-block merupakan sebuah thread yang tidak mampu berjalan, karena ia akan menunggu sebuah resource tersedia atau sebuah event terjadi
MESSAGING PHASE MULTIPROCESSING
Keuntungan software dari arsitektur multicore adalah kode-kode dapat dieksekusi secara paralel. Dalam sistem operasi, kode-kode tersebut dieksekusi dalam thread-thread atau proses-proses yang terpisah. Setiap aplikasi pada sistem berjalan pada prosesnya sendiri sehingga aplikasi paralel akan mendapatkan keuntungan dari arsitektur multicore. Setiap aplikasi harus tertulis secara spesifik untuk memaksimalkan penggunaan dari banyak thread.
Banyak aplikasi software tidak dituliskan dengan menggunakan thread-thread yang concurrent karena kesulitan dalam pembuatannya.Concurrency memegang peranan utama dalam aplikasi paralel yang sebenarnya.
Langkah-langkah dalam mendesain aplikasi paralel adalah sebagai berikut:
  • Partitioning . Tahap desain ini dimaksudkan untuk membuka peluang awal pengeksekusian secara paralel. Fokus dari tahap ini adalah mempartisi sejumlah besar tugas dalam ukuran kecil dengan tujuan menguraikan suatu masalah menjadi butiran-butiran kecil.
  • Communication . Tugas-tugas yang telah terpartisi diharapkan dapat langsung dieksekusi secara paralel tapi tidak bisa, karena pada umumnya eksekusi berjalan secara independen. Pelaksanaan komputasi dalam satu tugas membutuhkan asosiasi data antara masing-masing tugas. Data kemudian harus berpindah-pindah antar tugas dalam melangsungkan komputasi. Aliran informasi inilah yang dispesifikasi dalam fase communication.
  • Agglomeration . Pada tahap ini kita pindah dari sesuatu yang abstrak ke yang konkret. Kita tinjau kembali kedua tahap diatas dengan tujuan untuk mendapatkan algoritma pengeksekusian yang lebih efisien. Kita pertimbangkan juga apakah perlu untuk menggumpalkan ( agglomerate) tugas-tugas pada fase partition menjadi lebih sedikit, denganmasing-masing tugas berukuran lebih besar.
  • Mapping . Dalam tahap yang keempat dan terakhir ini, kita menspesifikasi dimana setiap tugas akan dieksekusi. Masalah mapping ini tidak muncul pada uniprocessor yang menyediakan penjadwalan tugas.
PEMROGRAMAN CUDA (GRAPHICAL PROCESSING UNIT)
CUDA (Compute Unified Device Architecture) adalah suatu skema yang dibuat oleh NVIDIAagar NVIDIA selaku GPU (Graphic Processing Unit) mampu melakukan komputasi tidak hanya untuk pengolahan grafis namun juga untuk tujuan umum. Jadi, dengan CUDA, kita dapat memanfaatkan cukup banyak processor yang dimiliki oleh NVIDIA untuk berbagai perhitungan. GPU yang ada  saat ini seperti ATI pun sudah memiliki banyak processor di dalamnya. Pada ATI, skema yang mereka bangun disebut ATI Stream. Saat ini pemrograman paralel menjadi sangat penting karena kebutuhan kemampuan komputasi komputer yang terus meningkat seperti kemampuan multitasking dan pengolahan grafis yang andal. Metode saat ini dalam peningkatan peforma komputer juga berbeda dengan masa lampau dimana peningkatan clock dari processor yang diutamakan. Peningkatanclock juga dibatasi oleh kemampuan fisik dari perangkat digital yaitu persoalan daya dan panas. Pada 2005 berbagai industri komputer mulai menawakan komputer dengan beberapa core mulai dari 2, 3, 4, 6, dst. Pada awal perkembangan GPU dengan banyakcore, pemanfaatan GPU hanya dapat dilakukan dengan antarmuka seperti OpenGL dan DirectX dimana antarmuka tersebut dikhususkan hanya untuk pengolahan grafis.
SUMBER :


Posted in 

0 komentar:

Posting Komentar