Hi Jakub, We've been going over how we should implement the requires directive, in a bit more complete sense than the current state (i.e. only atomic_default_mem_order working).
For the three clauses where the specification requires that "must appear in all compilation units of a program that contain device constructs or device routines or in none of them": - reverse_offload - unified_address - unified_shared_memory The current design we're contemplating is to generate a mask variable of these 3 clauses for compilation units built with -fopenmp, have them tagged with an attribute to be collected into a special section (e.g. ".gnu.gomp.requires"). Later at runtime device startup, have them checked by the runtime against the capabilities of the libgomp offload target. Cross-checking each word (assuming it is a word that we generate for each compile unit) against each other can also implement the consistency requirement. (actually, as a first stage implementation, we were hoping to just have the special section implemented, which allows compilation of OpenMP programs using requires-directive, and implement any runtime checking at a later stage) We hope to check with you first on any design issues. Have you given any thought on this directive? Thanks, Chung-Lin