- CLHandleType
- CLGetInfoInteger
- CLGetInfoString
- CLContextCreate
- CLContextFree
- CLGetDeviceInfo
- CLProgramCreate
- CLProgramFree
- CLKernelCreate
- CLKernelFree
- CLSetKernelArg
- CLSetKernelArgMem
- CLSetKernelArgMemLocal
- CLBufferCreate
- CLBufferFree
- CLBufferWrite
- CLBufferRead
- CLExecute
- CLExecutionStatus
OpenCL ile Çalışma
OpenCL programları, OpenCL 1.1 (veya daha üstünü) destekleyen ekran kartları üzerinde hesaplamalar yapma amacıyla kullanılır. Modern ekran kartları, gelen veri akışıyla ilgi basit matematiksel işlemleri eş-anlı olarak gerçekleştirebilecek, özelleştirilmiş yüzlerce küçük işlemci içerir. OpenCL dili bu işlemcileri kullanmak amacıyla paralel hesaplamayı düzenler. Böylece bazı görevler için daha üstün bir işlem hızı elde etmemizi sağlar.
Bazı ekran kartlarında double tipli sayılar varsayılan olarak devre dışı bırakılmıştır. Bu 5105 kodlu derleme hatasına yol açabilir. double tipli sayı desteğini etkinleştirmek için, şu direktifi OpenCL programına ekleyin: #pragma OPENCL EXTENSION cl_khr_fp64 : enable. Ekran kartınız double tipini desteklemiyorsa bu direktif işe yaramaz.
OpenCL kaynak kodunun ayrı CL dosyalarına yazılması tavsiye edilir. Bunlar daha sonra kaynak değişkenleri yardımıyla MQL5 programına eklenebilir.
OpenCL programlarında hata işleme
Bir OpenCL programındaki son hata hakkında bilgi almak için, son hatanın kodunu ve açıklamasını geri döndüren CLGetInfoInteger ve CLGetInfoString fonksiyonlarını kullanın.
Son OpenCL hatasının kodu: Son OpenCL hatasının kodunu almak için, handle parametresini göz ardı ederek (sıfır belirtilebilir) CLGetInfoInteger'ı çağırın. Hataların açıklamaları: https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS.
Bilinmeyen bir hata kodu için "Bilinmeyen OpenCL hatası: N" dizgesi geri döndürülür, burada N hata kodudur. Örnek:
//--- son hatanın kodu alınırken handle parametresi göz ardı edilir
|
Son OpenCL hatasının açıklaması: Son OpenCL hatasının açıklamasını almak için CLGetInfoString'i çağırın. Son OpenCL hatasının kodu handle parametresi olarak iletilmelidir.
Hataların açıklamaları: https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS. Hata kodu yerine CL_LAST_ERROR iletilirse, fonksiyon yine son hatanın açıklamasını geri döndürecektir. Örnek:
//--- son OpenCL hatasının kodunu al
|
Hata açıklaması olarak dahili numaralandırmanın adı geri döndürülür. Ayrıntılı açıklamaları buradan bulabilirsiniz: https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS. Örneğin, CL_INVALID_KERNEL_ARGS değeri, "Bazı çekirdek argümanları ayarlanmadığında veya geçersiz olduğunda çekirdeği kuyruğa alırken geri döndürülür" anlamına gelir.
OpenCL ile çalışan programlar için fonksiyonlar:
Fonksiyon |
Eylem |
---|---|
Bir OpenCL tanıtıcı değerinin (handle) tipine, ENUM_OPENCL_HANDLE_TYPE sayımının değerlerinden biri şeklinde dönüş yapar |
|
Bir OpenCL aygıtı veya nesnesi için bir tamsayı özelliğinin değerine dönüş yapar |
|
Bir OpenCL bağlamı oluşturur |
|
Bir OpenCL bağlamını siler |
|
OpenCL sürücüsünden aygıtın özelliğini alır |
|
Bir kaynak kodundan OpenCL programı oluşturur |
|
Bir OpenCL programını siler |
|
Bir OpenCL başlatma fonksiyonu oluşturur |
|
OpenCL başlatma fonksiyonunu siler |
|
OpenCL fonksiyonu için parametre ayarlar |
|
Bir OpenCL tamponunu OpenCL fonksiyonunun parametresi olarak ayarlar |
|
Yerel tamponu kernel fonksiyonunun bir argümanı olarak ayarlar |
|
Bir OpenCL tamponu oluşturur |
|
Bir OpenCL tamponunu siler |
|
Bir diziyi OpenCL tamponuna yazar |
|
OpenCL tamponunu bir diziye okur |
|
Bir OpenCL programını çalıştırır |
|
OpenCL programının çalışma durumuna dönüş yapar |
Ayrıca Bakınız