CUDALink

CUDALink allows the Wolfram Language to use the CUDA parallel computing architecture on Graphical Processing Units (GPUs). It contains functions that use CUDA-enabled GPUs to boost performance in a number of areas, such as linear algebra, financial simulation, and image processing. CUDALink also integrates CUDA with existing Wolfram Language development tools, allowing a high degree of automation and control.

Query

CUDAQ determine whether CUDALink is supported

CUDAInformation enumerate all device information

CUDADriverVersion give video driver version

$CUDADeviceCount number of devices on system

$CUDALinkPath path to the CUDALink application

$CUDADevice device used in CUDALink computation

Resource Installation

CUDAResourcesInformation give information on installed CUDA resources

Image Processing

Filtering

CUDAImageConvolve convolve images with specified kernel

CUDABoxFilter apply the box filter on images

Morphology

CUDADilation apply morphological dilation on images

CUDAErosion apply morphological erosion on images

CUDAOpening apply morphological opening on images

CUDAClosing apply morphological closing on images

Binary Operations

CUDAImageAdd add two images

CUDAImageSubtract subtract two images

CUDAImageMultiply multiply two images

CUDAImageDivide divide two images

CUDAClamp clamp values of an image between a specified range

CUDAColorNegate invert an image

Data Types

CUDAVector a vector of data which resides on a CUDA enabled GPU

CUDAMatrix a matrix of data which resides on a CUDA enabled GPU

CUDASparseVector a sparse vector of data which resides on a CUDA enabled GPU

CUDASparseMatrix a sparse matrix of data which resides on a CUDA enabled GPU

Fourier Transform

CUDAFourier find the Fourier transform

CUDAInverseFourier find the inverse Fourier transform

Linear Algebra

CUDADot give the product of vectors and matrices

CUDATranspose transpose input matrix

CUDAArgMaxList give the index with maximum absolute element

CUDAArgMinList give the index with minimum absolute element

CUDATotal give the total of the absolute values of a vector

Memory

CUDAMemory handle to CUDA memory registered using CUDAMemoryLoad or CUDAMemoryAllocate

CUDAMemoryLoad load Wolfram System memory into CUDALink returning CUDAMemory

CUDAMemoryAllocate allocate memory for CUDALink returning CUDAMemory

CUDAMemoryGet copy CUDAMemory to the Wolfram System

CUDAMemoryUnload unload and delete a CUDAMemory handle

CUDAMemoryInformation get CUDAMemory handle information

CUDAMemoryCopyToHost copy CUDAMemory from GPU to CPU

CUDAMemoryCopyToDevice copy CUDAMemory from CPU to GPU

Executing Code

CUDAFunction handle to CUDA function loaded using CUDAFunctionLoad

CUDAFunctionLoad load CUDAFunction into the Wolfram System

CUDAFunctionInformation get CUDAFunction information

Compiling

NVCCCompiler compile code using the NVIDIA CUDA compiler

CUDACCompilers give a list of supported C compilers installed on the system

Symbolic CUDA

SymbolicCUDAFunction symbolic representation of a CUDA function

SymbolicCUDABlockIndex symbolic representation of a block index CUDA call

SymbolicCUDAThreadIndex symbolic representation of a thread index CUDA call

SymbolicCUDABlockDimension symbolic representation of a block dimensions CUDA call

SymbolicCUDACalculateKernelIndex symbolic representation of a CUDA index calculation

SymbolicCUDADeclareIndexBlock symbolic representation of a CUDA index declaration

Examples

CUDAFinancialDerivative financial option valuation

CUDAMap apply a function to each element on an input list

CUDASort sort input elements

CUDAFold fold input elements

CUDAFoldList fold input elements into a list

CUDAVolumetricDataRead read raw volumetric data to be rendered

CUDAVolumetricRender render volumetric data read

CUDAFluidDynamics compute and render a fluid dynamics simulation