Skip to main content
QUICK REVIEW

[논문 리뷰] The YAP Prolog System

Vı́tor Santos Costa, Luı́s Damas|arXiv (Cornell University)|2011. 02. 18.
Logic, programming, and type systems참고 문헌 36인용 수 4
한 줄 요약

이 논문은 고성능 로직 프로그래밍 환경인 YAP Prolog 시스템을 제시한다. 이 시스템은 C 기반 에뮬레이터, 런타임 액세스 패턴에 기반한 동적 Just-in-Time 색인 메커니즘(JITI), 그리고 or-병렬 처리와 테이블링을 통합한 기능을 통해 효율성을 향상시킨다. 이 시스템은 특히 생물정보학 및 의미 웹 처리 분야에서 데이터 집약적인 응용 프로그램에서 경쟁 가능한 성능을 달성한다.

ABSTRACT

Yet Another Prolog (YAP) is a Prolog system originally developed in the mid-eighties and that has been under almost constant development since then. This paper presents the general structure and design of the YAP system, focusing on three important contributions to the Logic Programming community. First, it describes the main techniques used in YAP to achieve an efficient Prolog engine. Second, most Logic Programming systems have a rather limited indexing algorithm. YAP contributes to this area by providing a dynamic indexing mechanism, or just-in-time indexer (JITI). Third, a important contribution of the YAP system has been the integration of both or-parallelism and tabling in a single Logic Programming system.

연구 동기 및 목표

  • 대규모 데이터 처리에 특화된 다양한 워크로드에서 효율성을 유지하는 고성능 Prolog 엔진을 설계하는 것.
  • 대규모 데이터베이스에서 성능에 심각한 영향을 미칠 수 있는 Prolog의 인자 순서 민감성 문제를 해결하는 것.
  • or-병렬 처리와 테이블링과 같은 고급 기능을 하나의 통합 Prolog 시스템에 통합하여 확장성과 표현력을 향상시키는 것.
  • 성능을 유지하면서 어셈블리어에서 C 기반 에뮬레이션으로의 이관을 통해 이식성과 유지보수성을 향상시키는 것.
  • SQL, R, ProbLog 및 PRISM와 같은 확률적 추론 시스템과의 상호운용성을 포함한 현대 프로그래밍 요구사항을 지원하는 것.

제안 방법

  • 최적화된 저수준 기법을 통해 성능을 유지하면서도 이식성과 유지보수성을 향상시키기 위해 어셈블리어 대신 C 기반 에뮬레이터를 채택하는 것.
  • 런타임 액세스 패턴에 기반해 클로즈를 동적으로 색인하는 Just-in-Time 인덱서(JITI)를 구현하여 수동적인 인자 재정렬의 필요성을 줄이는 것.
  • OPTYAP 엔진에서 테이블링과 or-병렬 처리를 통합하여 재귀적이고 비단조화적 논리 프로그램을 효율적으로 처리하는 것.
  • 항목 조작을 위한 깊이 우선 탐색 전략을 사용하고, 클로즈 검색 속도를 향상시키기 위해 WAM 모델에 부분항 색인을 추가하는 것.
  • 동적 컴파일링과 소유 변수 및 제약 조건의 효율적 처리를 지원하는 유연한 컴파일러 및 런타임 시스템을 설계하는 것.
  • 표준화된 인터페이스를 통해 외부 시스템과의 원활한 상호운용성을 제공하여 데이터베이스 및 통계 도구와의 통합을 지원하는 것.

실험 결과

연구 질문

  • RQ1어떻게 Prolog 시스템이 다양한 아키텍처에서 이식성과 유지보수성을 유지하면서도 고성능을 달성할 수 있는가?
  • RQ2동적 색인 메커니즘이 Prolog 예측자에서 비최적의 인자 순서로 인한 성능 저하를 어느 정도 제거할 수 있는가?
  • RQ3or-병렬 처리와 테이블링이 성능이나 정확성을 희생시키지 않고 하나의 Prolog 엔진에서 효과적으로 통합될 수 있는가?
  • RQ4JITI와 테이블링과 같은 고급 기능의 통합이 실세계의 데이터 집약적 응용 프로그램에서 Prolog의 사용성에 어떤 영향을 미치는가?
  • RQ5Prolog 시스템은 의미 웹 및 확률적 추론과 같은 신규 분야에서 어떤 역할을 할 수 있으며, 이를 지원하기 위해 어떻게 확장될 수 있는가?

주요 결과

  • YAP의 C 기반 에뮬레이터는 수동 최적화된 어셈블리 코드 수준의 성능를 달성하며, 이식성과 유지보수성에 크게 기여한다.
  • Just-in-Time 인덱서(JITI)는 대규모 데이터 쿼리에서 전용 데이터베이스 관리자 수준의 성능을 달성하여 수동 최적화의 필요성을 제거한다.
  • YAP의 OPTYAP에서 or-병렬 처리와 테이블링 통합은 재귀적이고 비단조화적 프로그램의 효율적 실행을 가능하게 하며, 이 중 테이블링이 가장 널리 사용되는 확장 기능이다.
  • 의미 웹 및 생물정보학 워크로드에서 뛰어난 성능을 보이며, YAPTAB는 전용 시스템과의 경쟁력 있는 성능를 입증한다.
  • YAP는 확률적 논리 프로그래밍 분야의 핵심 연구 플랫폼이 되었으며, ProbLog 및 CLP(BN)와 같은 시스템을 지원하고 통계적 관계 학습 분야의 발전을 이끌고 있다.
  • 다른 Prolog 시스템에서는 테이블링과 같은 고급 기능의 도입이 아직 제한적이라는 점을 감안할 때, 협업 기반의 표준화와 라이브러리 공유의 필요성이 뚜렷하다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.