我尝试运行的一个示例程序具有以下编译选项,如makefile。
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
你能告诉我它是否正确吗?顺便说一句,我找不到" -L"的正确路径。与ATI相对应的NVIDIA选项。
答案 0 :(得分: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 / local / cuda。 NVIDIA OpenCL库在其驱动程序包中发布,libOpenCL.so
应该以默认搜索路径结束,并且不需要显式搜索路径供链接器查找。