1#!/usr/bin/python 2 3import os 4import sys 5import time 6import numpy 7from numpy.random import randn 8 9def run_sdot(N,l): 10 11 A = randn(N).astype('float32') 12 B = randn(N).astype('float32') 13 14 start = time.time(); 15 for i in range(0,l): 16 ref = numpy.dot(A,B) 17 end = time.time() 18 19 timediff = (end -start) 20 mflops = ( 2*N ) *l / timediff 21 mflops *= 1e-6 22 23 size = "%d" % (N) 24 print("%14s :\t%20f MFlops\t%20f sec" % (size,mflops,timediff)) 25 26 27if __name__ == "__main__": 28 N=128 29 NMAX=2048 30 NINC=128 31 LOOPS=1 32 33 z=0 34 for arg in sys.argv: 35 if z == 1: 36 N = int(arg) 37 elif z == 2: 38 NMAX = int(arg) 39 elif z == 3: 40 NINC = int(arg) 41 elif z == 4: 42 LOOPS = int(arg) 43 44 z = z + 1 45 46 if 'OPENBLAS_LOOPS' in os.environ: 47 p = os.environ['OPENBLAS_LOOPS'] 48 if p: 49 LOOPS = int(p); 50 51 print("From: %d To: %d Step=%d Loops=%d" % (N, NMAX, NINC, LOOPS)) 52 print("\tSIZE\t\t\tFlops\t\t\t\t\tTime") 53 54 for i in range (N,NMAX+NINC,NINC): 55 run_sdot(i,LOOPS) 56 57