Я использую matlabGPU вычисления с функцией arrayfun
и gpuArray
объекта, чтобы сделать поэлементную функцию на элементах переменной gpuArray
на моей функции:Matlab GPU arrayfun общего переменной
[ output ] = MyFunc(element, SharedMatrix)
//
// Process element with Shared Matrix
//
end
и мой код как так:
SharedMatrix = magic(5000); %Large Memory Object
SharedMatrix = gpuArray(SharedMatrix);
elements = magic(5);
gpuElements = gpuArray(elements);
//Error on next line, SharedMatrix object must be a scaler.
result = arrayfun(@MyFunc,gpuElements,SharedMatrix);
Я слышал, что глобальные переменные не могут быть использованы в GPU вычислений.
Есть ли способ сделать это с помощью arrayfun
?
Вы должны преобразовать SharedMatrix в gpuArray, а также. –
Даже если бы я это сделал, он обрабатывал элемент по элементу не как целую матрицу. И он должен быть с той же размерностью, что и * gpuElements * matrix –