How to create a CUDA context?

cuda, cuda-context

Solution

The canonical way to force runtime API context establishment is to call `cudaFree(0)`. If you have multiple devices, call `cudaSetDevice()` with the ID of the device you want to establish a context on, then `cudaFree(0)` to establish the context.

EDIT: Note that as of CUDA 5.0, it appears that the heuristics of context establishment are slightly different and `cudaSetDevice()` itself establishes context on the device is it called on. So the explicit `cudaFree(0)` call is no longer necessary (although it won't hurt anything).

Problem

How can I create a CUDA context? The first call of CUDA is slow and I want to create the context before I launch my kernel.

Original source