Hohoho, sekali-kali posting yang berbau ilmu komputer dikit yaw..
Postingan kali ni berhubungan dengan tugas temen-temen yang ikutan kuliah Sistem Paralel (lhoh?? masih kuliah??), yaitu mengeksekusi program yang dieksekusi secara paralel menggunakan yang namanya MPICH2. Itu salah satu tools untuk mengeksekusi program secara paralel hehe.. maksudnya satu program yang sama di-run di lebih dari satu komputer. Kita sebut yang punya tugas misal, SEPTO (bukan nama sebenarnya) dan temannya yang membantu kita sebut ANGGA (bukan nama kuda).
Tugas ini nantinya akan melakukan eksekusi program di dua buah mesin milik si SEPTO dan si ANGGA. Dua-duanya menggunakan Linux sebagai Sistem Operasinya. si SEPTO memake Ubuntu 8.04 Hardy heron, si ANGGA memake Arch Linux versi terbaru cuy. Yang pengen tahu jauh tentang Arch Linux bisa nanya-nanya sama si kuda eh si ANGGA maksud saya. Untuk IP adress SEPTO, 192.168.0.37 dan si ANGGA 192.168.0.10.
Untuk informasi, di MPICH2 ni kamu nanti program-programnya memakai bahasa C, C++, atau fortran untuk bahasa pemrogramanya, nantinya di headernya akan dipanggil library milik MPICH ni. Mangkanya pastikan dulu Sistem Operasi anda mempunyai minimal C dan C++ compiler.
Untuk Ubuntu, jalankan sudo apt-get install build-essential utk mendapatkan gcc dan g++ terbaru. Selanjutnya donlod packages MPICH2 di “http://www.mcs.anl.gov/mpi/mpich2″. Setelah mendapatkan mpich2-1.0.8.tar.gz (versi yang didapat penulis), misal di tempat SEPTO mau diekstrak di direktori home, maka sebelumnya jgn lupa pindahkan file hasil donlotan ke direktori /home kemudian jalankan :
septo@septo-laptopPinjem:/home/septo$ tar xvf mpich2-1.0.8.tar.gz
septo@septo-laptopPinjem:/home/septo$ cd mpich2-1.0.8
septo@septo-laptopPinjem:/home/septo/mpich2-1.0.8$ ./configure –prefix=/folder/folder_yg_ingin_diinstali_&_dalam kuasa user (dlm contoh ini –prefix=/home/septo/mpich2)
septo@septo-laptopPinjem:/home/septo/mpich2-1.0.8$ make
septo@septo-laptopPinjem:/home/septo/mpich2-1.0.8$ make install
Jika bertemu error saat make install maka temukan file .bash_profile , buka dan tambahkan :
export PATH=/direktori_tempat_menginstal/mpich2/bin:$PATH
export LD_LIBRARY_PATH=/direktori_tempat_menginstal/mpich2/lib:$LD_LIBRARY_PATH
kemudian save, baru kemudian ulangi lagi make install-nya
Buka file /etc/environtment, kemudian tambahkan direktori bin dari hasil instalasi MPICH2, kalo di contoh si SEPTO, akan ditambahkan “:/home/mpich2/bin” (tanpa tanda petik ya..)
Copy salah satu contoh source dari folder source mpich2-1.0.8/examples, misal cpi.c ke direktori tempat menginstal mpich2, program cpi.c ni digunakan untuk menghitung nilai phi. Dalam kasus ini, dilakukan :
septo@septo-laptopPinjem:/home/mpich2$ cp /home/mpich2-1.0.8/examples/cpi.c /home/mpich2
Compile source program,
septo@septo-laptopPinjem:/home/mpich2$ mpicc -o cpi cpi.c
Eksekusi file hasil kompilasi
septo@septo-laptopPinjem:/home/mpich2$ mpiexec -n 3 cpi, enter
harusnya keluar pesan:
mpiexec_septo-laptopPinjem: cannot connect to local mpd (/tmp/mpd2.console_septo); possible causes:
1. no mpd is running on this host
2. an mpd is running but was started without a “console” (-n option)
In case 1, you can start an mpd on this host with:
mpd &
and you will be able to run jobs just on this host.
For more details on starting mpds on a set of hosts, see
the MPICH2 Installation Guide.
Maka jalankan :
septo@septo-laptopPinjem:/home/mpich2$ mpd &
Perintah ini akan menjalankan service mpd pada mesin SEPTO
Setelah servis mpd jalan, maka jika diulang:
septo@septo-laptopPinjem:/home/mpich2$ mpiexec -n 3 cpi
Process 0 of 3 is on septo-laptopPinjem
Process 1 of 3 is on septo-laptopPinjem
Process 2 of 3 is on septo-laptopPinjem
pi is approximately 3.1415926544231323, Error is 0.0000000008333392
wall clock time = 0.002674
ini berarti MPICH2 telah terinstal dengan sukses pada komputer anda, dalam kasus ini mesin si SEPTO.
Langkah selanjutnya, percuma kalo MPInya cuma jalan di satu mesin kan, maka akan dikonekkan antara 2 mesin, mesin si SEPTO dan mesin si ANGGA. Jangan lupa untuk menginstall MPICH2 di tempat si ANGGA juga. Caranya sama aja kok kayak di atas.
Pertama, dibuat ssh antara kedua mesin. Pastikan kedua mesin telah menginstall openssh-client dan open-ssh server
kemudian jgn lupa dicoba. dengan mengetikkan ssh namaHost@alamatMesin contoh :
ssh septo@192.168.0.37,
kemudian jika sukses maka anda akan ditanyai password untuk bisa login sebagai septo@192.168.0.37
Agar anda tidak ditanya-tanya tentang password lagi maka, di mesin pertama (ANGGA):
[angga@athena ~]$ ssh-keygen -t rsa, enter
kalo ditanya passphrase, ga usah diisi gapapa, langsung enter aja, kemudian
[angga@athena ~]$ ssh-copy-id -i /home/nama_user/id_rsa.pub septo@192.168.0.37
Ikuti langkahnya, kalo sukses, harusnya, di mesin pertama :
[angga@athena ~]$ ssh septo@192.168.0.37, tekan enter
Maka kamu akan langsung terhubung
Tetapi ternyata cara ini tiada pengaruhnya alias nonsens dan memutar jauh daripada cara yang akan kita pakai selanjutnya
,
Kemudian dicoba melalui cara tanpa ssh,
Mesin pertama :
septo@septo-laptopPinjem:/home/mpich2$ mpd &, enter,
septo@septo-laptopPinjem:/home/mpich2$ mpdtrace -l,
Untuk mengetahui hostname dan port yg digunakan service mpd dalam format hostname_port. Setelah itu diamkan hingga matang, hehehe
Pada mesin kedua, pastikan tiada servis mpd yg berjalan, dgn mengecek melalui sintaks,
[angga@athena ~]$ mpdtrace -l
Jika masih ada ketikkan,
[angga@athena ~]$ mpdallexit
Jika sudah pasti, ketikkan mpd -h hostname -p port, hostname dan port disini adalah milik mesin pertama :
[angga@athena ~]$ mpd -h 192.168.0.37 -p 47581
Seharusnya, akan keluar pesan error, hehehe
Hal ini terjadi hostname yang diminta dalam sintaks ini mempunyai arti hostname yang sebenarnya, bukan hanya alamat IP address mesin. Kita harus mengeset nama mesin (hostname) selain kita mengeset host address, kesemuanya bisa kamu set di /etc/hosts, bisa pake vim, gvim, gedit, kate
di SEPTO :
septo@septo-laptopPinjem:/home/mpich2$ vim /etc/hosts
################################################################################
192.168.0.37 septo-laptopPinjem (baris tambahan, nama mesin SEPTO)
192.168.0.10 athena (baris tambahan, nama mesin ANGGA)
127.0.0.1 localhost
127.0.1.1 septo-laptopPinjem
################################################################################
Kemudian ada lagi yang di set, di mpd.hosts, kalo tiada tahu ada dimana, bsa gunakan perintah locate mpd.hosts
#######################################
athena (nama mesin ANGGA)
septo-laptopPinjem (nama mesin SEPTO)
#######################################
Lakukan hal yang sama di mesin kedua, ANGGA, intinya kedua mesin harus saling mendaftarkan nama diri.
Untuk mengecek sudah berhasilkah kedua mesin saling mengenali, ulangi
[angga@athena ~]$ mpd -h septo-laptopPinjem -p 47581, tekan enter
Akan keluar pesan keberhasilan, taraaaaa….
Kita cek juga dari pihak mesin SEPTO,
septo@septo-laptopPinjem:/home/mpich2$ mpiexec -n 5 hostname, enter
septo-laptopPinjem
septo-laptopPinjem
athena
athena
septo-laptopPinjem
belon puas juga?
septo@septo-laptopPinjem:/home/mpich2$ mpiexec -n 5 date, enter
Thu Nov 20 22:15:06 WIT 2008
Thu Nov 20 22:09:36 WIT 2008
Thu Nov 20 22:09:36 WIT 2008
Thu Nov 20 22:15:06 WIT 2008
Thu Nov 20 22:15:06 WIT 2008
Sekarang untuk program yang benerannya, program cpi yang tadi, kopikan hasil compile ke direktori /bin, bisa memakai cp atau mv :
[angga@athena ~]$ mv mpich2/bin/cpi /bin
septo@septo-laptopPinjem:/home/mpich2$ mv /home/mpich2/cpi /bin
kemudian kembali ke mpiexec, ketikkan di mesin SEPTO :
septo@septo-laptopPinjem:~$ mpiexec -n 6 cpi, tekan enter
Process 0 of 6 is on septo-laptopPinjem
Process 2 of 6 is on septo-laptopPinjem
Process 1 of 6 is on athena
Process 3 of 6 is on athena
Process 5 of 6 is on athena
Process 4 of 6 is on septo-laptopPinjem
pi is approximately 3.1415926544231239, Error is 0.0000000008333307
wall clock time = 0.289969
Yooooosssshhhhh…. telah terlihat bahwa program cpi ini telah berhasil dengan sukses dieksekusi di dua mesin, SEPTO dan ANGGA. Hohohohoho… Puasss deh rasanya… Huffhh… Tak lupa Septo dan Angga mengucap syukur Alhamdulillah kepada Allah SWT dan pihak-pihak laen yang telah membantu, utamanya kepada simbah Google dan yang tidak dapat disebut namanya di sini.
Kalo teman-teman sekalian tertarik, bisa mencoba mengikuti langkah-langkah di atas, SEPTO dan ANGGA siap membantu teman-teman sekaliyan kalo ada kesulitan. Moga-moga aja postingan ni lumayan bermutu
dan bisa membantu temen-temen yang kebetulan menghadapi hal serupa. Amiinn…
Yang Kurang Kerjaan