futhark-0.20.5: An optimising compiler for a functional, array-oriented language.
Safe HaskellNone
LanguageHaskell2010

Futhark.CodeGen.OpenCL.Heuristics

Description

Some OpenCL platforms have a SIMDwarpwavefront-based execution model that execute groups of threads in lockstep, permitting us to perform cross-thread synchronisation within each such group without the use of barriers. Unfortunately, there seems to be no reliable way to query these sizes at runtime. Instead, we use builtin tables to figure out which size we should use for a specific platform and device. If nothing matches here, the wave size should be set to one.

We also use this to select reasonable default group sizes and group counts.

Synopsis

Documentation

data SizeHeuristic Source #

A heuristic for setting the default value for something.

data DeviceType Source #

The type of OpenCL device that this heuristic applies to.

Constructors

DeviceCPU 
DeviceGPU 

data WhichSize Source #

A size that can be assigned a default.

newtype DeviceInfo Source #

The value supplies by a heuristic can depend on some device information. This will be translated into a call to clGetDeviceInfo(). Make sure to only request info that can be casted to a scalar type.

Constructors

DeviceInfo String 

Instances

Instances details
Pretty DeviceInfo Source # 
Instance details

Defined in Futhark.CodeGen.OpenCL.Heuristics

sizeHeuristicsTable :: [SizeHeuristic] Source #

All of our heuristics.