We will start with a simple PyCUDA program; all this will do is generate a series of random GPU arrays, process each array with a simple kernel, and copy the arrays back to the host. We will then modify this to use streams. Keep in mind this program will have no point at all, beyond illustrating how to use streams and some basic performance gains you can get. (This program can be seen in the multi-kernel.py file, under the 5 directory in the GitHub repository.)
Of course, we'll start by importing the appropriate Python modules, as well as the time function:
import pycuda.autoinitimport pycuda.driver as drvfrom pycuda import gpuarrayfrom pycuda.compiler import SourceModuleimport numpy as npfrom time import time ...