настройка CMake для настройки CUDA в Windows - PullRequest
5 голосов
/ 02 мая 2011

Я пытаюсь использовать CMake для компиляции приложения на основе CUDA в Windows (Visual Studio 2005). Вот пример урезанного файла CMake:

cmake_minimum_required (VERSION 2.6)
project (HELLO)

#Support for CUDA Integration
FIND_PACKAGE(CUDA)
if(CUDA_FOUND)
    SET(CUDA_NVCC_FLAGS "-arch;sm_13")
CUDA_ADD_EXECUTABLE(Hello hello.cu)
else(CUDA_FOUND)
    message("CUDA is not installed on this system.")
endif()

Есть несколько вопросов, которые я хотел бы разобраться с этим.

Когда я открываю файл решения (Hello.sln), я не вижу никакой пользовательской настройки правил сборки для проекта (щелкните правой кнопкой мыши Project -> Пользовательские правила сборки)

Я вижу «Hello_generated_hello.cu.obj», добавленный в мой проект в Visual Studio. Что это за файл и почему он добавлен в проект?

По умолчанию раздел CUDA Runtime API отсутствует в свойствах проекта.

Если я включу соответствующее пользовательское правило сборки (NvCudaRuntimeApi.rules), я теперь смогу увидеть раздел API среды выполнения CUDA. Если я сейчас перейду к подразделу GPU, то увижу, что архитектура GPU по-прежнему установлена ​​на sm_10.

Даже если я использую макрос CUDA_INCLUDE_DIRECTORIES () для добавления некоторых каталогов для компиляции CUDA, я не увижу эти настройки в Свойствах проекта -> API среды выполнения CUDA -> Общие -> Дополнительные каталоги включения.

Я хотел бы знать, может ли пакет FindCUDA () правильно настроить проект VS 2005 для компиляции на основе CUDA. Может быть, мне нужно указать дополнительные параметры, чтобы правильно настроить проект. Я, конечно, хотел бы знать это. Я хочу убедиться, что любые параметры, которые я указал в файле CMakeLists, позволят мне легко просмотреть их в моем сгенерированном проекте VS 2005.

Какой подходящий способ настроить это?

1 Ответ

4 голосов
/ 02 августа 2011

CMake не поддерживает пользовательские правила сборки (например, файл .rules API среды выполнения CUDA), и поэтому вы не можете редактировать листы свойств CUDA, которые предоставляют файлы .rules, если вы используете CMake для настройки своего проекта. Однако вы можете установить любые параметры CUDA непосредственно в CMakeLists.txt, который генерирует проект, и повторная сборка вашего проекта обнаружит эти изменения и автоматически создаст и заново загрузит файлы проекта.

Дополнительным преимуществом FindCUDA (помимо того, что он кроссплатформенный) является правильный анализ зависимостей, так что вы никогда не получите устаревших сборок, как обычно, когда используете файлы CUDA .cu в Visual Studio (с файлами или без .rules).

Примеры использования CMake с CUDA в проекте CUDPP можно найти в следующих файлах:

Надеюсь, это поможет.

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