Вариант компиляции OpenCL ATI против NVIDIA

Один пример программы, которую я пытаюсь запустить, имеет параметр компиляции, как следует из 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

Но я использую реализацию OpenCL от Nvidia, поэтому я собираюсь изменить параметр, чтобы он понравился.

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

Не могли бы вы сказать мне, правильно это или нет? Кстати, я не смог найти правильный путь для параметра «-L» для NVIDIA, который соответствует ATI.


person user1292251    schedule 23.08.2012    source источник
comment
Когда вы говорите CUDA, вы имеете в виду реализацию OpenCL от NVIDIA или вы перевели OpenCL в CUDA и действительно пытаетесь скомпилировать этот код CUDA?   -  person talonmies    schedule 23.08.2012
comment
Извините, что я был неясен. Это реализация OpenCL от NVIDIA. Я не переводил этот код OpenCL в CUDA.   -  person user1292251    schedule 23.08.2012


Ответы (1)


Несколько сбивает с толку тот факт, что SDK NVIDIA для вычислений на графических процессорах на самом деле вовсе не является SDK, это просто набор примеров программ, написанных на CUDA и OpenCL. Он не содержит необходимых заголовков и библиотек, необходимых для сборки и запуска программ OpenCL (то же самое относится и к CUDA).

Вы найдете то, что ищете, в наборе инструментов для вычислений на графических процессорах NVIDIA, выпуски которых содержат свои заголовки 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 должен оказаться в пути поиска по умолчанию, и компоновщику не потребуется явный путь поиска, чтобы найти его.

person talonmies    schedule 23.08.2012
comment
Я также нашел ответ о опции -L. Это -L PATH_TO_NVIDIA_TOOLKIT/lib. - person user1292251; 29.08.2012
comment
Однако я все еще не понимаю, в чем разница между /user/local/cuda и /home/userid/NVIDIA_GPU_Computing_SDK/OpenCL. Там находятся одни и те же включаемые и библиотечные файлы. - person user1292251; 29.08.2012