Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
Some GPU platforms have a SIMDwarpwavefront-based execution model that execute blocks of threads in lockstep, permitting us to perform cross-thread synchronisation within each such block 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 block sizes and block counts.
Synopsis
- data SizeHeuristic = SizeHeuristic {}
- data DeviceType
- data WhichSize
- newtype DeviceInfo = DeviceInfo String
- sizeHeuristicsTable :: [SizeHeuristic]
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.
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.
Instances
Pretty DeviceInfo Source # | |
Defined in Futhark.CodeGen.OpenCL.Heuristics pretty :: DeviceInfo -> Doc ann # prettyList :: [DeviceInfo] -> Doc ann # |
sizeHeuristicsTable :: [SizeHeuristic] Source #
All of our heuristics.