KOMPUTASI MESSAGE-PASSING

Pada artikel kita akan membahas tentang KONSEP DASAR Komputasi Message-Passing, ……JUST ENJOY it,,,,

  1. Dasar-Dasar Pemrograman Message-Passing

Cara Pemrograman MultiKomputer Message-Passing,

  1. DESIGN – Merancang Bahasa Pemrograman Paralel secara Khusus.
  2. DEVELOP – Mengembangkan SYNTAX atau Served Word pada Bahasa Pemrograman Sekuensial Tingkat Tingg yang telah ada untuk meng-Compile Message-Passing.
  3. USING – Menggunakan Bahasa Pemrograman Sekuensial Tingkat Tinggi yang telah ada dan Menyediakan sebuah Library mengenai prosedur Eksternal untuk MP.

Occam, adalah satu-satunya contoh Bahasa Pemrograman Paralel MP yang umum. Bahasa ini didesain untuk digunakan dengan Prosesor MP, yang disebut Transputer.

s3-tarch.inlineATW-Intro-Graphic2

800px-Transputer_Grafik_Evaluation_IMSB419_70

HPF (High Performance Fortran), adalah contoh Perluasan Bahasa dalam Pemrograman Paralel yang digunakan untuk Sistem Shared-Memory (Computer Parallel MultiProcessor).

Pada Pembahasan selanjutnya, kita akan focus menggunakan bahasa Pemrograman Tingkat Tinggi, Bahasa C, ditambah dengan pemanggilan Library MP (melakukan MP proses demi proses secara Langsung).

Pertanyaan yang Seharusnya ada di pikiran kita saat ini,

  • Proses mana yang akan dieksekusi ?
  • Kapan harus menyampaikan message (pesan) di tengah Proses yang Konkuren ?
  • Apa yang hendak disampaikan melalui Message (Pesan) yang dikirim ?

Berikut adalah metode yang diperlukan untuk Pemrograman Message-Passing,

  • Metode Pembuatan Proses-proses yang Terpisah untuk dieksekusi oleh computer-komputer yang Berbeda.
  • Metode Pengiriman dan Penerimaan Message.
  1. Pembuatan Proses

Istilah Proses akan digunakan pada Pemrograman Paralel ini. Proses ini akan menjelaskan bagaimana sebuah Program akan dieksekusi.

  • Lebih dari satu Proses dapat dipetakan ke suatu Prosesor tunggal. Akibatnya, hal itu tidak akan menghasilkan Eksekusi Berkecapatan Tinggi karena Prosesor harus membagi waktu antara proses-proses tersebut. Alasan lain menggunakan teknik ini ialah untuk menghilangkan beberapa Latency (Waktu yang diperlukan dalam pengiriman Pesan antara Prossesor) Jaringan.

Dua Metode Pembuatan Proses,

  • Pembuatan Proses Statis (Static Process Creation)

Semua Proses telah ditentukan / diidentifikasi sebelumnya, lalu system akan mengeksekusi beberapa Prosesor dengan jumlah yang TETAP menggunakan Perintah COMMAND-LINE..

  • Pembuatan Proses Dinamis (Dynamic Process Creation)

Proses bisa dibuat sementara system mengeksekusi proses yang lain. Library / System Calls digunakan untuk Membuat Process. Proses dapat dibuat dan dimusnahkan (Create and Destroy….). Jumlah Proses akan berubah-ubah saat eks  ekusi..

Master Process dan Slave Process

Master Process sebagai satu Proses Pengontrol dan Slave Process sebagai Proses (lainnya) yang Dikontrol. Istilah Slave-Master serupa dalam BENTUK, tapi BERBEDA pada Identifikasi Proses (ID).

ID Proses

  • Untuk Memodifikasi aksi Proses, atau
  • Menghitung tujuan Message yang Berbeda.

Model Pemrograman (yang digunakan pada Komputasi MP)

Model MPMD (Multiple-Program Multiple Data)

    • Program yang BERBEDA ditulis untuk Prosesor yang BERBEDA.
    • Minimal dua Program (cukup), sebuah Program Master dan Program Slave.
    • Jika Program > 2, maka Program Slave akan SAMA dalam hal BENTUK, tetapi memiliki ID PROSES yang BERBEDA untuk menyesuaikan EKSEKUSInya.
    • Contoh penggunaan ID Proses ialah digunakan untuk Menentukan TUJUAN dari Message-Message (Pesan) yang telah di GENERATE

MPMD

Model SPMD (Single-Program Multiple Data)

      • Khusus untuk Pembuatan Proses Statis.
      • Program yang BERBEDA disatukan ke dalam SATU PROGRAM (Tunggal).
      • Di dalam Program (Tunggal) tsb, ada Statement Kontrol yang akan MEMILIH Bagian-bagian yang BERBEDA dari TIAP PROSESOR.
      • Setelah Program Source Dibentuk (Dilengkapi Statement Kontrol), kemudian Program tsb akan DISUSUN dalam KODE yang bisa dijalankan sesuai dengan tipe prosesornya.
      • Model ini merupakan Pendekatan yang paling umum dari SISTEM MP, MPI (Message-Passing Interface).

SPMD

Pembuatan Proses Dinamik

      • Dua Program Berbeda dapat Ditulis, Program Master dan Slave. Program-program tsb disusun secara terpisah dan Siap untuk dieksekusi.
      • Salah satu contoh Pemanggilan Library untuk Pembuatan Proses Dinamis, yaitu

Spawn (nama_proses-prosesnya)

      • Statement diatas akan mengawali proses2 lainnya.
      • Proses yang Memanggil dan Dipanggil BERPROSES secara Bersamaan.
      • Proses yang mengalami “SPAWN” hanyalah Ekseskusi Program yang telah disusun sebelumnya.
        1. Rutin-Rutin Message-Passing

        Rutin-rutin MP bekerja sebagai penentu operasi yang dilakukan antara satu proses dengan proses lainnya. Rutin-rutin ini dapat diperoleh dengan pemanggilan Library MP.

        Rutin Dasar Send dan Receive

        Rutin Send  dan Receive ialah rutin yang sering digunakan pada Sistem Komputasi Message-Passing ini. Seperti yang telah dijelaskan sebelumnya, rutin-rutin yang berada di dalam Library MP ini menggunakan Bahasa Pemrograman (Sekuensial) Tingkat Tinggi, yaitu Bahasa C.Send n Receive

        • Rutin Send ( )

        Karena menggunakan Implemtasi Bahasa C, maka nama (istilah) rutin / operasi merupakan istilah yang sering kita temukan dala m kehidupan sehari-hari.

        Bentuk Pemanggilan Library untuk Rutin Send ( ), ialah

        Send (parameter_list)

        Rutin Send ( ) terletak dalam Proses Sumber. Rutin ini akan mengirimkan Message dari Proses Sumber ke proses Tujuan. Parameter yang digunakan dapat terdiri dari parameter yang sederhana hingga parameter-parameter yang kompleks.

        Berikut parameter-parameter sederhana tersebut,

        • ID tujuan dan Message di Rutin Send ( )

        send (&x , destination_id);

        • Rutin Receive ( )

        Bentuk Pemanggilan Library untuk rutin Receive ( ), ialah

        Receive (parameter_list);

        Rutin Receive ( ) terletak dalam Proses Tujuan. Rutin ini akan Menerima Message dari Proses Sumber.

        Berikut Parameter-parameter sederhana tersebur,

        • ID Sumber dan Tempat menyimpan Message di Rutin Receive ( ).

        receive (&y, source_id)

        Beberapa Ketentuan untuk Rutin-rutin Send dan Receive,

        1. Variable x dan y terlebih dahulu DIDEKLARASIKAN.
        2. Tipe data x dan y harus SAMA.
        3. Untuk data yang lebih kompleks (memiliki lebih dari satu elemen data), kita dapat menggunakan Formasi Message tertentu (akan dibahas pada bagian Penggunaan Komputer Cluster).
    • Synchronous Message-PassingSynchronous, atau dalam bahasa indonesianya berarti menyelaraskan, adalah istilah yang digunakan pada operasi send dan receive di library message passing. Istilah ini berarti bahwa beberapa rutin akan kembali ke tempatnya berasal setelah seluruh operasi pengiriman. Message telah selesai. Istilah kembali disini berarti bahwa Send () akan kembali ke Proses 1 dan Receive akan kembali ke Proses 2, di mana tempat tersebut merupakan tempat dipanggilnya rutin-rutin tersebut.Pada dasarnya, Synchronous akan melakukan dua pekerjaan (antara Send dan Receive), yaitu Mengirim data dan Menyelaraskan Data.

      Rutin Send Synchronous : Rutin ini akan kembali ketika pengiriman Message telah diterima oleh Rutin Receive di proses 2.

      Rutin Receive Synchronous : Rutin ini akan kembali ketika Message telah tiba di Receive dan kemudian disimpan di rutin Receive (variable y ).

      Rendezvous, istilah yang digunakan untuk menjelaskan PERTEMUAN dan PENYELARASAN dua proses di dalam operasi Send/Receive.

      Protokol Three-Way, ialah Protokol yang memiliki 3 jalur antara Send dan Receive.

      Jalur Pertama ialah ketika Proses sumber (proses 1) mengirimkan Message “Request to send” – Permintaan untuk mengirim pesan – ke Proses Tujuan (Proses 2).

      Jalur kedua ialah ketika Proses Tujuan mengirim Sinyal Acknowledgement – Persetujuan request dari Jalur Pertama – ke Proses Sumber.

      Lalu, Jalur Ketiga ialah ketika Proses Sumber Mengirimkan Message yang Sebenarnya.

      Ada beberapa keadaan yang terjadi pada Protokol Three-Away di rutin Send-Receive,

      • Ketika proses 1 mencapai Send ( ) sebelum Proses 2 mencapai Receive ( ), Proses 1 beberapa saat akan ditunda hingga Proses 2 mencapai Receive. Message untuk sementara akan disimpan dalam Proses 1. Saat Receive telah tiba, maka Proses 2 akan membangkitkan sebuah “sinyal” ke proses 1. Akhirnya, Kedua Proses tersebut akan melakukan Transfer Message.

12Untitled

  • Ketika Proses 2 mencapai Receive ( ) sebelum Proses 1 mencapai Send ( ), Pada keadaan ini, proses 2 harus Ditangguhkan hingga Proses 1 mencapai rutin Send. Setelah Send tiba, kedua proses akan melakukan Transfer Message.

133Untitled

    • Message-Passing Blocking dan UnblockingIstilah Blocking dan Unblocking merupakan istilah yang digunakan untuk menjelaskan keadaan rutin-rutin, dalam hal ini rutin yang kita bahas ialah Rutin Send ( ) dan Rutin Receive ( ).  (Locally) Blocking

      Istilah ini digunakan untuk menjelaskan suatu Rutin yang KEMBALI Setelah Aksi Lokalnya selesai, meskipun Pengiriman Message Belum selesai / Belum Tiba di Proses Tujuan.

      Unblocking

      Istilah ini digunakan untuk menjelaskan suatu Rutin yang SEGERA KEMBALI, TIDAK PEDULI apa Messagenya DITERIMA atau TIDAK oleh proses Tujuan.

      Message Buffer

      Digunakan untuk PENYIMPANAN SEMENTARA Message yang Telah Dikirimkan oleh Rutin Send ( ) (Di Proses Sumber), tapi Belum diterima oleh Rutin Receive () ( di Proses Tujuan).

       Message Buffer

      Ada beberapa hal yang HARUS kita ingat mengenai bahasan Send dan Receive ini,

      • Jika kita menginginkan Message dari Proses Sumber, maka Message tsb HARUS sampai pada Rutin Receive di Proses Tujuan.
      • Jika Rutin Receive dicapai sebelum Rutin Send, maka Message Buffer akan KOSONG. Jika Rutin Send telah ber-AKSI di Proses Sumber, maka Message akan Langsung terkirim ke Rutin Receive dan Message Buffer hanya menjadi tempat lewat (tanpa disimpan) message-message.
      • Pada Pembahasan selanjutnya, (Locally) Blocking dan Synchronous akan lebih banyak dibahas.

      Pemilihan Message

      Seperti pada pembahasan sebelumnya, Rutin Send dan Receive memiliki beberapa parameter dalam melakukan transfer. ID Tujuan diberikan sebagai parameter dari Rutin Send, dan ID Sumber diberikan sebagai parameter dari Rutin Receive. Analoginya, ID Sumber bertindak seperti sebuah ALAMAT dalamPENGIRIMAN SURAT POS. Jadi, Proses Sumber hanya akan mengirim Message pada Alamat Tertentu, dan juga Proses Tujuan hanya akan Menerima Message berdasarkan parameter ID Sumber yang Tertulis dalam Parameternya.

      Wild-Card

      Jadi, Bagaimana kita bisa Menerima Pesan dari Proses Sumber  yang Berbeda?

      Jawabannya ialah pada Istilah WILD CARD pada ID Sumber. WILD CARD pada ID Sumber = -1. Jadi, jika kita menginginkan Sebuah Rutin Receive ( ) menerima Semua Message dari Proses Sumber yang Berbeda, maka kita memberikan nilai Parameter di ID Sumber dengan nilai -1.

      Contoh,

      Send(&x, -1);

      X (berbentuk pointer dari suatu tipe data yang tela h kita deklarasikan sebelumnya.

      -1 = Wild Card.

      Send( )  = Rutin untuk mengirmkan Message ke Proses Tujuan.

      Tag Message

      Agar kita bisa memilih Message yang Dikirim, maka kita dapat memasukkan Tag Message / Message yang dipilih ke Parameter milik Rutin Receive.

      Contoh, penggunaan Tag Message,

      Untuk mengirim message x, dengan tag 5 (urutan pesan yang dipilih) dari proses sumber =1, ke proses tujuan = 2, dan diserahkan ke y,

      Send(&x, 2, 5);  >>> Pada Proses Sumber

      Recv( )               >>> Pada Proses Tujuan

      Hal yang HARUS diketahui tentang pembahsan ini,

      • Tag Message dimuat dalam Message.
      • Tag Message dapat digantikan dengan Wild Card sehingga recv( ) dapat sesuai dengan segala Rutin send ( ) yang berasal dari Proses Sumber.
      • Programmer harus menyimpan track dari nomor tag message yang digunakan oleh message yang digunakan dalam program, dan program lainnya yang dsertakan.

Broadcast, Gather, dan Scatter

  • Broadcast

Broadcast (dalam istilah Parallel Programming) memiliki arti,

  • Pengiriman Message yang SAMA ke beberapa tujuan atau Grup tertentu.
  • Pengiriman Message yang SAMA ke beberapa Proses yang Berhubungan dengan suatu Masalah.

Bcast

Tahap-tahap Broadcast,

  • Identifikasi – Proses-proses yang terlibat dalam Broadcast terlebih dahulu diidentifikasi.
  • Group – Dibuat suatu Group Proses dengan nama tertentu.
  • Parameter – Memasukkan nama Group Proses tersebut ke Parameter Broadcast.
  • Misalnya, Proses 0 diidentifikasi sebagai Proses Root dalam Parameter Broadcast. Proses root adalah Proses APA SAJA di dalam Grup proses.
  • Berdasarkan gambar (contoh), Proses Root menyimpan data dalam Parameter buf untuk kemudian di Broadcast.
  • Aksi Broadcast Tidak akan terjadi hingga semua proses mengeksekusi rutin bcast( ). Hal itu berarti akan ada SINKRONISASI pada rutin Broadcast.

Hal penting tentang Rutin Broadcast,

  • Implementasi dari rutin Broadcast yang Efisien sangat penting dalam menyebarkan penggunaan Broadcast pada Program secara meluas.
  • Gather

Gather, adalah kebalikan dari Scatter. Rutin ini akan mengumpulkan nilai-nilai individu dari grup proses ke proses root (berdasarkan contoh dibawah, Proses 0). Gather biasanya dieksekusi setelah proses telah menyelesaikan beberapa komputasi.

Kenapa Gather merupakan kebalikan dari Scatter?

Karena data dari proses ke-i akan dikirim ke Proses Root (Proses 0) di lokasi array ke-i. Berdasarkan contoh di bawah, proses root juga mengumpulkan datanya ke array.

gather

  • Scatter

Scatter, istilah yang menjelaskan tentang pengiriman suatu elemen array dari suatu data (pada root) ke proses-proses yang terpisah. Isi dari lokasi ke-I dari array, dikirim ke proses ke-i.

Scatter

Tahap-tahap eksekusi Scatter,

  • Identifikasi grup proses termasuk proses rootnya.
  • Berdasarkan gambar dibawah, Proses root (proses 0) juga menerima data.
  • Setiap proses (di dalam grup) mengeksekusi rutin Scatter( ) yang sama.

Hal yang perlu diperhatikan dalam Rutin Scatter ( ),

  • Pada model SPMD, proses eksekusinya akan lebih mudah.
  • Operasi Reduce

Operasi reduce merupakan operasi Gather yang dikombinasikan dengan Operasi Aritmatika / Logika. Caranya ialah, mengumpulkan nilai dari proses-proses lalu dijumlahkan oleh root. Operasi ini tidak mesti terjadi di Proses Root, melainkan dapat juga didistribusikan ke proses-proses lainnya. Hal ini bertujuan untuk menerapkan sekumpulan operasi yang umum seefektif mungkin.

2.2 PENGGUNAAN KOMPUTER CLUSTER

  1. Tool-Tool Perangkat Lunak

Berdasarkan apa yang telah kita bahas sebelumnya, Perangkat lunak (Software) bertugas untuk menerapkan Metode Message-Passing ke Komputasi Cluster yang biasanya tergabung dalam jaringan Workstation. Perangkat lunak yang banyak dipakai ialah, PVM (Parallel Virtual Machine).

PVM

  • PVM dibuat di Laboratorium Oak Ridge pada tahun 1980-an
  • Mulai dipakai secara meluas pada tahun 1990-an
  • PVM lebih banyak dipakai dibanding rutin library-library lainnya (mis. Buatan IBM dan vendor lainnya) karena PVM Gratis. (dapat diakses di, http://www.netlib.org/pvm3/)
  • Rutin library dari PVM dapat digunakan oleh user dengan menggunakan program C atau Fortran
  • Saat ini, PVM tersedia juga untuk Platform Windows.
  • PVM menggunakan pembuatan proses dinamis. Prinsipnya : ketika suatu proses sedang dibuat, maka dalam waktu bersamaan akan ada proses lain yang dieksekusi.
  1. MPI (Message-Passing Interface)

Alasan dalam pembuatan MPI ialah keinginan untuk membuat MP yang Portabel dan Kemudahan dalam penggunaannya. MPI merupakan Standar Sistem Message Passing yang merupakan hasil kerja sama dari para akademisi dan Parther Industri. MPI menyediakan Rutin Library untuk MP dan Operasi-operasi yang berkaitan. Perlu diingat bahwa,

MPI = Standar ≠ Implementasi.

MPI melakukan perubahan guna memperbaiki kekurangan teknik pada system MP sebelumnya, yaitu PVM.

Versi MPI

  • Versi 1.0; diadakan pertemuan dan diskusi untuk membuatnya pada tahun 1992. Selesai dibuat pada Mei 1994.
  • Versi 1.2; selesai pada tahun1997. MPI 1.2 telah mendukung pembuatan Proses Dinamis, operasi satu-sisi, dan I/O Paralel.

Be Continued……:)