Переопределите NVCC_COMPILE_FLAGS для одной цели - как правильно? [Дубликат]

Другим сценарием является то, что вы нанесли нулевой объект в тип значения . Например, код ниже:

object o = null;
DateTime d = (DateTime)o;

Он выкинет NullReferenceException в роли. В приведенном выше примере это кажется совершенно очевидным, но это может произойти в более «поздних связующих» сложных сценариях, где нулевой объект был возвращен из некоторого кода, которого вы не являетесь, и приведение, например, генерируется некоторой автоматической системой.

Одним из примеров этого является этот простой фрагмент привязки ASP.NET с элементом управления календарем:

" />

Здесь SelectedDate на самом деле является свойством - типа DateTime - типа Calendar Web Control, и привязка может отлично вернуть что-то null. Неявный генератор ASP.NET создаст кусок кода, который будет эквивалентен приведенному выше методу. И это поднимет NullReferenceException, что довольно сложно определить, потому что он лежит в сгенерированном ASP.NET коде, который компилирует отлично ...

3
задан Davor Lucic 16 May 2010 в 09:49
поделиться

2 ответа

Я думаю, что лучший способ сделать это - добавить «OPTIONS -DBLOCK_SIZE = 3» в cuda_add_executable. Таким образом, ваша строка будет выглядеть так:

cuda_add_executable(SimpleTestsCUDA
                SimpleTests.cu
                BlockMatrix.cpp 
                Matrix.cpp
                OPTIONS -DBLOCK_SIZE=3
)

Или вы можете установить ее перед cuda_add_executable:

SET(CUDA_NVCC_FLAGS -DBLOCK_SIZE=3)
4
ответ дан Maurice Gilden 22 August 2018 в 18:09
поделиться
  • 1
    спасибо, похоже, сейчас работает. Может быть, я должен сообщить об этом как об ошибке? – Nils 16 May 2010 в 10:59
  • 2
    SET (CUDA_NVCC_FLAGS -DBLOCK_SIZE = 3) Это то же самое для всех целей, вы не можете сбросить его с помощью set; он будет использоваться для достижения всех целей. ОПЦИИ -DBLOCK_SIZE = 3, похоже, работает с целями cuda, но не с нормальными. Думаю, у меня головная боль .. :( – Nils 16 May 2010 в 11:53
  • 3
    ОПЦИИ доступны только с cuda_add_executable, для add_executable вы, вероятно, должны использовать set_target_properties. – Maurice Gilden 16 May 2010 в 12:13

Единственным обходным решением, которое я нашел до сих пор, является использование remove_definitions:

remove_definitions(-DBLOCK_SIZE=3)
add_definitions(-DBLOCK_SIZE=32)

Выполнение этого перед тем, как кажется, что помогает цель.

0
ответ дан Nils 22 August 2018 в 18:09
поделиться
Другие вопросы по тегам:

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