我的工作站配置:
操作系统:
我使用lwjgl的OpenCL演示(link)列出平台和设备。
问题1)
在我的工作站上安装AMD驱动程序 AMD加速并行处理平台列表 Intel(R)Xeon(R)CPU E5-2609 v2 @ 2.50GHz 作为设备。 (针对AMD平台列出的第三个设备)
我为AMD和Intel OpenCL驱动程序测试了相同的代码,而英特尔自己的实现对于它自己的硬件要快得多。 (毫不奇怪)
无论如何,我不希望英特尔设备在AMD平台下收听。
问题2)
我的 2相同 AMD FirePro W9100(AMD平台下的设备1和2)列出了不同级别的OpenCL支持。
什么可能导致此问题,更重要的是如何让我的第二张卡使用2.0 OpenCL驱动程序?
OpenCL演示结果:
NEW PLATFORM: [0x7FFE51B57B60]
CL_PLATFORM_PROFILE = FULL_PROFILE
CL_PLATFORM_VERSION = OpenCL 2.0 AMD-APP (1642.5)
CL_PLATFORM_NAME = AMD Accelerated Parallel Processing
CL_PLATFORM_VENDOR = Advanced Micro Devices, Inc.
CL_PLATFORM_EXTENSIONS = cl_khr_icd cl_khr_d3d10_sharing cl_khr_d3d11_sharing cl_khr_dx9_media_sharing cl_amd_event_callback cl_amd_offline_devices
CL_PLATFORM_ICD_SUFFIX_KHR = AMD
** NEW DEVICE: [0x1087BD0]
OpenCL 2.0 - Extensions: cl_amd_device_attribute_query cl_amd_fp64 cl_amd_media_ops cl_amd_media_ops2 cl_amd_popcnt cl_amd_printf cl_amd_vec3 cl_ext_atomic_counters_32 cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_depth_images cl_khr_fp64 cl_khr_gl_event cl_khr_gl_sharing cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_image2d_from_buffer cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_spir
CL_DEVICE_TYPE = 4
CL_DEVICE_VENDOR_ID = 4098
CL_DEVICE_MAX_COMPUTE_UNITS = 44
CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS = 3
CL_DEVICE_MAX_WORK_GROUP_SIZE = 256
CL_DEVICE_MAX_CLOCK_FREQUENCY = 930
CL_DEVICE_ADDRESS_BITS = 64
CL_DEVICE_AVAILABLE = true
CL_DEVICE_COMPILER_AVAILABLE = true
CL_DEVICE_NAME = Hawaii
CL_DEVICE_VENDOR = Advanced Micro Devices, Inc.
CL_DRIVER_VERSION = 1642.5 (VM)
CL_DEVICE_PROFILE = FULL_PROFILE
CL_DEVICE_VERSION = OpenCL 2.0 AMD-APP (1642.5)
CL_DEVICE_EXTENSIONS = cl_khr_fp64 cl_amd_fp64 cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_gl_sharing cl_ext_atomic_counters_32 cl_amd_device_attribute_query cl_amd_vec3 cl_amd_printf cl_amd_media_ops cl_amd_media_ops2 cl_amd_popcnt cl_khr_d3d10_sharing cl_khr_d3d11_sharing cl_khr_dx9_media_sharing cl_khr_image2d_from_buffer cl_khr_spir cl_khr_subgroups cl_khr_gl_event cl_khr_depth_images
CL_DEVICE_OPENCL_C_VERSION = OpenCL C 2.0
Sub Buffer destructed: 17348816
Buffer destructed (2): 16864864
Buffer destructed (1): 16864864
** NEW DEVICE: [0x10851E0]
OpenCL 1.2 - Extensions: cl_amd_device_attribute_query cl_amd_fp64 cl_amd_media_ops cl_amd_media_ops2 cl_amd_popcnt cl_amd_printf cl_amd_vec3 cl_ext_atomic_counters_32 cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_fp64 cl_khr_gl_event cl_khr_gl_sharing cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_image2d_from_buffer cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_spir
CL_DEVICE_TYPE = 4
CL_DEVICE_VENDOR_ID = 4098
CL_DEVICE_MAX_COMPUTE_UNITS = 44
CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS = 3
CL_DEVICE_MAX_WORK_GROUP_SIZE = 256
CL_DEVICE_MAX_CLOCK_FREQUENCY = 930
CL_DEVICE_ADDRESS_BITS = 64
CL_DEVICE_AVAILABLE = true
CL_DEVICE_COMPILER_AVAILABLE = true
CL_DEVICE_NAME = Hawaii
CL_DEVICE_VENDOR = Advanced Micro Devices, Inc.
CL_DRIVER_VERSION = 1642.5 (VM)
CL_DEVICE_PROFILE = FULL_PROFILE
CL_DEVICE_VERSION = OpenCL 1.2 AMD-APP (1642.5)
CL_DEVICE_EXTENSIONS = cl_khr_fp64 cl_amd_fp64 cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_gl_sharing cl_ext_atomic_counters_32 cl_amd_device_attribute_query cl_amd_vec3 cl_amd_printf cl_amd_media_ops cl_amd_media_ops2 cl_amd_popcnt cl_khr_d3d10_sharing cl_khr_d3d11_sharing cl_khr_dx9_media_sharing cl_khr_image2d_from_buffer cl_khr_spir cl_khr_gl_event
CL_DEVICE_OPENCL_C_VERSION = OpenCL C 1.2
Sub Buffer destructed: 17348816
Buffer destructed (2): 16864864
Buffer destructed (1): 16864864
** NEW DEVICE: [0x5DDFE790]
OpenCL 1.2 - Extensions: cl_amd_device_attribute_query cl_amd_fp64 cl_amd_media_ops cl_amd_media_ops2 cl_amd_popcnt cl_amd_printf cl_amd_vec3 cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_fp64 cl_khr_gl_event cl_khr_gl_sharing cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_spir
CL_DEVICE_TYPE = 2
CL_DEVICE_VENDOR_ID = 4098
CL_DEVICE_MAX_COMPUTE_UNITS = 8
CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS = 3
CL_DEVICE_MAX_WORK_GROUP_SIZE = 1024
CL_DEVICE_MAX_CLOCK_FREQUENCY = 2500
CL_DEVICE_ADDRESS_BITS = 64
CL_DEVICE_AVAILABLE = true
CL_DEVICE_COMPILER_AVAILABLE = true
CL_DEVICE_NAME = Intel(R) Xeon(R) CPU E5-2609 v2 @ 2.50GHz
CL_DEVICE_VENDOR = GenuineIntel
CL_DRIVER_VERSION = 1642.5 (sse2,avx)
CL_DEVICE_PROFILE = FULL_PROFILE
CL_DEVICE_VERSION = OpenCL 1.2 AMD-APP (1642.5)
CL_DEVICE_EXTENSIONS = cl_khr_fp64 cl_amd_fp64 cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_gl_sharing cl_ext_device_fission cl_amd_device_attribute_query cl_amd_vec3 cl_amd_printf cl_amd_media_ops cl_amd_media_ops2 cl_amd_popcnt cl_khr_d3d10_sharing cl_khr_spir cl_khr_gl_event
CL_DEVICE_OPENCL_C_VERSION = OpenCL C 1.2
-TRYING TO EXEC NATIVE KERNEL-
KERNEL EXEC argument: 1337, should be 1337
Event callback status: CL_COMPLETE
EMPTY NATIVE KERNEL AVG EXEC TIME: 28.8072us
Sub Buffer destructed: 17348816
Buffer destructed (2): 16864864
Buffer destructed (1): 16864864
-------------------------
NEW PLATFORM: [0x5DB27010]
CL_PLATFORM_PROFILE = FULL_PROFILE
CL_PLATFORM_VERSION = OpenCL 1.2
CL_PLATFORM_NAME = Intel(R) OpenCL
CL_PLATFORM_VENDOR = Intel(R) Corporation
CL_PLATFORM_EXTENSIONS = cl_khr_icd cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_depth_images cl_khr_3d_image_writes cl_intel_exec_by_local_thread cl_khr_spir cl_khr_fp64
CL_PLATFORM_ICD_SUFFIX_KHR = INTEL
** NEW DEVICE: [0x5DB1E8F0]
OpenCL 1.2 - Extensions: cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_depth_images cl_khr_fp64 cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_icd cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_spir
CL_DEVICE_TYPE = 2
CL_DEVICE_VENDOR_ID = 32902
CL_DEVICE_MAX_COMPUTE_UNITS = 8
CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS = 3
CL_DEVICE_MAX_WORK_GROUP_SIZE = 8192
CL_DEVICE_MAX_CLOCK_FREQUENCY = 2500
CL_DEVICE_ADDRESS_BITS = 64
CL_DEVICE_AVAILABLE = true
CL_DEVICE_COMPILER_AVAILABLE = true
CL_DEVICE_NAME = Intel(R) Xeon(R) CPU E5-2609 v2 @ 2.50GHz
CL_DEVICE_VENDOR = Intel(R) Corporation
CL_DRIVER_VERSION = 5.0.0.57
CL_DEVICE_PROFILE = FULL_PROFILE
CL_DEVICE_VERSION = OpenCL 1.2 (Build 57)
CL_DEVICE_EXTENSIONS = cl_khr_icd cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_depth_images cl_khr_3d_image_writes cl_intel_exec_by_local_thread cl_khr_spir cl_khr_fp64
CL_DEVICE_OPENCL_C_VERSION = OpenCL C 1.2
-TRYING TO EXEC NATIVE KERNEL-
KERNEL EXEC argument: 1337, should be 1337
Event callback status: CL_COMPLETE
EMPTY NATIVE KERNEL AVG EXEC TIME: 9.5031us
Sub Buffer destructed: 1574991568
Buffer destructed (2): 1563032880
Buffer destructed (1): 1563032880
答案 0 :(得分:2)
问题1)
AMD的OpenCL实现似乎适用于所有x86 CPU。我没有关于此的事实,只有关于Khronos forums的另一个类似的讨论。
解决方案可能是根据不同平台报告的名称过滤设备,但我不知道是否可以保证不同的平台始终为同一设备报告相同的名称。
问题2)
我不知道你的第二个问题,它看起来很奇怪......
答案 1 :(得分:2)
1)查看您的regkeys(在local_machine / Software / Krono / vendors或software / AMD下)。这些东西通常由regkeys控制。我不确定AMD使用的是什么。 2)确保两张卡具有相同的驱动程序版本。否则,由于设备之间可能存在一致性问题,AMD驱动程序可能只允许任何计算机上的一个2.0设备。 2.0设备应该对内核具有SVM支持,但我不确定设备之间的连贯性会发生什么。