BLAS dgemm의 LDA 인수 목적
Fortran 참조 구현 문서에는 다음과 같이 기술되어 있습니다.
* LDA - INTEGER.
* On entry, LDA specifies the first dimension of A as declared
* in the calling (sub) program. When TRANSA = 'N' or 'n' then
* LDA must be at least max( 1, m ), otherwise LDA must be at
* least max( 1, k ).
* Unchanged on exit.
단, m과 k를 지정하면 LDA를 도출할 수 있지 않을까요?LDA는 언제 n(또는 k)보다 클 수 있습니까?
BLAS의 LDA 파라미터는 선형 메모리에 배치되어 있는 매트릭스의 스트라이드입니다.조작하고 있는 매트릭스의 선행 치수보다 큰 LDA 값을 가지는 것은 지극히 유효합니다.LDA 값을 크게 사용하는 것이 편리하거나 필요한 일반적인 예로는 고밀도 매트릭스의 서브매트릭스 상에서 동작하고 있는 경우, 최적의 크기(캐시 라인 또는 GPU 메모리 트랜잭션 크기)의 라운드 배수로 스토리지를 패딩하거나 멀티프로세스로 로드밸런싱할 때 하드웨어 또는 알고리즘이 퍼포먼스의 이점을 제공하는 경우 등이 있습니다.예를 들어, 구현 작업을 수행합니다).
어레이 A와 B의 첫 번째 치수의 논리적 크기와 물리적 크기를 구분합니다.첫 번째는 사용하고 있는 어레이의 크기이고, 두 번째는 선언의 값 또는 사용된 메모리의 물리적 양입니다.Fortran은 컬럼 메이저 언어이므로 배열 요소의 위치를 계산하려면 마지막을 제외한 모든 인덱스의 선언 크기를 알아야 합니다."A(LDA,), B(LDB,), C(LDC,*)"의 FORTRAN 77 스타일 선언에 주목하십시오.어레이의 선언된 크기는 사용 중인 부분보다 클 수 있습니다.물론 더 작을 수는 없습니다.
LDA는 y스트라이드입니다.즉, 줄자 레이아웃에서는 요소 A[y,x]의 주소가 x+LDA*y로 계산됩니다.x-data LDA=xSize의 인접 라인 간에 공백이 없는 "충전된" 메모리 레이아웃.
언급URL : https://stackoverflow.com/questions/8206563/purpose-of-lda-argument-in-blas-dgemm
'programing' 카테고리의 다른 글
vuejs 구성 요소에서 작업을 디스패치할 때 vuex 알 수 없는 작업 유형 (0) | 2022.07.04 |
---|---|
페이지를 새로 고치지 않으면 소켓 IO가 작동하지 않음 - Vue js (0) | 2022.07.04 |
변환 시 Vuex 상태가 업데이트되지 않음 (0) | 2022.07.04 |
C++와 C의 조합 - #ifdef __cplus는 어떻게 동작합니까? (0) | 2022.07.04 |
size_t vs. uintptr_t (0) | 2022.07.03 |