The LLVM DOE Fork is a fork of upstream LLVM (https://github.com/llvm/llvm-project/) that hosts multiple DOE-funded projects. Contact information and other details for each project are described in the wiki.
Currently, Clacc never automatically adds worker or vector clauses to OpenACC loop constructs. This behavior conforms to the OpenACC specification but does not achieve desirable performance for some applications. (In contrast, Clacc does automatically add the gang clause as required by OpenACC 3.1.)
Tasks:
Investigate other OpenACC implementations (e.g., NVIDIA, GCC) to understand when their implementations automatically insert worker and vector clauses. The main goal is to determine what Clacc's analyses require to be competitive.
Investigate OpenMP loop-related directives, especially the loop construct, for current or planned features that would support this capability, and identify anyone in the OpenMP community already pursuing them.
As needed based on those investigations, design and prototype OpenMP extensions for which the required analyses can be performed, potentially at the LLVM IR level.
Implement translation to OpenMP from OpenACC loop constructs that do not have but can accept a worker or vector clause.
Currently, Clacc never automatically adds
worker
orvector
clauses to OpenACCloop
constructs. This behavior conforms to the OpenACC specification but does not achieve desirable performance for some applications. (In contrast, Clacc does automatically add thegang
clause as required by OpenACC 3.1.)Tasks:
worker
andvector
clauses. The main goal is to determine what Clacc's analyses require to be competitive.loop
construct, for current or planned features that would support this capability, and identify anyone in the OpenMP community already pursuing them.loop
constructs that do not have but can accept aworker
orvector
clause.