Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Flang][OpenMP] Important issues to be fixed prior to removing experimental status of OpenMP #110008

Open
2 of 56 tasks
kiranchandramohan opened this issue Sep 25, 2024 · 5 comments
Assignees
Labels
flang:openmp metabug Issue to collect references to a group of similar or related issues.

Comments

@kiranchandramohan
Copy link
Contributor

kiranchandramohan commented Sep 25, 2024

TODOs for unsupported OpenMP 5.2 features

  • conditional modifier for lastprivate [flang][OpenMP] Parse lastprivate modifier, add TODO to lowering #110568
  • iterator modifier for affinity, depend, from, map, to (@kparzysz)
  • scan directive : In progress [Flang][OpenMP][Sema] Adding parsing and semantic support for scan directive. #102792 @anchuraj
  • inscan modifier for reduction (@Leporacanthicus)
  • task modifier for reduction clause (@Leporacanthicus)
  • in_reduction clause for task and target (@Leporacanthicus)
  • task_reduction clause for taskgroup (@Leporacanthicus)
  • reduction, in_reduction clause for taskloop (@Leporacanthicus)
  • close, present, ompx_hold map-type modifiers for map clause [flang][OpenMP] Parsing support for map type modifiers #111860 (@kparzysz)
  • none parameter for defaultmap clause (Currently caught in Semantics giving an error - leaving as is for now @Leporacanthicus)
  • declare mapper directive
  • collapse of imperfectly nested loops for simd, worksharing, distribute and taskloop
  • affinity clause for task
  • detach clause for task (@NimishMishra)
  • cancel construct : support for taskloop
  • mutexinoutset for depend clause
  • ancestor modifier for device clause of target construct
  • depend and nowait clause for taskwait (@Leporacanthicus)
  • acq_rel, acquire, release clauses for atomic construct
  • depend clause extensions to support iterators and depend objects with depobj construct (@kparzysz)
  • Combined constructs master taskloop, parallelmaster, parallel master taskloop, master taskloop simd, parallel master taskloop simd
  • iterators in map clause and data motion clauses of target update (@kparzysz)
  • present argument for defaultmap
  • align clause on allocate directive
  • allocator and align modifiers for allocate clause
  • adjust_args and append_args clauses for declare variant directive
  • dispatch construct
  • Assumption directives
  • nothing directive
  • error directive
  • Loop transformation constructs
  • scope directive @kiranchandramohan
  • strict modifier for grainsize and num_tasks clause @kiranchandramohan
  • thread_limit clause for target directive
  • has_device_addr clause for target construct
  • interop directive
  • nowait clause for task directive
  • compare, fail clauses
  • seq_cst clause for flush construct
  • inoutset argument for depend clause
  • Allow copyprivate, nowait on the directive (in addition to end directive)
  • Deprecation of destroy with depobj
  • step modifier for linear. Deprecation
  • Deprecation of modifiers without comma separators
  • enter as synonym for to clause in declare target . to clause is deprecated.
  • declare mapper directive extension to accept iterator-modifier and the present map-type-modifier (@kparzysz)
  • allocators construct. allocate directive for ALLOCATE statement is deprecated
  • dispatch construct has optional end directive
  • otherwise clause as synonym for default on metadirective
  • allocate and firstprivate for scope directive
  • target enter and exit data has default map type
  • doacross clause as synonym for depend in some situations

TODOs for unsupported OpenMP 4.5 features

TODOs for unsupported OpenMP 4.0 features

  • declare reduction

Must fix issues from the tracker

Must fix issues not in tracker

@kiranchandramohan kiranchandramohan self-assigned this Sep 25, 2024
@github-actions github-actions bot added the flang Flang issues not falling into any other category label Sep 25, 2024
@kiranchandramohan kiranchandramohan added flang:openmp metabug Issue to collect references to a group of similar or related issues. and removed flang Flang issues not falling into any other category labels Sep 25, 2024
@anchuraj
Copy link
Contributor

inscan modifier support is WIP

@kiranchandramohan
Copy link
Contributor Author

inscan modifier support is WIP

Feel free to update the tasklist if you or someone you know is working on it. The immediate requirement is to only add a TODO message after parsing and semantics.

@h-vetinari
Copy link
Contributor

TODOs for unsupported OpenMP 5.2 features

I find it strange that a standard version released after flang got merged into LLVM is somehow a deciding factor for whether the whole compiler is considered incomplete or experimental.

It sounds like massive scope creep, in the sense that, when flang was proposed for inclusion, no-one could have required an unreleased standard as the benchmark for what counts as a full-fledged fortran compiler.

@kiranchandramohan
Copy link
Contributor Author

TODOs for unsupported OpenMP 5.2 features

I find it strange that a standard version released after flang got merged into LLVM is somehow a deciding factor for whether the whole compiler is considered incomplete or experimental.

It sounds like massive scope creep, in the sense that, when flang was proposed for inclusion, no-one could have required an unreleased standard as the benchmark for what counts as a full-fledged fortran compiler.

We started with OpenMP 4.5 standard when it was the F18 project. Subsequently, we have added OpenMP 5.2 features to the implementation. What I would like to get to is to be able to make statements on what is supported and what is not supported. Since some OpenMP 5.2 features are added the only standard that we can aim to completely address is OpenMP 5.2.

Also, I am not saying we have to support all OpenMP 5.2 features. The requirement is only to issue messages and gracefully error that the feature is not supported as the rest of the compiler says for Fortran language features. Also, this is not a requirement for the whole of the compiler, it is only about the experimental nature of the OpenMP implementation.
Note: I will change the title of the ticket to reflect this.

@kiranchandramohan kiranchandramohan changed the title [Flang][OpenMP] Important issues to be fixed prior to flang-new to flang renaming [Flang][OpenMP] Important issues to be fixed prior to removing experimental status of OpenMP Oct 1, 2024
@Leporacanthicus
Copy link
Contributor

Additional tests and small OpenMP.cpp changes available to review here:
#111562

I will continue this work, but this seemed like a good place to stop for today, and may start reviewing this part.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
flang:openmp metabug Issue to collect references to a group of similar or related issues.
Projects
None yet
Development

No branches or pull requests

4 participants