2012-08-23 71 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