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