2

我尝试运行的一个示例程序具有来自 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”选项的正确路径。

4

1 回答 1

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应该以默认搜索路径结束,并且不需要显式搜索路径让链接器找到它。

于 2012-08-23T10:36:29.793 回答