2014-01-26 2 views
0

Я не могу запустить скрипт python, который обертывает код CUDA. Это говорит мне, что я обновляю свой CUDA SDK, но я думаю, что проблема в том, что Cuda C-файл читается вместо файла Cuda C++ с тем же именем. Кто-нибудь знает, как это исправить?Ошибка CUDA: MapSMtoCores undefined SM 3.5 не определено

Сообщение об ошибке:

MapSMtoCores undefined SM 3.5 is undefined (please update to the latest SDK)! 
1.1...src/cudaconv2/filter_acts.cu(1179) : getLastCudaError() CUDA error : 
filterActs: kernel execution failed : (9) invalid configuration argument. 

Я уверен, что я использую 5-CUDA, хотя. Для того, чтобы проверить, в соответствии с this, мне нужно

$ cd $(SDK) 
$ make 
$ ./C/bin/linux/release/deviceQuery 

У меня нет корневого доступа, так что я должен был

$ mkdir ~/CUDA_SDK 
$ cp -r /usr/local/cuda/gpu_sdk ~/CUDA_SDK 
$ cd ~/CUDA_SDK 
$ make 

Однако это привело:

  • много предупреждений о форма

../../common/inc/helper_cuda.h:246:12: warning: command line option ‘-Wimplicit’ is valid for C/ObjC but not for C++

../../common/inc/helper_cuda.h:246:12: warning: enumeration value ‘FOO’ not handled in switch

  • много ошибок вида

../../common/inc/helper_cuda.h:252:14: error: ‘FOO’ was not declared in this scope

Я имел взгляд с find -name на helper_cuda.h. Существует 2 версии: ./C/common/inc/helper_cuda.h, заголовок для C-файлов C, содержащих все переменные, упомянутые в ошибках, ./CUDALibraries/common/inc/helper_cuda.h, заголовок для cuda-файлов C++, не содержащий ни одной из переменных, упомянутых в ошибках.

Я также посмотрел с grep "is undefined (please update to the latest SDK)!" -r ~/CUDA_SDK, для которого файл может выводить ошибку (упомянутую в верхней части), которая начала все это, и поразительно, helper_cuda.h является одним из всего лишь 2 файлов.

Если я могу получить C++ helper_cuda.h для чтения вместо C helper_cuda.h, я считаю, что выиграл. Должен ли я использовать переменные среды?

+0

Код cuda завернут в скрипт python, взятый из [здесь] (https://github.com/dnouri/noccn) и [здесь] (https://github.com/dnouri/cuda-convnet). также, дайте мне знать, хотите ли вы весь makefile –

+0

Есть ли в вашем компьютере устройство вычислительной возможности 3.5? Возможно, SDK был настроен для поддержки только того, что доступно. –

+0

Какая версия 'nvcc' у вас есть? Я думаю, он старый, и вам нужно обновить его до версии 5.0 или выше. – ahmad

ответ

2

Есть две разные проблемы. Первая проблема заключается в том, что успешно созданное приложение CUDA терпит неудачу при запуске, а второе - в том, что создание приложения CUDA завершилось неудачно из-за недопустимой среды сборки.

сообщения,

MapSMtoCores undefined SM 3.5 is undefined (please update to the latest SDK)!

выводится, когда приложение (как правило, один из образцов CUDA), который использует образцы рамку CUDA (helper_cuda.h) выполняется на устройстве возможности 3.5 вычислительной и приложения была построена с версией рамок выборки, которая не была обновлена, чтобы покрыть эту вычислительную способность.

Если установлен CUDA 5, то похоже, что приложение было построено с более ранней версией SDK.

Второе сообщение,

..src/cudaconv2/filter_acts.cu(1179) : getLastCudaError() CUDA error : filterActs: kernel execution failed : (9) invalid configuration argument.

, вероятно, вызвано приложение не обнаружив первую ошибку, а затем происходит с попытками запустить ядро ​​с недопустимыми значениями, возвращенными функцией, напечатанной первой ошибки.

Другие ошибки являются ошибками сборки. Это вызвано копированием CUDA SDK в домашнюю папку и попыткой построить там, не обновляя переменные среды CUDA.

Построение образцов CUDA за пределами их родных мест может быть большой работой и не должно быть необходимым для работы приложения фильтров. Чтобы получить «действие фильтра», работающее на машине с устройством 3.5 с вычислительной способностью, вам нужно будет перестроить его с помощью CUDA 5.0 или новее или изменить его, чтобы больше не полагаться на структуру образцов CUDA (что было бы лучше).

Итак, вы должны сначала установить, есть ли у вас фактическая рабочая среда CUDA 5. Если у вас этого нет, кто-то, у кого есть root-доступ, должен его исправить. С рабочей средой сборки вы должны иметь возможность перестроить приложение.

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