댓글 리스트
-
작성자 가야인 작성시간12.04.27 안녕하세요.
fout << dev << "\t\t\t" << first_dev[i] << "\t\t\t" << second_dev[i] << endl; <-- 이부분에서 hotspot이 나올 수 있겠네요.
IO관련 된 부분에서 시간을 많이 잡아요.. 그래도. 어쩔 수 없이.적용해야 한다면.. 그대로 진행해야 겠죠.. ^^
혹시 openmp parallel for를 적용해 보셨나요? 데이터 레이싱이 나올 것 같은데요..
for문을 단순화 시키는 것도 하나의 방법인데요.. 혹시, advisor를 사용해 보셨나요?
(컴파일 할 수 있는 전체 소스가 공개가 가능하면 다른들분이 분석하기 좀 쉽게 진행 할 수 있을 것 같아요. )
-
작성자 가야인 작성시간12.05.11 안녕하세요. 이제서야 소스 코드를 보았습니다.
예를 했지만, fout << dev << "\t\t\t" << first_dev[i] << "\t\t\t" << second_dev[i] << endl; --> 이부분의 대부분의 CPU 시간을 잡고 있더군요.
I/O 부분을 있는 곳을 잘 못 병렬화 하면, 병렬화의 효과를 못 보고, 더 속도가 느려질 수 있습니다.
제가 이부분을 제외하고 간단한 실험을 했는데, 의외로 계산 소스 코드 부분 보다(for), 시리얼 부분의 시간이 많이 걸려서, 병렬화의 효과가 없었습니다.
여기 지면이 작으니, 정리가 되는데로 게시판에 다시 설명을 하도록 하겠습니다.