У меня есть пара проектов C ++ в решении Visual Studio 2012.
Эти проекты содержат большое количество файлов и
я использую / MP ускорить генерацию кода.
Мне было интересно, есть ли способ ускорить также NVCC подобным образом. Использование / MP в проекте, содержащем ядра CUDA, не дает никаких преимуществ во время компиляции, и я вижу только одно ядро в работе.
Итак, вопрос: как я могу использовать свой многоядерный ПК для ускорения компиляции CUDA?
Начиная с 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.
Подробнее читайте на этот блог.