matrix-vector 코드의 수행시간 문제(fortran)
글쓴이: bjjeon / 작성시간: 금, 2013/06/28 - 4:02오후
"original code" do i=1,n tmp = 0.0 do k=ia(i),ia(i+1)-1 tmp = tmp + au(k)*solu(ja(k)) enddo r(i) = tmp enddo
"new code" do i=1,n do k=ia(i),ia(i+1)-1 solu2(k)=solu(ja(k)) enddo enddo do i=1,n tmp = 0.0 do k=ia(i),ia(i+1)-1 tmp = tmp + au(k)*solu2(k) enddo r(i) = tmp enddo
solu가 csr 포맷으로 되어 있는 matrix-vector 문제입니다. original code를 new code로 나누어 풀어보았는데
계산 시간이 훨씬 더 오래 걸리고 특히 solu2(k)=solu(ja(k)) 부분에서 시간이 오래걸립니다.
행렬 계산을 수행하는 것도 아니고 단지 csr 포맷의 solu(ja(k))를 1차원 배열 solu2(k)로 바꾸는 것인데 시간이
왜 더 오래 걸리는지 모르겠습니다. ㅠㅠ
Forums:
안하던걸 하니까 더 오래걸리는게 당연한거 아닌가요?
안하던걸 하니까 더 오래걸리는게 당연한거 아닌가요? 한번의 이중루프가 두번의 이중루프로 바뀌었으니까 두배 시간이 더 걸려도 이상하진 않죠. 루프안에서 하는 내용은 단순대입과 사칙연산 정도뿐으로 큰 차이가 없으니까요.
댓글 달기