最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

OpenCL 2.0 full profile, without atomic_store & atomic_load? Is this possible? - Stack Overflow

programmeradmin4浏览0评论

I use the OpenCL.NET C# wrapper for OpenCL.

My GPU from GPU-Z is AMD Radeon Barcelo, and specific for OpenCL:

  • Platform Version: OpenCL 2.1 AMD-APP (3570.0)
  • Device Name: gfx90c
  • Device Profile: FULL_PROFILE
  • Device Version: OpenCL 2.0 AMD-APP (3570.0)
  • Device Version OpenCL C: OpenCL C 2.0
  • 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_fp16 cl_khr_gl_sharing 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_subgroups cl_khr_gl_event cl_khr_depth_images cl_khr_mipmap_image cl_khr_mipmap_image_writes cl_amd_copy_buffer_p2p cl_amd_planar_yuv

Part of the code:

// probably useless
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable
#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics : enable
#pragma OPENCL EXTENSION cl_khr_fp64 : enable

void vector_is_zero_partial(
    uint row,
    uint row_to,
    __global const double *x,
    double tolerance,
    __global atomic_int *is_zero)
{
    for (; row < row_to; ++row)
    {
        if (fabs(x[row]) > tolerance)
        {
            atomic_store(is_zero, 0);
            break;
        }
        if (!atomic_load(is_zero)) break;
    }
}

The error:

C:\Users\CHAMEL~1\AppData\Local\Temp\\OCL8036T0.cl:264:4: error: implicit declaration of function 'atomic_store' is invalid in C99
                        atomic_store(is_zero, 0);
                        ^
C:\Users\CHAMEL~1\AppData\Local\Temp\\OCL8036T0.cl:267:8: error: implicit declaration of function 'atomic_load' is invalid in C99
                if (!atomic_load(is_zero)) break;
                     ^
2 errors generated.

error: Clang front-end compilation failed!
Frontend phase failed compilation.
Error: Compiling CL to IR
 

So, atomic extensions exist, OpenCL is v2, BUT atomic_store / atomic_load does not exist.

Did I something wrong here?

发布评论

评论列表(0)

  1. 暂无评论