2013-08-07 2 views
2

주어진 행렬 1는, ..., B NgpuArray로 저장된 1 ...하는 N B는 I는 행렬을 C 을 계산할 I = A i * B i.병렬로 많은 gpuArray 행렬을 곱하는 방법은 무엇입니까?

모든 I 년대에는 크기가 같고, 모든 B I 년대 동일한 (가능한 서로 다른)의 크기이다.

n이 매우 크고 매트릭스의 크기가 비교적 작다고 가정하면 GPU에서 어떻게 빨리 처리합니까? CUDA 사용을 피할 수 있습니까?

+0

왜 그냥 곱하면 안되나요? 이미 GPU 배열로 가지고 있다면 그냥 곱하면됩니다. 질문을 정확하게 이해하지 못한다면 MATLAB은 다른 모든 것을 처리 할 것입니다. – MZimmerman6

+0

GPU 곱셈의 필요성은 무엇입니까? MATLAB의 표준 곱셈은 정규 행렬과 같이 매우 빠릅니다. 그것은 – MZimmerman6

+0

입니다. 문제는 n (행렬의 양)이 비교적 클 수 있고 각 행렬의 크기가 비교적 작을 수 있다는 것입니다. 그래서 똑 바른 길은 n에서 연속 일 것입니다. –

답변

2

MATLAB R2013b를 사용하는 경우 새 gpuArray pagefun 기능을 사용할 수 있습니다.

1

AB이 클래스 gpuArray 인 경우 다른 작업을 수행하지 않고도 C = A*B 작업이 GPU에서 수행됩니다. CUDA를 작성할 필요가 없습니다. 결과는 C이고 gpuArray이되며 로컬 작업 영역의 일반 배열 D으로 다시 가져올 수 있습니다 (D = gather(C)).

+0

고마워, 내가 명확하게 내 질문을 편집 - 내 n이 크고 각 매트릭스 크기가 작습니다. –

관련 문제