Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

CUDA, unresolved external symbol

10K
21 мая 2012 года
Frenzyk
41 / / 16.01.2009
VS 2010
Поставил
NVIDIA GPU Computing SDK 4.1
Настроил для работы в VS
Открываю проект
..\NVIDIA GPU Computing SDK 4.1\CUDALibraries\src\batchCUBLAS\batchCUBLAS_vs2010.sln
Билдаю его, всё окей.

Беру свой проект:
Код:
#include "cuda.h"
#include <cuda_runtime.h>
#include "device_launch_parameters.h"

.....

void CUDAtest()
    {
        cudaDeviceProp devProp;
        cudaGetDeviceProperties(&devProp,0);

        int i;
    }

int _tmain(int argc, _TCHAR* argv[])
{  

....
CUDAtest();

    return 0;
}
Выдает ошибку:
error LNK2019: unresolved external symbol _cudaGetDeviceProperties@8 referenced in function "void __cdecl CUDAtest(void)" (?CUDAtest@@YAXXZ)

Что не так сделал?

Проект в прикепленном файле.

Некоторые настройки проекта:
Скрин 1
скрин 2

Инструкция, по которой настраивал VS(сорри, что как код, думал под спойлер засунуть, но тут такового похоже нет):
Код:
Порядок проделанной работы:
 Установил VS C++ 2005 (Express Edition), затем ставится NVidia SDK и toolkit. При этом должны создаться системные переменные:
 (название переменной = значение, соответствует моей системе и тем каталогам, кот. я указал при установке)
CUDA_BIN_PATH = D:\Programs\CUDA toolkit 2.0\bin
CUDA_INC_PATH = D:\Programs\CUDA toolkit 2.0\include
CUDA_LIB_PATH = D:\Programs\CUDA toolkit 2.0\lib
NVSDKCUDA_ROOT = D:\Programs\CUDA SDK 2.02.0811.0240


В инструкции CUDA_2_Quickstart_Guide.pdf прочел, что надо проверить установлено ли все как надо. Запускаю в cmd команду 'nvcc -V', выводит следующее:
 nucc: NVIDIA (R) Cuda compiler driver
 Copyright (C) 2005-2007 NUIDIfl Corporation
 Built on Wed_Jul_16_12:57:50_PDT_2008
 Cuda compilation tools, release 2.0, V0.2.1221

Но для этого надо зайти в каталог
 C:\CUDA\bin\
 т.е. этот путь не прописан в PATH. Соответственно и SDK тоже не прописан.

Открываем regedit и ищем, например CUDA_INC_PATH. ТАм же будет пееменная Path. Открываем её и видем что-то вроде
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\\v4.1\bin
Убираем двойной слеш и всё начинает работать.
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.1\bin

Затем на одном форуме прочитал небольшой TODO:
 Зайти в Tools > Options > Projects and Solutions > VC++ Directories
 вкладка Executable files
 добавить новый параметр и ввести D:\Programs\CUDA SDK 2.02.0811.0240\bin, либо $(CUDA_BIN_PATH)

вкладка Include files
 добавить новый параметр и ввести D:\Programs\CUDA toolkit 2.0\include, либо $(CUDA_INC_PATH)
 добавить новый параметр и ввести D:\Programs\CUDA SDK 2.02.0811.0240\common\inc, либо $(NVSDKCUDA_ROOT)\common\inc

вкладка Library files
 добавить новый параметр и ввести D:\Programs\CUDA toolkit 2.0\lib, либо $(CUDA_LIB_PATH)
 добавить новый параметр и ввести D:\Programs\CUDA SDK 2.02.0811.0240\common\lib, либо $(NVSDKCUDA_ROOT)\common\lib

Однако в VS 2010 теперь всё не совсем так. Понадобится подредактировать Property Sheets.
1.Open your solution in the Visual Studio IDE.
2.From the View menu, select "Other Windows" -> "Property Manager" menu item. The Property Manager window appears docked on the left of the IDE by default.
Лкикаем дебаг или релиз и там кликаем
Microsoft.Cpp.Win32.user
Дальше всё аналогично

Зайти в папочку (у вас понятно путь может быть другой)
 C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\NVIDIA CUDA SDK\doc\syntax_highlighting\visual_studio_8
 и прочитал readme.txt
 в нем написано как настроить подсветку синтаксиса в вижуал студио для ку файлов

Typically you should include the following headers:

#include "cuda.h"
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
Прикрепленные файлы:
5 Кб
Загрузок: 846
10K
21 мая 2012 года
Frenzyk
41 / / 16.01.2009
Ох блин, жесть. В переменной CUDA_LIB_PATH было прописано %CUDA_PATH%lib\x64, а проект у меня win32. переписал CUDA_LIB_PATH на %CUDA_PATH%lib
А в VC++ Directories Library Directories прописал $(CUDA_LIB_PATH)/$(PlatformName); Всё заработало.

Вот только у меня вопроc: что за переменные CudaToolkitLibDir и CudaToolkitIncludeDir в проимерах из SDK, ведь из вреестре нет. Или это обратная совместимость?
277
21 мая 2012 года
arrjj
1.7K / / 26.01.2011
.lib добавь к проекту.
10K
21 мая 2012 года
Frenzyk
41 / / 16.01.2009
Цитата:
.lib добавь к проекту.


См. скрин 2, вроде ж добавлен cudart.lib, или что-то не так? Прописал еще "cuda.lib", "cublas.lib", но естессно никакого эффекта. Если в примере из SDK убрать cudart.lib, то действительно появляется такая же ошибка, как и в моём. Вот только в моём что прописывай cudart.lib в Additional Dependencies, что не прописывай - один черт выдает ошибку.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог