All pastes #1490830 Raw Edit

Python

public python v1 · immutable
#1490830 ·published 2009-07-10 16:25 UTC
rendered paste body
#!/usr/bin/env pythonimport timeimport numpy as npfrom ase.utils.memory import MemoryStatistics, MemorySingletonfrom gpaw.utilities.blas import gemmdot, dotu, gemvdef getrand(shape, dtype):    if type(shape) is int:        shape = (shape,)    nelements = np.prod(shape)    if dtype == float:        return np.random.normal(size=nelements).reshape(shape)    elif dtype == complex:        return (np.random.uniform(size=nelements) * np.exp(1j \            * np.random.uniform(0,2*np.pi,size=nelements))).reshape(shape)    else:        raise ValueError('Unsupported dtype "%s".' % dtype)Q = 456G = 5013dtype = floatmem = 0itemsize = np.nbytes[np.float_]mem += Q*G*itemsize #n_qgmem += G*itemsize #x_gmem += Q*itemsize #nx_qprint 'Estimated memory: %8.5f MB' % (mem/1024**2.,)n_qg = getrand((Q,G), dtype)x_g = getrand(G, dtype)# -------------------------------------------------------------------print '\n%s\nnx_q calculations\n%s\n' % ('='*40, '='*40)numflop = (dtype==float and 2 or 8)*Q*Gnumreps = 100# Reference valuenx0_q = np.dot(n_qg, x_g)mem = MemoryStatistics(); t = time.time()for n in range(numreps):    nx1_q = np.dot(n_qg, x_g)t = time.time()-t; mem = MemoryStatistics()-memperformance = numflop*numreps/tprint 'dot    : %8.5f s, memory: %8.5f MB, %8.5f Mflops' % (t,mem['VmSize']/1024**2.,performance/1024**2.)assert np.abs(nx0_q-nx1_q).max()<1e-9del nx1_qmem = MemoryStatistics(); t = time.time()nx2_q = np.zeros(Q, dtype)for n in range(numreps):    gemmdot(n_qg, x_g, 1.0, 0.0, nx2_q)t = time.time()-t; mem = MemoryStatistics()-memperformance = numflop*numreps/tprint 'gemmdot: %8.5f s, memory: %8.5f MB, %8.5f Mflops' % (t,mem['VmSize']/1024**2.,performance/1024**2.)assert np.abs(nx0_q-nx2_q).max()<1e-9del nx2_qmem = MemoryStatistics(); t = time.time()nx3_q = np.zeros(Q, dtype)for n in range(numreps):	gemv(1.0, n_qg, x_g, 0.0, nx3_q, 't')t = time.time()-t; mem = MemoryStatistics()-memperformance = numflop*numreps/tprint 'gemv   : %8.5f s, memory: %8.5f MB, %8.5f Mflops' % (t,mem['VmSize']/1024**2.,performance/1024**2.)assert np.abs(nx0_q-nx3_q).max()<1e-9del nx3_qmem = MemoryStatistics(); t = time.time()nT_gq = n_qg.T.copy()nx4_q = np.zeros(Q, dtype)for n in range(numreps):	gemv(1.0, nT_gq, x_g, 0.0, nx4_q, 'n')t = time.time()-t; mem = MemoryStatistics()-memperformance = numflop*numreps/tprint 'gemvT  : %8.5f s, memory: %8.5f MB, %8.5f Mflops' % (t,mem['VmSize']/1024**2.,performance/1024**2.)assert np.abs(nx0_q-nx4_q).max()<1e-9del nT_gq, nx4_q