2011-07-28 5 views
3

표준 매트릭스 추가 알고리즘의 효율성을 어떻게 향상시킬 수 있습니까?표준 매트릭스 추가 알고리즘의 효율성을 어떻게 향상시킬 수 있습니까?

매트릭스는 2D 어레이로 표시되고 순차적으로 추가됩니다.

+0

C++로 전환하고 Eigen : – rubenvb

+0

가능한 복제본 [표준 매트릭스 곱셈 알고리즘의 효율성 개선] (http://stackoverflow.com/questions/6900711/improving-the-efficiency-of-standard-matrix- 곱셈 알고리즘) – QuantumMechanic

답변

2

모든 코드를 읽지는 않을 것입니다. 보시다시피이 부분은 추가 부분입니다.

for(i=0;i<r1;i++) 
    for(j=0;j<c1;j++) 
     C[i][j]=A[i][j]+B[i][j]; 

복잡성을 개선 할 수 있다고 생각하지 않습니다. i++ 대신 ++i을 수행하거나 루프 순서 등을 변경하는 것과 같은 다른 유형의 미세 최적화와 관련하여 - 나는 성능 병목 현상이 있음을 보여주는 프로파일 러를 실행할 때까지는 이러한 사항에 신경 쓰지 않아야한다고 생각합니다. 당신이 올바른 순서로 루프에 대한 두 가지를 얻을로 조기 최적화를 너무 오래, 모든 악의 :

+2

+1 "모든 악의 뿌리" – Constantinius

+1

잘, 당신은 나중에 그것을 고칠 필요가 없도록 루프의 순서에 대해 생각할 수 있습니다. 2 초 이상 걸리지 않아야합니다. 또한 OP는 효율적인 계산에 대해 * 구체적으로 질문했습니다. –

+1

생성 된 ASM 코드를 검사했는데 읽는 것이 좋지 않지만 SIMD 명령어가 나에게 보이지 않으므로 큰 매트릭스에서는 명확한 해결책이 아닙니다. –

0

루프의 순진 이중 휴대용 코드에 대한 최적의 꽤 가까이의 루트입니다 기억하십시오. 최상의 성능을 얻으려면 메모리에 순차적으로 액세스해야합니다.

루프를 풀 수도 있지만 성능에 별다른 차이가 없습니다.

최상의 성능을 원하는 경우 직접 쓰지 말고 대신 자신의 플랫폼에 맞게 BLAS을 사용하십시오.

-2

CPU 대신 GPU를 사용하여 집중적 인 작업을 수행 할 수 있습니다. 이것을 위해 AMP를 사용할 수 있습니다.

+0

SSE는 GPU가 아닌 CPU에 있습니다. GPU는 상당히 빠를 수 있지만 SSE로는 얻을 수 없습니다. –

+0

사실. 내 잘못, AMP는 GPU를 사용하고 있습니다. – cprogrammer

+0

AMP를 이미 사용할 수 있습니까? – Bart

관련 문제