Supports utility functions for operating with GPUs.
This module is unstable and its interface is subject to change in the future.
GPU support is a relatively new feature to Chapel and is under active development.
For the most up-to-date information about GPU support see the technical note about it.
- proc gpuWrite(const args ...?k)¶
This function is intended to be called from within a GPU kernel and is useful for debugging purposes.
writeto send output to
stdoutwill make a loop ineligible for GPU execution; use
Currently this function will only work if values of type
On NVIDIA GPUs the written values will be flushed to the terminal after the kernel has finished executing. Note that there is a 1MB limit on the size of this buffer.
- proc assertOnGpu()¶
Will halt execution at runtime if called from outside a GPU. If used on first line in
forallloop will also do a compile time check that the loop is eligible for execution on a GPU.
- proc gpuClock(): uint¶
Returns value of a per-multiprocessor counter that increments every clock cycle. This function is meant to be called to time sections of code within a GPU enabled loop.
- proc gpuClocksPerSec(devNum: int)¶
Returns the number of clock cycles per second of a GPU multiprocessor. Note: currently we don’t support calling this function from within a kernel.
- proc syncThreads()¶
Synchronize threads within a GPU block.
Allocate block shared memory, enough to store
eltType. Returns a
CTypes.c_ptrto the allocated array. Note that although every thread in a block calls this procedure, the same shared array is returned to all of them.
eltType – the type of elements to allocate the array for.
size – the number of elements in each GPU thread block’s copy of the array.
- proc setBlockSize(blockSize: int)¶
Set the block size for kernels launched on the GPU.