Dear all,
as far as I know, there is a concept of hierarchical offloading in OpenMP 5, and there is also support for “nested declare target” in LLVM ⚙ D51378 [OPENMP] Add support for nested 'declare target' directives
To my understanding, this would enable me to offload from a host to an accelerator A, and while in the target region on accelerator A, do a second offload to accelerator B. So roughly, I thought that the following would be possible:
main()
{
do_something_on_host();
#prama omp target
{
do_something_on_accelerator_A();
#pragma omp target
{
do_something_on_accelerator_B();
}
}
}
Did I understand the concept correctly, and is this possible with the current LLVM OpenMP implementation in libomptarget
? I did not find examples on this topic and tried out code similar to the above but did not succeed yet.
Any hints would be greatly appreciated.
Best regards,
Kai Plociennik