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