import pycuda.driver as cuda
import pycuda.autoinit
from pycuda.compiler import SourceModule
mod = SourceModule("""
#include <stdio.h>
__global__ void myfirst_kernel()
{
printf("I am in block no: %d \\n", blockIdx.x);
}
""")
function = mod.get_function("myfirst_kernel")
function(grid=(10,1),block=(1,1,1))
从代码中可以看出,我们正在启动一个有10个并行线程块的内核,每个块都只有一个线程,在内核代码中打印内核执行的块 ID,可以把它视为是并行执行10个myfirst_kernel的副本,每个副本都有个唯一的线程块ID(可直接访问的blockIdx.x)和唯一的线程ID(可直接访问的threadldx.x),这些ID将告诉我们哪个块和线程正在执行内核。多次运行该程序时,将发现每次都会以不同顺序执行。