| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[Flang][MLIR][OpenMP] Remove the early outlining interface (#78450) After the removal of the OpenMP early outlining MLIR pass in #67319, the EarlyOutliningInterface stopped doing any useful work. It used to be necessary to tie the name of the function from which a target region was outlined to that new function, so it would be used when translating to LLVM IR in place of the outlined function's name. This is not necessary anymore, so this patch removes all references to this interface and uses of the omp.outline_parent_name discardable attribute in tests. | 2 年前 | |
[OpenMP][MLIR] Add "IsolatedFromAbove" trait to omp.target This patch adds the MLIR translation changes required for add the IsolatedFromAbove and OutlineableOpenMPOpInterface traits to omp.target. It links the newly added block arguments to their corresponding llvm values. Depends on #67164. | 2 年前 | |
[MLIR][OpenMP] Add canonical loop operations (#147061) Add the supporting OpenMP Dialect operations, types, and interfaces for modelling MLIR Operations: * omp.newcli * omp.canonical_loop MLIR Types: * !omp.cli MLIR Interfaces: * LoopTransformationInterface As a first loop transformations to be able to use these new operation in follow-up PRs (#144785) * omp.unroll_heuristic | 1 年前 | |
[mlir][omp] Improve canonloop/iv naming (#159773) Improve the automatic naming of variables defined by the omp.canonical_loop operation: 1. The iteration variable gets a name consistent with the cli variable 2. Instead of appending _s0 for each nesting level, shorten it to _d<num> for a perfectly nested loop at depth <num> 3. Do not add any suffix to the top-level loop if it is the only top-level loop | 10 个月前 | |
[mlir][omp] Add omp.tile operation (#160292) Add the omp.tile loop transformations for the OpenMP dialect. Used for lowering a standalone !$omp tile in Flang. | 10 个月前 | |
[mlir][omp] Improve canonloop/iv naming (#159773) Improve the automatic naming of variables defined by the omp.canonical_loop operation: 1. The iteration variable gets a name consistent with the cli variable 2. Instead of appending _s0 for each nesting level, shorten it to _d<num> for a perfectly nested loop at depth <num> 3. Do not add any suffix to the top-level loop if it is the only top-level loop | 10 个月前 | |
[mlir][omp] Add omp.tile operation (#160292) Add the omp.tile loop transformations for the OpenMP dialect. Used for lowering a standalone !$omp tile in Flang. | 10 个月前 | |
[MLIR] [OpenMP] Modify definition of ALLOCATOR clause to support allocator type defined in user program. (#157399) Earlier only predefined allocator types mentioned in OpenMP spec were allowed. This patch addresses support for user defined allocator type in allocator clause increasing the scope of allocator clause. | 10 个月前 | |
[Flang][mlir] - Translation of delayed privatization for deferred target-tasks (#155348) This PR adds support for translation of the private clause on deferred target tasks - that is omp.target operations with the nowait clause. An offloading call for a deferred target-task is not blocking - the offloading (target-generating) host task continues its execution after issuing the offloading call. Therefore, the key problem we need to solve is to ensure that the data needed for private variables to be initialized in the target task persists even after the host task has completed. We do this in a new pass called PrepareForOMPOffloadPrivatizationPass. For a privatized variable that needs its host counterpart for initialization (such as the shape of the data from the descriptor when an allocatable is privatized or the value of the data when an allocatable is firstprivatized), - the pass allocates memory on the heap. - it then initializes this memory by using the init and copy (for firstprivate) regions of the corresponding omp::PrivateClauseOp. - Finally the memory allocated on the heap is freed using the dealloc region of the same omp::PrivateClauseOp instance. This step is not straightforward though, because we cannot simply free the memory that's going to be used by another thread without any synchronization. So, for deallocation, we create a omp.task after the omp.target and synchronize the two with a dummy dependency (using the depend clause). In this newly created omp.task we do the deallocation. | 9 个月前 | |
[Flang][mlir] - Translation of delayed privatization for deferred target-tasks (#155348) This PR adds support for translation of the private clause on deferred target tasks - that is omp.target operations with the nowait clause. An offloading call for a deferred target-task is not blocking - the offloading (target-generating) host task continues its execution after issuing the offloading call. Therefore, the key problem we need to solve is to ensure that the data needed for private variables to be initialized in the target task persists even after the host task has completed. We do this in a new pass called PrepareForOMPOffloadPrivatizationPass. For a privatized variable that needs its host counterpart for initialization (such as the shape of the data from the descriptor when an allocatable is privatized or the value of the data when an allocatable is firstprivatized), - the pass allocates memory on the heap. - it then initializes this memory by using the init and copy (for firstprivate) regions of the corresponding omp::PrivateClauseOp. - Finally the memory allocated on the heap is freed using the dealloc region of the same omp::PrivateClauseOp instance. This step is not straightforward though, because we cannot simply free the memory that's going to be used by another thread without any synchronization. So, for deallocation, we create a omp.task after the omp.target and synchronize the two with a dummy dependency (using the depend clause). In this newly created omp.task we do the deallocation. | 9 个月前 | |
[Flang][OpenMP][Dialect] Swap to using MLIR dialect enum to encode map flags (#164043) This PR shifts from using the LLVM OpenMP enumerator bit flags to an OpenMP dialect specific enumerator. This allows us to better represent map types that wouldn't be of interest to the LLVM backend and runtime in the dialect. Primarily things like ref_ptr/ref_ptee/ref_ptr_ptee/atach_none/attach_always/attach_auto which are of interest to the compiler for certrain transformations (primarily in the FIR transformation passes dealing with mapping), but the runtime has no need to know about them. It also means if another OpenMP implementation comes along they won't need to stick to the same bit flag system LLVM chose/do leg work to address it. | 9 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 10 个月前 | ||
| 10 个月前 | ||
| 10 个月前 | ||
| 10 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 9 个月前 |