Skip to content
Snippets Groups Projects
Commit 166ddd3a authored by Andreas Klöckner's avatar Andreas Klöckner
Browse files

Only generate static workgroup size info if workgroup sizes are actually static

parent 851d5e27
No related branches found
No related tags found
No related merge requests found
...@@ -213,10 +213,16 @@ class CudaTarget(CTarget): ...@@ -213,10 +213,16 @@ class CudaTarget(CTarget):
_, local_grid_size = kernel.get_grid_sizes_as_exprs() _, local_grid_size = kernel.get_grid_sizes_as_exprs()
from pytools import product from loopy.symbolic import get_dependencies
nthreads = product(local_grid_size) if not get_dependencies(local_grid_size):
# Sizes can't have parameter dependencies if they are
# to be used in static thread block size.
from pytools import product
nthreads = product(local_grid_size)
return CudaLaunchBounds(nthreads, fdecl) fdecl = CudaLaunchBounds(nthreads, fdecl)
return fdecl
def generate_code(self, kernel, codegen_state, impl_arg_info): def generate_code(self, kernel, codegen_state, impl_arg_info):
code, implemented_domains = ( code, implemented_domains = (
......
...@@ -239,9 +239,18 @@ class OpenCLTarget(CTarget): ...@@ -239,9 +239,18 @@ class OpenCLTarget(CTarget):
def wrap_function_declaration(self, kernel, fdecl): def wrap_function_declaration(self, kernel, fdecl):
from cgen.opencl import CLKernel, CLRequiredWorkGroupSize from cgen.opencl import CLKernel, CLRequiredWorkGroupSize
return CLRequiredWorkGroupSize( fdecl = CLKernel(fdecl)
kernel.get_grid_sizes_as_exprs()[1],
CLKernel(fdecl)) _, local_sizes = kernel.get_grid_sizes_as_exprs()
from loopy.symbolic import get_dependencies
if not get_dependencies(local_sizes):
# sizes can't have parameter dependencies if they are
# to be used in static WG size.
fdecl = CLRequiredWorkGroupSize(local_sizes, fdecl)
return fdecl
def generate_code(self, kernel, codegen_state, impl_arg_info): def generate_code(self, kernel, codegen_state, impl_arg_info):
code, implemented_domains = ( code, implemented_domains = (
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment