지난 몇 년 동안 컴파일러 최적화 기술의 새로운 기능은 무엇입니까?


14

데이터 흐름 및 제어 흐름 그래프를 최적화하고 특히 계산이 더 복잡합니다. 그러나 들여다 보는 구멍 최적화 분야의 최신 발명에 대해 아는 것도 흥미로울 것입니다.


2
논문 ( 슬라이드 )에서 나는 LLVM에서 콜 그래프 플래 튼을 논의하고 구현했습니다. 기본적으로 이것은 모든 코드를 병합하여 "프로세스"코드 개념, 콜 사이트 최적화 호출 규칙, 스택리스 실행 등과 같은 여러 가지 흥미로운 가능성을 허용하기 때문에 "함수"개념을 제거하는 인터 프로 시저 변환입니다.
CAFxX

@CAFxX : 슬라이드가 Open Office와 충돌했습니다. 대신 온라인 사진이 있습니까?
Yttrill


감사합니다. 그래서 볼 수 있었지만 그래프가 잘 보이도록 텍스트가 좋았습니다.
트릴

답변:


8

나는 그것이 얼마나 참신한 지, 또는 그것이 관심있는 부분에 너무 많이 있는지 확실하지 않지만, Hoopl 은 제어 그래프 정점에 대한 사실의 전파와 함께 제어 / 데이터 흐름 최적화를 모듈화하는 방법을 보여줍니다. 언어 및 특정 최적화.

그들은 간단한 최적화를 "슈퍼 최적화"로 구성하는 Lerner, Grove 및 Chambers의 2002 알고리즘을 참조합니다.


8

나는 최적화 패스 주문 문제에 대한 다른 접근법이 관련이 있기 때문에 평등 포화 기술이 적절하다고 생각합니다. 내 지식으로는, 그러나 본격적인 컴파일러의 구체적인 구현으로 아직 실용적이지 않았습니다. 다음과 같은 Proofs의 컴파일러 최적화 생성 도 관심이있을 수 있습니다.


6

검증 된 최적화 컴파일러에 약간의 부흥이있었습니다. Lerner의 논문 (이전 의견에서 언급 한 것) 외에도 Xavier Leroy가 이끄는 CompCert 프로젝트를 볼 수 있습니다 . 그들은 최적화를 기계 확인 가능한 증명으로 지정하여 멋진 일을했습니다 ( Coq 사용 ). 필자는 아직 논문을 읽지 않았지만 프린스턴 의 검증 된 소프트웨어 툴체인 프로젝트도이 분야에서 흥미로운 결과를 산출하는 것으로 보입니다.


1
우리는 CompCert : CerCo ( cerco.cs.unibo.it ) 와 유사한 프로젝트를 진행하고 있습니다. CompCert와 달리, 우리는 C의 큰 부분 집합에 대해 검증 된 구체적인 비용 보존 컴파일러를 생산하는 것을 목표로합니다 (CompCert는 소스 프로그램의 확장 속성이 컴파일에 의해 보존됨을 보여줍니다). 우리는 또한 컴파일러에서 약간 복잡한 루프 최적화뿐만 아니라 CompCert와 같은 "가벼운"최적화를 구현하고 있습니다. 물론 비용을 절약하는 것으로 검증해야합니다.
Dominic Mulligan

5

이중 FOR 루프에서 baz [i] + = force (foo [i], foo [j])는 (i, j)에 대해 독립적 인 결과를 가지며 (i, j)의 공간 채우기 곡선으로 호출을 재정렬합니다. 캐시 미스를 줄입니다.

"빈틈"은 아니지만 "무료"에 대한 캐시의 명백한 동작을 얻는 것이 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.