File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1212
1313import sys
1414from time import time
15- from arrayfire import (array , randu , matmul )
1615import arrayfire as af
1716
18- def bench (A , iters = 100 ):
19- start = time ()
20- for t in range (iters ):
21- B = af .matmul (A , A )
17+ try :
18+ import numpy as np
19+ except :
20+ np = None
21+
22+
23+ def calc_arrayfire (n ):
24+ A = af .randu (n , n )
2225 af .sync ()
23- return (time () - start ) / iters
26+
27+ def run (iters ):
28+ for t in range (iters ):
29+ B = af .matmul (A , A )
30+ af .sync ()
31+
32+ return run
33+
34+
35+ def calc_numpy (n ):
36+ np .random .seed (1 )
37+ A = np .random .rand (n , n ).astype (np .float32 )
38+
39+ def run (iters ):
40+ for t in range (iters ):
41+ B = np .dot (A , A )
42+
43+ return run
44+
45+
46+ def bench (calc , iters = 100 , upto = 2048 ):
47+ _ , name = calc .__name__ .split ("_" )
48+ print ("Benchmark N x N matrix multiply on %s" % name )
49+
50+ for n in range (128 , upto + 128 , 128 ):
51+ run = calc (n )
52+ start = time ()
53+ run (iters )
54+ t = (time () - start ) / iters
55+ gflops = 2.0 * (n ** 3 ) / (t * 1E9 )
56+ print ("Time taken for %4d x %4d: %0.4f Gflops" % (n , n , gflops ))
57+
2458
2559if __name__ == "__main__" :
2660
2761 if (len (sys .argv ) > 1 ):
2862 af .set_device (int (sys .argv [1 ]))
2963
3064 af .info ()
31- print ("Benchmark N x N matrix multiply" )
32-
33- for n in range (128 , 2048 + 128 , 128 ):
34- A = af .randu (n , n )
35- af .sync ()
3665
37- t = bench (A )
38- gflops = 2.0 * ( n ** 3 ) / ( t * 1E9 )
39- print ( "Time taken for %4d x %4d: %0.4f Gflops" % ( n , n , gflops ) )
66+ bench (calc_arrayfire )
67+ if np :
68+ bench ( calc_numpy , upto = 512 )
Original file line number Diff line number Diff line change 1212
1313import sys
1414from time import time
15- from arrayfire import (array , randu , matmul )
1615import arrayfire as af
1716
18- def bench (A , iters = 100 ):
19- start = time ()
20- for t in range (iters ):
21- B = af .fft2 (A )
17+ try :
18+ import numpy as np
19+ except :
20+ np = None
21+
22+
23+ def calc_arrayfire (n ):
24+ A = af .randu (n , n )
2225 af .sync ()
23- return (time () - start ) / iters
26+
27+ def run (iters ):
28+ for t in range (iters ):
29+ B = af .fft2 (A )
30+
31+ af .sync ()
32+
33+ return run
34+
35+
36+ def calc_numpy (n ):
37+ np .random .seed (1 )
38+ A = np .random .rand (n , n ).astype (np .float32 )
39+
40+ def run (iters ):
41+ for t in range (iters ):
42+ B = np .fft .fft2 (A )
43+
44+ return run
45+
46+
47+ def bench (calc , iters = 100 , upto = 13 ):
48+ _ , name = calc .__name__ .split ("_" )
49+ print ("Benchmark N x N 2D fft on %s" % name )
50+
51+ for M in range (7 , upto ):
52+ N = 1 << M
53+ run = calc (N )
54+ start = time ()
55+ run (iters )
56+ t = (time () - start ) / iters
57+ gflops = (10.0 * N * N * M ) / (t * 1E9 )
58+ print ("Time taken for %4d x %4d: %0.4f Gflops" % (N , N , gflops ))
59+
2460
2561if __name__ == "__main__" :
2662
2763 if (len (sys .argv ) > 1 ):
2864 af .set_device (int (sys .argv [1 ]))
2965
3066 af .info ()
31- print ("Benchmark N x N 2D fft" )
3267
33- for M in range (7 , 13 ):
34- N = 1 << M
35- A = af .randu (N , N )
36- af .sync ()
37-
38- t = bench (A )
39- gflops = (10.0 * N * N * M ) / (t * 1E9 )
40- print ("Time taken for %4d x %4d: %0.4f Gflops" % (N , N , gflops ))
68+ bench (calc_arrayfire )
69+ if np :
70+ bench (calc_numpy , upto = 10 )
You can’t perform that action at this time.
0 commit comments