事前に下記の API を呼び出して余裕を持たせたヒープサイズを指定する必要がある。
cudaDeviceSetLimit(cudaLimitMallocHeapSize, size_t size)
Geforce GTX 970 メモリ 4GB で、cudaDeviceSetLimit(cudaLimitMallocHeapSize) に 2GB を指定する。そして、カーネルから malloc(1) を呼び出して 1バイトのメモリを確保する。その後、cudaMemGetInfo API が返す free は 2GB へ減少する。malloc されるたびにメモリが確保されるのではなく、一度に最大ヒープサイズのメモリが確保されるようだ。