У меня есть нижеприведенный SourceModule fdtd, мне нужно указать, чтобы каждый поток выполнял одну операцию, а также, когда размер массива меньше количества потоков.
__global__ void fdtd(double *ex, double *hy, int kc, int t0, int spread, int step)
{
int idx = threadIdx.x*blockIdx.x + threadIdx.y;
double pulse;
ex[idx] = ex[idx] + 0.5* (hy[idx-1] - hy[idx]);
pulse = (double)exp((double)-0.5 * pow((double)(t0 - step)/(double)spread, 2));
ex[kc] = pulse;
hy[idx] = hy[idx] + 0.5 * (ex[idx] - ex[idx+1]);
}
Массивы и вызов функции
ex = numpy.zeros(10000)
hy = numpy.zeros(10000)
func(ex_gpu, hy_gpu,kc,t0,spread,numpy.int32(i), block=(16,16,1),grid=(5,1))