catatan ringan

berisi tentang catatan, cerita, dan tips-tips ringan

Memulai openMP

1. Pendahuluan

Sebelum mempelajari openMP (open Multi Processing) Idealnya harus sudah mengenal terlebih dahulu MPI (Message-Passing Interface) namun saat ini saya memang sedang ingin menulis openMP terlebih dahulu.

apa itu openMP?  openMP adalah sebuah API (Application Program Interface) yang digunakan secara eksplisit sehingga menjadikannya multi-thread, shared-memory parallelism. openMP sendiri sebenarnya adalah API yang digunakan untuk FORTRAN, C, dan C++ programming.

Tapi openMP juga bukan:

  • tool yang mampu melakukan sistem paralel memori terdistribusi dengan sendirinya
  • sesuatu yang harus dilakukan secara keseluruhan oleh semua vendor
  • untuk menjamin  membuat yang paling efisien dalam penggunaan shared-memory
  • untuk memeriksa dependensi data, adanya konflik data, kondisi balapan, atau deadlock
  • untuk memeriksa urutan kode yang menyebabkan program harus diklasifikasi sebagai sesuatu yang tidak sesuai
  • tool yang dapat meng-cover compiler untuk men-generate proses paralel secara otomatis, dan mengarahkan kepada compiler untuk membantu proses paralelisasi tersebut
  • tool yang dirancang untuk menjamin bahwa input atau output pada file yang sama akan terjadi secara sinkron ketika dieksekusi secara paralel, namun programmer lah yang harus mampu melakukan untuk melakukan sinkronisasi input dan output tersebut.

2. Persiapan Memulai openMP

untuk memulai openMP ada beberapa aplikasi yang harus diinstall, di antaranya eclips, MPICH2, dan minGW (Minimalist GNU for Windows), tentu bisa saja menggunakan aplikasi yang lainnya namun saya menggunakan aplikasi yang telah disebutkan di atas.  openMP yang akan dibahas di sini adalah openMP dengan bahasa C.

  1. install eclips, untuk menginstall eclips Anda dapat mendownloadnya di sini http://www.eclipse.org/downloads/, pilih eclips untuk Eclipse IDE for Parallel Application Developers dan sesuaikan dengan OS yang kita gunakan, misalnya kita menggunakan OS 32 bit maka gunakan eclips yang 32 bit juga
  2. install MPICH2, untuk menginstall MPICH2 Anda dapat mendownloadnya di sini http://www.mcs.anl.gov/research/projects/mpich2/downloads/index.php?s=downloads
  3. install minGW, untuk menginstall minGW Anda dapat mendownloadnya di sini http://sourceforge.net/projects/mingw/files

peran dari masing-masing aplikasi di atas adalah eclips sebagai IDE atau framework Anda, sehingga memudahkan Anda dalam melakukan pekerjaan Anda, MPICH2 adalah aplikasi yang berguna untuk menjalankan program-program MPI Anda, dan minGW adalah compiler gcc untuk windows Anda yang berperan sebagai compiler dari program bahasa C Anda.

untuk pembahasan instalasi secara detil dapat Anda baca pada artikel berikutnya mengenai MPI, namun saat ini memang belum terbit🙂, asumsi instalasi berjalan lancar karena fokus kita saat ini pada openMP.

3. Memulai openMP

Memulai openMP atau cara menguji apakah openMP yang sudah kita siapkan telah berjalan dengan baik atau tidak dapat dilihat langkah-langkahnya seperti di bawah ini:

  1. klik File ->New->C Projectstart_awal openMP                                                                                       Gambar 1. Memulai openMP
  2. isikan nama project pada field Project name: …..(untuk contoh ini saya berikan nama project nya “openMP” tanpa tanda petik), pilih Project type pada “openMP hello word C Project”, dan  untuk toolchains nya pastikan “MinGW GCC”

hello_word openMP

Gambar 2. Hello word openMP

Pada gambar 2 terlihat di bagian bawah teks C Project ada keterangan tentang “A project with that name                already exists in the workspace” itu menandakan bahwa project dengan nama tersebut telah ada, karena saya sebelumnya telah membuat nama project dengan nama tersebut, untuk kasus ini nama boleh diganti atau tidak, jika tidak maka project tersebut akan diganti dengan project yang baru ini.

3. maka akan tampil workspace seperti Gambar 3 berikut ini:

workspace openMPGambar 3. workspace

perhatikan di script openMP.c tersebut, di sana terlihat ada #include <omp.h>, itulah yang menandakan bahwa ini adalah script yang mengandung openMP. jadi jika nanti kita akan membuat script openMP dalam C dapat dipastikan kita harus menginclude omp.h ini.

4. compile script tersebut melalui menu Project -> Build Project, seperti terlihat pada Gambar 4 berikut ini:

kompilasi openMPGambar 4. Cara kompilasi

5. jika semua proses di atas dilakukan secara benar maka pada saat kompilasi seharusnya akan berjalan normal. kompilasi ini adalah sebuah mekanisme untuk menjadikan script di atas menjadi .exe sehingga nantinya bisa di eksekusi. Namun saya sendiri sempat mengalami error, error nya yaitu “cannot find lpthread”. Error ini sebenarnya menyatakan bahwa library dari lpthread ini tidak ada pada folder lib minGW nya, tapi sebenarnya setelah saya cek lib tersebut ada dan setelah saya coba kompilasi ulang, restart eclips berkali-kali akhirnya error tersebut tidak muncul lagi dan kompilasi berhasil menjadikan program tersebut menjadi .exe sehingga bisa di-run. Contoh errornya terlihat pada Gambar 5 di bawah ini:

error cannot_find_lpthread_openMPGambar 6. Error lpthread

Namun seandainya Anda memang benar-benar menemukan masalah yang sama, Anda boleh coba untuk mendownload library tersebut dan menyimpannya di lib minGW. Untuk mendapatkan library tersebut Anda bisa mendapatkannya di: https://gnunet.org/book/export/html/1655. pilih yang libpthreadGC2.a untuk OS 32 bit jika OS Anda 32 bit, lalu rename saja file tersebut menjadi libpthread.a dan simpan di path C:\MinGW\lib

6. Selanjutnya tinggal di-run program hasil kompilasi tersebut. Untuk menjalankan program .exe nya kita harus masuk ke terminal terlebih dahulu setelah itu arahkan prompt dari terminal ini ke path yang menunjukkan lokasi minGW dan bin nya. Ingat ketika Anda menjalankan terminal ini sebaiknya pastikan Anda sebagai administrator. Langkah nya seperti terlihat pada Gambar 7 di bawah ini:

run_terminal sebagai administrator

                                                             (a). Run sebagai Administrator

path minGW

  (b). Path minGW\bin>

Gambar 7.

7. sekarang saat nya tinggal memanggil file .exe dari openMP yang sudah dikompilasi tadi caranya tinggal menggetikkan saja nama file .exe nya, yaitu seperti berikut: C:\MinGW\bin>openMP.exe, tapi ingat ketika Anda langsung melakukan ini maka pasti Anda akan menemukan error, kenapa? ya…karena file openMP.exe belum berada di path C:\MinGW\bin, tetapi file ini masih berada di path C:\eclipse\paralel\openMP\Debug\openMP.exe. Oleh karena itu Anda harus memindahkan file terlebih dahulu ke C:\MinGW\bin\openMP.exe, maka baru program tersebut akan dapat dieksekusi dan hasilnya seperti terlihat pada Gambar 8 di bawah ini:

hasil eksekusi openMP

Gambar 8. Hasil eksekusi openMP

Jika hasilnya seperti terlihat pada Gambar 8 itu artinya program openMP Anda sudah berjalan dengan baik. Terlihat pada Gambar 8 di atas terdapat 2 thread, menurut pendapat saya ini karena mesin yang saya gunakan adalah mesin yang hanya memiliki 2 core (seperti core two duo, dual core, dan sejenisnya), tapi seandainya program ini dieksekusi pada mesin yang memiliki 4 core, 8 core maka thread yang tercipta akan sebanyak jumlah core pada mesin tersebut, tapi memang ini belum saya coba.

Demikian lah tutorial memulai openMP….semoga bermanfaat.

catatan: langkah-langkah di atas belum tentu merupakan cara terbaik untuk memulai openMP ini, bisa saja langkah-langkah Anda lah yang lebih efisien dibandingkan dengan langkah yang telah saya tulis ini.

terima kasih

salam hangat

references:

[1].https://computing.llnl.gov/tutorials/openMP/

[2]. Introduction to Parallel Computing 2nd Edition, Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar

[3]. https://gnunet.org/book/export/html/1655

Maret 23, 2014 - Posted by | Komputer Paralel, Organisasi Komputer/Hardware Komputer | , , , , , ,

Belum ada komentar.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: