2011-03-17 4 views
1

(성능 측면에서) CUDA의 매트릭스 연산을 구성하는 가장 좋은 방법은 무엇입니까? 예를 들어 C * C^(-1) * B^T + C, CB을 행렬로 계산하려고합니다.CUDA의 매트릭스 연산

곱셈, 전치 등에 대한 별도의 함수를 작성하거나 전체 식에 대해 하나의 함수를 작성해야합니까?

가장 빠른 방법은?

+0

힌트 : 곱셈의 경우 "동적 프로그래밍"이라고하는 알고리즘이 있습니다. MIT 알고리즘 소개에서 이러한 알고리즘의 예는 많은 행렬을 곱하기 위해 가장 빠른 순서를 선택하는 방법입니다. –

답변

0

답변은 매트릭스의 크기에 크게 의존한다고 생각합니다.

공유 메모리에 행렬을 넣을 수 있다면, 아마 하나의 블록을 사용하여 계산할 것입니다.이 모든 계산은 하나의 커널 안에 있습니다. 아마도이 계산이 그 부분 일뿐입니다. 바라기를, 만약 여러분이 더 많은 행렬을 가지고 있고 위의 방정식을 여러 번 계산해야한다면, 모든 GPU 컴퓨팅 성능을 활용하여 병렬로 처리 할 수 ​​있기를 바랍니다.

그러나 행렬이 훨씬 큰 경우 더 많은 블록을 계산해야합니다 (CUDA 매뉴얼에서 행렬 곱셈 예제 확인). 방정식의 다음 부분을 계속하기 전에 모든 블록에 의해 곱셈이 완료되었다는 보장이 필요합니다. 그렇다면 각 작업에 대해 커널 호출이 필요합니다.

1

CUBLAS 라이브러리를 사용하는 것이 좋습니다. 일반적으로 작성자가 직접 작성할 수있는 모든 것보다 더 많은 데이터와 신뢰할 수 있습니다. 또한 API는 수치 선형 대수학을위한 표준 라이브러리 인 BLAS 라이브러리와 비슷합니다.