2016-05-21 4 views
0

Мне нужно использовать OpenCl с java Итак, я выбрал JOCL , когда мне захотелось попробовать образцы jocl (http://www.jocl.org/samples/samples.html). Я всегда нахожу эту ошибку при компиляции образцов.Ошибка CL_DEVICE_NOT_AVAILABLE в JOCL sampels

, например, образец (JOCLSample_1_2_KernelArgs.java) показывает эти ошибки:

**Exception in thread "main" org.jocl.CLException: CL_DEVICE_NOT_AVAILABLE 
at org.jocl.CL.checkResult(CL.java:686) 
at org.jocl.CL.clCreateContext(CL.java:3803) 
at org.jocl.JOCLSample_1_2_KernelArgs.defaultInitialization(JOCLSample_1_2_KernelArgs.java:177) 
at org.jocl.JOCLSample_1_2_KernelArgs.main(JOCLSample_1_2_KernelArgs.java:42)** 

Я уверен, что мои водители хорошо работает. (., Который показывает запросы и печатает информацию обо всех доступных устройств)

при компиляции образца JOCLDeviceQuery.java

Это результат:

Number of platforms: 4 
Number of devices in platform Intel(R) OpenCL: 2 
Number of devices in platform NVIDIA CUDA: 1 
Number of devices in platform Experimental OpenCL 2.0 CPU Only Platform: 1 
Number of devices in platform AMD Accelerated Parallel Processing: 1 
--- Info for device  Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz: --- 
CL_DEVICE_NAME:     Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz 
CL_DEVICE_VENDOR:   Intel(R) Corporation 
CL_DRIVER_VERSION:   5.0.0.57 
CL_DEVICE_TYPE:    CL_DEVICE_TYPE_CPU 
CL_DEVICE_MAX_COMPUTE_UNITS:  4 
CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS: 3 
CL_DEVICE_MAX_WORK_ITEM_SIZES:  8192/8192/8192 
CL_DEVICE_MAX_WORK_GROUP_SIZE:  8192 
CL_DEVICE_MAX_CLOCK_FREQUENCY:  1800 MHz 
CL_DEVICE_ADDRESS_BITS:   64 
CL_DEVICE_MAX_MEM_ALLOC_SIZE:  998 MByte 
CL_DEVICE_GLOBAL_MEM_SIZE:  3995 MByte 
CL_DEVICE_ERROR_CORRECTION_SUPPORT: no 
CL_DEVICE_LOCAL_MEM_TYPE:  global 
CL_DEVICE_LOCAL_MEM_SIZE:  32 KByte 
CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE: 128 KByte 
CL_DEVICE_QUEUE_PROPERTIES:  CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE 
CL_DEVICE_QUEUE_PROPERTIES:  CL_QUEUE_PROFILING_ENABLE 
CL_DEVICE_IMAGE_SUPPORT:  1 
CL_DEVICE_MAX_READ_IMAGE_ARGS:  480 
CL_DEVICE_MAX_WRITE_IMAGE_ARGS:  480 
CL_DEVICE_SINGLE_FP_CONFIG:  CL_FP_DENORM CL_FP_INF_NAN CL_FP_ROUND_TO_NEAREST 
CL_DEVICE_2D_MAX_WIDTH   16384 
CL_DEVICE_2D_MAX_HEIGHT   16384 
CL_DEVICE_3D_MAX_WIDTH   2048 
CL_DEVICE_3D_MAX_HEIGHT   2048 
CL_DEVICE_3D_MAX_DEPTH   2048 
CL_DEVICE_PREFERRED_VECTOR_WIDTH_<t> CHAR 1, SHORT 1, INT 1, LONG 1, FLOAT 1, DOUBLE 1 


--- Info for device Intel(R) HD Graphics 4000: --- 
CL_DEVICE_NAME:    Intel(R) HD Graphics 4000 
CL_DEVICE_VENDOR:   Intel(R) Corporation 
CL_DRIVER_VERSION:   9.17.10.2828 
CL_DEVICE_TYPE:    CL_DEVICE_TYPE_GPU 
CL_DEVICE_MAX_COMPUTE_UNITS:  16 
CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS: 3 
CL_DEVICE_MAX_WORK_ITEM_SIZES:  512/512/512 
CL_DEVICE_MAX_WORK_GROUP_SIZE:  512 
CL_DEVICE_MAX_CLOCK_FREQUENCY:  350 MHz 
CL_DEVICE_ADDRESS_BITS:   64 
CL_DEVICE_MAX_MEM_ALLOC_SIZE:  406 MByte 
CL_DEVICE_GLOBAL_MEM_SIZE:  1624 MByte 
CL_DEVICE_ERROR_CORRECTION_SUPPORT: no 
CL_DEVICE_LOCAL_MEM_TYPE:  local 
CL_DEVICE_LOCAL_MEM_SIZE:  64 KByte 
CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE: 64 KByte 
CL_DEVICE_QUEUE_PROPERTIES:  CL_QUEUE_PROFILING_ENABLE 
CL_DEVICE_IMAGE_SUPPORT:  1 
CL_DEVICE_MAX_READ_IMAGE_ARGS:  128 
CL_DEVICE_MAX_WRITE_IMAGE_ARGS:  8 
CL_DEVICE_SINGLE_FP_CONFIG:  CL_FP_INF_NAN CL_FP_ROUND_TO_NEAREST CL_FP_ROUND_TO_ZERO CL_FP_ROUND_TO_INF 
CL_DEVICE_2D_MAX_WIDTH   16384 
CL_DEVICE_2D_MAX_HEIGHT   16384 
CL_DEVICE_3D_MAX_WIDTH   2048 
CL_DEVICE_3D_MAX_HEIGHT   2048 
CL_DEVICE_3D_MAX_DEPTH   2048 
CL_DEVICE_PREFERRED_VECTOR_WIDTH_<t> CHAR 1, SHORT 1, INT 1, LONG 1, FLOAT 1, DOUBLE 0 


--- Info for device GeForce GT 630M: --- 
CL_DEVICE_NAME:    GeForce GT 630M 
CL_DEVICE_VENDOR:   NVIDIA Corporation 
CL_DRIVER_VERSION:   352.86 
CL_DEVICE_TYPE:    CL_DEVICE_TYPE_GPU 
CL_DEVICE_MAX_COMPUTE_UNITS:  2 
CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS: 3 
CL_DEVICE_MAX_WORK_ITEM_SIZES:  1024/1024/64 
CL_DEVICE_MAX_WORK_GROUP_SIZE:  1024 
CL_DEVICE_MAX_CLOCK_FREQUENCY:  1600 MHz 
CL_DEVICE_ADDRESS_BITS:   64 
CL_DEVICE_MAX_MEM_ALLOC_SIZE:  256 MByte 
CL_DEVICE_GLOBAL_MEM_SIZE:  1024 MByte 
CL_DEVICE_ERROR_CORRECTION_SUPPORT: no 
CL_DEVICE_LOCAL_MEM_TYPE:  local 
CL_DEVICE_LOCAL_MEM_SIZE:  48 KByte 
CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE: 64 KByte 
CL_DEVICE_QUEUE_PROPERTIES:  CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE 
CL_DEVICE_QUEUE_PROPERTIES:  CL_QUEUE_PROFILING_ENABLE 
CL_DEVICE_IMAGE_SUPPORT:  1 
CL_DEVICE_MAX_READ_IMAGE_ARGS:  128 
CL_DEVICE_MAX_WRITE_IMAGE_ARGS:  8 
CL_DEVICE_SINGLE_FP_CONFIG:  CL_FP_DENORM CL_FP_INF_NAN CL_FP_ROUND_TO_NEAREST CL_FP_ROUND_TO_ZERO CL_FP_ROUND_TO_INF CL_FP_FMA CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT 
CL_DEVICE_2D_MAX_WIDTH   16384 
CL_DEVICE_2D_MAX_HEIGHT   16384 
CL_DEVICE_3D_MAX_WIDTH   2048 
CL_DEVICE_3D_MAX_HEIGHT   2048 
CL_DEVICE_3D_MAX_DEPTH   2048 
CL_DEVICE_PREFERRED_VECTOR_WIDTH_<t> CHAR 1, SHORT 1, INT 1, LONG 1, FLOAT 1, DOUBLE 1 


--- Info for device  Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz: --- 
CL_DEVICE_NAME:     Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz 
CL_DEVICE_VENDOR:   Intel(R) Corporation 
CL_DRIVER_VERSION:   6.0.0.1049 
CL_DEVICE_TYPE:    CL_DEVICE_TYPE_CPU 
CL_DEVICE_MAX_COMPUTE_UNITS:  4 
CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS: 3 
CL_DEVICE_MAX_WORK_ITEM_SIZES:  8192/8192/8192 
CL_DEVICE_MAX_WORK_GROUP_SIZE:  8192 
CL_DEVICE_MAX_CLOCK_FREQUENCY:  1800 MHz 
CL_DEVICE_ADDRESS_BITS:   64 
CL_DEVICE_MAX_MEM_ALLOC_SIZE:  998 MByte 
CL_DEVICE_GLOBAL_MEM_SIZE:  3995 MByte 
CL_DEVICE_ERROR_CORRECTION_SUPPORT: no 
CL_DEVICE_LOCAL_MEM_TYPE:  global 
CL_DEVICE_LOCAL_MEM_SIZE:  32 KByte 
CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE: 128 KByte 
CL_DEVICE_QUEUE_PROPERTIES:  CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE 
CL_DEVICE_QUEUE_PROPERTIES:  CL_QUEUE_PROFILING_ENABLE 
CL_DEVICE_IMAGE_SUPPORT:  1 
CL_DEVICE_MAX_READ_IMAGE_ARGS:  480 
CL_DEVICE_MAX_WRITE_IMAGE_ARGS:  480 
CL_DEVICE_SINGLE_FP_CONFIG:  CL_FP_DENORM CL_FP_INF_NAN CL_FP_ROUND_TO_NEAREST 
CL_DEVICE_2D_MAX_WIDTH   16384 
CL_DEVICE_2D_MAX_HEIGHT   16384 
CL_DEVICE_3D_MAX_WIDTH   2048 
CL_DEVICE_3D_MAX_HEIGHT   2048 
CL_DEVICE_3D_MAX_DEPTH   2048 
CL_DEVICE_PREFERRED_VECTOR_WIDTH_<t> CHAR 1, SHORT 1, INT 1, LONG 1, FLOAT 1, DOUBLE 1 


--- Info for device  Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz 

, что это решение для моего проблема ??????? как я могу скомпилировать образцы jocl ???

+0

ли наиболее базовый образец, http://jocl.org/samples/JOCLSample.java, работа для вас? Обратите внимание, что другим могут потребоваться версии OpenCL или функции, которые не поддерживаются соответствующим устройством. Какое устройство вы хотите использовать, на самом деле? – Marco13

+0

Я хочу использовать GPU и CPU, но на данный момент он работает, только когда я меняю все на GPU (окончательный длинный deviceType = CL_DEVICE_TYPE_GPU;) –

+0

Тогда можно свести итог ошибки (как образованное предположение): это в основном работает ** но ** флаг компиляции '' -cl-kernel-arg-info'' (который использует функцию OpenCL 1.2) ** не поддерживается ** некоторыми процессорами. (Например, некоторые из устройств ЦП могут иметь только OpenCL 1.1 или ниже) – Marco13

ответ

0

Попробуйте изменить тип устройства из CL_DEVICE_TYPE_ALL

к CL_DEVICE_TYPE_CPU или CL_DEVICE_TYPE_GPU

В OpenCL, это лучше не смешивать типы устройств

см example code

public class JOCLSample_1_2_KernelArgs 
{ 
    // The platform, device type and device number that will be used 
    private static final int platformIndex = 0; 
    private static final long deviceType = CL_DEVICE_TYPE_ALL; 
    ... 
+0

Я попробовал, deviceType = CL_DEVICE_TYPE_GPU; результат: версия Платформа: OpenCL 1.2 Исключение в нити "основные" org.jocl.CLException: CL_INVALID_BUILD_OPTIONS \t на org.jocl.CL.clBuildProgram (CL.java:9364) \t в org.jocl.JOCLSample_1_2_KernelArgs.main (JOCLSample_1_2_KernelArgs.java:51) –

+0

строка 51: clBuildProgram (программа, 0, null, "-cl-kernel-arg-info", null, null); –

+0

Это новая проблема. Код успешно создал устройство. Теперь у него возникла проблема с построением ядра. –