Если вы разработчик, работающий с CUDA, возможно, в какой-то момент вы столкнулись со страшной «ошибкой cmake_cuda_architectures». Это сообщение об ошибке может расстраивать, поскольку оно часто препятствует успешной компиляции и выполнению ваших проектов CUDA. В этой статье блога мы рассмотрим различные методы устранения и решения этой проблемы, используя разговорный язык и приведя примеры кода.
Метод 1: проверьте версию набора инструментов CUDA
Первый шаг в устранении ошибки «cmake_cuda_architectures» — убедиться, что у вас установлена правильная версия набора инструментов CUDA. Различные версии CUDA Toolkit поддерживают разные архитектуры графических процессоров. Чтобы проверить версию CUDA Toolkit, вы можете использовать в терминале следующую команду:
nvcc --version
Убедитесь, что установленная вами версия CUDA соответствует необходимой версии, указанной в документации вашего проекта или зависимостях.
Метод 2: проверка совместимости архитектуры графического процессора
Ошибка cmake_cuda_architectures часто возникает, когда архитектура графического процессора, указанная в файле CMakeLists.txt или конфигурации сборки, несовместима с используемым графическим процессором. Чтобы решить эту проблему, вам необходимо убедиться, что флаг архитектуры (-arch
) установлен правильно. Вот пример того, как вы можете явно установить архитектуру для конкретной архитектуры графического процессора (например, sm_75 для архитектуры NVIDIA Turing):
set(CMAKE_CUDA_ARCHITECTURES 75)
Обязательно замените номер архитектуры соответствующим значением для вашего графического процессора. Список поддерживаемых архитектур CUDA можно найти в документации NVIDIA.
Метод 3. Использование общей архитектуры графического процессора.
Если вы хотите, чтобы ваш код был совместим с несколькими архитектурами графического процессора, вы можете использовать флаг общей архитектуры графического процессора в файле CMakeLists.txt. Это позволяет CMake автоматически определять архитектуру графического процессора во время компиляции. Вот пример:
set(CMAKE_CUDA_ARCHITECTURES "AUTO")
Использование «AUTO» в качестве флага архитектуры указывает CMake выбрать самую высокую архитектуру, поддерживаемую вашей версией CUDA Toolkit.
Метод 4: укажите несколько архитектур графического процессора
В некоторых случаях вам может потребоваться указать несколько архитектур графического процессора, чтобы обеспечить совместимость с рядом устройств. Этого можно добиться, предоставив следующий список архитектур:
set(CMAKE_CUDA_ARCHITECTURES "70;75")
Убедитесь, что указанные вами архитектуры поддерживаются вашей версией CUDA Toolkit и графическими процессорами, на которые вы собираетесь ориентироваться.
Метод 5: обновление CMake и CUDA Toolkit
Если вы по-прежнему сталкиваетесь с «ошибкой cmake_cuda_architectures» после использования вышеуказанных методов, возможно, ваша установка CMake или CUDA Toolkit устарела. Рассмотрите возможность обновления CMake и набора инструментов CUDA до последних версий, чтобы обеспечить совместимость с вашей кодовой базой.
Ошибка cmake_cuda_architectures может стать частым препятствием при работе с проектами CUDA. Однако, вооружившись методами устранения неполадок, изложенными в этой статье, вы должны быть хорошо подготовлены к преодолению этого препятствия. Не забудьте проверить версию своего набора инструментов CUDA, убедиться в совместимости архитектуры графического процессора, при необходимости использовать универсальные или несколько архитектур и поддерживать свои инструменты разработки в актуальном состоянии. Благодаря этим методам в вашем наборе инструментов вы вернетесь к кодированию и беспрепятственному запуску проектов CUDA.