здесь новичок в CUDA.
В моем коде я в настоящее время запускаю ядра много раз в цикле в коде хоста (потому что мне нужна синхронизирующая ставка блоки Ween). Поэтому я подумал, смогу ли я оптимизировать запуск ядра.
Мои запуски ядра выглядят примерно так:
MyKernel<<<blocks,threadsperblock>>>(double_ptr, double_ptr, int N, double x);
Итак, чтобы запустить ядро, очевидно, что какой-то сигнал должен пройти от ЦП к ГП, но я интересно, делает ли передача аргументов этот процесс заметно медленнее.
Аргументы к ядру всегда одни и те же, так что, возможно, я мог бы сэкономить время, скопировав их один раз, получить к ним доступ в ядре по имени, определенному
__device__ int N;
<and somehow (how?) copy the value to this name N on the GPU once>
] и просто запустите ядро без аргументов как таковых
MyKernel<<<blocks,threadsperblock>>>();
Ускорит ли это мою программу? Как лучше всего это сделать? AFAIK аргументы хранятся в некоторой постоянной глобальной памяти. Как я могу убедиться, что переданные вручную значения сохраняются в памяти, которая работает так же быстро или быстрее?
Заранее благодарим за любую помощь.