2013-04-18 3 views
0

하나의 함수 내에서 루프가 많은 C/C++ 프로그램을 변경해야합니다. 나는 msut cuda 기능을 추가한다.루프 프로파일 링을 만드는 가장 좋은 방법

변경을 시작하기 전에 발견 된 모든 루프를 수행하고 싶었습니다. 하지만 정확히 어떤 프로파일 링 프로그램을 찾지 못했습니다. 그게 최선의 방법입니다. 나는 리눅스에. 해결책이 있다면 알려줘. 여기

당신은 내가 원하는 정확히 무엇을 만드는 사람 도구의 예를 찾을 수 있습니다하지만 난 그것을 발견하지 않았거나 뭐 그런 : http://carbon.ucdenver.edu/~dconnors/papers/wbia06-loopprof.pdf

+0

루프가 포함 된 함수를 프로파일 링하지 않는 이유는 무엇입니까? 그들은 (잘하면) 루프 자체보다는 훨씬 많은 코드를 포함하고 있지 않습니까? –

+0

gprof (cpmiling을 위해 gcc를 사용한다고 가정)를 이미 살펴 보셨습니까? – ogni42

+0

코다는 하나의 기능을 갖고 있기 때문에이 기능에는 많은 루프가 포함되어 있습니다. @ ogni42 그래, 내가 gprof 봐하지만 출력이 exaclly 내가 wan't되지 않습니다. – volty41

답변

1

내가 을 사용하고, 코드의 대부분을 보내는 곳을 파악 때가됐다. 일단 당신이 기능이나 기능의 일부를 확인하면, 아마도 끝났을 것입니다. 함수에서 "가장 무거운"명령어가 무엇인지 정확하게 이해하려면 특정 루프에 대해 장기 실행 테스트 케이스가 필요하므로 프로파일 러가 루프의 각 명령어 (또는 대부분의 명령어)에 대해 충분한 데이터를 얻을 수 있습니다. 그러나 코드를 다른 기술로 대체하려는 경우 지침으로 실제로 프로파일 링하는 것은 적절하지 않을 것입니다. 너무 많은 오버 헤드가 있기 때문에 몇 줄의 코드 중 하나의 루프를 대체하면 많은 도움이 될 것 같지 않습니다. 대신, 더 큰 블록을 가져 와서 CUDA로 옮기고 싶습니다.

관련 문제