gpt4 book ai didi

macros - 在内核代码中检测 OpenCL 设备供应商

转载 作者:行者123 更新时间:2023-12-01 11:50:18 24 4
gpt4 key购买 nike

我正在编写一些特定于平台的优化,虽然我知道我可以解析主机代码中的供应商字符串并使用 -D 将其发送到内核的事实。选项,直接检测内核中的供应商可能更方便,无需主机参与(这样即使不访问主机源代码,也可以优化内核,......)。

到目前为止,我想出了以下几点:

#ifdef __NV_CL_C_VERSION
/**
* @def NVIDIA
* @brief defined when compiling on NVIDIA GPUs
*/
#define NVIDIA
#endif // __NV_CL_C_VERSION

#if defined(__WinterPark__) || defined(__BeaverCreek__) || defined(__Turks__) || \
defined(__Caicos__) || defined(__Tahiti__) || defined(__Pitcairn__) || \
defined(__Capeverde__) || defined(__Cayman__) || defined(__Barts__) || \
defined(__Cypress__) || defined(__Juniper__) || defined(__Redwood__) || \
defined(__Cedar__) || defined(__ATI_RV770__) || defined(__ATI_RV730__) || \
defined(__ATI_RV710__) || defined(__Loveland__) || defined(__GPU__) || \
defined(__Hawaii__)
#define AMD
/**
* @def AMD
* @brief defined when compiling on AMD GPUs
* @note This list was originally found at https://github.com/magnumripper/JohnTheRipper/wiki/Predefined-macros-in-OpenCL-(standard-and-proprietary) and copied shamelessly. It is most definitely incomplete and contains the troubling __GPU__.
* @note AMD also defines __CPU__ when compiling for CL_DEVICE_TYPE_CPU.
*/
#endif // ...

有什么补充或更正吗?有谁知道英特尔的定义?

最佳答案

我刚刚用 1912.5 试过 AMD Fury X司机。以下三个测试都打印消息:

#ifdef cl_amd_device_attribute_query
#pragma message "here goes AMD"
#endif

#ifdef __GPU__
#pragma message "here goes AMD GPU"
#endif

#ifdef __Fiji__
#pragma message "here goes Fiji AMD"
#endif

但是,请注意 cl_amd_device_attribute_query对于 AMD 设备来说,这不是一个很好的测试,因为 AMD 平台还包括作为设备的 Intel CPU 并为其提供相同的扩展。无赖。

我正在通过 amdocl64.dll并注意到以下几点:
-cl-std=CL2.0
#define __clang__ 1
#define __clang_major__ 3
#define __clang_minor__ 6
#define __ENDIAN_LITTLE__ 1
#define __SPIR32 1
#define __SPIR32__ 1
#define __STDC__ 1
#define __STDC_HOSTED__ 1
#define __STDC_VERSION__ 199901L
#define __STDC_UTF_16__ 1
#define __STDC_UTF_32__ 1
#define __OPENCL_C_VERSION__ 200
#define __OPENCL_VERSION__ 200
-Wf,--force_disable_spir
-fno-lib-no-inline
-fno-sc-keep-calls
-fno-enable-dump
-cl-internal-kernel
-cl-std=CL
-cl-std=CL1.2
-just-kernel=
-DFP_FAST_FMAF=1
-DFP_FAST_FMA=1
-cl-denorms-are-zero
cl-kernel-arg-info
-fno-bin-llvmir
-fno-image-support
-mfast-fmaf
-mfast-fma kernel-arg-alignment

请注意, __GPU__ 都没有或 __Fiji__在这个dll中找到。否则似乎是一堆有趣的选择。请注意,并非所有这些都有效,其中一些可能需要以 - 为前缀。 .

关于macros - 在内核代码中检测 OpenCL 设备供应商,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34244673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com