2012-08-23 40 views
2

我试图运行的一个示例程序具有编译选项,如下面的makefile所示。OpenCL编译选项ATI vs NVIDIA

ATISTREAMSDKROOT=/home/david/src/ati-stream-sdk-v2.0-lnx64 
CC=gcc 
CCFLAGS=-O3 -msse2 -mfpmath=sse -ftree-vectorize -funroll-loops -Wall \ 
    -I$(ATISTREAMSDKROOT)/include -L$(ATISTREAMSDKROOT)/lib/x86_64 -lglut -lOpenCL 

但是我使用的是Nvidia的OpenCL实现,所以我要更改选项来实现这个功能。

CC=gcc 
CCFLAGS=-O3 -msse2 -mfpmath=sse -ftree-vectorize -funroll-loops -Wall \ 
    -I ~/NVIDIA_GPU_Computing_SDK/OpenCL/common/inc/ -lglut -lOpenCL 

你能告诉我是否正确吗?顺便说一句,我无法找到NVIDIA的“-L”选项的正确路径与ATI的相对应。

+0

当你说“CUDA”的意思是“NVIDIA的OpenCL实现”还是你将OpenCL翻译成CUDA并且真的试图编译那个CUDA代码? – talonmies

+0

对不起,我不清楚。这是NVIDIA的OpenCL实施。我没有将此OpenCL转换为CUDA代码。 – user1292251

回答

1

有点令人困惑的是,NVIDIA的GPU计算SDK根本不是一个真正的SDK,它只是一个用CUDA和OpenCL编写的示例程序的集合。它不包含构建和运行OpenCL程序所需的头文件和库(这同样适用于CUDA)。

您将在NVIDIA GPU计算工具包中找到您需要的内容,其发布版本包含OpenCL标头。你的编译命令也许应该是这样的:

CCFLAGS=-O3 -msse2 -mfpmath=sse -ftree-vectorize -funroll-loops -Wall \ 
    -I PATH_TO_NVIDIA_TOOLKIT/include/CL -lglut -lOpenCL 

PATH_TO_NVIDIA_TOOLKIT将是/ usr /本地/ CUDA,如果你接受这个工具包安装程序默认值。 NVIDIA OpenCL库在其驱动程序包中提供,libOpenCL.so应该以默认搜索路径结束,并且不需要链接程序找到它的显式搜索路径。

+0

我也找到了关于-L选项的答案。它是“-LPATH_TO_NVIDIA_TOOLKIT/lib”。 – user1292251

+0

但是,我仍然混淆了“/ user/local/cuda”和/ home/userid/NVIDIA_GPU_Computing_SDK/OpenCL之间的区别。在这两个文件中都有相同的include和库文件。 – user1292251