#!/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_dsyrk(N, l): A = randn(N, N).astype('float64', order='F') C = zeros((N, N), dtype='float64', order='F') start = time.time() for i in range(0, l): blas.dsyrk(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_dsyrk(i, LOOPS)