Если я хочу сделать цикл for, в котором есть расчет на основе кода CUDA, и есть куча константы, которую я не хочу передавать между CPU и графическим процессором каждый время, когда код выполняется, есть ли что-нибудь, что я могу сделать?константа сохранения в CUDA на графическом процессоре
Например:
float* a, *b, *c; // a, b, and c changes each time for loop is executed
int M, N; // M and N get their value prior to the for loop, and
// they do not change during the for loop
for (int n = 0; n < 100; n++)
{
CUDAComputation(a,b,c,M,N);
}
__global__ void CUDAComputation(double *a,
double *b,
double *c,
int M,
int N)
{
// cuda-based code
}
Я думаю, что может объявить глобальные переменные в .CU кода, который включает в свой файл заголовок, но затем M
и N
находятся в глобальной памяти, доступ которых к CUDA должен быть медленным ? Или я должен до cudamemcpy()
M
и N
каждый раз к ядру? Благодарю.
OK. Благодарю. Просто интуитивно понятно, что нет необходимости многократно пересылать то, что не меняется каждый раз. – Ono
Извините, код, который я включил, на самом деле не был тем, что я хотел поставить. Я обновил ответ. Если он выглядит хорошо сейчас, примите. –
@Christian, каждый вызов 'cudaMemcpyToSymbol()' примерно такой же накладной, как и сам запуск ядра. – ArchaeaSoftware