Jumat, 17 Juni 2016

Pemrograman Cuda GPU

CUDA® adalah platform komputasi dan pemrograman Model paralel diciptakan oleh NVIDIA. Hal ini memungkinkan peningkatan dramatis dalam komputasi kinerja dengan memanfaatkan kekuatan dari graphics processing unit (GPU).
Dengan jutaan CUDA-enabled GPU yg telah terjual sampai saat ini, pengembang perangkat lunak, ilmuwan dan peneliti menemukan  beberapa manfaat yang dapat kita gunakan dengan GPU komputasi dengan CUDA. Berikut adalah beberapa contoh:

  • Mengidentifikasi plak tersembunyi di arteri: Serangan jantung adalah penyebab utama kematian di seluruh dunia. Harvard Teknik, Harvard Medical School dan Brigham & Rumah Sakit Wanita ini telah bekerja sama untuk menggunakan GPU untuk mensimulasikan aliran darah dan mengidentifikasi tersembunyi plak arteri tanpa teknik pencitraan invasif atau pembedahan eksplorasi.
  • Menganalisis arus lalu lintas udara: Sistem Udara Nasional mengelola koordinasi nasional arus lalu lintas udara. model komputer membantu mengidentifikasi cara-cara baru untuk mengurangi kemacetan dan menjaga lalu lintas pesawat bergerak secara efisien. Menggunakan kekuatan komputasi GPU, tim di NASA memperoleh keuntungan kinerja besar, mengurangi waktu analisis dari sepuluh menit sampai tiga detik.
  • Memvisualisasikan molekul: Sebuah simulasi molekul yang disebut NAMD (dinamika molekul nano) mendapat dorongan kinerja besar dengan GPU. Kecepatan-up adalah hasil dari arsitektur paralel GPU, yang memungkinkan pengembang NAMD ke port bagian menghitung-intensif aplikasi ke GPU menggunakan CUDA Toolkit

Sumber:

http://www.nvidia.com/object/cuda_home_new.html


TikaNesia-Jasa Pembuatan Website

Message Passing & openMP

Massage Passing merupkan suatu teknik bagaimana mengatur suatu alur komunikasi messaging terhadap proses pada system. Message passing dalam ilmu komputer adalah suatu bentuk komunikasi yang digunakan dalam komputasi paralel, pemrograman-berorientasi objek, dan komunikasi interprocess. Dalam model ini, proses atau benda dapat mengirim dan menerima pesan yang terdiri dari nol atau lebih byte, struktur data yang kompleks, atau bahkan segmen kode ke proses lainnya dan dapat melakukan sinkronisasi. Paradigma Message passing yaitu :

1.  Banyak contoh dari paradigma sekuensial dipertimbangkan bersama-sama.
2.Programmer membayangkan beberapa prosesor, masing-masing dengan memori, dan menulis sebuah program untuk berjalan pada setiap prosesor.
3. Proses berkomunikasi dengan mengirimkan pesan satu sama lain.





Terdapat beberapa metode dalam pengiriman pesan yaitu :

·        Synchronous Message Passing
Pengirim menunggu untuk mengirim pesan sampai penerima siap untuk menerima pesan. Oleh karena itu tidak ada buffering. Selain itu Pengirim tidak bisa mengirim pesan untuk dirinya sendiri.
·        Ansynchronous Message Passing
Pengirim akan mengirim pesan kapanpun dia mau. Pengirim tidak peduli ketika penerima belum siap untuk menerima pesan. Oleh karena itu diperlukan buffering untuk menampung pesan sementara sampai penerima siap menerima pesan. Selain itu pengirim dapat pesan untuk dirinya sendiri.

OpenMP (Open Multiprocessing)
OpenMP adalah Application Programing Interface (API) yang mendukung pemrograman multiprosesing shared memory dalam bahasa C/C++ dan fortran pada berbagai arsitektur dan sistem operasi diantaranya: Solaris, AIX, HP-UX,GNU/Linux, Mac OS X, dan Windows.




OpenMP adalah model portabel dan skalabel yang memberikan interface sederhana dan fleksibel bagi programer shared memory dalam membangun aplikasi paralel. Program multithread dapat ditulis dalam berbagai cara. Beberapa diantaranya memungkinkan untuk melakukan interaksi yang kompleks antar thread. OpenMP mencoba untuk memberikan kemudahan pemrograman serta membantu dalam menghindari kesalahan program, melalui pendekatan terstruktur. Pendekatan ini dikenal sebagai model pemrograman fork-join.
OpenMP bekerja berdasarkan model shared memory, maka secara default data dibagi diantara thread-thread dan dapat terlihat dari setiap thread. Terkadang program akan membutuhkan variabel dengan nilai thread spesifik. Jika setiap thread memiliki variabel duplikat akan sangat berpotensi memiliki nilai yang berbeda-beda pada setiap variabel duplikat tersebut.
Sinkronisasi (pengkoordinasian) aksi dari thread adalah sesuatu yang sangat penting untuk menjamin data yang harus dibagi dan untuk mencegah terjadinya data race condition. Secara default OpenMP telah menyediakan mekanisme untuk menunggu thread dalam suatu tim thread sehingga semua thread menyelesaikan tugasnya dalam region, kemudian dapat melanjutkan ke proses selanjutnya. Mekanisme ini dikenal sebagai barrier.

Sumber: http://debelist.blogspot.co.id/2016/05/parallel-computation-pengantar-message.html


TikaNesia-Jasa Pembuatan Website

Thread Programing

Thread adalah unit dasar dari utilitas CPU. Di dalamnya terdapat ID thread, program counter, register, dan stack. Dan saling berbagi dengan thread lain dalam proses yang sama. Thread merupakan prinsip yang memperbolehkan sebagian dari program untuk berjalan secara independen dengan sebagian program lainnya. Dalam threading anda dapat menjalankan beberapa pointer (alamat dalam komputer) sekaligus. Artinya dua atau lebih bagian dari kode dapat dijalankan secara simultan.
·         Thread adalah unit terkecil dalam suatu proses yang bisa dijadwalkan oleh sistem operasi.
·         Merupakan sebuah status eksekusi (ready, running, suspend, block, queue, dll)
·         Kadang disebut sebagai proses ringan (lightweight).
·         Unit dasar dari dari sistem utilisasi pada processor (CPU).
·         Dalam thread terdapat: ID Thread, Program Counter, Register dan Stack.
·         Sebuah thread berbagi code section, data section dan resource sistem operasi dengan thread yang lain yang memiliki proses yang sama.

[thread]
Single-Threading dan Multi-Threading
Single-Threading
 adalah sebuah lightweight process (proses sederhana) yang mempunyai thread tunggal yang berfungsi sebagai pengendali/ controller.
Multi-Threading
 adalah proses dengan thread yang banyak dan mengerjakan lebih dari satu tugas dalam satu waktu.

[single and multithread]

Sumber:

https://tintakopi.wordpress.com/2011/10/24/thread-multithread/



TikaNesia-Jasa Pembuatan Website

Architectural Parallel Computer

Pengelompokan Komputer
Berdasarkan jumlah aliran instruksi dan aliran datanya, Michael J. Flynn pada tahun 1966 mengelompokkan komputer digital menjadi empat golongan besar [Hwa85]. Aliran instruksi (instruction stream)adalah urutan instruksi yang dieksekusi oleh sistem komputer, sedangkan aliran data (data stream) adalah urutan data yang diolah termasuk data masukan, bagian dari data, maupun data sementara yang dipanggil atau digunakan oleh aliran instruksi.

Keempat kelompok komputer tersebut adalah :

1. Komputer SISD (Single Instruction stream-Single Data stream)
Pada komputer jenis ini semua instruksi dikerjakan terurut satu demi satu, tetapi juga dimungkinkan adanya overlapping dalam eksekusi setiap bagian instruksi (pipelining). Pada umumnya komputer SISD berupa komputer yang terdiri atas satu buah pemroses (single processor). Namun komputer SISD juga mungkin memiliki lebih dari satu unit fungsional (modul memori, unit pemroses, dan lain-lain), selama seluruh unit fungsional tersebut berada dalam kendali sebuah unit pengendali. Skema arsitektur global komputer SISD.

2. Komputer SIMD (Single Instruction stream-Multiple Data stream)
Pada komputer SIMD terdapat lebih dari satu elemen pemrosesan yang dikendalikan oleh sebuah unit pengendali yang sama. Seluruh elemen pemrosesan menerima dan menjalankan instruksi yang sama yang dikirimkan unit pengendali, namun melakukan operasi terhadap himpunan data yang berbeda yang berasal dari aliran data yang berbeda pula.

3. Komputer MISD (Multiple Instruction stream-Single Data stream)
Komputer jenis ini memiliki n unit pemroses yang masing-masing menerima dan
mengoperasikan instruksi yang berbeda terhadap aliran data yang sama, dikarenakan setiap unit pemroses memiliki unit pengendali yang berbeda. Keluaran dari satu pemroses menjadi masukan bagi pemroses berikutnya. Belum ada perwujudan nyata dari komputer jenis ini kecuali dalam bentuk prototipe untuk penelitian.

4. Komputer MIMD (Multiple Instruction stream-Multiple Data stream)
Pada sistem komputer MIMD murni terdapat interaksi di antara npemroses. Hal ini disebabkan seluruh aliran dari dan ke memori berasal dari space data yang sama bagi semua pemroses. Komputer MIMD bersifat tightly coupled jika tingkat interaksi antara pemroses tinggi dan disebut loosely coupled jika tingkat interaksi antara pemroses rendah.


Sumber:




TikaNesia-Jasa Pembuatan Website

Distributed Processing

pemrosesan terdistribusi adalah ungkapan yang digunakan untuk merujuk kepada berbagai sistem komputer yang menggunakan lebih dari satu komputer (atau prosesor) untuk menjalankan sebuah aplikasi. Ini termasuk pemrosesan paralel di mana satu komputer menggunakan lebih dari satu CPU untuk mengeksekusi program.
Lebih sering, bagaimanapun, pemrosesan terdistribusi mengacu pada jaringan lokal-daerah (LAN) dirancang agar satu program dapat dijalankan secara bersamaan di berbagai situs. sistem pengolahan yang paling didistribusikan berisi perangkat lunak canggih yang dapat mendeteksi CPU menganggur pada jaringan dan paket program untuk memanfaatkan mereka.
Bentuk lain dari pemrosesan terdistribusi melibatkan didistribusikan database. Ini adalah database di mana data disimpan di dua atau lebih sistem komputer. Sistem database melacak di mana data tersebut sehingga sifat didistribusikan dari database tidak jelas bagi pengguna.


Sumber:
http://www.webopedia.com/TERM/D/distributed_processing.html



TikaNesia-Jasa Pembuatan Website

Paralllel Computation Concept

Paralel Processing adalah kemampuan menjalankan tugas atau aplikasi lebih dari satu aplikasi dan dijalankan secara simultan atau bersamaan pada sebuah komputer. Secara umum, ini adalah sebuah teknik dimana sebuah masalah dibagi dalam beberapa masalah kecil untuk mempercepat proses penyelesaian masalah.
Dalam arti yang paling sederhana, komputasi paralel adalah penggunaan simultan dari beberapa sumber komputasi untuk memecahkan masalah komputasi:
·         Masalah dipecah menjadi bagian-bagian diskrit yang dapat diselesaikan secara bersamaan
·         Setiap bagian selanjutnya dipecah menjadi serangkaian instruksi
·         instruksi dari setiap bagian mengeksekusi secara bersamaan pada prosesor yang berbeda
·         Mekanisme kontrol / koordinasi digunakan



Sumber:
https://computing.llnl.gov/tutorials/parallel_comp/


TikaNesia-Jasa Pembuatan Website