OpenCL编译选项ATI vs NVIDIA

OpenCL编译选项ATI vs NVIDIA,opencl,Opencl,我正在尝试运行的一个示例程序具有如下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 -lOpe

我正在尝试运行的一个示例程序具有如下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

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

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

<>你会发现你在英伟达GPU计算工具包中寻找什么,它的发布版本包含OpenCL头。您的编译命令可能类似于:

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

如果接受工具包安装程序的默认设置,则指向NVIDIA工具包的路径将是/usr/local/cuda。Nvidia OpenCL库在其驱动程序包中运行, LIBOPCEnL。因此应该终止在默认的搜索路径中,而不需要为链接器找到明确的搜索路径。

当您说“CUDA”时,您是指“英伟达的OpenCL实现”吗?或者你是否已经将OpenCL翻译成CUDA,并且真的在尝试编译CUDA代码?很抱歉,我不清楚。这是NVIDIA的OpenCL实现。我没有将这个OpenCL翻译成CUDA代码。我还找到了关于-L选项的答案。它是“-L PATH_TO_NVIDIA_TOOLKIT/lib”。然而,我仍然混淆了“/user/local/cuda”和/home/userid/NVIDIA_GPU Computing_SDK/OpenCL”之间的区别。两者都有相同的include和library文件。