MLIR 23.0.0git
mlir::acc::DefaultACCToGPUMappingPolicy Class Reference

Default policy that provides the standard GPU mapping: gang(dim:1) -> BlockX (gridDim.x / blockIdx.x) gang(dim:2) -> BlockY (gridDim.y / blockIdx.y) gang(dim:3) -> BlockZ (gridDim.z / blockIdx.z) worker -> ThreadY (blockDim.y / threadIdx.y) vector -> ThreadX (blockDim.x / threadIdx.x) seq -> Sequential. More...

#include "mlir/Dialect/OpenACC/OpenACCParMapping.h"

Inheritance diagram for mlir::acc::DefaultACCToGPUMappingPolicy:

Public Member Functions

mlir::acc::GPUParallelDimAttr map (MLIRContext *ctx, ParLevel level) const override
 Map an OpenACC parallelism level to target dimension.
bool isVector (mlir::acc::GPUParallelDimAttr attr) const override
 Check if the attribute represents vector parallelism.
bool isWorker (mlir::acc::GPUParallelDimAttr attr) const override
 Check if the attribute represents worker parallelism.
bool isGang (mlir::acc::GPUParallelDimAttr attr) const override
 Check if the attribute represents gang parallelism (any gang dimension).
bool isSeq (mlir::acc::GPUParallelDimAttr attr) const override
 Check if the attribute represents sequential execution.
Public Member Functions inherited from mlir::acc::ACCParMappingPolicy< mlir::acc::GPUParallelDimAttr >
virtual ~ACCParMappingPolicy ()=default
mlir::acc::GPUParallelDimAttr gangDim (MLIRContext *ctx, ParLevel level) const
 Convenience methods for specific parallelism levels.
mlir::acc::GPUParallelDimAttr workerDim (MLIRContext *ctx) const
mlir::acc::GPUParallelDimAttr vectorDim (MLIRContext *ctx) const
mlir::acc::GPUParallelDimAttr seqDim (MLIRContext *ctx) const

Detailed Description

Default policy that provides the standard GPU mapping: gang(dim:1) -> BlockX (gridDim.x / blockIdx.x) gang(dim:2) -> BlockY (gridDim.y / blockIdx.y) gang(dim:3) -> BlockZ (gridDim.z / blockIdx.z) worker -> ThreadY (blockDim.y / threadIdx.y) vector -> ThreadX (blockDim.x / threadIdx.x) seq -> Sequential.

Definition at line 118 of file OpenACCParMapping.h.

Member Function Documentation

◆ isGang()

bool mlir::acc::DefaultACCToGPUMappingPolicy::isGang ( mlir::acc::GPUParallelDimAttr attr) const
inlineoverridevirtual

Check if the attribute represents gang parallelism (any gang dimension).

Implements mlir::acc::ACCParMappingPolicy< mlir::acc::GPUParallelDimAttr >.

Definition at line 148 of file OpenACCParMapping.h.

◆ isSeq()

bool mlir::acc::DefaultACCToGPUMappingPolicy::isSeq ( mlir::acc::GPUParallelDimAttr attr) const
inlineoverridevirtual

Check if the attribute represents sequential execution.

Implements mlir::acc::ACCParMappingPolicy< mlir::acc::GPUParallelDimAttr >.

Definition at line 152 of file OpenACCParMapping.h.

◆ isVector()

bool mlir::acc::DefaultACCToGPUMappingPolicy::isVector ( mlir::acc::GPUParallelDimAttr attr) const
inlineoverridevirtual

Check if the attribute represents vector parallelism.

Implements mlir::acc::ACCParMappingPolicy< mlir::acc::GPUParallelDimAttr >.

Definition at line 140 of file OpenACCParMapping.h.

◆ isWorker()

bool mlir::acc::DefaultACCToGPUMappingPolicy::isWorker ( mlir::acc::GPUParallelDimAttr attr) const
inlineoverridevirtual

Check if the attribute represents worker parallelism.

Implements mlir::acc::ACCParMappingPolicy< mlir::acc::GPUParallelDimAttr >.

Definition at line 144 of file OpenACCParMapping.h.

◆ map()

mlir::acc::GPUParallelDimAttr mlir::acc::DefaultACCToGPUMappingPolicy::map ( MLIRContext * ctx,
ParLevel level ) const
inlineoverridevirtual

Map an OpenACC parallelism level to target dimension.

Parameters
ctxThe MLIR context
levelThe OpenACC parallelism level (gang_dim1, gang_dim2, gang_dim3, worker, vector, or seq)
Returns
The corresponding parallel dimension attribute

Implements mlir::acc::ACCParMappingPolicy< mlir::acc::GPUParallelDimAttr >.

Definition at line 121 of file OpenACCParMapping.h.


The documentation for this class was generated from the following file: