llvm-project
8dfec259 - [mlir][acc] Add OffloadTargetVerifier pass (#176467)

Commit
14 days ago
[mlir][acc] Add OffloadTargetVerifier pass (#176467) Add a verification pass that checks live-in values and symbol references within offload regions are legal for the target execution model. When code is offloaded to a device (e.g., GPU), not all values and symbols from the host context are directly accessible. Data must be explicitly mapped via OpenACC data clauses (copyin, create, present etc.), declared with device attributes, or be trivial scalars that can be passed by value. Similarly, symbol references to globals must have proper `declare` attributes or device-resident data attributes. This pass walks operations implementing `OffloadRegionOpInterface`, which includes OpenACC compute constructs (`acc.parallel`, `acc.kernels`, `acc.serial`) as well as GPU operations like `gpu.launch`. For each region, it uses liveness analysis to identify values flowing into the region and checks their validity using the `OpenACCSupport` analysis. Key features: - Validates live-in values against OpenACC data mapping requirements - Validates symbol references for device accessibility - Supports soft-check mode for diagnostic-only verification - Configurable device_type for target-specific behavior
Parents
Loading