Révision 296 ETSN/MyDFT_10.py

MyDFT_10.py (revision 296)
6 6

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

  
13 14
#
......
18 19
    import gpyfft
19 20
    from gpyfft.fft import FFT
20 21

  
22
    TimeIn=time.time()
21 23
    Id=0
22 24
    HasXPU=False
23 25
    for platform in cl.get_platforms():
......
32 34
    if HasXPU==False:
33 35
        print("No XPU #%i found in all of %i devices, sorry..." % (Device,Id-1))
34 36
        sys.exit()           
37
    Elapsed=time.time()-TimeIn
38
    print("Selection of device : %.3f" % Elapsed)
35 39

  
40
    TimeIn=time.time()
36 41
    try:
37 42
        ctx = cl.Context(devices=[XPU])
38 43
        queue = cl.CommandQueue(ctx,properties=cl.command_queue_properties.PROFILING_ENABLE)
39 44
    except:
40 45
        print("Crash during context creation")
46
    Elapsed=time.time()-TimeIn
47
    print("Context initialisation : %.3f" % Elapsed)
41 48

  
42
    XY_gpu = cla.to_device(queue, x+1.j*y)
49
    TimeIn=time.time()
50
    XY_gpu = cla.to_device(queue, np.csingle(x+1.j*y))
51
    Elapsed=time.time()-TimeIn
52
    print("Copy from Host to Device : %.3f" % Elapsed)
43 53

  
44
    transform = FFT(ctx, queue, XY_gpu)
45

  
54
    TimeIn=time.time()
55
    transform = FFT(ctx, queue, XY_gpu)   
46 56
    event, = transform.enqueue()
47 57
    event.wait()
48

  
58
    Elapsed=time.time()-TimeIn
59
    print("Compute FFT : %.3f" % Elapsed)
60
    TimeIn=time.time()
49 61
    XY = XY_gpu.get()
62
    Elapsed=time.time()-TimeIn
63
    print("Copy from Device to Host : %.3f" % Elapsed)
64
    print(XY)
50 65
    return(XY.real,XY.imag)
51 66

  
52 67
# Naive Discrete Fourier Transform
......
451 466
        m_np,n_np=NumpyFFT(a_np,b_np)
452 467
        NumpyFFTElapsed=time.time()-TimeIn
453 468
        NumpyFFTRate=int(SIZE/NumpyFFTElapsed)
469
        print("NumpyFFTElapsed: %i" % NumpyFFTElapsed)
454 470
        print("NumpyFFTRate: %i" % NumpyFFTRate)
455 471
        print("Precision: ",np.linalg.norm(m_np-C_np),
456 472
              np.linalg.norm(n_np-D_np)) 
......
462 478
        i_np,j_np=OpenCLFFT(a_np,b_np,Device)
463 479
        OpenCLFFTElapsed=time.time()-TimeIn
464 480
        OpenCLFFTRate=int(SIZE/OpenCLFFTElapsed)
481
        print("OpenCLElapsed: %i" % OpenCLFFTElapsed)
465 482
        print("OpenCLRate: %i" % OpenCLFFTRate)
466 483
        print("Precision: ",np.linalg.norm(i_np-C_np),
467 484
              np.linalg.norm(j_np-D_np)) 
468 485
    
486
    if OpenCLFFTMethod and NumpyFFTMethod:
487
        print("NumpyOpenCLRatio: %f" % (OpenCLFFTRate/NumpyFFTRate))

Formats disponibles : Unified diff