Screenshot workload 4 CPU (hyperthread) saat running parallel programming, keempat CPU menunjukkan beban kerja yang hampir 100% (baik pada "top" maupun system setting CPU history) |
Instalasi
Cara termudah untuk parallel programming adalah dengan dengan menggunakan OS berbasis Linux. Saya menggunakan Ubuntu OS dengan library openmpi. Cara menginstallnya adalah sebagai berikut:sudo apt-get install openmpi-binUntuk mengeceknya, silakan ketik di terminal "mpirun" dan enter, Jika ada keterangan dan pesan "Report bugs to http://www.open-mpi.org/community/help/" berarti library openmpi sudah terinstall di Ubuntu.
Program Pertama
Program pertama yang bisa kita tes dengan mpirun adalah sebagai berikut,mpirun -np 12 /bin/hostnameProgram diatas artinya mencetak nama hostname (nama komputer) kita melalui 12 processor (-np 12). Meski jumlah processor kita hanya 4, namun kita bisa memerintahkan pada PC untuk me-run lebih dari jumlah CPU/processor. Sisa process (12-4=8) akan diluar setelah 4 process pertama, namun karena program diatas sangat ringan maka duabelas outputnya pun dapat ditampilkan bebarengan. Jika anda mendapat ouput 12 nama hostname, itu adalah hasil pemrograman parallel pertama anda. Hello world!
Parallell Programming di Bash Shell
Setelah terinstall, selanjutnya adalah mencoba paralallel programming dengan bash script. Buat file berikut dengan nama parallel.sh.#!/bin/bash myid=${OMPI_COMM_WORLD_RANK} touch file$myid
Kemudian jalankan dengan parallel-programming di shell sebagai berikut:
mpirun -np 12 ./parallel.shAnda bisa mengganti jumlah CPU dengan jumlah CPU maksimal, misal 8. Untuk mengetahui jumlah physical core di Ubuntu bisa dicek dengan perintah "cat /proc/cpuinfo", sebaliknya perintah "top" kemudian tekan angka "1" akan memberikan tambahan fake CPU, misal dari 4 physical core menjadi 8 karena hyperthreading. Jika eksekusi program bash di atas berhasil, maka anda akan mendapat ouput sebagai berikut:
file0 file1 file4 file7 file3 file10 file11 file3 file5 file6 file8 file9Urutan nomor file diatas random, tidak urut dan hampir pasti berbeda dengan output yang anda dapat. Jika anda tidak mendapat output seperti diatas, bisa jadi terjadi kesalahan memberikan perintah (mpirun...) atau pada program bash sebelumnya, parallel.sh.
Pemrograman Parallel LJMD
Pemrograman parallel banyak diaplikasikan untuk menyelesaikan simulasi yang kompleks khususnya dalam sains, misalnya pemodelan Lennard-Jones Molecular Dynamics (LJMD). Saya tidak membahas aspek fisika dalam LJMD tersebut, namun bagaimana mengaplikasikan parallel-programming untuk LJMD tersebut. Kode yang akan dirun saya host di akun github saya, repo parallel-wrapper, termasuk kode-kode diatas. Kode tersebut ditulis dalam bahasa C dan Fotran. Dalam repo tersebut terdapat file parallel_ljmd.sh, silahkan di run dengan,mpirun -np 4 ./parallel_ljmd.shJika anda mendapati angka-angka sebagai output diterminal, maka parallel programming untuk LJMD tersebut berhasil dijalankan (run "make" dalam folder 01_baseline jika terdapat error). Simulasi selesai. Anda bisa mengeksplorasinya dengan membandingkan serial programming dengan parallel programming, atau memvariasikan jumlah processor saat mengeksekusi mpirun.
Selamat belajar.