The following kernel performs a portion of the finite difference time-domain (FDTD) method for computing Maxwell's equations
in a three-dimensional space, part of one of the SPEC06fp benchmarks:
for (int x=0 x { for (int y=0, y { for (int Z=0, z int index x*NY*NZ + y*NZ +z ;
if ( y>0 && x>0)
{
material=IDx [index];
dH1=(Hz[index]-Hz[index-incrementY]/dy[y];
dh2=(Hy[index]-Hy[index-incrementz]/dz[z];
Ex[index]= ca[material]*Ex[index]+cb[material]*(dh2-dh1);
}}}
Assume that dH1,dH2,Hy,Hz,dy,dz,Ca,Cb, and Ex are all single-precision floating-point arrays.Assume IDx is an array of unsigned int
(a)What is the arithmetic intensity of this kernel?
(b) Is this kernel amenable to vector or SIMD execution? Why or why not?
(c)Assume this kernel is to be executed on a processor that has 30 GB/sec of memory
bandwidth. Will this kernel be memory bound or compute bound