Я создал вспомогательную функцию GetDeviceSymbolAddress, которая получает устройство символ по константной ссылке и возвращает его значение. В моем случае он должен вернуть указатель функции.
Затем я передаю указатель функции ядру Cuda и вызываю его.
Однако я заметил, что если ядро Cuda определенный в другой компиляции (в другом файле .cu), адрес, возвращаемый GetDeviceSymbolAddress, отличается (и, вероятно, недействителен), и функция ядра не может его вызвать.
Вот пример:< /p>
test.chu:
Код: Выделить всё
#ifndef TEST_H
#define TEST_H
#include
#define SWITCH 1
using pfloat__fn_pvoid = float* (*)(const void*);
// Test and log Cuda errors
#define CUDA_CHECK(err) \
do { \
auto e = err; /* err might be a function call */ \
if (e != cudaSuccess) { \
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79286363/cudamemcpyfromsymbol-and-different-compilation-units[/url]
Мобильная версия