또는 Parfor 루프를 gpuArray 작업으로 변환하는 방법은 무엇입니까?Matlab - CPU 작업자 또는 GPU 프로세서에서 매우 유사한 작업
문제 : parfor를 통해 여러 CPU (작업자)에게 배포되는 대형 데이터 행렬에 대한 열 단위 작업.
data = 1000 x 200 matrix
[nrows, ncols] = size(data)
parfor ix = 1:ncols
workerData = data(:,ix);
colwiseResult(ix) = function(workerData,params);
end
어떻게 GPU를 효율적으로 활용할 수 있습니까? 문제가 1000x1000 행렬 (& 이상)
dataGPU = gpuArray(data);
까지 확장해야하지만, 특히 이후는 GPU에 열 현명한 작업을 수행하는 쉬운 방법을 찾을 수 없습니다. arrayfun이나 bsxfun과 같은 함수는 관심이없는 요소별로 작동합니다. 이들은 병렬 작업이므로 GPU에서 여러 프로세서를 사용하는 것이 이상적 일 수 있습니다 (&은 parfor 등을 사용하지 마십시오)
(실제로는 행렬 대각 화를 수행하는 우도 계산을 수행하고 있으며, 근로자 내부의 for 루프를 사용하여 열 벡터의 각 데이터 요소에 대해 누적 적으로 지수가 & 개임). 이 모든 작업에는 GPU가 오버로드되어 있음을 확인했습니다.)
감사합니다. 추가 정보를 제공해 드리겠습니다. –
와우, 이것은 내가 세부적인 세부 사항으로 제기 한 매우 구체적인 질문에 대한 대답이 아닙니다. 물론 Matlab Intros, help 등을 살펴 보았습니다. gpuArray 컨텍스트에서 arrayfun, bsxfun의 사용법에 대해 읽었을 때도 제가 질문에 제공 한 정보에서도 분명해야합니다. 어쨌든, 귀하의 시도에 감사드립니다. 2 Teslas c2050은 워크 스테이션입니다. 나는 일상적으로 병렬 계산을 수행하는 ~ 144 코어의 실행 클러스터를 가지고있다. 이 질문은 유스 케이스에 대해 매우 구체적이며, GPU가 적합한 지 아닌지 전반적인 논의는 NOT *입니다. – nahsivar