Cuda параллельная генерация кода в Visual Studio

У меня есть пара проектов C++ в решении Visual Studio 2012. Эти проекты содержат большое количество файлов, и я использую /MP для ускорения генерации кода.

Мне было интересно, есть ли способ ускорить также NVCC подобным образом. Использование /MP в проекте, содержащем ядра CUDA, не дает никаких преимуществ во время компиляции, и я вижу только одно ядро ​​в работе.

Итак, вопрос: как я могу использовать свой многоядерный ПК для ускорения компиляции CUDA?

2 ответа

Начиная с CUDA 5.5, nvcc не имеет эквивалента MSVC /MP, поэтому любой параллелизм сборки для файлов.cu должен исходить из инструмента сборки, который вызывает NVCC.

Если вы можете собирать с использованием GNU Make (например, под Cygwin или в системе Linux/Unix/OS X), вы можете использовать его функциональность параллельного построения, используя -j опция, которая заставляет его обрабатывать несколько рецептов параллельно.

Вот хороший пост в блоге, который перечисляет несколько вариантов параллельной сборки в Windows, некоторые из которых могут работать с NVCC.

Для настоящей распределенной / параллельной системы сборки, поддерживающей MSVC и NVCC, вы можете попробовать Incredibuild.

Вы можете использовать IncrediBuild

Но эта ошибка может произойти:
фатальная ошибка C1041: невозможно открыть базу данных программы '...'; если несколько файлов CL.EXE записывают в один и тот же файл.PDB, используйте /FS

Чтобы избежать этого, установите "Проект" -> "Свойства" -> CUDA C/C++ -> "Хост" -> "Дополнительные параметры компилятора" -> /FS.

Подробнее читайте в этом блоге.

Другие вопросы по тегам