PROSEDUR STANDAR DALAM MENYELESAIKAN PERSOALAN KOMPUTASI

 PROSEDUR STANDAR DALAM MENYELESAIKAN PERSOALAN KOMPUTASI

1. Prosedur Standar dan Kinerja Komputasi

    Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer secara bersamaan. Biasanyadiperlukan 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.Penggunaan komputasi parallel prosessing merupakan pilihan yang cukup handal untuk saat ini untuk pengolahan data yang besar dan banyak, hal ini apabila dibandingkan dengan membeli suatu super komputer yang harganya sangat mahal maka penggunaan komputasi parallel prosessing merupakan pilihan yang sangat tepat untuk pengolahan data tersebut.

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. Pemrosesan paralel (parallel processing) adalah penggunakan lebih dari satu CPU untuk menjalankan sebuah program secara simultan.

Kinerja Parallel komputasi digunakan untuk melakukan perhitungan komputasi dengan menggunakan 2 atau lebih CPU/Processor dalam suatu komputer yang sama atau komputer yang berbeda dimana dalam hal ini setiap instruksi dibagi kedalam beberapa instruksi kemudian dikirim ke processor yang terlibat komputasi dan dilakukan secara bersamaan. Untuk proses pembagian proses komputasi tersebutdilakukan oleh suatu software yang betugas untuk mengatur komputasi.

Komputasi paralel membutuhkan:
  1. algoritma
  2. bahasa pemrograman
  3. compiler
Sebagai besar komputer hanya mempunyai satu CPU, namun ada yang mempunyai lebih darisatu. Bahkan juga ada komputer dengan ribuan CPU. Komputer dengan satu CPU dapatmelakukan parallel processing dengan menghubungkannya dengan komputer lain pada jaringan. Namun, parallel processing ini memerlukan software canggih yang disebut distributed processing software.Parallel processing berbeda dengan multitasking, yaitu satu CPU mengeksekusi beberapa program sekaligus. Parallel processing disebut juga parallel computing.
Contoh struktur pengiriman permintaan dan jawaban dari parallel processing
Aristektur Komputer Parallel
Taksonomi Flynndan model pemrosesan parallel
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 jugadimungkinkan 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 beradadalam kendali sebuah unit pengendali. Skema arsitektur global komputer SISD dapat dilihat padagambar .1 (a).
2. Komputer SIMD (Single Instruction stream-Multiple Data stream)
Pada komputer SIMD terdapat lebih dari satu elemen pemrosesan yang dikendalikan oleh sebuahunit pengendali yang sama. Seluruh elemen pemrosesan menerima dan menjalankan instruksiyang sama yang dikirimkan unit pengendali, namun melakukan operasi terhadap himpunan datayang berbeda yang berasal dari aliran data yang berbeda pula. Skema arsitektur global komputer SIMD dapat dilihat pada gambar .1 (b).
 3. Komputer MISD (Multiple Instruction stream-Single Data stream)

Komputer jenis ini memiliki   n   unit  pemroses yang masing-masing menerima danmengoperasikan 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. Skema arsitektur global komputer MISD dapat dilihat padagambar .1 (c).
4. Komputer MIMD (Multiple Instruction stream-Multiple Data stream)
Pada sistem komputer MIMD murni terdapat interaksi di antara  n   pemroses. Hal ini disebabkanseluruh 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 dandisebut loosely coupled  jika tingkat interaksi antara pemroses rendah.
Paralel prosessing komputasi adalah proses atau pekerjaan komputasi di komputer denganmemakai suatu bahasa pemrograman yang dijalankan secara paralel pada saat bersamaan. Secara umum komputasi paralel diperlukan untuk meningkatkan kecepatan komputasi biladibandingkan dengan pemakaian komputasi pada komputer tunggal.
Berikut ini adalah gambar perbedaan antara komputasi tunggal dengan parallel komputasi :
a)Komputasi Tunggal / serial
b)Komputasi Paralel

2. Paralel Computing

    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 (fisika komputasi), kimia (kimia komputasi) dll.

Mesin paralelSunting

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 paralel !

Salah satu middleware orisinal yang dikembangkan di Indonesia adalah openPC[1] yang digawangi oleh GFTK LIPI dan telah diimplementasikan dengan di LIPI Public Cluster.

GRID[2]Sunting

GRID merupakan pengembangan teknologi mesin paralel dengan memanfaatkan jaringan pita lebar di era dijital. Dengan adanya jaringan pita lebar, paralelisasi tidak hanya dilakukan antar komputer dalam satu jaringan, tetapi juga antar mesin paralel yang terpisah secara geografis.

Pemrograman ParalelSunting

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 paralelCPU. 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 (distributed computing).

MotivasiSunting

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.

Peningkatan KecepatanSunting

Peningkatan kecepatan dapat diformulasikan dalam persamaan berikut ini

{\displaystyle S={\frac {T_{1}}{T_{j}}}}

Dimana {\displaystyle T_{1}} adalah waktu yang dibutuhkan untuk menyelesaikan pekerjaan (program komputer) bila dijalankan dalam satu komputer. Dan {\displaystyle T_{j}} adalah waktu yang dibutuhkan jika pekerjaan dikerjakan bersamaan oleh beberapa komputer.

Ada limitasi dalam usaha membuat suatu program komputer berjalan lebih efisien melalui peningkatan kecepatan, hukum yang menetapkan batasan ini dikenal sebagai Hukum Amdahl. Ide dari hukum amdahl ini adalah bahwa anda hanya akan bisa meningkatkan efisiensi program komputer anda, sebatas pada bagian tertentu dari program tersebut yang dapat di paralelkan. Sementara bagian yang memang harus dilaksanakan secara berurutan, akan menjadi penentu performa akhir.

Kembali ke analogi memasak tadi, bila anda harus menggunakan sarung tangan sebelum menyalakan kompor ataupun memotong bawang, maka waktu yang anda butuhkan untuk memakai sarung tangan ini adalah waktu serial, yang tidak dapat dihindari. Sementara waktu untuk memasak dan memotong bawang tadi adalah bagian yang bisa diparalelkan.

Hukum AmdahlSunting

Telah dijelaskan bahwa dari {\displaystyle T_{1}} (waktu yg dibutuhkan menjalankan pekerjaan dalam satu komputer) tadi, ada sebagian yg tidak bisa diparalelkan. Untuk menyatakan ini kita gunakan notasi {\displaystyle \alpha } dimana {\displaystyle 0\leq \alpha \leq 1} menunjukkan berapa bagian dari {\displaystyle T_{1}} yang tidak bisa dijadikan paralel (atau bagian serial dari program ini).

Maka kita ketahui {\displaystyle \alpha *T_{1}} adalah waktu yg tidak akan terpengaruh oleh bertambahnya komputer yg digunakan (a).

Sisanya {\displaystyle (1-\alpha )*T_{1}} adalah waktu yang akan berkurang menjadi {\displaystyle {\frac {(1-\alpha )*T_{1}}{N}}} bila kita menggunakan N komputer tambahan {b) .

Sehingga waktu total yang dibutuhkan untuk menjalankan pekerjaan dalam N komputer adalah (a) + (b) alias:

{\displaystyle T_{N}=\alpha *T_{1}+{\frac {(1-\alpha )*T_{1}}{N}}}

Peningkatan kecepatan yang kita peroleh dari persamaan ini adalah:

{\displaystyle S_{N}={\frac {T_{1}}{\alpha *T_{1}+{\frac {(1-\alpha )*T_{1}}{N}}}}}

Mungkin anda akan mendapati persamaan speed up yang terlihat berbeda tetapi pada dasarnya sama. Persamaan dibawah, bisa didapat dari persamaan di atas, dengan mengeliminasi komponen {\displaystyle T_{1}} (pada bagian atas dan bawah persamaan), lalu mengatur N dan {\displaystyle \alpha }

{\displaystyle S_{N}={\frac {N}{1+\alpha (N-1)}}}

Bila anda cermati persamaan di atas, bisa dilihat bahwa jika kita menggunakan komputer yang amat banyak ({\displaystyle N\rightarrow \infty }) komponen (b) akan dapat diabaikan, menyisakan persamaan:

{\displaystyle S_{N}={\frac {1}{\alpha }}}

Inilah batas maksimum peningkatan kecepatan yang bisa dicapai menurut hukum Amdahl yaitu perbandingan terbalik dari seberapa banyak bagian serial dari suatu pekerjaan.

Dalam sistem terdistribusi dimana anda berusaha menggunakan lebih banyak prosesor untuk menyelesaikan masalah, akan ada imbal balik. Menggunakan komputer tambahan dari lokasi yang berbeda memberikan anda sumber komputasi baru, tetapi juga melibatkan biaya komunikasi tambahan, saat anda harus memberikan pekerjaan tersebut pada komputer yg terpisah.

Bahasa populer dalam Pemrograman ParalelSunting

  • MPI Message Passing Interface, bahasa pemrograman dengan basis pertukaran pesan.
  • PVM Parallel Virtual machine.

Istilah-istilah dalam pemrograman paralelSunting

  • Embarasingly Parallel adalah pemrograman paralel yang digunakan pada masalah-masalah yang bisa diparalelkan tanpa membutuhkan komunikasi satu sama lain. Sebenarnya pemrograman ini bisa dibilang sebagai pemrograman paralel yang ideal, karena tanpa biaya komunikasi, lebih banyak peningkatan kecepatan yang bisa dicapai.
  • Taksonomi dari model pemrosesan paralel dibuat berdasarkan alur instruksi dan alur data yang digunakan:
    • SISD Single Instruction Single Datapath, ini prosesor tunggal, yang bukan paralel.
    • SIMD Single Instruction Multiple Datapath, alur instruksi yang sama dijalankan terhadap banyak alur data yang berbeda. Alur instruksi di sini kalau tidak salah maksudnya ya program komputer itu. trus datapath itu paling ya inputnya, jadi inputnya lain-lain tetapi program yang digunakan sama.
    • MIMD Multiple Instruction Multiple Datapath, alur instruksinya banyak, alur datanya juga banyak, tetapi masing-masing bisa berinteraksi.
    • MISD Multiple Instruction Single Datapath, alur instruksinya banyak tetapi beroperasi pada data yang sama.

Perkembangan di IndonesiaSunting

Di Indonesia, usaha untuk membangun infrastruktur mesin paralel sudah dimulai sejak era 90-an, meski belum pada tahap serius dan permanen. Namun untuk pemrograman paralel sudah sejak awal menjadi satu mata-kuliah wajib di banyak perguruan tinggi terkait. Baru pada tahun 2005 dimulai pembuatan infrastruktur mesin paralel permanen, misalnya yang dikembangkan oleh Grup Fisika Teoritik dan Komputasi di P2 Fisika LIPI. Didorong oleh perkembangan pemrograman paralel yang lambat, terutama terkait dengan sumber daya manusia (SDM) yang menguasainya, mesin paralel LIPI ini kemudian dibuka untuk publik secara cuma-cuma dalam bentuk LIPI Public Cluster (LPC)[3]. Saat ini LPC telah dikembangkan lebih jauh menjadi gerbang komputasi GRID di Indonesia dengan kerjasama global menjadi IndoGRID.

Pada tahun berikutnya, dengan dukungan dana dari proyek Inherent DiktiFasilkom UI juga membangun mesin paralel[4]. Sementara itu pada tahun 2009, ITB membuat kluster hibrid CPU dan GPU yang pertama di Indonesia dengan kemampuan hingga 60 inti CPU dan 1920 inti GPU.

3. Protocol Komputasi Network File System

    Sistem berkas jaringan (Inggrisnetwork file system disingkat NFS) adalah sebuah kumpulan protokol yang digunakan untuk mengakses beberapa sistem berkas melalui jaringan. Spesifikasi NFS didefinisikan dalam RFC 1094, dan saat ini telah mencapai versi 3 yang didefinisikan dalam RFC 1813.

NFS merupakan sebuah sistem berkas terdistribusi yang dikembangkan oleh Sun Microsystems Inc. pada awal dekade 1980-an yang menjadi standar de facto dalam urusan sistem berkas terdistribusi. NFS didesain sedemikian rupa untuk mengizinkan pengeksporan sistem berkas terhadap jaringan yang heterogen (yang terdiri dari sistem-sistem operasi yang berbeda dan platform yang juga berbeda). Teknologi NFS ini dilisensikan kepada lebih dari 200 vendor komputer dan jaringan, dan telah dibuat implementasinya pada banyak platform dan sistem operasi, termasuk di antaranya adalah UNIXGNU/LinuxMicrosoft Windows, dan lingkungan mainframe.

NFS dapat mengizinkan klien-klien untuk menemukan dan mengakses berkas yang disimpan di dalam server jaringan jarak jauh. Memang, desain awal spesifikasi NFS dikhususkan untuk penggunaan dalam jaringan lokal (LAN) dan tidak dioptimalkan untuk penggunaan dalam WAN. Tapi, versi NFS 3 yang digunakan saat ini dapat digunakan dalam jaringan WAN, sebaik ketika ia bekerja di dalam LAN. Fitur-fitur yang dimiliki oleh NFS versi 3 adalah sebagai berikut:

  • Mendukung ukuran berkas hingga satuan Terabyte, dengan menggunakan indikator ukuran berkas hingga 64-bit (pada versi sebelumnya, hanya mengimplementasikan indikator ukuran berkas hingga 32-bit saja, sehingga total ukuran berkas maksimum adalah 4 gigabyte).
  • Ukuran maksimum paket data yang didukung adalah 64 Kilobyte (pada versi sebelumnya, hanya mencapai 8 KB untuk tiap paketnya, sehingga lebih lama dalam melakukan transfer data dari satu host ke host lainnya yang menjalankan NFS).
  • Dapat memilih apakah hendak menggunakan protokol lapisan transport UDP atau TCP (pada versi sebelumnya, NFS hanya menggunakan protokol lapisan transport UDP sehingga kurang bagus diimplementasikan dalam jaringan WAN)
  • Server dapat melakukan penge-cache-an terhadap request yang dilakukan oleh klien.

NFS menggunakan arsitektur protokol jaringan berlapis (layered protocol) yang dibuat berdasarkan model referensi jaringan OSI, seperti yang ditunjukkan dalam tabel berikut.

Lapisan OSIProtokol NFS
Physical LayerApa saja (yang digunakan secara umum adalah Ethernet)
Data-link LayerApa saja (yang digunakan secara umum adalah Ethernet)
Network LayerInternet Protocol (IP)
Transport LayerUser Datagram Protocol (UDP) atau Transmission Control Protocol (TCP)
Session LayerRemote Procedure Call (RPC) Protocol
Presentation LayerExternal Data Representation (XDR) Protocol
Application LayerNetwork File System (NFS) dan Network Information System (NIS)

NFS diimplementasikan sebagai sebuah sistem client/server yang menggunakan perangkat lunak NFS server dan NFS client yang berjalan di atas workstation. NFS Server akan menggunakan protokol NFS untuk mengekspor sistem berkas yang dimilikinya kepada klien NFS agar dapat dibaca ole klien, seolah-olah sistem berkas remote tersebut merupakan sistem berkas yang dimiliki oleh klien secara lokal.

NFS umumnya menggunakan protokol Remote Procedure Call (RPC) yang berjalan di atas UDP dan membuka port UDP dengan port number 2049 untuk komunikasi antara klien dan server di dalam jaringan. Klien NFS selanjutnya akan mengimpor sistem berkas remote dari server NFS, sementara server NFS mengekspor sistem berkas lokal kepada klien. Mesin-mesin yang menjalankan perangkat lunak NFS server dapat saling berhubungan dengan perangkat lunak NFS server untuk membaca, menulis, memodifikasi, menghapus berkas dan direktori yang berada di dalam server dengan menggunakan request RPC seperti halnya READ, WRITE, CREATE, dan MKDIR. Berkas dan direktori remote akan seolah-olah terlihat sebagai berkas lokal bagi pengguna. Sebelum dapat mengakses berkas remote di dalam struktur direktori dalam sistem berkas UNIX dari dalam NFS Server, administrator harus melakukan mounting terlebih dahulu bagian dari sistem berkas UNIX lokal yang akan dibuat dapat diakses oleh klien dan menetapkan izin akses terhadap berkas atau direktori.

NFS umumnya digunakan dalam platform-platform UNIX, sementara Windows menggunakan protokol berbagi-berkas yang disebut sebagai Server Message Block (SMB), sehingga dua sistem tersebut aslinya tidak kompatibel satu sama lainnya. Agar dapat saling mendukung, dalam sistem UNIX harus diinstalasikan klien protokol SMB semacam SAMBA atau menginstalasikan klien protokol NFS dalam sistem operasi UNIX, yang dapat diperoleh dari beberapa vendor. Microsoft menyediakan Windows Services for Unix (SFU) yang dapat digunakan dalam sistem operasi Windows 2000 Server, dan Windows Server 2003 sebagai perangkat lunak klien protokol NFS, sehingga menjadikan sistem Windows dapat berinteroperasi dengan sistem NFS dalam sistem operasi UNIX. Selain SFU, beberapa vendor lainnya juga membuat implementasi NFS dalam platform Windows, seperti halnya NetManage dengan ChameleonNFSHummingbird International dengan NFS Maestro, dan masih banyak lainnya.

4. Standar MPI (Message Passing Interface)

     

Pengertian MPI (Message Passing Interface)

MPI (Message Passing Interface) adalah spesifikasi API (Application Programming Interface) yang memungkinkan terjadinya komunikasi antar komputer pada network dalam usaha untuk menyelesaikan suatu tugas. Paradigma Message - Passing dengan implementasi MPI memberikan suatu pendekatan yang unik dalam membangun suatu software dalam domain fungsi tertentu, yang dalam hal ini pada lingkungan sistem terdistribusi, sehingga memberikan kemampuan pada produk software yang dibangun diatas middleware tersebut untuk dapat mengeksploitasi kemampuan jaringan komputer dan komputasi secara paralel.

MPI adalah standar interface dari model message - passing yang didefenisikan oleh sebuah grup yang terdiri dari 60 orang yang berasal dari 40 organisasi baik vendor komersil maupun dari kalangan peneliti akademisi yang berada di Amerika Serikat dan Eropa. 
MPI menjadi standar defacto yang banyak digunakan dalam komunikasi proses pada model dari program paralel pada sistem memori terdistribusi, yang mana banyak diimplementasikan oleh pada super komputer dan computer cluster. Pada spesifikasi MPI-1 tidak memiliki konsep tentang shared memory, kemudian pada spesifikasi selanjutnya MPI-2 sudah mendukung konsep distributed shared memory. Dengan kemampuan tersebut MPI dapat mengeksploitasi arsitektur lingkungan yang sifatnya heterogen atau bersifat arsitektur NUMA (Non-Uniform Memory Access). Dalam grup tersebut mereka mencoba merumuskan dan membuat sebuah "standard by consensus" untuk pustaka message - passing yang dapat digunakan dalam komputasi paralel.

Implementasi MPI merupakan sebuah API yang dapat dipanggil dari beberapa bahasa pemrograman seperti Fortran, C, ataupun C++, dan bersifat portable. Terdapat dua versi standar yang pada saat ini populer digunakan, yaitu versi 1.2 (MPI-1) yang berfokus pada message passing dan memiliki static runtime enviroment, dan MPI-2.1 (MPI-2) yang memasukkan fitur - fitur baru seperti parallel I/O, dynamic process management, remote memory operation dsb.

Tujuan MPI

MPI merupakan sebuah protokol komunikasi yang sifatnya language-independent, portable dalam mensupport berbagai platform, dan memiliki spesifikasi semantic yang mengatur bagaimana perilaku setiap impelementasinya. MPI mendukukung komunikasi baik dengan tipe point-to-point maupun yang bersifat kolektif. Secara umum MPI memliki tujuan sebagai berikut :
  1. MPI akan menjadi sebuah library untuk membangun program aplikasi dan bukan distributed operating system.
  2. MPI akan mendukung thread-safe yang penting dalam symmetric multiprocessor pada lingkungan jaringan komputer yang heterogen.
  3. MPI akan mampu untuk men-deliver high-performance computing.
  4. MPI akan bersifat modular, untuk mengakselerasi development pustaka paralel yang portable.
  5. MPI akan bersifat extensible, sehingga dapat terus dikembangkan dan memenuhi kebutuhan komputasi masa akan datang.
  6. MPI akan mendukung heterogeneos komputasi.
  7. MPI akan memiliki semantic behavior yang telah terspesifikasi dengan jelas, sehingga dapat menghindari beberapa permasalahan kritis seperti race-conditions, dead-lock dsb.

Tipe Komunikasi MPI

a.    Point-to-Point Communication
Pada implementasi program berbasis message-passing, point-to-point communication adalah komunikasi yang paling sederhana dimana akan melibatkan sepasang proses yang saling bekerjasama. Pada API dari MPI, secara sederhana dapat digunakan MPI_Send atau MPI_Recv, dimana akan mengizinkan terjadinya sebuah proses spesifik yang satu dapat mengirimkan data pesan ke sebuah proses spesifik yang lain. Operasi point-to-point communication secara khusus berguna dalam komunikasi yang irregular ataupun yang berpola.

Contoh: sebuah arsitektur data paralel dimana setiap prosessor secara rutin melakukan pertukaran region data dengan sebuah prosessor spesifik lainnya pada setiap langkah kalkulasi, atau pada arsitektur master-salve dimana sang master akan mengirim task data baru ke proses slave pada saat task data sebelummnya telah selesai.

b.    Collective Communication
Berbeda dengan point-to-point communication, collective communication pada MPI API melibatkan komunikasi antara semua proses dalam sebuah group proses (dalam artian keseluruhan pool Proses atau sebuah subset terdefinisi pada program). Fungsi interface yang sederhana dapat berupa MPI_Bcast (broadcast) yang melakukan pengiriman data dari sebuah proses ke semua proses lainnya pada group, dan fungsi MPI_Reduce untuk melakukan kebalikannya.

Tipe komunikasi memberikan dua keuntungan, yaitu pertama, operasi komunikasi tersebut mengizinkan programmer untuk mengekspresikan operasi yang kompleks dengan menggunakan semantik yang sederhana, kedua, implementasi dapat melakukan pengoptimasian operasi melalui cara yang tidak disediakan oleh tipe operasi point-to-point communication.

    

Komentar

Postingan populer dari blog ini

Macam - macam teknik pencurian data yang paling sering dipakai

(4.4 Informatika) Mengolah data dengan pengolah angka untuk menghilangkan error,menyatakan hubungan, atau memudahkan untuk diproses komputer.

Komoditas Satwa Harapan