We are developing an abstraction layer to various task-based runtime systems, including OpenMP. This layer has an API to queue the task, which will translate into a call to one of the runtime APIs during the execution.
When it come to supporting OpenMP, we would like to decode task information that is represented in our own function API to an OpenMP task function at runtime. Since it is using a #pragma omp task directive, this restricts in doing such decoding at runtime.
It seems that we can use runtime calls as Clang does. By looking onto http://openmp.llvm.org/Reference.pdf, clang generates a list out of the depend clause, and passes it to lower level function, i.e., __kmpc_omp_task_with_deps. I would like to use __kmpc_omp_task_with_deps low level runtime API directly. I would like to know:
1- How to define the list of dependent tasks using this runtime function call?
2- Is there a Clang flag that generate llvm OpenMP intermediate code?
Thanks and I appreciate your help