Установка постоянной памяти на GPU
setConstantMemory(kern,sym,val)
setConstantMemory(kern,sym1,val1,sym2,val2,...)
setConstantMemory(kern,sym,val) устанавливает постоянную память в ядре CUDA kern с именем символа sym для хранения данных в val. val может быть любым числовым массивом, включая gpuArray. Ошибка команды, если именованный символ не существует или если он недостаточно велик, чтобы содержать указанные данные. Допускается частичное заполнение константы.
Автоматическое преобразование типа данных для постоянной памяти отсутствует, поэтому важно убедиться, что предоставленные данные имеют правильный тип для заполняемого символа постоянной памяти.
setConstantMemory(kern,sym1,val1,sym2,val2,...) устанавливает несколько константных символов.
Если KERN представляет ядро CUDA, файл CU которого содержит следующие определения:
#include "tmwtypes.h" __constant__ int32_t N1; __constant__ int N2; // Assume 'int' is 32 bits __constant__ double CONST_DATA[256];
их можно заполнить данными MATLAB следующим образом:
KERN = parallel.gpu.CUDAKernel(ptxFile,cudaFile); setConstantMemory(KERN,'N1',int32(10)); setConstantMemory(KERN,'N2',int32(10)); setConstantMemory(KERN,'CONST_DATA',1:10);
или
setConstantMemory(KERN,'N1',int32(10),'N2',int32(10),'CONST_DATA',1:10);