Различия между компиляторами open64 и llvm - PullRequest
4 голосов
/ 08 марта 2011

Может ли кто-нибудь указать на различия между open64 и llvm?

Я знаю, что open64 использует вихревой IR, который имеет 5 этапов и сильно отличается, так как каждый этап значительно снижает код для машины, в то время как у llvm есть один IR, который используется в оптимизации среднего уровня, позже понижается до целевых независимых инструкций. (дагс) и зависимые.

1) Вихрь также SSA,
2) и использует ли он виртуальные регистры,
3) делает open64 модульным дизайном, как llvm,
4) Легко ли разработать pass и подключить его к цепочке инструментов?

Оба компилятора преуспели в межпроцедурной оптимизации и преобразованиях среднего уровня, но
5) имеет ли open64 поддержку JITting или каких-либо видов динамического перевода, встроенных в фреймворк?

Похоже, что качество CG более или менее одинаково в обоих случаях.
6) Как насчет внешних интерфейсов, можно ли легко расширять прагмы или связывать новые без изменения Whirl IR (что является проблемой для SUIF)?

Насколько я могу судить, open64 широко используется во многих коммерческих и академических проектах (UPC, AMD, Nvidia, Tensilica), но похоже, что существует много его ветвей (растущих после 2003 года), и у каждого есть свои особенности. и ограничения. Более того, не существует фиксированного сообщества разработчиков и среды или поддержки, документация вряд ли существует в отличие от llvm, и просто нет простого направления, в котором движется компилятор.

Существуют также различия в лицензировании, когда llvm больше соответствует стилю лицензирования BSD, а open64 основана на GPL.

1 Ответ

3 голосов
/ 09 марта 2011

Q: Является ли вихрь также SSA A: Нет, но Open64 имеет SSA Manager A: Нет, но Path64 либо примет подход SSA Manager, либо преобразует все оптимизации, чтобы обеспечить поддержку SSA в этом году

Q: Имеет лион использует виртуальные регистры A: В Path64 / Open64 вы не делаете окончательное распределение регистров до фазы cg

Q: Имеет ли он модульную конструкцию, такую ​​как llvm A: (С учетом мнения и я предвзят)Фаза четко разделена, поэтому она несколько модульная, но не в той степени, в которой вы найдете в llvm.Пожалуйста, обратите внимание, что я сомневаюсь, что в этот момент вы можете отключить некоторые вещи в llvm без особых последствий.Таким образом, изоляция тестирования одного типа оптимизации может / не может быть проще с точки зрения исследователя.

В: Легко ли разработать пас и включить его в набор инструментов?A: Да / нет - LLVM выигрывает в документации, но Path64 работает над этим.В некоторый код проще перейти, чем в другие.Если вы полностью знакомы с компиляторами, выполняйте внешнюю работу или переход от источника к источнику вместе с LLVM.Если у вас есть опыт и вы хотите разработать более продвинутую оптимизацию, Path64 git: //github.com/path64/compiler.git - это то, что я бы порекомендовал.

В: Есть ли в open64 поддержка JITting?A: Нет, но зачем вам это?Path64 наиболее эффективен при статической компиляции и тратит 200 тыс. Циклов на JIT, и некоторые байт-коды редко имеют смысл.A: clang будет по умолчанию в llvm-2.10, но до этого они оба используют интерфейс gcc.Существует непубличный проект для того, чтобы раскрутить WHITL.Это снова ставит их обоих на ровную поверхность.

Небольшие поправки - LLVM IR больше сравним с CG IR, а не с WHIRL среднего уровня.Похоже, что качество CG более или менее одинаково в обоих случаях.Я бы сказал, что это абсолютно ложное предположение, и я не буду комментировать, что лучше, но скажу, что они существенно различаются

Более того, не существует фиксированного сообщества разработчиков иокружение или поддержка

# pathscale - irc.freenode.net (у нас также есть списки рассылки, и на ваши вопросы будут даны ответы)

Внутренне многие компании имеют хорошую документацию, нообычно он не передается или не доступен по мере необходимости.(Я использую codestr0m для irc и, вероятно, могу поделиться достигнутым нами прогрессом в этом направлении)

в одном направлении, в котором движется компилятор.

Для нас есть одно направление, и мы пытаемся построить вокруг него сообщество.

Существуют также различия в лицензировании, где llvm больше соответствуетСтиль лицензирования BSD и open64 основан на GPL.

Извините, но я не юрист и не беспокоюсь о лицензировании, пока это не мешает мне..

...