Révision 303 ETSN/MyDFT_10.py

MyDFT_10.py (revision 303)
8 8
def NumpyFFT(x,y):
9 9
    xy=np.csingle(x+1.j*y)
10 10
    XY=np.fft.fft(xy)
11
    print(XY)
12 11
    return(XY.real,XY.imag)
13 12

  
14 13
#
......
52 51
    print("Copy from Host to Device : %.3f" % Elapsed)
53 52

  
54 53
    TimeIn=time.time()
55
    transform = FFT(ctx, queue, XY_gpu)   
54
    transform = FFT(ctx, queue, XY_gpu)
56 55
    event, = transform.enqueue()
57 56
    event.wait()
58 57
    Elapsed=time.time()-TimeIn
......
61 60
    XY = XY_gpu.get()
62 61
    Elapsed=time.time()-TimeIn
63 62
    print("Copy from Device to Host : %.3f" % Elapsed)
64
    print(XY)
65 63
    return(XY.real,XY.imag)
66 64

  
67 65
# Naive Discrete Fourier Transform
......
283 281
    Device=0
284 282
    NaiveMethod=False
285 283
    NumpyFFTMethod=True
286
    OpenCLFFTMethod=False
284
    OpenCLFFTMethod=True
287 285
    NumpyMethod=False
288 286
    NumbaMethod=False
289 287
    OpenCLMethod=False
290
    CUDAMethod=True
288
    CUDAMethod=False
291 289
    Threads=1
290
    Verbose=True
292 291
    
293 292
    import getopt
294 293

  
295 294
    HowToUse='%s -n [Naive] -y [numpY] -a [numbA] -o [OpenCL] -c [CUDA] -s <SizeOfVector> -d <DeviceId> -t <threads>'
296 295
    
297 296
    try:
298
        opts, args = getopt.getopt(sys.argv[1:],"nyaochs:d:t:",["size=","device="])
297
        opts, args = getopt.getopt(sys.argv[1:],"vnyaochs:d:t:",["size=","device="])
299 298
    except getopt.GetoptError:
300 299
        print(HowToUse % sys.argv[0])
301 300
        sys.exit(2)
......
361 360
    print("FFT Numpy computation %s " % NumpyFFTMethod )
362 361
    print("DFT Numba computation %s " % NumbaMethod )
363 362
    print("DFT OpenCL computation %s " % OpenCLMethod )
363
    print("FFT OpenCL computation %s " % OpenCLFFTMethod )
364 364
    print("DFT CUDA computation %s " % CUDAMethod )
365 365
    
366 366
    if CUDAMethod:
......
476 476
    
477 477
    # OpenCL Implementation
478 478
    if OpenCLFFTMethod:
479
        print("Performing OpenCL implementation")
479
        print("Performing OpenCLFFT implementation")
480 480
        TimeIn=time.time()
481 481
        i_np,j_np=OpenCLFFT(a_np,b_np,Device)
482 482
        OpenCLFFTElapsed=time.time()-TimeIn
483 483
        OpenCLFFTRate=int(SIZE/OpenCLFFTElapsed)
484
        print("OpenCLElapsed: %i" % OpenCLFFTElapsed)
485
        print("OpenCLRate: %i" % OpenCLFFTRate)
484
        print("OpenCLFFTElapsed: %i" % OpenCLFFTElapsed)
485
        print("OpenCLFFTRate: %i" % OpenCLFFTRate)
486 486
        print("Precision: ",np.linalg.norm(i_np-C_np),
487 487
              np.linalg.norm(j_np-D_np)) 
488 488
    

Formats disponibles : Unified diff