2014-03-07 9 views
18

Xenon Phi 보조 프로세서에서 Haskell을 컴파일하도록 컴파일 할 수 있습니까? 인텔Xeon-Phi에서 Haskell 실행

일부 연구자들은 최근과 Haskell Gap이 (어떤 경우에는 하스켈 성능이 C를 능가 표시) 측정 (즉, 그 결과는 본질적으로 재현 불가능하게하는, 공개되지 않음) Haskell Research Compiler 에보고했다. 이들은 Pillar (C--과 유사)이라는 중간 언어를 통해 컴파일 경로를 설명하고 C로 컴파일하여 icc을 사용하여 Phi에서 실행 가능한 개체 코드를 만듭니다.

GHC는 LLVM에 대한 컴파일을 지원하거나 직접 원시 코드 (NCG)를 생성합니다. 내가 아는 한, Phi를 사용할 수있는 NCG도없고, Phi의 LLVM 백엔드도 없습니다. icc에 대한 액세스 권한이있는 경우 C을 통한 경로가 가능할 수 있습니다. 그러나 현재 현실적인 상태인지는 확실하지 않습니다. GHC의 C 코드 생성기는 더 이상 지원되지 않으며 LLVM IR-에 대해서도 마찬가지입니다. -C 백엔드, 내가 틀렸다면 나를 바로 잡습니다.) 다음 등록되지 않은 모드

  1. 컴파일 GHC 및 -fvia-c 다음 ICC

  2. 사용 이전 GHC 버전으로 컴파일 C 코드를 생성하고 :

    그래서 세 가지 노선 마음에 와서 icc

  3. 대부분의 가능한 어느 경로 ICC

을 사용 후 다음 GHC LLVM을 통해 이동 LLVM에서 C를 생성하고 이전 LLVM 버전을 사용 (왜/왜)? 다른 가능성이 있습니까 (필자는 pillar2c과 같은 도구가 공개적으로 제공되지 않았기 때문에 필라 경로를 기각했습니다).

관련 질문은 파이의 x86 호환성에 대한 것입니다. SSE/AVX 명령어가 지원되지 않는 것 같고, 예를 들어 컴파일 된 경우 일부 오브젝트 코드가 실행되지 않는 것 같습니다. gcc 또는 clang.

업데이트는 :

LLVM 회의에서 일부 인텔 사람에게 채팅 후, 그들은 그들의 피 LLVM 백엔드를 발표 할 예정 같지는 않다. 그러나 차세대 제온 피 (Xeon Phi)는 AVX512를 지원할 예정이다.

답변

1

하스켈을 C를 통해 컴파일하면 그 C 코드를 직접 작성할 수 있기 때문에 결과가 C보다 빠르지 않습니까? 귀하의 질문에 당신이 재현하려는 프로젝트가 다른 언어로 컴파일됩니다.

그래서 사용 가능한 툴링이 당신이하고 싶은 일을 수행하기에 충분하다고 확신하지 못합니다. 미안합니다.

+4

관용어 C 프로그램에서 생성 된 어셈블러는 기능 언어 (예 : 순도)의 일부 속성으로 인해 가능한 일부 최적화로 인해 하스켈에서 생성 된 어셈블러 (C를 통해조차도)보다 잠재적으로 덜 최적화됩니다. 내가 언급 한 프로젝트는 다른 중간 언어를 사용하지만 여전히 C와 icc를 통해 진행됩니다. C는 성능 이식성을 위해 실행 가능하지 않습니다 : 아키텍처는 매우 다양하고 빠르게 발전하므로 각 아키텍처에서 C 프로그램을 다시 작성해야합니다. (이상적으로는) 정교한 컴파일러가 해야 할 것 – jev