alexa-tracking

Main Content

1024
1024
KASKUS
51
244
https://www.kaskus.co.id/thread/53fb38a5925233da738b4580/parallel-programming
Parallel Programming
Dengan komputer yang sama, CPU yang sama, GPU yang sama, bahasa pemrograman yang sama,

Siapa yang gak mau liat program yang kita bikin jalan lebih cepat dari originalnya?

Akhir-akhir ini, mulai banyak framework untuk parallel programming yang bermunculan. Dan dengan bantuan dari programmer-programmer handal dari seluruh dunia, bahasa pemrograman parallel yang biasanya dilakukan dengan C atau C++, sekarang sudah bisa dilakukan dengan scripting language seperti Python, Ruby, atau Javascript. Ada juga yang mempunyai semangat tinggi untuk menggunakan framework parallel ini di bahasa yang lebih rumit untuk functional programming, seperti Haskell atau Clojure.

Haskell: FFI binding to the CUDA interface for programming NVIDIA GPUs
Ruby: SGC-Ruby-CUDA
Python: PyOpenCL
Bagi yang masih belum merasakan kehebatan dari parallel programming ini, tunggu apalagi? Langsung menuju TKP dan download SDKnya, gan!

Pertama, ada CUDA yang di-maintain oleh NVIDIA. Saya sudah menggunakan framework ini selama kurang lebih 4 tahun. Frameworknya sendiri sangat simple dan straightforward untuk digunakan. Yang bikin saya makin terpana adalah, jumlah sample program yang disediakan oleh NVIDIA di dalam SDK(Software Development Kit)-nya. Bukan cuma hal-hal biasa seperti penggunakan CUDA APInya yang bisa kita pelajari dari SDK tersebut, tapi juga metode-metode yang bisa diimplementasikan dalam pengoptimisasian program (ke parallel program).

Dulu sewaktu CUDA SDK masih di dalam tahap pengembangan awal (versi 1.x), sangat susah sekali menggunakan SDK dan menulis program dengan CUDA API. Tetapi seiring berjalannya waktu, CUDA Toolkit yang paling baru, sangat praktis dan mudah digunakan/dimengerti. Tapi perlu diingat, karena CUDA adalah model yang dikembangkan oleh NVIDIA, dan merupakan benda proprietary, CUDA hanya bisa digunakan di GPU yang dimanufaktur oleh NVIDIA.

FYI: Teknik untuk melakukan komputasu yang biasanya dijalankan di CPU, biasa disebut komputasi GPGPU (General Purposed GPU).

Berikutnya, ada OpenCL, yang merupakan singkatan dari Open Computing Language. Awal mulanya, pengembangan OpenCL ini dipimpin oleh Apple dan Khronos Group (Sekarang Khronos Group yang memimpin development secara keseluruhan). OpenCL merupakan sebuah parallel programming framework, yang bisa dipakai di berbagai macam platform. Awal mulanya OpenCL hanya bisa digunakan dengan bahasa C saja, tetapi bermula dari spesifikasi OpenCL 1.2, bahasa C++ sudah mulai bisa digunakan dengan menggunakan wrapper library untuk bahasa C++.

Berbagai macam hardware vendor yang ternama ikut dalam pengembangan OpenCL: AMD, Intel, dan NVIDIA, dan menyediakan compiler dan library-nya masing-masing. Karena masing-masing vendor mempunyai blueprint yang berbeda untuk produknya, masing-masing vendor mengeluarkan SDK sendiri untuk dalam penggunaan OpenCL. Seperti misalnya, untuk architecture GPU NVIDIA, struktur kernel yang dieksekusi secara scalar akan mempunyai execution speed yang lebih besar. Sedangkan untuk architecture CPU Intel, struktur kernel yang di-craft untuk menggunakan vector register akan berjalan lebih cepat dibandingkan menggunakan struktur kernel scalar.

SDK dari masing-masing vendor bisa didownload dari website berikut: AMD OpenCL SDK, Intel OpenCL SDK, dan NVIDIA OpenCL SDK. Masing-masing SDK dilengkapi dengan sample yang disediakan oleh masing-masing vendor. Menurut saya, akan lebih mudah untuk mempelajari OpenCL apabila kita sudah mengerti programming dengan memakai CUDA terlebih dahulu.

Tentu saja masih banyak lagi framework untuk parallel programming di luar sana. Rata-rata bisa didapatkan secara gratis, tapi ada juga yang tidak gratis.

Contoh untuk framework yang gratis: OpenMP, Intel’s TBB, Intel’s ArBB, Pthreads

Tidak gratis: PGI’s Compiler with OpenACC, CAPS’ Compiler with OpenACC

Sumber : Parallel Programming By Yuri Ardila (CTO of Apecsa Optima Solusi)
gelar tiker gan

denger denger dari boz ane di c# udah ada gan teknik paralel programming
Om sebelum bhas fwnya bisa tolong bahas pengertian sama comtoh sederhananya dulu,
Biar lebih jelas
Quote:Original Posted By nurjalih
gelar tiker gan

denger denger dari boz ane di c# udah ada gan teknik paralel programming


Klo cuma multithreading, ya iyalah bisa. Rata2 bahasa modern juga pasti bisa.
Quote:Original Posted By antcom
Om sebelum bhas fwnya bisa tolong bahas pengertian sama comtoh sederhananya dulu,
Biar lebih jelas


Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan baik dalam komputer dengan satu atau banyak CPU/Core CPU. Tujuan utama dari pemrograman paralel adalah untuk mempercepat komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan, semakin banyak pekerjaan yang dapat diselesaikan.

Yang dibahas oleh kami adalah parallel programming dengan memindahkan proses komputasi dari CPU ke GPU. untuk saat ini CPU paling banyak memiliki 8 core sedangkan GPU lebih dari 68 core.
Quote:Original Posted By Lifeburner


Klo cuma multithreading, ya iyalah bisa. Rata2 bahasa modern juga pasti bisa.


waduh gan, berarti ane ketinggalan betul ya

hadoooh hadoohhh emoticon-Matabelo

Quote:Original Posted By nurjalih


waduh gan, berarti ane ketinggalan betul ya

hadoooh hadoohhh emoticon-Matabelo



Ya multithreading di CPU emang gak se-'paralel' CUDA ato OpenCL sih (jalan di CPU, bukan GPU soalnya), tapi konsep dasarnya kan mirip.
Quote:Original Posted By apecsaos


Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan baik dalam komputer dengan satu atau banyak CPU/Core CPU. Tujuan utama dari pemrograman paralel adalah untuk mempercepat komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan, semakin banyak pekerjaan yang dapat diselesaikan.

Yang dibahas oleh kami adalah parallel programming dengan memindahkan proses komputasi dari CPU ke GPU. untuk saat ini CPU paling banyak memiliki 8 core sedangkan GPU lebih dari 68 core.


untuk javascript masih belum mudeng, bisa kasih gambaran lebih jelas gan, untuk paralel programmign di javascript
Quote:Original Posted By nurjalih


untuk javascript masih belum mudeng, bisa kasih gambaran lebih jelas gan, untuk paralel programmign di javascript


Lebih jelasnya bisa dilihat di link dibawah ini :

Web GL

Web CL

Node Cuda

Quote:Original Posted By apecsaos


Lebih jelasnya bisa dilihat di link dibawah ini :

Web GL

Web CL

Node Cuda



Terima kasih gan, menuju TKP emoticon-Ngacir2
emoticon-Ngacir2
Bedanya proses komputasi yang bisa dilakukan oleh CPU vs GPU apa ya? Kalo memang GPU bisa segitu "hebat"nya, kenapa ngga semua proses dijalankan di GPU saja?
Quote:Original Posted By nurjalih
gelar tiker gan

denger denger dari boz ane di c# udah ada gan teknik paralel programming


yup emang udah ada gan, pake keyword parallel kalo ga salah, itu untuk parallel looping, tapi setahu ane cuma di .NEt 4.0 kalo ga 4.5
Quote:Original Posted By jokidz90


yup emang udah ada gan, pake keyword parallel kalo ga salah, itu untuk parallel looping, tapi setahu ane cuma di .NEt 4.0 kalo ga 4.5


ya betul gan, baru ada di .NET versi 4 ke atas
Quote:Original Posted By IdontSpeakHuman
Bedanya proses komputasi yang bisa dilakukan oleh CPU vs GPU apa ya? Kalo memang GPU bisa segitu "hebat"nya, kenapa ngga semua proses dijalankan di GPU saja?


1. Gak semua komputasi itu bisa/bagus diparalelkan. Banyak yg justru bergantung sama urutan eksekusi perintahnya.
2. Satu core dari GPU itu lemah, samasekali gak bisa dibandingkan sama raw powernya core dari CPU, jadi walaupun jumlah corenya jauh lebih banyak (ribuan), untuk tugas2 rumit, CPU jelas menang. Terutama sekali kalo kasusnya kayak no. 1.
Quote:Original Posted By Lifeburner


1. Gak semua komputasi itu bisa/bagus diparalelkan. Banyak yg justru bergantung sama urutan eksekusi perintahnya.
2. Satu core dari GPU itu lemah, samasekali gak bisa dibandingkan sama raw powernya core dari CPU, jadi walaupun jumlah corenya jauh lebih banyak (ribuan), untuk tugas2 rumit, CPU jelas menang. Terutama sekali kalo kasusnya kayak no. 1.


Yup benar sekali, tidak semua perintah dapat di paralelkan.
Sayang course buat CUDA di Udacity dah gak gratis. Padahal dulu gratis.
Quote:Original Posted By Lifeburner
Sayang course buat CUDA di Udacity dah gak gratis. Padahal dulu gratis.


Makanya kita sharing aja gan disini buat nambah ilmu juga.
Quote:Original Posted By apecsaos


Makanya kita sharing aja gan disini buat nambah ilmu juga.

mau nanya dikit gan
itu jadinya parallel programming yg ngatur dari sisi developer ya jadinya?
kalo dari OS gmna? maksdunya knapa bukan OS aja yg manage buat dpt optimum pemakaian cpu resource ?
maklumin ya pertanyaan dr nubicrots - trims
gan kenapa program multithread lebih lambat dari single thread ya?
Quote:Original Posted By Lifeburner


1. Gak semua komputasi itu bisa/bagus diparalelkan. Banyak yg justru bergantung sama urutan eksekusi perintahnya.
2. Satu core dari GPU itu lemah, samasekali gak bisa dibandingkan sama raw powernya core dari CPU, jadi walaupun jumlah corenya jauh lebih banyak (ribuan), untuk tugas2 rumit, CPU jelas menang. Terutama sekali kalo kasusnya kayak no. 1.


Bahasa mesin antar GPU apakah sama? Kalo nggak kan repot juga kalo program cuma mau jalan dengan GPU tertentu emoticon-Bingung (S)