Как редактировать Visual Studio CUDA nvcc.exe Командная строка

Принятый ответ правильный, за исключением того, что он выдает пустой список, когда ввод равен 0, однако я считаю, что вывод должен быть [0], когда ввод равен нулю.

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

toDigits :: Integer -> [Integer]
toDigits n
 | n >=0 && n < 10 = [n]
 | n >= 10 = toDigits (n`div`10) ++ [n`mod`10]
 | otherwise = error "make sure your input is greater than 0" 
0
задан Everett Sellner 18 March 2019 в 18:31
поделиться

2 ответа

Я отправляю ответ на свой вопрос здесь после его решения, поэтому, если у других возникнет та же проблема, они смогут найти простое решение здесь.

Как вы можете видеть выше, командная строка компилятора nvcc.exe не редактируется, потому что это просто функция различных других редактируемых свойств.

Тем не менее, единственная причина, по которой я хотел отредактировать командную строку nvcc, была в первую очередь из-за следующей ошибки компилятора:

1> nvcc fatal: для несвязанного требуется один входной файл фаза, когда указан выходной файл

Компилятор NVidia CUDA nvcc.exe работал правильно для моей сборки отладки Visual Studio, но каждый раз приводил к ошибке с вышеуказанной ошибкой для любой сборки выпуска.

Я ожидал, что для решения этой проблемы мне придется отредактировать командную строку nvcc.exe, однако это оказалось не так по следующей причине.

Когда я удалил все пробелы в именах сборок конфигурации Visual Studio, проблема полностью исчезла!

Очевидно, компилятор nvcc.exe не может обрабатывать пробелы в именах сборок конфигурации, несмотря на использование двойных кавычек вокруг них во всех ссылки на командную строку. Следовательно, эта проблема, вероятно, является чем-то внутренним для компилятора nvcc и никогда не была обнаружена NVidia просто потому, что большинство людей достаточно умны, чтобы не использовать пробелы в именах своих сборок.

В итоге, не используйте пробелы в именах сборок конфигурации VS, и у вас не будет этой проблемы с компилятором NVidia CUDA.

0
ответ дан Everett Sellner 18 March 2019 в 18:31
поделиться

Вы просто редактируете его, как и любой другой инструмент сборки в Visual Studio: редактируя свойства. Категория командной строки в свойствах проекта на самом деле просто для того, чтобы показать вам, как будет выглядеть команда на основе заданных вами свойств. Весь смысл наличия свойств состоит в том, что вы просто устанавливаете свойства и заставляете IDE переводить эти свойства в правильную командную строку для конкретного инструмента, а не указывать непосредственно командную строку & hellip;

Файл .props сборки Настройка устанавливает свойства по умолчанию для использования для типов элементов, связанных с этой настройкой сборки. Тот, который фактически используется, должен быть установлен в каталоге MSBuild, например, C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations. Я бы посоветовал не редактировать этот файл напрямую, так как он устанавливает системные значения по умолчанию. Если вы хотите изменить значения по умолчанию для вашего проекта, просто отредактируйте свойства CUDA C / C ++ проекта (т. Е. Выберите проект в обозревателе решений и измените его свойства, а не свойства отдельного файла .cu). [113 ]

Свойства в Visual Studio построены по слоям (строго говоря, мы говорим здесь о метаданных элемента, а не о свойствах, но это незначительная техническая составляющая, которая здесь не должна иметь значения). Внизу у вас есть определения свойств по умолчанию, которые проект импортирует для всех своих инструментов сборки. Вдобавок к этому у вас есть определения свойств всего проекта. И каждый элемент (файл) в рамках проекта может иметь свои собственные определения свойств. Набор свойств для каждого элемента представляет собой комбинацию всех свойств, определенных для этого типа элемента (например, файла CUDA C / C ++), а также любого конкретного определения элемента, где последнее определение перезаписывает предыдущие. Когда вы видите свойство, отображаемое жирным шрифтом в диалоговом окне свойств Visual Studio, это означает, что это конкретное значение свойства перезаписывается на этом уровне. Не выделенные жирным шрифтом свойства наследуются от нижележащих слоев. Так, например, свойство bold в свойствах проекта означает, что параметр перезаписывается поверх свойства по умолчанию, получаемого при интеграции сборки. Свойство, выделенное жирным шрифтом на уровне элемента, означает, что свойство перезаписывается для этого элемента поверх свойств всего проекта. Дальнейшая настройка возможна, например, путем определения ваших собственных таблиц свойств, которые позволяют вам добавлять свои собственные слои определений свойств. Листы свойств также представляют собой отдельные файлы, которые можно импортировать в несколько проектов, например, для совместного использования общих настроек. Просто откройте Диспетчер свойств («Просмотр»> «Диспетчер свойств»), чтобы просмотреть все отдельные листы свойств в вашем проекте на данный момент и, например, добавить свой собственный…

0
ответ дан Michael Kenzel 18 March 2019 в 18:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: