alexa-tracking
Selamat Guest, Agan dapat mencoba tampilan baru KASKUS Masih Kangen Tampilan Sebelumnya
Kategori
Kategori
Home / FORUM / All / Tech / ... / Programmer Forum /
Parallel Programming
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)
Diubah oleh apecsaos
Beri apresiasi terhadap thread ini Gan!
Halaman 1 dari 2
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:


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


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:


waduh gan, berarti ane ketinggalan betul ya

hadoooh hadoohhh emoticon-Matabelo

Quote:


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


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


Lebih jelasnya bisa dilihat di link dibawah ini :

Web GL

Web CL

Node Cuda

Quote:


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:


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:


ya betul gan, baru ada di .NET versi 4 ke atas
Quote:


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:


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


Makanya kita sharing aja gan disini buat nambah ilmu juga.
Quote:

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:


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


Itu sih salah developernya gan emoticon-Stick Out Tongue

Biasanya kalo ada program multithreaded yg jalannya lebih lambat dari program yg sama yg singlethreaded, kemungkinannya satu dari dua ini:

  1. Jenis komputasinya emang kurang cocok dibikin jadi paralel
  2. Mutex/thread locknya salah diatur


Dua2nya tetep salah developernya. Soalnya mo begimanapun, kan ujung2nya kita juga yg bikin thread2nya...

Quote:


Wah, ane kurang tau gan klo soal bahasa mesinnya. Tapi mestinya lumayan mirip sih, soalnya sampe bisa ada API kayak OpenCL gitu biasanya karena antar hardwarenya mirip.
Halaman 1 dari 2


×
GDP Network
© 2018 KASKUS, PT Darta Media Indonesia. All rights reserved
Ikuti KASKUS di