2015-01-09 2 views
2

Я переключился на новый графический процессор GeForce GTX 980 cc 5.2, поэтому он должен поддерживать динамический параллелизм. Однако мне не удалось составить простой код (из руководства по программированию). Я не буду предоставлять его здесь (не обязательно, просто есть глобальное ядро, вызывающее другое глобальное ядро).сборник .cu файлов с динамическим параллелизмом (CUDA)

1) Я использую VS2013 для кодирования. В property pages -> CUDA C/C++ -> device я изменил code generation недвижимости compute_35,sm_35, а вот выход:

1>------ Build started: Project: testCublas3, Configuration: Debug Win32 ------ 
1> Compiling CUDA source file kernel.cu... 
1> 
1> C:\programs\misha\cuda\Projects\test projects\testCublas3\testCublas3>"C:\Program  Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\bin\nvcc.exe" -gencode=arch=compute_35,code=\"sm_35,compute_35\" --use-local-env --cl-version 2013 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\include" -G --keep-dir Debug -maxrregcount=0 --machine 32 --compile -cudart static -g -DWIN32 -D_DEBUG -D_CONSOLE -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MDd " -o Debug\kernel.cu.obj "C:\programs\misha\cuda\Projects\test projects\testCublas3\testCublas3\kernel.cu" 
1>C:/programs/misha/cuda/Projects/test projects/testCublas3/testCublas3/kernel.cu(13): error : kernel launch from __device__ or __global__ functions requires separate compilation mode 
1> kernel.cu 
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\CUDA 6.5.targets(593,9): error MSB3721: The command ""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\bin\nvcc.exe" -gencode=arch=compute_35,code=\"sm_35,compute_35\" --use-local-env --cl-version 2013 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\include" -G --keep-dir Debug -maxrregcount=0 --machine 32 --compile -cudart static -g -DWIN32 -D_DEBUG -D_CONSOLE -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MDd " -o Debug\kernel.cu.obj "C:\programs\misha\cuda\Projects\test projects\testCublas3\testCublas3\kernel.cu"" exited with code 2. 

Я думаю, что мне нужен еще один вариант для этой компиляции: -rdc=true, но я не нашел, где я могу установить его в VS2013 ,

2) Когда я установил code generation собственности на compute_52,sm_52, есть ошибка: Unsupported gpu architecture 'compute_52'. Но мой куб см. 5.2. Так что я могу скомпилировать коды максимум 3.5 куб.

Благодаря

+2

в отношении сообщения о неподдерживаемой архитектуре было предоставлено обновление CUDA 6.5 для поддержки cc5.2. Это [здесь] (https://developer.nvidia.com/cuda-downloads-geforce-gtx9xx). Если вы установите это, эта конкретная ошибка должна исчезнуть. –

+0

Спасибо, уже загружаю. Как насчет первого вопроса? Это правда, что я должен каким-то образом включить параметр -rdc = true? –

+1

Да, вам нужно включить отдельную компиляцию и ссылку, а также включить дополнительные библиотеки. Возможно, вам стоит посмотреть на один из файлов проекта VS, которые находятся в образцах cuda, например [образец cublas устройства] (http://docs.nvidia.com/cuda/cuda-samples/index.html#simpledevlibcublas-gpu -device-апи-библиотека-функция - CUDA-динамический parallelism-). –

ответ

2

Что касается пункта 1, динамическая параллелизм CUDA требует separate compilation and linking (-rdc=true), а также ссылок в библиотеках устройства cudart (-lcudadevrt). Динамический параллелизм, который также использует CUBLAS, также потребует связывания в библиотеке CUBLAS устройства (-lcublas_device). Возможно, самый простой способ определить, куда все это должно идти в проекте визуальной студии, - это начать с визуального проекта студии для the device cublas sample.

Что касается пункта 2, то причина, по которой ваша способность к вычислению GTX 980 5.2 не распознается, заключается в том, что вам необходимо последнее обновление для инструментария cuda 6.5, которое доступно here.

Смежные вопросы