[Openmp-dev] Using the runtime C interface

Joseph Schuchart via Openmp-dev openmp-dev at lists.llvm.org
Wed Nov 2 07:24:01 PDT 2016


Alexandre,

Thanks for your swift reply. Which LLVM files are you refering to in 
particular? Ideally I would like to use something like clang -E to see 
how the OpenMP pragmas are resolved to particular library calls 
(unfortunately, pragmas are carried through this step). I am not too 
familiar with the LLVM tool-suite so I am not sure about any tools to 
dump intermediate presentations.

So far I have tried to use "clang -E" and "clang -ast-print" but all of 
them still contain the pragmas. Do you have any suggestions how to get a 
representation of the library calls that are generated?

Joseph


On 10/27/2016 09:44 PM, Alexandre Eichenberger wrote:
> Joseph
> Best is to create a few examples and look at the llvm files being 
> generated. The construct that generates the fork call is #pragma omp 
> parallel. Here is the template:
> EXTERN void __kmpc_fork_call(klegacy_Indent *loc, int32_t argc, 
> klegacy_ParFctPtr microtask, ...);
> where the first is unused, the second is the number of parameters to 
> the microtask, the function to be called, and the params.
> Parameters are typically used to pass references and first private 
> values. If you have no shared/private values in your model, you can 
> ignore them.
>
> Alexandre
>
> -----------------------------------------------------------------------------------------------------
> Alexandre Eichenberger, Master Inventor, Advanced Compiler Technologies
> - research: compiler optimization (OpenMP, multithreading, SIMD)
> - info: alexe at us.ibm.com http://www.research.ibm.com/people/a/alexe
> - phone: 914-945-1812 (work) 914-312-3618 (cell)
>
>     ----- Original message -----
>     From: Joseph Schuchart via Openmp-dev <openmp-dev at lists.llvm.org>
>     Sent by: "Openmp-dev" <openmp-dev-bounces at lists.llvm.org>
>     To: openmp-dev <openmp-dev at lists.llvm.org>
>     Cc:
>     Subject: [Openmp-dev] Using the runtime C interface
>     Date: Wed, Oct 26, 2016 8:55 AM
>     All,
>
>     I am currently working on a research project with the goal to create a
>     C++ abstraction for creating tasks similar to tasking in OpenMP
>     but with
>     added functionality and only relying on standard C++ language
>     features.
>     In order to allow for an easy integration with existing OpenMP
>     applications, I would like to use an existing OpenMP runtime as a
>     basis
>     so that users can only port parts of their application while keeping
>     most of the existing code. Eventually all created tasks will be
>     scheduled by the same runtime.
>
>     The LLVM OpenMP runtime seems to be a good fit as it comes with a
>     documented API [1] and supports multiple compilers. Thanks to the
>     documentation and the library code, I think I have a good
>     understanding
>     of how to create tasks with depdendencies using
>     __kmpc_omp_task_alloc()
>     and __kmpc_omp_task_with_deps(). However, it is not clear to me how
>     threads can be spawned correctly. I assume that __kmpc_fork_call() is
>     the right place to look at but I fail to understand how a microtask
>     should exactly behave, e.g., which functions to call while waiting for
>     tasks to be created in another thread. Is there any publicly available
>     example on how to use the API correctly without any OpenMP pragmas? Or
>     is it possible to extract such an example from OpenMP code using the
>     LLVM compiler?
>
>     Any pointers are much appreciated.
>
>     Cheers
>     Joseph
>
>     [1] http://openmp.llvm.org/Reference.pdf
>
>     --
>     Dipl.-Inf. Joseph Schuchart
>     High Performance Computing Center Stuttgart (HLRS)
>     Nobelstr. 19
>     D-70569 Stuttgart
>
>     Tel.: +49(0)711-68565890
>     Fax: +49(0)711-6856832
>     E-Mail: schuchart at hlrs.de
>
>     _______________________________________________
>     Openmp-dev mailing list
>     Openmp-dev at lists.llvm.org
>     http://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev
>
>

-- 
Dipl.-Inf. Joseph Schuchart
High Performance Computing Center Stuttgart (HLRS)
Nobelstr. 19
D-70569 Stuttgart

Tel.: +49(0)711-68565890
Fax: +49(0)711-6856832
E-Mail: schuchart at hlrs.de

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/openmp-dev/attachments/20161102/d2380d32/attachment.html>


More information about the Openmp-dev mailing list