2014-12-17 4 views
2

Есть ли способ иметь более одного файла .cu в проекте VS2013: Community Edition?CUDA + Visual Studio 2013

Предположим, у меня есть main.cu, который служит точкой входа приложения и некоторым классом.cu, который содержит реализацию некоторых методов класса - можно ли это скомпилировать?

Прямо сейчас у меня есть проект, который выглядит именно так, и я получаю ошибки от Thrust, которые выглядят как те, которые обычно получают люди, когда они пытаются скомпилировать свой код с помощью компилятора g ++/microsoft, и все работает нормально, если я просто поставлю все в одном .cu - что означает, что сам код не является проблемой.

Моя установка CUDA также не является проблемой, так как я могу скомпилировать примеры просто отлично в VS, и если я использую nvcc.exe -c class.cu main.cu для компиляции моего собственного проекта, тогда он работает отлично, и я получаю .exe.

ошибка, что вышеупомянутый я сталкиваюсь в VS это:

Error 2 error C2027: use of undefined type 'thrust::detail::STATIC_ASSERTION_FAILURE<false>'  

Любые идеи? Заранее спасибо.

+0

linux или windows? Наверное, linux? –

+1

Да, в вашем проекте возможно иметь более одного файла .cu. У каждого файла могут быть свои собственные настройки, которые могут привести к тому, что ваш файл class.cu будет вести себя по-другому, в зависимости от того, как вы добавили его в проект. Предоставление * полного * компиляции вывода VS, который производит эту ошибку, ответит на некоторые вопросы. Используется ли 'nvcc' для компиляции class.cu? У вас есть соответствующие инструкции '# include' в вашем классе.cu для толчка? Используете ли вы CUDA 6.5? –

ответ

3

Ответ Роберта внес большой вклад в решение этой проблемы - точнее, это было его утверждение о том, что «у каждого файла могут быть свои собственные настройки, которые могут привести к тому, что ваш файл class.cu будет вести себя по-другому, в зависимости от того, как вы добавили его в проект ».

В конце концов, все, что мне нужно было сделать, это перейти к свойствам class.cu, а на вкладке «general» изменить поле типа элемента на CUDAC/C++ - по умолчанию он был установлен на обычный C/C++.

Теперь он скомпилирован и работает в VS2013 без проблем.

Смежные вопросы