Skip to content
Snippets Groups Projects
Commit 377bab57 authored by Frederik Hennig's avatar Frederik Hennig
Browse files

remove extensions.gpu

parent f2ad7231
1 merge request!24Extend Support for CUDA and HIP kernel invocations
Pipeline #75689 passed with stages
in 2 minutes and 32 seconds
from pystencilssfg import lang
def dim3class(gpu_runtime_header: str, *, cls_name: str = "dim3"):
"""
>>> dim3 = dim3class("<hip/hip_runtime.h>")
>>> dim3().ctor(64, 1, 1)
dim3{64, 1, 1}
Args:
gpu_runtime_header: String with the name of the gpu runtime header
cls_name: String with the acutal name (default "dim3")
Returns:
Dim3Class: A `lang.CppClass` that mimics cuda's/hip's `dim3`
"""
@lang.cppclass(cls_name, gpu_runtime_header)
class Dim3Class:
def ctor(self, dim0=1, dim1=1, dim2=1):
return self.ctor_bind(dim0, dim1, dim2)
@property
def x(self):
return lang.AugExpr.format("{}.x", self)
@property
def y(self):
return lang.AugExpr.format("{}.y", self)
@property
def z(self):
return lang.AugExpr.format("{}.z", self)
@property
def dims(self):
"""The dims property."""
return [self.x, self.y, self.z]
return Dim3Class
from pystencilssfg.extensions.gpu import dim3class
from pystencilssfg.lang import HeaderFile, AugExpr
def test_dim3():
cuda_runtime = "<cuda_runtime.h>"
dim3 = dim3class(cuda_runtime, cls_name="dim3")
assert HeaderFile.parse(cuda_runtime) in dim3.template.includes
assert str(dim3().ctor(128, 1, 1)) == "dim3{128, 1, 1}"
assert str(dim3().ctor()) == "dim3{1, 1, 1}"
assert str(dim3().ctor(1, 1, 128)) == "dim3{1, 1, 128}"
block = dim3(ref=True, const=True).var("block")
dims = [
AugExpr.format(
"uint32_t(({} + {} - 1)/ {})",
1024,
block.dims[i],
block.dims[i],
)
for i in range(3)
]
grid = dim3().ctor(*dims)
assert str(grid) == f"dim3{{{', '.join((str(d) for d in dims))}}}"
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment