2017-12-19 4 views
7

이것은 어리석은 질문 일 수도 있습니다. PGO (또는 ATLAS 또는 FFTW도 그렇다고 생각합니다)으로 파이썬과 같은 자체 튜닝을 구축하면 컴퓨터가 유휴 상태 여야합니다 (측정을 방해하지 않아야합니까?) 또는 운명을 재생 시간을 전달할 수 있습니까?프로파일 유도 최적화를 사용하여 Python을 빌드 할 때 컴퓨터를 그대로 두어야합니까?

파이썬 소스 배포판에서 링크 된 README는 언급하기에는 너무 사소한 것으로 간주되는 것처럼 보이지만, 나는 진정으로 확신 할 수 없다.

+2

Doom은 CPU를 많이 먹지 않아도 괜찮습니다. –

+0

의심의 여지가 있지만, 미안보다 안전합니다. 다른 컴퓨터에서 재생하십시오. –

+0

들어가서 알아보십시오. ;-) –

답변

3

PGO 측정을 수행하는 동안 컴퓨터에서 수행 한 작업으로 인해 최적화 결과에 영향을주지 않아야합니다. PGO가하는 일은 측정을 사용하여 주어진 데이터 세트에 대한 코드에서 핫 경로를 찾아이 정보를 사용하여이 데이터 세트에 대해 가능한 한 빨리 프로그램을 작성하고 어떤 경로가 뜨겁지 않고 어떤 경로가 다른 프로그램과 독립적인지를 확인하는 것입니다 컴퓨터에서 실행 중입니다.

비트를 설명하기 위해 코드를 최적화 할 때 트레이드 오프가 있습니다. 개선 된 부분은 코드의 일부분에서 더 높을 것이고 사용되는 코드 변환과 적용되는 부분에 따라 더 낮을 것입니다. 보다 나은 최종 결과를 얻으려면 자주 실행되는 코드 (컴파일러 용어로는 핫 코드)가 적고 코드 실행 빈도를 줄이면서도 (콜드 코드) 실행하는 것이 좋습니다. 일반적으로 경험적 방법 세트는 프로그램의 이러한 뜨거운 부분을 식별하고 이러한 부분을 최대한 빨리 만드는 방식으로 최적화를 적용하는 데 사용됩니다. 이 방법의 문제점은 경험적 방법이 프로그램이 실제로 어떻게 사용되는지에 대해서는 알지 못하고 핫 코드를 차가운 것으로 잘못 식별 할 수 있다는 것입니다.

프로필 유도 최적화 (PGO)는 컴파일러가 실제 실행 데이터를 사용하여 코드의 최신 부분을 찾는 데 도움이되는 방법입니다. 첫 단계로 컴파일러에게 코드가 실제로 실행되는 방식을 측정하는 프로그램의 인스 트루먼 테이션 된 버전을 빌드하도록 지시합니다. 일반적으로 루프의 반복 횟수를 계산하는 카운터와 if 문에서 선택된 분기가 추가됩니다. 두 번째 단계는 계측 된 프로그램을 실제 데이터로 실행하는 것입니다. 실행이 끝나면 프로그램은 추가 된 모든 카운터의 값을 출력하고 카운터를 코드와 일치시킴으로써 프로그램의 어느 부분이 뜨겁고 (높은 숫자) 냉 (낮은 숫자)인지 확인할 수 있습니다. 마지막으로 프로그램은 컴파일되지만 이번에는 프로그램 프로필과 함께 기각됩니다. 이는 컴파일러가 어떤 부분이 더 빠르며 느려지는지 추측 할 필요가 없어 프로파일에서 찾을 수 있다는 것을 의미합니다.

+0

감사합니다, @ Johan에게 답변 해주세요. 나는 너의 전문 기술을 존경한다. 그러나이 경우에 약간 익히고 컴파일러가 아닌 전문가에게 면직 기회를 줄 수 있습니까? 어쩌면 "핫"이 실제로 의미하는 것과 그 문제에 대한 "경로"에 관한 한 줄 또는 두 줄일까요? 나는 기술적으로 물어 보지 않았다는 것을 알고 있습니다. 그러나 누군가를 분명히 알게되면 약간의 깨달음을 요구하지 않는 것이 부주의합니다. –

+0

@PaulPanzer PGO에 대한 설명을 추가했습니다. 그래도 불분명하다면 알려주세요. – Johan

+0

이제 답변에 만족합니다. 재미 있고 유익한. 고맙습니다! –

관련 문제