Подходит ли LLVM для параллельных языков?
Вопрос
Какие свойства LLVM делают его хорошим выбором для реализации (параллельного, параллельного, распределенного) языка, а что делает его плохим?
Решение
LLVM не зря называется LLVM (виртуальная машина низкого уровня).Это настолько низкоуровневый подход, что вы не привязаны к какой-либо конкретной семантике исходного языка.
В LLVM есть несколько полезных вещей, которые упрощают компиляцию некоторых параллельных языков — например, переходы к произвольным блокам: http://llvm.org/docs/LangRef.html#blockaddress
И LLVM не подразумевает каких-либо конкретных свойств времени выполнения и не требует какой-либо конкретной реализации GC.Вы можете построить на нем все, что захотите.
Другие советы
Некоторые практические примеры в этой области см. http://code.google.com/p/gpuocelot/.Это позволяет коду Cuda выполнять многоцелевую обработку на x86.