Parallel Computation



Materi PARALLEL COMPUTATION


4IA18


Nama Anggota:
1.    Yohanes Kurniawan (5C414440)
2.    Haryono (54414835)
3.    Dimas Ario (53414090)
4.    Audya Elita Putri (51414801)
5.    Muhamad Fikri (56414929)
6.    Rachmadinna Poetri Priyandini (58414682)




MATERI 1
PARALLELISM CONCEPT

1.     PENGERTIAN KOMPUTASI PARALEL

Secara umum Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer independen secara bersamaan. Ini umumnya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar (di industri keuangan, bioinformatika, dll) ataupun karena tuntutan proses komputasi yang banyak. Kasus kedua umum ditemui di kalkulasi numerik untuk menyelesaikan persamaan matematis di bidang fisika, kimia dan lain-lain.
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. Tidak berarti dengan mesin paralel semua program yang dijalankan diatasnya otomatis akan diolah secara parallel.
Di dalam komputasi parallel ada yang dinamakan dengan pemrograman parallel. Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan (komputasi paralel), baik dalam komputer dengan satu (prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU. Bila komputer yang digunakan secara bersamaan tersebut dilakukan oleh komputer-komputer terpisah yang terhubung dalam suatu jaringan komputer lebih sering istilah yang digunakan adalah sistem terdistribusi.
Parallel processing berbeda dengan multitasking, yaitu satu CPU mengeksekusi beberapa program sekaligus. Parallel processing disebut juga parallel computing. Pada system komputasi parallel terdiri dari beberapa unit prosesor dan beberapa unit memori. Ada dua teknik yang berbeda untuk mengakses data di unit memori, yaitu shared memory address dan message passing. Berdasarkan cara mengorganisasikan memori ini computer parallel dibedakan menjadi shared memory parallel machine dan distributed memory parallel machine.
Prosesor dan memori ini didalam mesin paralel dapat dihubungkan (interkoneksi) secara statis maupun dinamis. Interkoneksi statis umumnya digunakan oleh distributed memory system (sistem memori terdistribusi). Sambungan langsung peer to peer digunakan untuk menghubungkan semua prosesor. Interkoneksi dinamis umumnya menggunakan switch untuk menghubungkan antar prosesor dan memori.
Terdapat dua hukum yang berlaku dalam komputasi parallel processing. yaitu:
a)     Hukum Amdahl
Amdahl berpendapat, “Peningkatan kecepatan secara paralel akan menjadi linear, melipatgandakan kemampuan proses sebuah komputer dan mengurangi separuh dari waktu proses yang diperlukan untuk menyelesaikan sebuah masalah.”
b)     Hukum Gustafson
Pendapat yang dikemukakan Gustafson hampir sama dengan Amdahl, tetapi dalam pemikiran Gustafson, sebuah komputasi paralel berjalan dengan menggunakan dua atau lebih mesin untuk mempercepat penyelesaian masalah dengan memperhatikan faktor eksternal, seperti kemampuan mesin dan kecepatan proses tiap-tiap mesin yang digunakan
2.     TUJUAN KOMPUTASI PARALEL
Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan ( dalam waktu yang sama ), semakin banyak pekerjaan yang bisa diselesaikan. Analogi yang paling gampang adalah, bila anda dapat merebus air sambil memotong-motong bawang saat anda akan memasak, waktu yang anda butuhkan akan lebih sedikit dibandingkan bila anda mengerjakan hal tersebut secara berurutan (serial). Atau waktu yg anda butuhkan memotong bawang akan lebih sedikit jika anda kerjakan berdua.
Performa dalam pemrograman paralel diukur dari berapa banyak peningkatan kecepatan (speed up) yang diperoleh dalam menggunakan tehnik paralel. Secara informal, bila anda memotong bawang sendirian membutuhkan waktu 1 jam dan dengan bantuan teman, berdua anda bisa melakukannya dalam 1/2 jam maka anda memperoleh peningkatan kecepatan sebanyak 2 kali.

3.     PERBEDAAN KOMPUTASI TUNGGAL DAN KOMPUTASI PARAREL
Untuk lebih memperjelas lebih dalam mengenai perbedaan komputasi tunggal (menggunakan 1 processor) dengan komputasi paralel (menggunakan beberapa processor), maka kita harus mengetahui terlebih dahulu pengertian mengenai model dari komputasi. Ada 4 model komputasi yang digunakan, yaitu:
a.      SISD (Single Instruction, Single Data) adalah satu-satunya yang menggunakan arsitektur Von Neumann. Ini dikarenakan pada model ini hanya digunakan 1 processor saja. Oleh karena itu model ini bisa dikatakan sebagai model untuk komputasi tunggal. Sedangkan ketiga model lainnya merupakan komputasi paralel yang menggunakan beberapa processor. Beberapa contoh komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.
b.      SIMD(Single Instruction, Multiple Data) menggunakan banyak processor dengan instruksi yang sama, namun setiap processor mengolah data yang berbeda. Sebagai contoh kita ingin mencari angka 27 pada deretan angka yang terdiri dari 100 angka, dan kita menggunakan 5 processor. Pada setiap processor kita menggunakan algoritma atau perintah yang sama, namun data yang diproses berbeda. Misalnya processor 1 mengolah data dari deretan / urutan pertama hingga urutan ke 20, processor 2 mengolah data dari urutan 21 sampai urutan 40, begitu pun untuk processor-processor yang lain. Beberapa contoh komputer yang menggunakan model SIMD adalah ILLIAC IV, MasPar, Cray X-MP, Cray Y-MP, Thingking Machine CM-2 dan Cell Processor (GPU).
c.      MISD(Multiple Instruction, Single Data) menggunakan banyak processor dengan setiap processor menggunakan instruksi yang berbeda namun mengolah data yang sama. Hal ini merupakan kebalikan dari model SIMD. Untuk contoh, kita bisa menggunakan kasus yang sama pada contoh model SIMD namun cara penyelesaian yang berbeda. Pada MISD jika pada komputer pertama, kedua, ketiga, keempat dan kelima sama-sama mengolah data dari urutan 1-100, namun algoritma yang digunakan untuk teknik pencariannya berbeda di setiap processor. Sampai saat ini belum ada komputer yang menggunakan model MISD.
d.     MIMD( Multiple Instruction, Multiple Data) menggunakan banyak processor dengan setiap processor memiliki instruksi yang berbeda dan mengolah data yang berbeda. Namun banyak komputer yang menggunakan model MIMD juga memasukkan komponen untuk model SIMD. Beberapa komputer yang menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.
Berikut ini adalah gambar perbedaa antara komputasi tunggal dengan parallel komputasi :
·       komputasi tunggal/serial
http://dpamudji.files.wordpress.com/2011/04/serialproblem.gif
·       komputasi parallel
http://dpamudji.files.wordpress.com/2011/04/parallelproblem.gif
4.     HUBUNGAN KOMPUTASI MODERN DENGAN PARALEL PROCESSING
Hubungan antara komputasi modern dan parallel processing sangat berkaitan, karena penggunaan komputer saat ini atau komputasi dianggap lebih cepat dibandingkan dengan penyelesaian masalah secara manual. Dengan begitu peningkatan kinerja atau proses komputasi semakin diterapkan, dan salah satu caranya adalah dengan meningkatkan kecepatan perangkat keras. Dimana komponen utama dalam perangkat keras komputer adalah processor. Sedangkan parallel processing adalah penggunaan beberapa processor (multiprocessor atau arsitektur komputer dengan banyak processor) agar kinerja computer semakin cepat.
Kinerja komputasi dengan menggunakan paralel processing itu menggunakan dan memanfaatkan beberapa komputer atau CPU untuk menemukan suatu pemecahan masalah dari masalah yang ada. Sehingga dapat diselesaikan dengan cepat daripada menggunakan satu komputer saja. Komputasi dengan paralel processing akan menggabungkan beberapa CPU, dan membagi-bagi tugas untuk masing-masing CPU tersebut. Jadi, satu masalah terbagi-bagi penyelesaiannya. Tetapi ini untuk masalah yang besar saja, komputasi yang masalah kecil, lebih murah menggunakan satu CPU saja.
Nama : Yohanes Kurniawan
Npm  :  5C414440 / 4IA18

Sumber :














MATERI 2
DISTRIBUSI PROCESSING
DISTRIBUSI PROCESSING
Definisi umum dari pemrosesan terdistribusi merupakan cara untuk mempercepat pengolahan data atau informasi dengan mendistribusikan pekerjaan atau intruksi ke banyak komputer yang telah dipilih untuk memberi kekuatan pemrosesan yang lebih cepat. Tujuan dari komputasi terdistribusi adalah menyatukan kemampuan dari sumber daya (sumber komputasi atau sumber informasi) yang terpisah secara fisik, ke dalam suatu sistem gabungan yang terkoordinasi dengan kapasitas yang jauh melebihi dari kapasitas individual komponen-komponennya.
Tujuan lain yang ingin dicapai dalam komputasi terdistribusi adalah transparansi. Kenyataan bahwa sumber daya yang dipakai oleh pengguna sistem terdistribusi berada pada lokasi fisik yang terpisah, tidak perlu diketahui oleh pengguna tersebut. Transparansi ini memungkinkan pengguna sistem terdistribusi untuk melihat sumber daya yang terpisah tersebut seolah-olah sebagai satu sistem komputer tunggal, seperti yang biasa digunakannya. Dalam prosesnya setiap komputer berinteraksi satu sama lain untuk mencapai tujuan bersama.
Nama : Haryono
Npm  :  54414835 / 4IA18

Sumber :




MATERI 3
 Architectural Parallel Computing
Architectural Parallel Computing – Model
Parallel processing telah dikembangkan sebagai teknologi yang efektif di komputer modern untuk memenuhi permintaan akan kinerja yang lebih tinggi, biaya lebih rendah dan hasil yang akurat dalam aplikasi kehidupan nyata. Peristiwa serentak umum terjadi di komputer saat ini karena praktik multiprogramming, multiprocessing, atau multicomputing.
Komputer modern memiliki paket perangkat lunak yang kuat dan ekstensif. Untuk menganalisa perkembangan kinerja komputer, pertama kita harus memahami perkembangan dasar perangkat keras dan perangkat lunak.
            Tonggak Perkembangan Komputer - Ada dua tahap utama pengembangan komponen komputer - mekanik atau elektromekanis. Komputer modern berevolusi setelah diperkenalkannya komponen elektronik. Elektron mobilitas tinggi di komputer elektronik menggantikan bagian operasional di komputer mekanis. Untuk transmisi informasi, sinyal listrik yang melaju hampir pada kecepatan lampu diganti mekanis gigi atau tuas.
            Elemen komputer modern - Sistem komputer modern terdiri dari perangkat keras komputer, set instruksi, program aplikasi, perangkat lunak sistem dan antarmuka pengguna.










Unsur Sistem Komputer Modern
Masalah komputasi dikategorikan sebagai komputasi numerik, penalaran logis, dan pemrosesan transaksi. Beberapa masalah kompleks mungkin memerlukan kombinasi dari ketiga mode pemrosesan.
             Evolusi Arsitektur Komputer - Dalam empat dekade terakhir, arsitektur komputer telah mengalami perubahan revolusioner. Kami memulai dengan arsitektur Von Neumann dan sekarang kami memiliki multicomputers dan multiprocessors.
             Kinerja sistem komputer - Kinerja suatu sistem komputer bergantung pada kemampuan mesin dan perilaku program. Kemampuan mesin dapat ditingkatkan dengan teknologi perangkat keras yang lebih baik, fitur arsitektur yang canggih dan pengelolaan sumber daya yang efisien. Perilaku program tidak dapat diprediksi karena bergantung pada kondisi aplikasi dan run-time
Multiprocessors dan Multicomputers
Pada bagian ini, kita akan membahas dua jenis komputer paralel -
·       Multiprocessors
·       Multicomputers
Shared-Memory Multicomputers
Tiga model multiprocessors memori bersama yang paling umum adalah -Uniform Memory Access (UMA)
Dalam model ini, semua prosesor berbagi memori fisik secara seragam. Semua prosesor memiliki waktu akses yang sama untuk semua kata memori. Setiap prosesor mungkin memiliki memori cache pribadi. Aturan yang sama diikuti untuk perangkat periferal.
Bila semua prosesor memiliki akses yang sama ke semua perangkat periferal, sistem ini disebut multiprosesor simetris. Bila hanya satu atau beberapa prosesor yang bisa mengakses perangkat periferal, sistem ini disebut multiprosesor asimetris.
UMA Multiprosesor







Akses Memori Non-seragam (NUMA)
Dalam model multiprosesor NUMA, waktu akses berbeda dengan lokasi kata memori. Di sini, memori bersama didistribusikan secara fisik di antara semua prosesor, yang disebut kenangan lokal. Koleksi semua kenangan lokal membentuk ruang alamat global yang bisa diakses oleh semua pengolah.
NUMA Model untuk Sistem Multiprosesor







Arsitektur Memori Cache Only (COMA)
Model COMA adalah kasus khusus model NUMA. Di sini, semua kenangan utama yang terdistribusi diubah menjadi kenangan cache.






Model COMA Multiprosesor
             Distributed - Memory Multicomputers - Sistem multicomputer memori terdistribusi terdiri dari beberapa komputer, dikenal sebagai node, saling terhubung melalui jaringan message passing. Setiap node bertindak sebagai komputer otonom yang memiliki prosesor, memori lokal dan kadang-kadang perangkat I / O. Dalam kasus ini, semua kenangan lokal bersifat pribadi dan hanya dapat diakses oleh prosesor lokal. Inilah sebabnya, mesin tradisional disebut mesin tidak-remote-memory-access (NORMA).
Model Generik dari sebuah Pesan yang Melewati Multiprosesor










Komputer Multivektor dan SIMD
Pada bagian ini, kita akan membahas superkomputer dan prosesor paralel untuk pemrosesan vektor dan paralelisme data.
Vektor superkomputer
Pada komputer vektor, prosesor vektor terpasang pada prosesor skalar sebagai fitur opsional. Komputer host pertama memuat program dan data ke memori utama. Kemudian unit kontrol skalar menerjemahkan semua instruksi. Jika instruksi yang didekode adalah operasi skalar atau operasi program, prosesor skalar menjalankan operasi yang menggunakan pipa fungsional skalar.Di sisi lain, jika instruksi yang diterjemahkan adalah operasi vektor maka instruksi akan dikirim ke unit kontrol vektor.
Arsitektur komputer Vector Super










Superkomputer SIMD
Di komputer SIMD, jumlah prosesor 'N' terhubung ke unit kontrol dan semua prosesor memiliki unit memori masing-masing. Semua prosesor dihubungkan oleh jaringan interkoneksi.
Model Operasional Komputer SIMD









Model PRAM dan VLSI
Model ideal memberikan kerangka kerja yang sesuai untuk mengembangkan algoritma paralel tanpa mempertimbangkan batasan fisik atau rincian implementasi.
Model dapat ditegakkan untuk mendapatkan batas kinerja teoritis pada komputer paralel atau untuk mengevaluasi kompleksitas VLSI pada area chip dan waktu operasional sebelum chip dibuat.
Mesin Random-Access Paralel
Sheperdson dan Sturgis (1963) memodelkan komputer Uniprocessor konvensional sebagai random-access-machines (RAM). Fortune dan Wyllie (1978) mengembangkan model parallel random access-machine (PRAM) untuk memodelkan sebuah komputer paralel ideal dengan akses memori nol dan sinkronisasi.
Model PRAM
PRAM prosesor N memiliki unit memori bersama. Memori bersama ini bisa dipusatkan atau didistribusikan antar prosesor. Prosesor ini beroperasi pada siklus baca-memori, menulis-memori dan perhitungan yang sinkron. Jadi, model ini menentukan bagaimana operasi baca dan tulis bersamaan ditangani.
Berikut adalah operasi pembaruan memori yang mungkin -

·       Exclusive read (ER) - Dalam metode ini, dalam setiap siklus hanya satu prosesor yang diizinkan untuk membaca dari lokasi memori manapun.
·       Eksklusif menulis (EW) - Dalam metode ini, setidaknya satu prosesor diperbolehkan untuk menulis ke lokasi memori pada suatu waktu.
·       Concurrent read (CR) - Ini memungkinkan beberapa prosesor membaca informasi yang sama dari lokasi memori yang sama dalam siklus yang sama.
·       Concurrent write (CW) - Ini memungkinkan operasi tulis simultan ke lokasi memori yang sama. Untuk menghindari konflik tulis, beberapa kebijakan disiapkan.
Model Kompleksitas VLSI
Komputer paralel menggunakan chip VLSI untuk membuat array prosesor, array memori dan jaringan switching berskala besar.
Saat ini, teknologi VLSI 2 dimensi. Ukuran chip VLSI sebanding dengan jumlah ruang penyimpanan (memori) yang tersedia di chip itu.
Kita dapat menghitung kompleksitas ruang dari sebuah algoritma oleh area chip (A) dari implementasi chip VLSI dari algoritma tersebut. Jika T adalah waktu (latency) yang dibutuhkan untuk mengeksekusi algoritma, maka A.T memberikan batas atas pada jumlah bit yang diproses melalui chip (atau I / O). Untuk komputasi tertentu, ada batas bawah, f (s), sehingga
A.T2> = O (f (s))
Dimana A = daerah chip dan T = waktu
Trek Pengembangan Arsitektu
Evolusi komputer paralel yang saya sebarkan di sepanjang jalur berikut -
    Beberapa Prosesor Trek
        Jalur multiprosesor
        Trek multicomputer
    Beberapa jalur data
        Jalur vektor
        Trek SIMD
    Beberapa jalur benang
        Jalur multithreaded
        Jalur dataflow
Di beberapa jalur prosesor, diasumsikan bahwa benang yang berbeda dijalankan bersamaan pada prosesor yang berbeda dan berkomunikasi melalui memori bersama (multiprocessor track) atau sistem passing message (multicomputer track).
Dalam beberapa jalur data, diasumsikan bahwa kode yang sama dijalankan pada sejumlah besar data. Hal ini dilakukan dengan menjalankan instruksi yang sama pada urutan elemen data (vector track) atau melalui eksekusi urutan instruksi yang sama pada kumpulan data yang serupa (track SIMD).
Di beberapa jalur benang, diasumsikan bahwa eksekusi interleaved dari berbagai benang pada prosesor yang sama untuk menyembunyikan penundaan sinkronisasi di antara benang yang dijalankan pada prosesor yang berbeda. Thread interleaving bisa kasar (multithreaded track) atau fine (jalur dataflow).

Nama : Dimas Ario
Npm  :  53414090 / 4IA18

Sumber :






MATERI 4
 Thread Programming
Pengantar Thread Programming
Dalam pemrograman komputer, sebuah thread adalah informasi terkait dengan penggunaan sebuah program tunggal yang dapat menangani beberapa pengguna secara bersamaan. Dari program point-of-view, sebuah thread adalah informasi yang dibutuhkan untuk melayani satu pengguna individu atau permintaan layanan tertentu. Jika beberapa pengguna menggunakan program atau permintaan bersamaan dari program lain yang sedang terjadi, thread yang dibuat dan dipelihara untuk masing-masing proses. Thread memungkinkan program untuk mengetahui user sedang masuk didalam program secara bergantian dan akan kembali masuk atas nama pengguna yang berbeda. Salah satu informasi thread disimpan dengan cara menyimpannya di daerah data khusus dan menempatkan alamat dari daerah data dalam register. Sistem operasi selalu menyimpan isi register saat program interrupted dan restores ketika memberikan program kontrol lagi.
Sebagian besar komputer hanya dapat mengeksekusi satu instruksi program pada satu waktu, tetapi karena mereka beroperasi begitu cepat, mereka muncul untuk menjalankan berbagai program dan melayani banyak pengguna secara bersamaan. Sistem operasi komputer memberikan setiap program “giliran” pada prosesnya, maka itu memerlukan untuk menunggu sementara program lain mendapat giliran. Masing-masing program dipandang oleh sistem operasi sebagai suatu tugas dimana sumber daya tertentu diidentifikasi dan terus berlangsung. Sistem operasi mengelola setiap program aplikasi dalam sistem PC (spreadsheet, pengolah kata, browser Web) sebagai tugas terpisah dan memungkinkan melihat dan mengontrol item pada daftar tugas. Jika program memulai permintaan I / O, seperti membaca file atau menulis ke printer, itu menciptakan thread. Data disimpan sebagai bagian dari thread yang memungkinkan program yang akan masuk kembali di tempat yang tepat pada saat operasi I / O selesai. Sementara itu, penggunaan bersamaan dari program diselenggarakan pada thread lainnya. Sebagian besar sistem operasi saat ini menyediakan dukungan untuk kedua multitasking dan multithreading. Mereka juga memungkinkan multithreading dalam proses program agar sistem tersebut disimpan dan  menciptakan proses baru untuk setiap thread.
Static Threading
Teknik ini biasa digunakan untuk komputer dengan chip multiprocessors dan jenis komputer shared-memory lainnya. Teknik ini memungkinkan thread berbagi memori yang tersedia, menggunakan program counter dan mengeksekusi program secara independen. Sistem operasi menempatkan satu thread pada prosesor dan menukarnya dengan thread lain yang hendak menggunakan prosesor itu.
Mekanisme ini terhitung lambat, karenanya disebut dengan static. Selain itu teknik ini tidak mudah diterapkan dan rentan kesalahan. Alasannya, pembagian pekerjaan yang dinamis di antara thread-thread menyebabkan load balancing-nya cukup rumit. Untuk memudahkannya programmer harus menggunakan protocol komunikasi yang kompleks untuk menerapkan scheduler load balancing. Kondisi ini mendorong pemunculan concurrency platforms yang menyediakan layer untuk mengkoordinasi, menjadwalkan, dan mengelola sumberdaya komputasi paralel.
Sebagian platform dibangun sebagai runtime libraries atau sebuah bahasa pemrograman paralel lengkap dengan compiler dan pendukung runtime-nya.
Dynamic Multithreading
Related image
Teknik ini merupakan pengembangan dari teknik sebelumnya yang bertujuan untuk kemudahan karena dengannya programmer tidak harus pusing dengan protokol komunikasi, load balancing, dan kerumitan lain yang ada pada static threading. Concurrency platform ini menyediakan scheduler yang melakukan load balacing secara otomatis. Walaupun platformnya masih dalam pengembangan namun secara umum mendukung dua fitur : nested parallelism dan parallel loops. Nested parallelism memungkinkan sebuah subroutine di-spawned (ditelurkan dalam jumlah banyak seperti telur katak) sehingga program utama tetap berjalan sementara subroutine menghitung hasilnya. Sedangkan parallel loops seperti halnya fungsi for namun memungkinkan iterasi loop dilakukan secara bersamaan.
Nama : Audya Elita Putri
Npm  :  51414801 / 4IA18

Sumber :
MATERI 5
 Pengantar Massage Passing, OpenMP

Pengantar Massage Passing
Message Passing merupakan sebuah bentuk dari komunikasi yang digunakan di komputasi paralel, OOT (Object Oriented Programming) atau Pemrograman Berbasis Objek dan komunikasi interproses. MPI adalah sebuah standard pemrograman yang memungkinkan pemrogram untuk membuatsebuah aplikasi yang dapat dijalankan secara paralel. Proses yang dijalankan oleh sebuah aplikasi dapat dibagi untuk dikirimkan ke masing – masing compute node yang kemudian masing – masing compute node tersebut mengolah dan mengembalikan hasilnya ke komputer head node.Untuk merancang aplikasi paralel tentu membutuhkan banyak pertimbangan - pertimbangandiantaranya adalah latensi dari jaringan dan lama sebuah tugas dieksekusi oleh prosesor .
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
OpenMP merupakan antarmuka pemrograman aplikasi(API) yang mendukung multi-platform berbagi memori multiprocessing pemrograman C , C + + , dan Fortran , pada kebanyakan arsitektur prosesor dan system operasi , termasuk Solaris , AIX , HP-UX , GNU / Linux , Mac OS X , dan Windows platform. Ini terdiri dari satu set perintah kompiler, rutinitas library, dan variable lingkungan yang mempengaruhi perilaku run-time. OpenMP dikelola oleh nirlaba teknologi konsorsium OpenMP Arsitektur Review Board (ARB atau OpenMP), bersama-sama didefinisikan oleh sekelompok perangkat keras komputer utama dan vendor perangkat lunak, termasuk AMD , IBM , Intel , Cray , HP , Fujitsu , Nvidia , NEC , Microsoft , Texas Instruments , Oracle Corporation , dan banyak lagi.
Nama : Muhamad Fikri
Npm  :  56414929 / 4IA18

Sumber :


















MATERI 6
Pengantar Pemrograman CUDA GPU

Pengantar Pemrograman CUDA GPU
Pada awal perkembangan komputer, CPU masih memegang peranan penting dalam pemrosesan komputasi umum maupun grafis. Namun setelah perkembangan grafis yang semakin meluas, kinerja CPU menjadi menurun karena harus melakukan rendering grafis. Pada awal 1980 dibuat hardware khusus untuk mengolah grafis yang dinamakan Graphical Processing Unit (GPU). Pada mulanya GPU hanya digunakan untuk rendering grafis 2D maupun 3D. Seiring dengan perkembangan grafis yang makin meluas serta kebutuhan untuk rendering yang mendekati waktu proses realtime, kemampuan GPU pun turut meningkat. Akselerasi peningkatan GPU tersebut bahkan lebih cepat daripada peningkatan CPU itu sendiri sehingga pada akhirnya GPU sekarang tidak hanya untuk melakukan rendering saja melainkan bisa untuk proses komputasi secara umum. Berbeda dengan Central Processing Unit (CPU) yang harus siap untuk menjalankan berbagai instruksi program, GPU dirancang untuk melakukan banyak operasi secara paralel. Hal ini dikarenakan GPU dirancang untuk menghitung dan menyajikan pixel-pixel gambar yang akan ditampilkan, dimana tiap pixelnya tidak saling berhubungan. Dengan kemampuan eksekusi paralel secara massif tersebut maka GPU dapat dimanfaatkan dengan CUDA.
Compute Unified Device Architecture atau biasa disebut dengan CUDA merupakan teknologi pemrosesan paralel yang cepat, murah, dan efisien yang dikembangkan oleh produsen kartu grafis Nvidia sejak tahun 2006. CUDA memiliki arsitektur berbasis General Purpose Graphics Processing Unit (GPGPU) yang mempermudah utilitasi GPU untuk memproses aplikasi grafis maupun non-grafis. Arsitektur tersebut memungkinkan programmer maupun pengembang perangkat lunak untuk membuat program yang berjalan pada GPU sehingga kemampuan prosesing GPU dapat dimanfaatkan untuk mengakselerasi komputasi program. Program-program tersebut akan dipecah menjadi banyak eksekusi paralel sehingga prosesnya menjadi lebih cepat. Beberapa program saintifik yang dapat dilakukan untuk memanfaatkan akselerasi ini diantaranya adalah Computational Fluid Dynamics (CFD), Molecular Dynamics, Seismic Simulation, Image Processing dan Video Processing, serta Simulasi Finansial dan Saham. Selain itu, saat ini juga sudah banyak software yang mendukung akselerasi dengan CUDA seperti MATLAB, Blender, Anaconda, dll.




Bahasa yang digunakan untuk pemrograman CUDA adalah bahasa C. Pada pemrograman C biasa, sintaks akan diproses oleh kompiler C, sedangkan sintaks dengan keyword CUDA akan diproses oleh kompiler CUDA (nvcc). Adapun keunggulan yang dimiliki CUDA yaitu:
1.     Antarmuka CUDA application menggunakan standar bahasa C sehingga mudah dipelajari.
2.     Data transfer antara CPU dan GPU sangat cepat sehingga dapat mengurangi latency pengiriman data dari CPU ke GPU ataupun sebaliknya.
3.     Mempunyai shared memory pada setiap multiprosesor dengan kecepatan akses tinggi.
4.     Hemat biaya dan daya listrik.
Nama : Rachmadinna Poetri Priyandini
Npm  :  58414682 / 4IA18

Sumber :









Unknown

Hi there! You just read Parallel Computation. Thank you for stopping by, hope you enjoy & find this article useful+helpful. Cheers! ☺♥

No comments:

Post a Comment

Ada komentar? Silakan tulis dengan sopan ya.. Terimakasih ☺

Powered by Blogger.