# Using GPU acceleration

GPU support in MatConvNet builds on top of MATLAB GPU support in the Parallel Computing Toolbox. This toolbox requires CUDA-compatible cards, and you will need a copy of the corresponding CUDA devkit to compile GPU support in MatConvNet (see compiling).

All the core computational functions (e.g. vl_nnconv) in the toolbox can work with either MATLAB arrays or MATLAB GPU arrays. Therefore, switching to use the GPU is as simple as converting the input CPU arrays in GPU arrays.

In order to make the very best of powerful GPUs, it is important to balance the load between CPU and GPU in order to avoid starving the latter. In training on a problem like ImageNet, the CPU(s) in your system will be busy loading data from disk and streaming it to the GPU to evaluate the CNN and its derivative. MatConvNet includes the utility vl_imreadjpeg to accelerate and parallelize loading images into memory (this function is currently a bottleneck will be made more powerful in future releases).