Opencl 在NVIDIA GPU上编译GPU内核时出现预期表达式错误

Opencl 在NVIDIA GPU上编译GPU内核时出现预期表达式错误,opencl,nvidia,pyopencl,Opencl,Nvidia,Pyopencl,如果我尝试在带有NDIVA和GPU的服务器上运行OpenCL内核,我会遇到以下问题, 在我的mac电脑上没有问题。 这一行代码似乎是问题所在 float largest_0 = max(float (sin_i_angle), float (cos_i_angle)); 这是错误消息 File "threed_dp.py", line 918, in gpu_calculate_segment_costs_orig bld = prg.build() File "/work/m

如果我尝试在带有NDIVA和GPU的服务器上运行OpenCL内核,我会遇到以下问题, 在我的mac电脑上没有问题。 这一行代码似乎是问题所在

float largest_0 = max(float (sin_i_angle), float (cos_i_angle));
这是错误消息

  File "threed_dp.py", line 918, in gpu_calculate_segment_costs_orig
    bld = prg.build()
  File "/work/mrdrygal/.local/lib/python3.6/site-packages/pyopencl/__init__.py", line 510, in build
    options_bytes=options_bytes, source=self._source)
  File "/work/mrdrygal/.local/lib/python3.6/site-packages/pyopencl/__init__.py", line 554, in _build_and_catch_errors
    raise err
pyopencl._cl.RuntimeError: clBuildProgram failed: BUILD_PROGRAM_FAILURE - clBuildProgram failed: BUILD_PROGRAM_FAILURE - clBuildProgram failed: BUILD_PROGRAM_FAILURE

Build on <pyopencl.Device 'Tesla P100-PCIE-16GB' on 'NVIDIA CUDA' at 0x3767e50>:

<kernel>:82:33: error: expected expression
          float largest_0 = max(float (sin_i_angle), float (cos_i_angle));
文件“threed_dp.py”,第918行,gpu计算段成本
bld=prg.build()
文件“/work/mrdrygal/.local/lib/python3.6/site packages/pyopencl/_init__.py”,第510行,内部版本
选项\字节=选项\字节,源=自身。\源)
文件“/work/mrdrygal/.local/lib/python3.6/site packages/pyopencl/_init__.py”,第554行,在_build_和_catch_错误中
提出错误
pyopencl.\u cl.RuntimeError:clBuildProgram失败:构建程序失败-clBuildProgram失败:构建程序失败-clBuildProgram失败:构建程序失败
基于:
:82:33:错误:应为表达式
浮动最大值0=最大值(浮动(正弦角)、浮动(正弦角);

不是C中的一个有效表达式。它在C++中是有效的(显式调用一个在代码> > FuffAd)/<代码>的指导者,所以也许这就是为什么苹果的OpenCL编译器允许它的原因。您应该将该行更改为:

float largest_0 = max((float)sin_i_angle, (float)cos_i_angle);
float largest_0 = max((float)sin_i_angle, (float)cos_i_angle);