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 12
12
13
13
import sys
14
14
from time import time
15
- from arrayfire import (array , randu , matmul )
16
15
import arrayfire as af
17
16
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 )
22
25
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
+
24
58
25
59
if __name__ == "__main__" :
26
60
27
61
if (len (sys .argv ) > 1 ):
28
62
af .set_device (int (sys .argv [1 ]))
29
63
30
64
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 ()
36
65
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 12
12
13
13
import sys
14
14
from time import time
15
- from arrayfire import (array , randu , matmul )
16
15
import arrayfire as af
17
16
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 )
22
25
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
+
24
60
25
61
if __name__ == "__main__" :
26
62
27
63
if (len (sys .argv ) > 1 ):
28
64
af .set_device (int (sys .argv [1 ]))
29
65
30
66
af .info ()
31
- print ("Benchmark N x N 2D fft" )
32
67
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