Перенос функций CUDA в dll

Существует одна очень интересная библиотека thrust, где реализованы, необходимые мне, функции сортировки.
http://code.google.com/p/thrust/

Проблема в том, что там все построено на шаблонах, которые в свою очередь написаны под CUDA runtime API. А мой код, весь на чистом driver API, который компилируется в один .cubin файл. Я думаю, может можно как-нибудь создать функции-обёртки над шаблонными, которые в свою очередь упрятать в dll, а dll уже подключать к моей программе? Будет работать? Боюсь, что убью дня 3 и в результате ничего не получится..

Forums: 

Вроде проблем быть не

Вроде проблем быть не должно.
Единственные видимые для меня места об которые можно споткнутся это:
1) Передача указателей на память устройства выделенных в одном типе, другому (есть ли вообще у вас такие места?). Конкретно с Cuda(в узком смысле этого слова) не работал, но что-то мне подсказывает что это место там реализовано по-человечески.
2) Проблемы связанные с двойной инициализацией, но они тоже маловероятны.

Перенос функций CUDA в dll,

Перенос функций CUDA в dll, на мой взгляд, наиболее рациональный. Я так и делал на vs2008, использовал сторонний плагин, который создавал заготовку для проекта. А на vs2010 этот плагин не ставится. Попытался сделать следующим способом:

1. Создал проект dll С++
2. В проекте "Настройки построения" включил CUDA 5.0
3. Добавил файл CUFWT.cu, и в свойствах "тип элемента" указал CUDA C/C++

Но при компиляции появляются ошибки:

Ошибка 1 error C1083: ═х фрх ё ю ъЁ√ рщы шё ю эшъ: F:/Alexsey/?????/Visual C#/CUDA/Wavlet/CUFWT/CUFWT.cu: Invalid argument F:\Alexsey\Архив\Visual C#\CUDA\Wavlet\CUFWT\c1xx CUFWT

Ошибка 2 error MSB3721: выход из команды ""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\bin\nvcc.exe" -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env --cl-version 2010 -ccbin "C:\Program Files\Microsoft Visual Studio 10.0\VC\bin" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" -G --keep-dir "Debug" -maxrregcount=0 --machine 32 --compile -g -DWIN32 -D_WINDOWS -D_DEBUG -D_USRDLL -D_WINDLL -D_UNICODE -DUNICODE -D_AFXDLL -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MDd " -o "Debug\CUFWT.cu.obj" "F:\Alexsey\Архив\Visual C#\CUDA\Wavlet\CUFWT\CUFWT.cu"" с кодом "2". C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\CUDA 5.0.targets 592 10 CUFWT

Потом я обнаружил такую же ошибку, если в приложение, даже то, которое создано средствами CUDA для vs2010 добавить новый файл *.cu.

Где, в каких настройках что нужно сделать, чтобы все работало как надо?

Нашел ответ на мой вопрос.

Нашел ответ на мой вопрос. Причина была в том, что в пути к проекту была папка на русском. В ошибке она обозначается как "?????". перенес проект в другое место и все стало компилироваться. Но если раньше я использовал заголовочный файл *.h в котором объявлял библиотеки которые будут импортироваться, и прикреплял его к файлу *.cpp, то сейчас все получилось только после того, как в модуле cu я эти библиотеки непосредственно объявил как импортируемые, т. е.:

extern "C" __declspec(dllexport) <тип> <название функции>(<параметры>)
{
<тело функции>
}

И обязательно указать extern "C", а не extern "C++". иначе библиотеку импортировать в C# почему-то не получается.