CUDA: Передача аргументов ядру сильно замедляет запуск ядра?

здесь новичок в 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 аргументы хранятся в некоторой постоянной глобальной памяти. Как я могу убедиться, что переданные вручную значения сохраняются в памяти, которая работает так же быстро или быстрее?

Заранее благодарим за любую помощь.

6
задан karlphillip 30 June 2011 в 17:00
поделиться