런타임 알고리즘 전문화

Run-time algorithm specialization

컴퓨터 과학에서 런타임 알고리즘 전문화는 특정 종류의 값비싼 연산 작업에 대한 효율적인 알고리즘을 만드는 방법론이다. 방법론은 자동화된 정리 증명 분야에서 비롯되며, 보다 구체적으로 뱀파이어 정리 프로베라 프로젝트에서 유래한다.

그 아이디어는 프로그램 번역을 최적화하는데 부분적인 평가의 사용에서 영감을 받았다. 정리 프로버의 많은 핵심 연산은 다음과 같은 패턴을 보인다. 의 값이 여러 값에 대해 고정되어 있는 상황에서 l g 을(를) 일부 알고리즘으로 실행해야 한다고 가정해 보십시오 이를 효율적으로 수행하기 위해 l }의 전문화를 찾을 수 있다. l n1}에 대한 l 을(를) 실행하는 것은 ( ) 을(를) 실행하는 것과 같다

The specialized algorithm may be more efficient than the generic one, since it can exploit some particular properties of the fixed value . Typically, can avoid some operations that would have는 이러한 특정 매개 변수 에 대해 중복된 것으로 알려진 경우, 특히 롤링 해제 및 재귀 등에 대해 참 또는 거짓인 일부 테스트를 식별할 수 있다

부분평가와의 차이

런타임 전문화와 부분 평가의 주요 차이점은 이(가) 전문화된 의 값이 정적으로 알려져 있지 않기 때문에 런타임에 전문화가 이루어진다는 것이다.

중요한 기술적 차이도 있다. 일부 프로그래밍 언어에서 코드로 명시적으로 표현되는 알고리즘에는 부분 평가가 적용된다. 런타임에는 l 을(를) 구체적으로 표현할 필요가 없으며 전문화 절차를 프로그래밍할 때 만 상상하면 된다. 가 필요한 것은 전문화된 a l A 의 구체적인 표현이다 이것은 알고리즘을 전문화하기 위한 어떤 보편적인 방법도 사용할 수 없다는 것을 의미하기도 하는데, 이는 부분적인 평가가 보통이다. l g 의 모든 특정 알고리즘에 대해 전문화 절차를 프로그래밍해야 한다 그렇게 하는 것의 중요한 은 l {\ A{\A}의 표현을 이용하는 강력한 애드혹 기술을 사용할 수 있다는 것이다. 그리고 는) 보편적 전문화 방법으로는 손쓸 수 없는 것이다.

컴파일을 통한 전문화

전문 알고리즘은 해석할 수 있는 형태로 표현되어야 한다. 많은 상황에서 으로 l 을(를) 연속해서 많은 값 에 대해 계산하려고 할 때 는 l A {\ {alg을(를) 특수 추상기계의 코드로, 우리는 흔히 (를) 편찬한다고 말한다. 그러면 코드 자체는 추상적인 기계의 지시의 의미에만 의존하는 대답을 보존하는 변환에 의해 추가로 최적화될 수 있다.

추상기계의 지시사항은 보통 기록으로 나타낼 수 있다. 이러한 레코드의 한 필드는 명령 유형을 식별하는 정수 태그를 저장하며, 다른 필드는 명령의 의미론에서 점프를 요구하는 경우, 예를 들어 라벨을 나타내는 다른 명령어에 대한 포인터를 저장하는 데 사용될 수 있다. 코드의 모든 지시사항은 배열, 목록 또는 트리에 저장할 수 있다.

해석은 지시사항을 어떤 순서로 가져오고, 지시사항의 유형을 식별하고, 이 유형과 관련된 조치를 실행함으로써 이루어진다. C 또는 C++에서는 스위치 문을 사용하여 일부 작업을 다른 명령 태그와 연결할 수 있다. 현대의 컴파일러는 대개 배열의 -th 셀에 i 값에 해당하는 문 주소를 저장함으로써 좁은 범위의 정수 레이블로 스위치 문을 컴파일한다. 작은 정수 간격에서 명령 태그의 값을 취함으로써 이것을 이용할 수 있다.

데이터 및 알고리즘 전문화

A의 많은 인스턴스가 장기 저장을 위한 이며, g(A , ){\{\의 호출이 예측 불가능한 순서로 B{\로 발생하는 상황이 있다. For example, we may have to check first, then , then , and so on. 이러한 상황에서는 과도한 메모리 사용으로 인해 컴파일을 포함한 본격적인 전문화가 적합하지 않을 수 있다. 그러나 우리는 A와 함께 또는 대신 저장할 수 있는 A 대해 콤팩트한 전문 표현 A을(를) 찾을 수 있다 또한 이러한 표현에 작용하는 l {\algprimeprimeprimeprimeprim l (, ) 에 대한 모든 통화는 동일한 작업을 더 빨리 수행하도록 ( , ) 로 대체된다.

참고 항목

참조

추가 읽기

  • A. 리아자노프와 A. Voronkov, "기간 주문 제약의 효율적인 확인", Proc. IJCAR 2004, 인공지능 3097, 2004(비교적이지만 자급자족적인 방법 설명)
  • A. 리아자노프와 A. Voronkov, 표준 관계 경로 인덱싱, 정보 및 계산을 통한 효율적인 인스턴스 검색, 199(1-2), 2005(방법의 다른포함)
  • A. 리아자노프, "효율적인 정리 구현", 박사 논문, 맨체스터 대학, 2003(방법많은 예에 대한 가장 포괄적인 설명 포함)