Linux下编译时出现OpenCL1.2 AMD-APP灾难性错误

Linux下编译时出现OpenCL1.2 AMD-APP灾难性错误,opencl,Opencl,在Ubuntu上使用AMD-APP SDK构建OpenCL时,我遇到以下错误: Compilation failed: "/tmp/OCLDUTgN7.cl", line 8: catastrophic error: cannot open source file "src//owOpenCLConstant.h" #include "src//owOpenCLConstant.h" 相关的owOpenCLConstant头文件包含以下内容: #ifndef OW_O

在Ubuntu上使用AMD-APP SDK构建OpenCL时,我遇到以下错误:

Compilation failed: 
"/tmp/OCLDUTgN7.cl", line 8: catastrophic error: cannot open source file
          "src//owOpenCLConstant.h"
  #include "src//owOpenCLConstant.h"
相关的
owOpenCLConstant
头文件包含以下内容:

#ifndef OW_OPENCL_CONSTANT_H
#define OW_OPENCL_CONSTANT_H

#define MAX_NEIGHBOR_COUNT 32

#define MAX_MEMBRANES_INCLUDING_SAME_PARTICLE 7

#define LIQUID_PARTICLE 1
#define ELASTIC_PARTICLE 2
#define BOUNDARY_PARTICLE 3

#define NO_PARTICLE_ID -1
#define NO_CELL_ID -1
#define NO_DISTANCE -1.0f

#define QUEUE_EACH_KERNEL 1

#define INTEL_OPENCL_DEBUG 0

#endif // #ifndef OW_OPENCL_CONSTANT_H
这与Intel OpenCL1.1 SDK配合使用,因此看起来有点奇怪。这是AMD特有的问题还是OpenCL1.1对1.2的问题


我对OpenCL了解不多,也没有在任何地方发现此错误,如果有人能发现问题,我将不胜感激。

您的include语句是什么样子的?基于该区域,它似乎无法在给定路径上定位或访问文件。include语句如下所示:
#include“src//owOpenCLConstant.h”
-为什么AMD builder无法定位它而不是Intel?我真正想要的是您的开发设置。原因是CL内核是在运行时(在程序中)编译的。内核中的include需要相对于执行目录。基本上,当您的程序调用clBuildProgram时,您的include需要相对于该目录。发生的情况是,当openCL收到构建请求时,它正在查找(当前执行目录)/src/owOpenCLConstant.h,但找不到它。看起来AMD openCL编译器在临时目录中构建程序。因此编译器无法找到“src/owOpenCLConstant.h”文件的相对路径。您可能需要为
clBuildProgram()
指定额外的
-I
选项。或者您可以使用environment
AMD\u OCL\u BUILD\u OPTIONS\u APPEND
-I
选项附加到现有程序中。我认为您是对的@jclin。现在我将把标题信息放在文件
.cl
本身中,但将来我将添加
-I
选项。