ImageMagick memiliki dukungan bawaan untuk beberapa operasi yang dipercepat dengan OpenCL. Namun, ada beberapa persyaratan untuk pengoperasiannya. Persyaratan tersebut tercantum di bawah ini.
- OS dan driver:
- macOS: memiliki dukungan bawaan untuk OpenCL. Tidak diperlukan tindakan lain.
- Linux/Windows: pada platform yang didukung, instal driver yang diperlukan untuk mengaktifkan OpenCL.
- Mobile: dukungan OpenCL ImageMagick tidak tersedia di OS mobile (iOS/Android).
- Flag waktu kompilasi: OpenCL ImageMagick harus diaktifkan secara eksplisit saat dikompilasi. Ini dilakukan dengan menjalankan configure dengan flag --enable-opencl diaktifkan.
- Periksa dukungan runtime: untuk memverifikasi apakah dukungan OpenCL diaktifkan, jalankan magick --version. Output perintah akan menampilkan Features: ... OpenCL ...
- Flag runtime: OpenCL dinonaktifkan secara default saat runtime. Untuk mengaktifkannya, gunakan variabel lingkungan MAGICK_OCL_DEVICE=true, misalnya MAGICK_OCL_DEVICE=true magick
. Untuk mengaktifkan perangkat tertentu saja, gunakan MAGICK_OCL_DEVICE=GPU atau MAGICK_OCL_DEVICE=CPU. - Utilitas baris perintah: untuk dukungan OpenCL yang tepat, disarankan menggunakan utilitas magick daripada convert, mogrify, dan lainnya.
- Jenis gambar: akselerasi OpenCL hanya berfungsi pada gambar tanpa peta warna. Gunakan gambar true color sebagai gantinya.
- Operator: berikut adalah daftar operator gambar yang telah dipercepat dengan OpenCL.
blur contrast charcoal function grayscale motion-blur resize
Operator berikut juga dipercepat dengan OpenCL, tetapi mengharuskan kanal alpha diaktifkan, misalnya magick sample.jpg -alpha on -despeckle null:.
despeckle
equalize
modulate
Catatan operasi OpenCL
Ketika sebagian operator yang dipercepat dengan OpenCL dipanggil untuk pertama kalinya dan semua kondisi di atas terpenuhi, ImageMagick menjalankan serangkaian pengujian untuk mengonfigurasi lingkungan OpenCL sesuai dengan perangkat keras sistem; oleh karena itu, wajar jika Anda mengalami latensi yang lebih tinggi saat pertama kali menggunakan opsi yang dipercepat. Kernel OpenCL disematkan di dalam ImageMagick dalam format sumber. Selama penyiapan awal, ImageMagick mendeteksi semua perangkat OpenCL yang tersedia dan mengompilasi kernel untuk masing-masing target tersebut. ImageMagick juga menjalankan beberapa pengujian performa secara internal untuk menentukan perangkat pilihan yang akan digunakan. Kode kernel hasil kompilasi dan hasil pengujian performa disimpan di direktori cache sehingga data tersebut dapat digunakan kembali pada pemanggilan berikutnya dari jalur OpenCL. Secara default, data cache OpenCL disimpan di $HOME/.cache/ImageMagick pada Linux dan MacOSX, atau di %LOCALAPPDATA%\ImageMagick pada Windows. Untuk menjalankan pengujian ini untuk pertama kalinya, gunakan perintah di bawah ini:
MAGICK_OCL_DEVICE=true magick sample.jpg -blur 0x5 null:
Di Windows, bagian MAGICK_OCL_DEVICE=true harus dihapus, dan perintah set MAGICK_OCL_DEVICE=true harus dijalankan sebelum menjalankan perintah di atas untuk mengaktifkan operasi OpenCL.
Untuk mengubah direktori cache, atur variabel lingkungan MAGICK_OPENCL_CACHE_DIR. ImageMagick dapat mendeteksi perubahan perangkat keras, pembaruan driver, dan sumber kernel baru, lalu menjalankan ulang penyiapan dan uji kalibrasi. Anda juga dapat memaksa ImageMagick menjalankan ulang proses ini dengan menghapus isi direktori cache.
Selain variabel lingkungan yang disebutkan di atas, ImageMagick menyediakan sekumpulan API yang memungkinkan pengembang memperoleh kontrol yang lebih terperinci atas akselerasi OpenCL. Sebagai contoh, gunakan fungsi InitializeOpenCL() untuk menginisialisasi lingkungan OpenCL:
clEnv=GetCurrentOpenCLEnv();
if (InitializeOpenCL(clEnv,exception) == MagickFalse)
{
/* looks like OpenCL is not supported */
}