Showing posts with label Parallel_programming. Show all posts
Showing posts with label Parallel_programming. Show all posts

Friday, October 4, 2013

Seri Pemerograman Paralel : MPI (Message Passing Interface)

MPI (Message Passing Interface) adalah pustaka antarmuka (library interfce) yang telah distandarisasi untuk penggunaan pemerograman parallel. MPI telah dikembangkan dalam dua periode oleh sebuah forum terbuka dari vendor komputer paralel, meliputi pembuatan pustaka (library) dan pengembangan aplikasi. Periode pertama pada rentang tahun 1993-1994 dan menghasilkan release pertama dari standarisasi MPI, disebut MPI-1. Periode kedua yang menghasilkan MPI-2 telah direlese pada tahun 1997 dan dapat dilihat pada alamat website http://www.mpi-forum.org.

MPI cukup kompleks jika melihat dari sisi jumlah dari pustaka yang dimiliki yaitu lebih dari 150 buah dan masih akan terus bertambah. Pada sisi yang lain, MPI cukup sederhana karena hanya terdapat 6 buah fungsi dasar yaitu : MPI Init, MPI Finalize, MPI Comm rank, MPI Comm size, MPI Sends dan MPI Recv

Identitas Proses

Pada pemerograman paralell dengan multiCPU/computer, sebuah program ditulis untuk dijalankan di atas semua processor yang ada. Proses pertama yang harus dilakukan adalah mencari pada runtime di rank berapakah proses (pada CPU) tsb bekerja dan berapakah jumlah proses (cpu) yang sedang berjalan, kemudian melakukan penyesuaian dengan proses yang lain. pustaka yang digunakan adalah :

MPI_Comm_size(MPI_Comm comm, int *size)
dan
MPI_Comm_rank(MPI_Comm comm, int *rank)

berikut contoh program yang dijalankan

#include <stdio.h>
#include "mpi.h"

main(int argc, char** argv) 
{
   int i, myrank, nprocs;
   double a = 0, b = 1.1, c = 0.90;
   MPI_Init(&argc, &argv);

   MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
   MPI_Comm_size(MPI_COMM_WORLD, &nprocs);

   printf("Hello world! This is process %d out of %d\n",myrank, nprocs);
     
     if (myrank == 0) 
       printf("Some processes are more equal than others.");

MPI_Finalize();
}

Compile dan Jalankan

cinnamon # mpicc hellompi2.c -o hellompi2





Referensi
MIT Lecture : Parallel Programming
Using MPI2 ,William grop, MIT Press

Wednesday, October 2, 2013

Seri Pemerograman Parallel :Parallel Programming dengan BCCD

BCCD (Bootable Cluster CD) adalah berupa live CD yang dibuat untuk tujuan pembelajaran komputasi parallel baik konsep, paradigma dan aplikasi. Salah satu kendala bagi siswa yang ingin mempelajari komputasi parallel adalah terbatasnya sumber daya komputasi yang bisa digunakan. BCCD adalah live CD sehingga dalam penggunaannya tidak perlu menginstal apapun pada PC/komputer yang akan digunakan, pada live cd sudah tersedia beberapa framework dan tools untuk menjalankan komputasi parallel, mislanya :
  • MPICH2
  • LAMP MPI
  • OPEN MPI
  • GCC
  • DHCP Server
  • dll
Cara Penggunaan
  1. Burning ISO ke CD. ISO
  2. Booting dari CD/DVD room
  3. Ikuti intruksi pada screen
  4. Jika menggunakan beberapa komputer maka komputer yang kedua tidak boleh dihidupkan (boot dari CD) secara bersamaam dengan komputer pertama (node pertama)
  5. Program bis ditulis diatas BCCD untuk selanjutnya di compile dan dieksekusi secara parallel
  6. BCCD bisa membaca media storage seperti USB Flashdisk /HD External, jadi program dapat dibuat terlebih dahulu kemudian disimpan pada storage dan dicompile dan dieksekusi secara parallel diatas BCCD

Wednesday, September 18, 2013

Seri Pemerograman Parallel dengan C dan MPICH2...(1)

Kebutuhan akan komputasi performa tinggi dan murah mendorong berkembangnya teknik pemerograman parallel, dimana sebuah pekerjaan komputasi yang besar dapat dikerjakan secara bersama-sama oleh beberapa komputer secara bersama-sama. Parallel programming dapat dilakukan pada jaringan lokal (Cluster Computing) atau melalui jalur internet pada wilayah geografis yang luas (Grid Computing)

beberapa framework yang populer digunakan pada parallel programming diantaranya :
  • Open MPI
  • Lamp MPI
  • MPICH2
  • PVC
Pada tulisan ini penulis menggunakan MPICH2 dengan sistem operasi Ubuntu 12.04 LTS.

Instalasi MPICH2
apt-get install mpich2


Perogram 1 : Hello Word

Tulis perogram berikut untuk melihat apakah MPI bekerja dengan baik untuk membaca jumlah processor pada PC, Perogram ditulis dalam bahasa C dengan penambahan Library MPI.

simpan dengan nama hello_mpi.c



#include<mpi.h>
#include<stdio.h>

int main(int argc, char* argv[]) {
    int numberOfProcessors;
    int rank;
    int namelen;
    char processor_name[MPI_MAX_PROCESSOR_NAME];

    MPI_Init(&argc,&argv);
    printf("Hello MPI\r\n");
    MPI_Comm_size(MPI_COMM_WORLD,&numberOfProcessors);
    printf("Jumlah Processor = %d\r\n", numberOfProcessors);

    MPI_Get_processor_name(processor_name, &namelen);
    printf("Nama Processor = %s\r\n",processor_name);

    MPI_Comm_rank (MPI_COMM_WORLD,&rank);
    printf("Proses pada %d\r\n",rank);

    MPI_Finalize();
    return 0;

}


Compile dan Running
cinnamon # mpicc hello_mpi.c -o hello_mpi -Wall
-Wall dimaksudkan untuk menampilkan semua peringatan dari kompilator






Semoga bermafaat