MLIR  20.0.0git
DialectGPU.cpp
Go to the documentation of this file.
1 //===- DialectGPU.cpp - Pybind module for the GPU passes ------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===---------------------------------------------------------------------===//
8 
9 #include "mlir-c/Dialect/GPU.h"
10 #include "mlir-c/IR.h"
11 #include "mlir-c/Support.h"
14 
15 namespace nb = nanobind;
16 using namespace nanobind::literals;
17 
18 using namespace mlir;
19 using namespace mlir::python;
20 using namespace mlir::python::nanobind_adaptors;
21 
22 // -----------------------------------------------------------------------------
23 // Module initialization.
24 // -----------------------------------------------------------------------------
25 
26 NB_MODULE(_mlirDialectsGPU, m) {
27  m.doc() = "MLIR GPU Dialect";
28  //===-------------------------------------------------------------------===//
29  // AsyncTokenType
30  //===-------------------------------------------------------------------===//
31 
32  auto mlirGPUAsyncTokenType =
34 
35  mlirGPUAsyncTokenType.def_classmethod(
36  "get",
37  [](nb::object cls, MlirContext ctx) {
38  return cls(mlirGPUAsyncTokenTypeGet(ctx));
39  },
40  "Gets an instance of AsyncTokenType in the same context", nb::arg("cls"),
41  nb::arg("ctx").none() = nb::none());
42 
43  //===-------------------------------------------------------------------===//
44  // ObjectAttr
45  //===-------------------------------------------------------------------===//
46 
49  "get",
50  [](nb::object cls, MlirAttribute target, uint32_t format,
51  nb::bytes object, std::optional<MlirAttribute> mlirObjectProps,
52  std::optional<MlirAttribute> mlirKernelsAttr) {
53  MlirStringRef objectStrRef = mlirStringRefCreate(
54  static_cast<char *>(const_cast<void *>(object.data())),
55  object.size());
57  mlirAttributeGetContext(target), target, format, objectStrRef,
58  mlirObjectProps.has_value() ? *mlirObjectProps
59  : MlirAttribute{nullptr},
60  mlirKernelsAttr.has_value() ? *mlirKernelsAttr
61  : MlirAttribute{nullptr}));
62  },
63  "cls"_a, "target"_a, "format"_a, "object"_a,
64  "properties"_a.none() = nb::none(), "kernels"_a.none() = nb::none(),
65  "Gets a gpu.object from parameters.")
66  .def_property_readonly(
67  "target",
68  [](MlirAttribute self) { return mlirGPUObjectAttrGetTarget(self); })
69  .def_property_readonly(
70  "format",
71  [](MlirAttribute self) { return mlirGPUObjectAttrGetFormat(self); })
72  .def_property_readonly(
73  "object",
74  [](MlirAttribute self) {
75  MlirStringRef stringRef = mlirGPUObjectAttrGetObject(self);
76  return nb::bytes(stringRef.data, stringRef.length);
77  })
78  .def_property_readonly("properties",
79  [](MlirAttribute self) -> nb::object {
81  return nb::cast(
83  return nb::none();
84  })
85  .def_property_readonly("kernels", [](MlirAttribute self) -> nb::object {
87  return nb::cast(mlirGPUObjectAttrGetKernels(self));
88  return nb::none();
89  });
90 }
NB_MODULE(_mlirDialectsGPU, m)
Definition: DialectGPU.cpp:26
MLIR_CAPI_EXPORTED bool mlirAttributeIsAGPUObjectAttr(MlirAttribute attr)
Definition: GPU.cpp:34
MLIR_CAPI_EXPORTED MlirAttribute mlirGPUObjectAttrGetTarget(MlirAttribute mlirObjectAttr)
Definition: GPU.cpp:70
MLIR_CAPI_EXPORTED MlirAttribute mlirGPUObjectAttrGetProperties(MlirAttribute mlirObjectAttr)
Definition: GPU.cpp:95
MLIR_CAPI_EXPORTED bool mlirGPUObjectAttrHasProperties(MlirAttribute mlirObjectAttr)
Definition: GPU.cpp:89
MLIR_CAPI_EXPORTED MlirAttribute mlirGPUObjectAttrGetKernels(MlirAttribute mlirObjectAttr)
Definition: GPU.cpp:107
MLIR_CAPI_EXPORTED MlirAttribute mlirGPUObjectAttrGetWithKernels(MlirContext mlirCtx, MlirAttribute target, uint32_t format, MlirStringRef objectStrRef, MlirAttribute mlirObjectProps, MlirAttribute mlirKernelsAttr)
Definition: GPU.cpp:51
MLIR_CAPI_EXPORTED bool mlirGPUObjectAttrHasKernels(MlirAttribute mlirObjectAttr)
Definition: GPU.cpp:101
MLIR_CAPI_EXPORTED MlirType mlirGPUAsyncTokenTypeGet(MlirContext ctx)
Definition: GPU.cpp:26
MLIR_CAPI_EXPORTED bool mlirTypeIsAGPUAsyncTokenType(MlirType type)
Definition: GPU.cpp:22
MLIR_CAPI_EXPORTED uint32_t mlirGPUObjectAttrGetFormat(MlirAttribute mlirObjectAttr)
Definition: GPU.cpp:76
MLIR_CAPI_EXPORTED MlirStringRef mlirGPUObjectAttrGetObject(MlirAttribute mlirObjectAttr)
Definition: GPU.cpp:82
Creates a custom subclass of mlir.ir.Attribute, implementing a casting constructor and type checking ...
Creates a custom subclass of mlir.ir.Type, implementing a casting constructor and type checking metho...
pure_subclass & def_classmethod(const char *name, Func &&f, const Extra &...extra)
MLIR_CAPI_EXPORTED MlirContext mlirAttributeGetContext(MlirAttribute attribute)
Gets the context that an attribute was created with.
Definition: IR.cpp:1097
static MlirStringRef mlirStringRefCreate(const char *str, size_t length)
Constructs a string reference from the pointer and length.
Definition: Support.h:82
Include the generated interface declarations.
A pointer to a sized fragment of a string, not necessarily null-terminated.
Definition: Support.h:73
const char * data
Pointer to the first symbol.
Definition: Support.h:74
size_t length
Length of the fragment.
Definition: Support.h:75