2014-07-04 1 views
2

약간의 문제가있어서 약간의 도움이 필요합니다. 내 테스트의 일부로 일부 OpenMP 및 MPI 하이브리드 코드에서 gprof를 실행하고 싶습니다. gprof는 -pg 스위치로 gcc (또는 mpicc)를 컴파일 할 때 생성되는 바이너리 파일에 의존한다는 것을 이해합니다.-pg로 컴파일하는 gcc가 gprof에 필요한 바이너리를 생성하지 않습니다.

이 스위치를 추가하려고 시도했지만 내 컴파일이 성공하지만 (오류가보고되지 않음) 바이너리 파일은 생성되지 않지만 실행 파일은 정상적으로 생성됩니다. 또한 pthreads를 사용하는 훨씬 간단한 코드에서 동일한 결과를 얻으려고 시도했습니다.

아래 내용을 숙고 해주십시오.

gcc -pg --std=gnu99 -pthread -Wall -o pthreadsv0 pthreads.c 
+2

gprof 정보는'-pg' 옵션으로 컴파일 한 __after__ 프로그램을 __execute__ 할 때 생성됩니다. 프로그램을 실행 해보십시오. (당신은 (gprof) 프로그램의 실행 프로파일 링) – lornix

+0

@ lornix, 그것은 작동합니다! 그리고 당신이 그것을 언급 했으므로, 어떻게 생각하지 않았는지 궁금합니다. 정식으로 표시 할 수 있도록 답변을 공식적으로 추가하십시오. – kfkhalili

답변

1

gprof의 정보가 생성됩니다. 프로그램을 실행 해보십시오. (프로그램 실행 프로파일 링 (gprof))

-pg 컴파일 옵션은 프로그램 실행시 프로파일 링 정보를 작성하는 데 필요한 논리를 추가합니다. 원하는 경우 또는 필요한 경우 프로그램을 여러 번 실행하면 계측 코드가 로직 흐름 및 타이밍을 설명하는 데이터를 gmon.out 파일에 쓸 수 있습니다.

4

나는 당신이 언급 이진 파일은 프로파일 데이터 파일 (gmon.out)는 사실에 의심하고합니다 (-pg 플래그로 컴파일되어야한다) 프로그램을 실행할 때 생성됩니다. 프로그램을 실행하고 gmon.out 파일이 있는지 확인하십시오. 당신이 -pg 옵션을 사용하여 컴파일 후 프로그램을 실행

+1

통찰력을 주셔서 대단히 감사합니다. 그것은 효과가 있었고 나는 완전히 감사하고 있습니다. – kfkhalili

관련 문제