59 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
| #!/usr/bin/env python
 | |
| 
 | |
| import os
 | |
| import sys
 | |
| import time
 | |
| import numpy
 | |
| from numpy import zeros
 | |
| from numpy.random import randn
 | |
| from scipy.linalg import blas
 | |
| 
 | |
| 
 | |
| def run_ssyrk(N, l):
 | |
| 
 | |
|     A = randn(N, N).astype('float32', order='F')
 | |
|     C = zeros((N, N), dtype='float32', order='F')
 | |
| 
 | |
|     start = time.time()
 | |
|     for i in range(0, l):
 | |
|         blas.ssyrk(1.0, A, c=C, overwrite_c=True)
 | |
|     end = time.time()
 | |
| 
 | |
|     timediff = (end - start)
 | |
|     mflops = (N * N * N) * l / timediff
 | |
|     mflops *= 1e-6
 | |
| 
 | |
|     size = "%dx%d" % (N, N)
 | |
|     print("%14s :\t%20f MFlops\t%20f sec" % (size, mflops, timediff))
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     N = 128
 | |
|     NMAX = 2048
 | |
|     NINC = 128
 | |
|     LOOPS = 1
 | |
| 
 | |
|     z = 0
 | |
|     for arg in sys.argv:
 | |
|         if z == 1:
 | |
|             N = int(arg)
 | |
|         elif z == 2:
 | |
|             NMAX = int(arg)
 | |
|         elif z == 3:
 | |
|             NINC = int(arg)
 | |
|         elif z == 4:
 | |
|             LOOPS = int(arg)
 | |
| 
 | |
|         z = z + 1
 | |
| 
 | |
|     if 'OPENBLAS_LOOPS' in os.environ:
 | |
|         p = os.environ['OPENBLAS_LOOPS']
 | |
|         if p:
 | |
|             LOOPS = int(p)
 | |
| 
 | |
|     print("From: %d To: %d Step=%d Loops=%d" % (N, NMAX, NINC, LOOPS))
 | |
|     print("\tSIZE\t\t\tFlops\t\t\t\t\tTime")
 | |
| 
 | |
|     for i in range(N, NMAX + NINC, NINC):
 | |
|         run_ssyrk(i, LOOPS)
 |