많은 Norms, Dot Products 및 가장 중요한 Matrix Vector 곱셈을 수행해야하는 어플리케이션이 있습니다.BLAS 2 용 Fortran vs
매트릭스 및 벡터는 거대한입니다. 매트릭스 치수는 100000x100000
루프 구조로 경향이되어 있습니다 : 나는 현재 인텔 MKL과 인텔 포트란을 사용하고
while(condition)
/* usually iterations=dimension of matrix, so around 1 million iterations are *at least* required (if not more) */
matrix-vector multiplication
3 dot prods
2 norms
. Intel MKL을 사용하는 Intel C의 코드를 다시 작성합니까? 누구도 DGEMV의 벤치 마크를 수행하지 않았습니까? 코드를 다시 작성하는 것은 큰 어려움이 있지만 이유를 알았다면 다시 작성할 수 있습니다.
EDIT : I misspoke : 행렬 크기는 백만 개가 아닙니다. 꽤 심각한 오류 : |
그렇습니다. 행렬 은 밀도가 높고 밀도가 높기 때문에입니다. 또한 대칭이 아니며 양의 확정적도 아닙니다. 내 알고리즘은 QMR의 수정 된 버전입니다.
4000GB 밀도 매트릭스로 작업하고 계십니까? 좀 더 자세히 알려주세요 .... – talonmies
1x1M 매트릭스의 복식은 8TB (8,000GB)의 메모리가 필요하다는 것을 알고 계실 것입니다. 조밀 한 매트릭스가 정말로 필요하다고 확신합니까? 귀하의 알고리즘은 행렬 - 벡터 곱을 필요로하는 전형적인 itarative linear algebra 알고리즘처럼 들립니다. 나는 당신의 행렬이 표준 BLAS 루틴의 일부가 아닌 특별한 데이터 구조가 존재하는 드문 드문 구조를 가지고 있다고 확신한다. 이는 언어 전환으로 얻을 수있는 작은 속도 향상 (있는 경우)을 제공하는 대신 O (n^3)에서 O (n^2)로 코드를 가속화하기 때문에 최적화를 찾는 첫 번째 포인트가됩니다. –
인텔 C는 무엇입니까? ISO C99 또는 다른 표준 언어를 사용해야합니다. Intel 직원으로 써서 Intel을 반대하지는 않습니다 .- – Jeff