2012-02-08 14 views
5

Quiero saber si hay alguna función/método en LLVM para agregar construcciones Open-MP en LLVM IR. ¿Llvm-3.0 aún es compatible con las directivas OpenMP?LLVM OpenMP Support

Respuesta

2

OpenMP es una extensión de lenguaje de alto nivel. Por lo tanto, es el front-end de C/C++/FORTRAN el que debería reducir los pragmas en llamadas de tiempo de ejecución necesarias y alteraciones de código.

No veo cómo se puede "agregar" OpenMP a LLVM IR. Si necesita el compilador C/C++/FORTRAN que sea compatible con OpenMP pragmas y emita LLVM IR, intente con dragonegg.

+1

En el hilo de ml reciente [(LLVMdev) Soporte de OpenMP para LLVM/jan2012] (http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-January/046823.html), utilizando los intrínsecos propuestos. "las personas interesadas en la paralelización automática son probablemente más interesadas en transformar un bucle LLVM-IR simple en LLVM-IR con extensiones OpenMP". – osgx

+0

@osgx: si hablamos de la representación independiente de la biblioteca de llamadas a omp runtime, entonces sí, intrinsics especiales es una manera natural. El código Autopar también en teoría puede producir el código omp-aware. Por lo tanto, probablemente la pregunta original debe aclararse sobre cómo "LLVM aún puede soportar directivas OpenMP" :) –

+0

Correcto. Básicamente, lo que ocurre con la disminución de openmp que ocurre es un conjunto de llamadas de biblioteca para varias directivas de openmp (así como algunos cambios de cfg), no hay nada específico que se necesite en el IR para openmp. Si desea poder observar las directivas OpenMP y reconstruir a un nivel superior el ciclo se transforma, es posible que desee soporte de IR, pero no estoy seguro de que sea necesario. – echristo