Instalasi PyOpenCL

Dalam petualangan saya dengan OpenCL ini, saya sengaja mencari jalan pintas agar cepat akrab dengan OpenCL. Salah satu caranya adalah dengan menggunakan bahasa “yang gak terlalu rewel” seperti Python dalam membuat aplikasi yang nanti akan menggunakan OpenCL ini. Kode OpenCL sendiri tetap ditulis dalam bahasa yang digunakannya, yaitu subset bahasa C, namun aplikasi yang menggunakannya ditulis dalam bahasa Python. Untuk menggunakan OpenCL dari Python, kita bisa menggunakan PyOpenCL yang akan saya tunjukan proses instalasinya.

Bagi pengguna Ubuntu 10.04, saya sudah membuatkan paketnya dan meletakkannya di Launchpad PPA saya. Jalankan perintah berikut untuk memasang paket tsb.

$ sudo apt-add-repository ppa:fajran/opencl
$ sudo apt-get update
$ sudo apt-get install python-pyopencl

Bagi yang tidak menggunakan Ubuntu 10.04, lain kali akan saya tunjukkan cara instalasi manualnya. Tadinya mau ditulis juga tapi kok ada yang mengganjal 😀 Panduan resminya ada juga loh, jadi gak usah nunggu saya juga 😛

Untuk menguji apakah PyOpenCL sudah dapat digunakan, silakan coba jalankan kode Python berikut.

import pyopencl as cl

for platform in cl.get_platforms():
    print 'Platform:', platform.name
    for device in platform.get_devices():
        print '-', device.name

Simpan dalam sebuah berkas, misalnya opencl-devices.py, lalu jalankan.

$ python opencl-devices.py
Platform: ATI Stream
- Intel(R) Core(TM)2 Duo CPU     P8600  @ 2.40GHz
Platform: NVIDIA CUDA
- GeForce 320M

Sepertinya sekian dulu bagian awal dari petualangan bersama OpenCL. Seharusnya seluruh yang dibutuhkan untuk membuat aplikasi OpenCL sudah ada, mulai dari driver, pustaka OpenCL, dan juga bahasa pemrograman yang dapat digunakan.

Setelah ini kita akan mencoba membuat aplikasi OpenCL dengan PyOpenCL.

Instalasi ATI Stream SDK di Linux

Andai ingin menjalankan aplikasi OpenCL namun tidak menggunakan VGA card yang mendukung (seperti NVIDIA dan ATI), Anda masih memiliki peluang untuk menjalankan aplikasi tersebut di atas CPU karena OpenCL memang memungkinkannya. Salah satu pustaka OpenCL yang mendukung hal ini adalah ATI Stream SDK. Menurut daftar hardware yang didukung oleh SDK ini, CPU yang didukung adalah CPU yang memiliki SSE3. Silakan cek artikel terkait di Wikipedia untuk melihat daftar CPU yang memiliki SSE3.

Apa yang akan saya tulis ini sebenarnya juga tertulis dalam petunjuk instalasi yang disediakan oleh ATI. Jadi akan lebih baik jika panduan utama tersebut juga dilihat.

Untuk memasang ATI Stream SDK ini, ada satu berkas yang harus dipasang di bawah direktori /etc sehingga Anda memerlukan akses root. Berkas-berkas lainnya sendiri tidak perlu diletakkan didirektori khusus dan pada dasarnya bisa diletakkan di mana saja.

Mari kita mulai memasang pustaka OpenCL ini..

Pertama, unduh dulu ATI Stream SDK dari http://developer.amd.com/gpu/atistreamsdk/pages/default.aspx. Ada dua berkas yang harus diunduh, yaitu ati-stream-sdk-v2.1-lnx32.tgz (atau yg versi 64 bit) dan icd-registration.tgz. Arsip untuk sistem 64 bit juga berisi berkas-berkas untuk sistem 32 bit. Jadi jika Anda memiliki mesin 32 bit dan 64 bit, cukup unduh arsip untuk sistem 64 bit saja.

Kedua, ekstrak berkas SDK (saya menggunakan yang versi 64 bit) ke sebuah direktori, katakanlah /home/iang/apps.

$ mkdir /home/iang/apps
$ cd /home/iang/apps
$ tar xzf /path/ke/ati-stream-sdk-v2.1-lnx64.tgz

Nanti akan terbentuk direktori ati-stream-sdk-v2.1-lnx64 dengan segala isinya.

Ketiga, ekstrak berkas icd-registration.tgz ke sebuah direktori. Anda akan menemukan direktori etc/OpenCL/vendors/ dengan sebuah berkas bernama atiocl32.icd dan atiocl64.icd. Kedua berkas ini harus disalin ke dalam /etc/OpenCL/vendors/ (inilah mengapa akses root diperlukan). Berkas ICD ini berisi daftar driver OpenCL yang terpasang.

$ sudo mkdir -p /etc/OpenCL/vendors/
$ sudo cp etc/OpenCL/vendors/* /etc/OpenCL/vendors/

Percaya atau tidak, tahap instalasi sudah selesai! Jika Anda juga membaca panduan instalasi yang diberikan oleh AMD/ATI, maka bisa dilihat saya melewatkan tahapan ke 2, 3, dan 4. Ketiga tahap tersebut tetap akan penting untuk dilakukan namun belum kita perlukan sampai saat ini, namun nanti pada saat kita sudah siap melakukan kompilasi dan eksekusi aplikasi OpenCL.

Bagi yang sudah tidak sabar untuk mencoba, Anda bisa mencoba mengkompilasi aplikasi contoh yang diberikan oleh ATI. Jalankan saja perintah berikut.

$ cd /home/iang/apps/ati-stream-sdk-v2.1-lnx64/
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/iang/apps/ati-stream-sdk-v2.1-lnx64/lib/x86_64
$ make

Semua aplikasi contoh akan dikompilasi dan jika memang semua yang dibutuhkan sudah ada di komputer Anda, maka perintah make tadi akan selesai dengan sukses. Pada kasus saya, make berakhir dengan kegagalan karena pustaka aticalrt tidak ditemukan di komputer saya.

Namun walaupun begitu, sebagian aplikasi sudah terkompilasi dan dapat saya coba.

$ cd samples/opencl/bin/x86_64
$ ./Mandelbrot --size 512

OpenCL – persiapan

wah udah lama gak nulis2 😛

Tiba-tiba saya lagi pengen nulis mengenai petualangan dengan OpenCL berhubung saya lagi nyoba2 mainan yg satu ini. Jadi.. siap2 😀 Tuk bagian pertama, mari kita lakukan persiapan agar bisa mulai main2..

Kalau make Mac OS X Snow Leopard, silakan langsung tunggu tulisan berikutnya. Pustaka OpenCL sudah terpasang jadi ya tinggal pake saja 😀

Kalau make Linux dan kebetulan make vga card NVIDIA seri 8000an ke atas (intinya sudah dukung CUDA), maka coba pasang driver NVIDIA versi 190an ke atas (tepatnya saya kurang tahu) karena driver ini sudah menyertakan pustaka OpenCL. Paket nvidia-current yang dibawa oleh Ubuntu 10.04 (versi 195.36.24-0ubuntu1~10.04) sudah menyertakan pustaka OpenCL juga loh.

Kalau ngga make vga card NVIDIA tapi menggunakan ATI (Windows maupun Linux) err.. mulai seri berapa ya? maap saya gak tau, maka pasang dulu ATI Stream SDK. Baca petunjuk instalasinya untuk informasi lebih lanjut. Nanti saya akan tuliskan juga langkah-langkah instalasinya bagi pengguna Linux. Instalasi driver ATI juga mungkin (seharusnya?) diperlukan. Berhubung saya ngga make vga card dari ATI, maka saya tidak bisa memastikan hal ini.

Bagi pengguna Windows dan NVIDIA, silakan pasang CUDA Toolkit.

Bagi yang ngga make NVIDIA maupun ATI, jangan khawatir karena OpenCL juga bisa jalan di atas CPU, walau saya gak tau CPU seperti apa yang didukung 😛 Pasang saja ATI Stream SDK karena driver OpenCL dari ATI ini mendukung eksekusi OpenCL di atas CPU. Oh ya, ATI Stream SDK ini gak mensyaratkan penggunaan hardware apapun dari ATI. Saya aja bisa memakainya di atas komputer dg Intel Core2 Duo dan NVIDIA 320M.

yak sekian dulu.. selamat bersiap2 😀

sekedar pemicu tambahan..

>>> import pyopencl as cl
>>> for platform in cl.get_platforms():
...     for device in platform.get_devices():
...         print '- %s' % device.name
...
- Intel(R) Core(TM)2 Duo CPU     P8600  @ 2.40GHz
- GeForce 320M