示例#1
0
    def test_2d_real_to_complex_double(self, ctx):
        if not has_double(ctx):  #TODO: find better way to skip test
            return
        queue = cl.CommandQueue(ctx)

        M = 64
        N = 32

        nd_data = np.arange(M * N, dtype=np.float64)
        nd_data.shape = (M, N)
        cl_data = cla.to_device(queue, nd_data)

        cl_data_transformed = cla.zeros(queue, (M, N // 2 + 1),
                                        dtype=np.complex128)

        transform = FFT(
            ctx,
            queue,
            cl_data,
            cl_data_transformed,
            axes=(1, 0),
        )

        transform.enqueue()

        print(cl_data_transformed.get)
        print(np.fft.rfft2(nd_data))

        assert np.allclose(cl_data_transformed.get(),
                           np.fft.rfft2(nd_data),
                           rtol=1e-8,
                           atol=1e-8)
示例#2
0
    def test_2d_real_to_complex_double(self, ctx):
        if not has_double(ctx): #TODO: find better way to skip test
            return
        queue = cl.CommandQueue(ctx)
        
        M = 64
        N = 32

        nd_data = np.arange(M*N, dtype=np.float64)
        nd_data.shape = (M, N)
        cl_data = cla.to_device(queue, nd_data)
        
        cl_data_transformed = cla.zeros(queue, (M, N//2+1), dtype = np.complex128)
        
        transform = FFT(ctx, queue,
                        cl_data,
                        cl_data_transformed,
                        axes = (1,0),
                        )

        transform.enqueue()

        print(cl_data_transformed.get)
        print(np.fft.rfft2(nd_data))
        
        assert np.allclose(cl_data_transformed.get(),
                           np.fft.rfft2(nd_data),
                           rtol=1e-8, atol=1e-8)
示例#3
0
    def test_1d_inplace_double(self, ctx):
        if not has_double(ctx):  #TODO: find better way to skip test
            return
        queue = cl.CommandQueue(ctx)

        nd_data = np.arange(32, dtype=np.complex128)
        cl_data = cla.to_device(queue, nd_data)

        transform = FFT(ctx, queue, cl_data)
        transform.enqueue()

        assert np.allclose(cl_data.get(), np.fft.fft(nd_data))
示例#4
0
    def test_1d_inplace_double(self, ctx):
        if not has_double(ctx): #TODO: find better way to skip test
            return
        queue = cl.CommandQueue(ctx)
        
        nd_data = np.arange(32, dtype=np.complex128)
        cl_data = cla.to_device(queue, nd_data)
        
        transform = FFT(ctx, queue,
                        cl_data)
        transform.enqueue()

        assert np.allclose(cl_data.get(),
                           np.fft.fft(nd_data))