Есть ли способ скомпилировать Haskell для работы на сопроцессоре Xeon Phi?
Некоторые исследователи из Intel недавно сообщили о компиляторе Haskell Research ( это не является общедоступным, что делает их результаты практически невоспроизводимыми) и измерили Пробел (показывающий, что в некоторых случаях производительность Haskell превосходит C). Они описывают маршрут компиляции через промежуточный язык, который называется Pillar. (аналогично C--) и скомпилировать его в C, чтобы они могли использовать icc для создания объектного кода, исполняемого на Phi.
GHC поддерживает компиляцию в LLVM или напрямую генерирует собственный код (NCG). Насколько мне известно, нет ни NCG, предназначенного для Phi, ни бэкэнда LLVM для Phi. Имея доступ к icc, маршрут через C кажется возможным, однако я не уверен, насколько это реалистично в настоящее время (я думаю, что генератор кода C в GHC больше не поддерживается , то же самое верно и для бэкенда LLVM IR-to-C, поправьте меня, если я ошибаюсь).
Итак, на ум приходят три пути:
Скомпилируйте GHC в незарегистрированном режиме и скомпилируйте с
-fvia-c
, а затем с iccИспользуйте старую версию GHC для создания кода C, а затем используйте icc.
Используйте старую версию LLVM для перехода через GHC LLVM, затем сгенерируйте C из LLVM, а затем используйте icc
Какой маршрут наиболее жизнеспособный (почему/почему бы и нет)? Существуют ли другие возможности (я отклонил маршрут Pillar, поскольку такие инструменты, как pillar2c, недоступны (пока?) для общественности).
Связанный с этим вопрос касается совместимости Phi с x86 - кажется, что инструкции SSE/AVX не поддерживаются, и некоторый объектный код не запустится, если он скомпилирован, например. gcc или clang.
Обновление:
После разговора с некоторыми представителями Intel на конференции LLVM маловероятно, что они выпустят свой бэкэнд Phi LLVM. Однако следующее поколение Xeon Phi будет поддерживать AVX512.