저는 CUBLAS/CUDA 프로그래밍을 시작했습니다. 저는 주로 행렬과 벡터 연산을 사용합니다. 나는 CUBLAS에서 사용 된 벡터의 방향에 대해 매우 혼란 스럽다. 그것은 행과 열 벡터 사이에 차이가없는 것 같습니다. 따라서 레벨 2 함수를 사용하여 행렬에 벡터를 곱하면 벡터의 방향을 어떻게 지정할 수 있습니까? 항상 열 벡터로 취급됩니까? 열 벡터 (nx1)를 행 벡터 (1xm)에 곱하여 행렬 (nxm)을 만들려면 항상 행렬로 취급하고 곱셈을 위해 레벨 3 함수를 사용해야합니까?CUBLAS의 행/열 벡터에 혼란이 있음
또한 트러스트를 사용하여 벡터를 생성하므로 추력 벡터 (n 요소)를 cublasCgemm에 전달하여 1xn 또는 nx1 행렬 (행 또는 열 벡터)을 형성하면됩니다. cUBLAS_OP_N으로 cublasOperation_t를 설정하면 벡터가 1xn 또는 nx1 벡터로 취급됩니까?
감사합니다.
도움이됩니다. 나는 cublasDger가 내가 필요한 것이라고 생각한다. 그러나 저장 형식에 대해 매우 혼란 스럽습니다. CUBLAS 사용에 대한 소개를 읽었습니다. 그것은 C가 포트란과 다른 저장 포맷을 가지고 있다고 말했다. 그래서 C 형식으로 저장하는 C (mxk) = A (mxn) x B (nxk)를 곱하면 cublasDgemm에 넣어야하는 주요 차원은 무엇입니까? – user1285419
당신은 내 대답에 관심이있을 수 있습니다 [여기] (http://stackoverflow.com/questions/18252526/matrix-multiplication-giving-wrong-output/18292753#18292753) C와 CUBLAS의 GEMM를 사용하여 완전히 일 예를 제공하는 스타일 2D 배열. –
은 키트에 _CUDA Documentation_ [CUBLAS/데이터 레이아웃 (http://docs.nvidia.com/cuda/cublas/index.html#data-layout) CUBLAS 라이브러리는 기존 포트란과 최대한 호환성을 열 주요 스토리지를 사용한다고 환경. 또한 제안되어 있습니다 : _ 기계적으로 C로 포팅 된 Fortran 코드의 경우, 루프를 변환 할 필요가 없도록 1 기반 인덱싱을 유지할 수도 있습니다. 따라서 BLAS에 관해서는 컬럼 - 주요 스토리지 (Fortran) 포맷을 선택하는 것이 현명한 선택입니다. 그렇지 않으면 cublasDgemm을 호출하기 전에 모든 행렬을 C에서 Fortran으로 변환해야합니다. – ztik