как связать библиотеку (например, CUBLAS, CUSPARSE) для CUDA на windowsх

Я пытаюсь скомпилировать программу cuda, которая использует библиотеку cusparse. Я получаю сообщение об ошибке:

kernel.cu.obj : error LNK2019: unresolved external symbol [email protected] referenced in function _main 

И много ошибок такого же типа, связанных с библиотекой cusparse. Я включил «cusparse_v2.h». Как связать библиотеку cusparse в visual studio 2010 во время компиляции?

Общие инструкции по связыванию библиотек не относятся к CUDA. Поэтому вы можете узнать больше об использовании MS VS. В любом случае, шаги:

  1. Убедитесь, что вы открыли проект, над которым хотите работать.
  2. Выберите «Просмотр … Страницы свойств» (из меню) Откроется новое диалоговое окно.
  3. В левой части этого диалогового windows выберите Linker, чтобы открыть его подменю
  4. В разделе компоновщика выберите «Ввод»
  5. Теперь на панели справа найдите первый элемент, который является «Дополнительные зависимости». Я считаю, что cudart.lib уже должен присутствовать там.
  6. Щелкните справа от cudart.lib вы можете вводить новые библиотеки для добавления. Введите пробел (для выделения из cudart.lib) и введите cusparse.lib
  7. Теперь нажмите «Применить» в правом нижнем углу диалогового windows.

Это должно быть все, что необходимо, если ваш файл проекта / решения уже настроен с использованием шаблона cuda. Если cudart.lib отсутствует, или ваши файлы проекта / решения еще не понимают cuda, это отдельная проблема. В этом случае я бы рекомендовал начать, путем клонирования проекта из образцов и построения вашего проекта, используя это как отправную точку. Затем он подберет все нужные каталоги для поиска, а также правила сборки cuda. Поскольку все основные библиотеки cuda (cudart, cublas, cufft, cusparse и т. Д.) Находятся в одном месте, один и тот же путь поиска должен выбрать любой из них по мере необходимости.

Если вы хотите связать другую библиотеку, например cublas.lib , вы можете следовать аналогичной последовательности, заменив cusparse.lib выше на cublas.lib

Обратите внимание, что с более новыми версиями CUDA (например, CUDA 7.5) необходимо будет построить только 64-битный проект (следуйте приведенным выше шагам при изменении свойств проекта x64). CUDA 7.5 и последующая версия снижают поддержку 32-разрядных проектов.

Я исправил его, выполнив следующие шаги:

  1. Добавьте путь cuda: Идите: «Свойства конфигурации -> Linker-> General-> Additional Libary Directories” и добавьте $ (CudaToolkitLibDir) в список.

  2. Добавьте библиотеку cuda realtime: Go: «Свойства решения-> Linker-> Input-> Additional Dependencies» и добавьте cudart.lib в список.

  3. Добавьте библиотеку cublas: Go: «Свойства решения -> Linker-> Input-> Additional Dependencies» и добавьте cublas.lib в список.

  4. Изменение платформы на x64: Идите: «Свойства конфигурации -> Платформа» и установите ее на x64.

  5. Запустите cmd.exe как администратор. Введите и выполните следующие две строки:

netsh winsock reset catalog

netsh int ip reset reset.log hit

Он может сказать, что требуется перезагрузка, но на самом деле это необязательно. Попробуйте снова отладить ваше приложение, проблема должна быть решена.

Interesting Posts

Почему было сделано предложение о переключении?

Есть ли способ написать функцию bash, которая прерывает выполнение, независимо от того, как она называется?

Слушайте входящие сообщения / уведомления Whatsapp

Основной метод не найден, даже если я его объявил

Кнопка «Отменить назад», чтобы действовать как кнопка «домой»

Какое допустимое магнитное поле (в Тесле) для жесткого диска?

Как диагностировать спонтанную перезагрузку?

Режим IE11 Document по умолчанию имеет значение IE7. Как сбросить?

Xcode: добавление проекта в зависимость от сборки

Укажите пароль, который не связан с моей учетной записью Microsoft?

Чтение простого текстового файла

Развертывание проекта ASP.NET MVC

Как предотвратить изменение текста текста Webkit во время перехода CSS

Quicksort: Итеративный или рекурсивный

Есть ли причина в производительности для объявления параметров метода final в Java?

Давайте будем гением компьютера.