File tree Expand file tree Collapse file tree 2 files changed +88
-29
lines changed Expand file tree Collapse file tree 2 files changed +88
-29
lines changed 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