class _2DFFT: def __init__(self,nx,ny,bsize=16): self.nx = np.int32(nx) self.ny = np.int32(ny) self.bsize = bsize #block size self.batch = nx/bsize*ny #How many 1D-FFTs? self.fftplan = FFTPlan(self.bsize,1) def execute(self, data, out, transpose, tdata, reverse=False): self.fftplan.execute(data, batch=self.batch, inverse=reverse) transpose(data, out, self.nx, self.ny, np.int32(1), block=tdata.block, grid=tdata.grid) self.fftplan.execute(out, data, batch=self.batch, inverse=reverse) transpose(data, out, self.nx, self.ny, np.int32(1), block=tdata.block, grid=tdata.grid)
class _2DFFT: def __init__(self,nx,ny,bsize=16): self.nx = np.int32(nx) self.ny = np.int32(ny) self.bsize = bsize self.batch = nx/bsize*ny from pycudafft import FFTPlan self.fftplan = FFTPlan(self.bsize,1) def execute(self, data, out, transpose, tdata): self.fftplan.execute(data, batch=self.batch) transpose(data, out, self.nx, self.ny, np.int32(1), block=tdata.block, grid=tdata.grid) self.fftplan.execute(out, batch=self.batch)