не может построить проект CUDA в visual studio 2008 - PullRequest
1 голос
/ 25 марта 2011

Я учусь на первом курсе факультета компьютерных наук в университете Белграда. Мой проект Soft Computing заключается в сравнении производительности CUDA-реализаций различных алгоритмов, основанных на населении, таких как генетические алгоритмы, Ant Colony Optimization, Bee Colony, Firefly.и PSO.Я не ожидаю от меня написания всех этих кодов, поскольку я учусь на первом курсе. Моя задача - просто попытаться найти коды, запустить их и измерить разницу в производительности между реализациями CPU и GPU.

Несколько хороших людей прислали мне реализацию генетического алгоритма CUDA, разработанную под Linux.Поскольку я не очень знаком с Linux, у меня возникли проблемы с созданием и запуском CUDA-проекта в visual studio на windows.

Файл Make включен в проект, но я думаю, что он не завершен.Файл Make включает в себя другой файл make, которого у меня нет.Я пытался запустить его под win 7, но это оказалось безуспешным, поэтому я установил win xp, visual studio 2008, CUDA SDK 2.3 и соответствующие драйверы.Что бы я ни старался, у меня всегда одни и те же проблемы.

Во-первых, я получил u_int32_t is undefined (u_int32_t - это пользовательский тип), поэтому я заменяю его на __int32, и это решает проблему.После этого я получаю следующие ошибки: rint is not defined и log2 is not defined.Я не знаю, почему я получаю эти ошибки, поскольку math_functions.h косвенно включен в проект через common_functions.h.Затем я помещаю две строки с этими функциями в комментарии и даю фиксированные значения этим переменным.

И после этого я получаю ошибки компоновщика.Например:

Ошибка 3, ошибка LNK2019: неразрешенный внешний символ _h_fit, указанный в функции "public: __thiscallGa :: Ga (int *, char * *)

Есть лиЧто еще я могу сделать? Кроме того, я был бы очень благодарен, если бы кто-нибудь пожелал отправить мне реализацию CUDA Генетического алгоритма, который работает. Мой адрес электронной почты находится в моем профиле.

РЕДАКТИРОВАТЬ:

Я установил include pats для всех h-файлов, связал pats с lib-файлами. Я также установил правило сборки CUDA. Я могу нормально создавать и запускать другие проекты CUDA.

Ответы [ 2 ]

1 голос
/ 26 марта 2011

Установить NSight 1.51. Это установит правила сборки и т.д. для вас.

Может быть уверен, что свойство «Включить каталоги» в проектах Свойства конфигурации | Вкладка «Каталоги VC ++» включает путь к включениям SDK. Что-то вроде:

C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v3.2 \ include

Убедитесь, что компоновщик | На вкладке ввода cudart.lib является одной из дополнительных зависимостей

Ошибка компоновщика выглядит так, как будто он не может найти методы типа Ga (int *, char * *), которые, как я предполагаю, являются частью вашего алгоритма GA. Вы пытаетесь связать проект CUDA с другим проектом VS, чтобы использовать библиотеку CUDA GA? Если это так, вы должны убедиться, что класс, который использует библиотеку GA для другого кода, помечен как

class __declspec(dllexport) {classname}

Так что DLL экспортирует класс, а другой проект VS должен включать зависимость от проекта CUDA. Не видя, как настроено ваше решение, сложно сказать больше.

Вот два руководства по началу работы с CUDA и Visual C ++ 2010, большая часть которых относится к VS 2008:

http://blog.cuvilib.com/2011/02/24/how-to-run-cuda-in-visual-studio-2010/

http://www.ademiller.com/blogs/tech/2011/03/using-cuda-and-thrust-with-visual-studio-2010/

На форуме NVIDIA также есть сообщение:

http://forums.nvidia.com/index.php?showtopic=184539

0 голосов
/ 26 марта 2011

Убедитесь, что вы установили include-путь к h-файлам, link-путь к lib-файлам, событие build для копирования dll.(Все для исправления путей в Toolkit и SDK.)

А также используйте файл правил CUDA для настройки инструмента сборки для cu-файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...