2017-09-25 12 views
0

전체 시뮬레이션을 C++로 실행하고 결과를 R로 분석 한 Rcpp로 R 패키지를 만들었습니다. 이제는 내 기능을 프로파일 링하여 최적화 할 수 있어야하지만 R 프로파일 러는 어떤 함수가 C++ 함수 내부에서 발생하는지 구분할 수 없으며 함수가 R 내부에서만 실행될 수있을 때 C++ 프로파일 러를 실행하는 방법을 모르겠습니다.Rcpp 코드를 프로파일 링하는 방법 (리눅스에서)

지금까지 gperftools (questionstutorials)하지만 가이드가 불완전합니다 (내가 부족한 수준의 지식을 갖추고 있다고 가정하고 링크가 누락 된 경우). 그러므로이 질문.

  1. 설치 gperftools
  2. ProfilerStart ("myprof.log")를 추가 C++ 헤더에 gperftools/profiler.h을 포함한다 (내가 팩맨과 함께 추가/gperftools에서 설치) : 내가 어디에 있어요 여기 내가 원하는 것을 주위의 C++ 코드에서 ProfilerStop는() -lprofiler
  3. 실행 "$ CPUPROFILE ="myprof.log "R -f myscript.R"

  • 컴파일을 프로파일 링하는 현재 벽에는 gcc가 "정의되지 않은 심볼 : ProfilerStart"라고 알려주기 때문에 링크에 문제가 있다고 생각합니까?

  • +0

    음, 과거에 나를 위해 일한 내 사이트에 이전 slidedecks의 몇 같이 ... –

    답변

    0

    내가 처음으로 Makevars를 사용할 때 경험이 부족하여 연결 오류가 발생했습니다. # 4 단계에서 컴파일 할 때 사용되는 PKG_CXXFLAGS에 "-lprofiler"를 추가했습니다.이 때 컴파일 할 때 PKG_LIBS에 추가해야합니다. 나는 변화를 만들었고 이제는 프로파일 러가 잘 작동합니다. 이것은 지금 내 Makevars입니다 :

    PKG_CXXFLAGS += -Wall -pedantic -g -ggdb #-fno-inline-small-functions PKG_LIBS += -lprofiler CXX_STD = CXX11

    1

    저는 gperftools에별로 감명주지 않았습니다. 또한 계측 프로파일 러인 것처럼 보이며 샘플링 기반 프로파일 러는 사용하기가 쉽고 빠르게 실행될 수 있습니다. Intels VTune은 우수한 샘플링 기반 프로파일 러로, 교육용 사용자 인 경우 무료로 사용할 수 있습니다. 그렇지 않은 경우에도 조직에 이미 라이선스가있을 수 있습니다.

    gperftools 문제로 바꾸면 예, 링커 문제입니다. 관련 정보 (링크 명령? 컴파일 명령? 실제 오류 메시지)를 공유하지 않기로 결정 했으므로 더 이상 당신을 도울 수 없습니다.

    +0

    당신은 완전히 맞아, 난 정말 포함해야 내 Makevars 질문에. 사람들이 다른 프로파일 러를 완전히 추천 해줄 것으로 기대 했나? – mozsalles