2011-10-16 5 views
9

저는 몇 가지 계산을하고 있으며 다른 BLAS 구현의 힘과 약점에 대한 분석을하고 있습니다. 그러나 나는 문제에 직면했다.blas를 사용하여 최적의 방법으로 행렬을 조 변경하는 방법은 무엇입니까?

cuBlas를 테스트 중이므로 GPU에서 linAlg을 사용하는 것이 좋은 생각 인 것처럼 보이지만 한 가지 문제가 있습니다.

컬럼 메이저 포맷을 사용하는 cuBlas 구현은 결국 내가 필요로하는 것이 아니기 때문에 BLAS를 행렬 변환 할 수있는 방법이 있는지 궁금합니다.

+1

".... 결국이게 아니야 .....". 몇 마디도 못보고 있니? – talonmies

+2

CUDA 5.0부터 cuBLAS는 행렬 전치를 수행하는 매우 효율적인 루틴 인'cublas geam'을 가지고 있습니다. 이 솔루션을 구현하고 Thrust를 사용하여 행렬 전치와 성능을 비교하는 전체 코드는 [CUDA에서 행렬을 이항하는 가장 효율적인 방법은 무엇입니까?] (http://stackoverflow.com/questions/15458552/what-is- 가장 효율적인 방법 - 트랜스 포스 - 매트릭스 - 인 - 쿠다/21803459 # 21803459). – JackOLantern

답변

10

BLAS에는 매트릭스 전치 루틴이 내장되어 있지 않습니다. CUDA SDK에는 전치 수행을위한 최적의 전략을 설명하는 논문과 함께 매트릭스 전치 예제가 포함되어 있습니다. 가장 좋은 전략은 CUBLAS의 행 주요 입력을 호출의 변환 입력 버전과 함께 사용하고, 다음으로 주요 계산 열에서 중간 계산을 수행 한 다음 나중에 SDK 전치 커널을 사용하여 조인 연산을 수행하는 것입니다.


CUBLAS는 GPU 메모리에 매트릭스 전위를 수행 할 수 있고 당신이 사용하는 어떤 아키텍처에 대한 최적으로 간주되어야한다 CUBLAS 버전 5, geam에서 전치 루틴을 추가 한 추가 편집.