CUDA имеет возможность компилировать код в режиме эмуляции, который поддерживается в предоставляемом ими файле .rules.
У меня есть код C # .NET 3.5 SP1, который вызывает собственную dll, используя DllImport,
Собственная dll скомпилирована через VS2008 с использованием nvcc, и ее функция состоит в том, чтобы передавать память из CUDA и в нее и вызывать ядра CUDA.
Когда ядра CUDA правильные, все работает нормально, но когда есть ошибка, я могу только перейти к коду до названия ядер и посмотреть параметры, которые они получают.
(Я включил отладку собственного кода в опциях отладки проекта запуска.)
Я попытался скомпилировать в режиме эмуляции, однако я получаю ошибку CUDA «смешанное выполнение устройства» при вызове хоста CUDA memcopy -> device.
Я попытался переключить alloc + dealloc + memcopy с их эквивалентными версиями не-CUDA,
но затем возникает та же ошибка при вызове ядер.
Что я сделал не так, пытаясь использовать режим эмуляции отладки?
P.S. Я попробовал это на Vista x64 SP1 + VS2008, с тем же решением, что и на x86, и на x64, ни один не работал в режиме эмуляции, оба работали в режиме без эмуляции.