Commit e3d06876 by Martin Reinecke

### use new numpy random interface everywhere

parent bf32424e
 ... @@ -3,7 +3,8 @@ import ducc_0_1.fft as duccfft ... @@ -3,7 +3,8 @@ import ducc_0_1.fft as duccfft from time import time from time import time import matplotlib.pyplot as plt import matplotlib.pyplot as plt np.random.seed(42) rng = np.random.default_rng(42) def _l2error(a, b): def _l2error(a, b): ... @@ -107,11 +108,11 @@ def bench_nd(ndim, nmax, nthr, ntry, tp, funcs, nrepeat, ttl="", filename="", ... @@ -107,11 +108,11 @@ def bench_nd(ndim, nmax, nthr, ntry, tp, funcs, nrepeat, ttl="", filename="", print("{}D, type {}, max extent is {}:".format(ndim, tp, nmax)) print("{}D, type {}, max extent is {}:".format(ndim, tp, nmax)) results = [[] for i in range(len(funcs))] results = [[] for i in range(len(funcs))] for n in range(ntry): for n in range(ntry): shp = np.random.randint(nmax//3, nmax+1, ndim) shp = rng.integers(nmax//3, nmax+1, ndim) if nice_sizes: if nice_sizes: shp = np.array([duccfft.good_size(sz) for sz in shp]) shp = np.array([duccfft.good_size(sz) for sz in shp]) print(" {0:4d}/{1}: shape={2} ...".format(n, ntry, shp), end=" ", flush=True) print(" {0:4d}/{1}: shape={2} ...".format(n, ntry, shp), end=" ", flush=True) a = (np.random.rand(*shp)-0.5 + 1j*(np.random.rand(*shp)-0.5)).astype(tp) a = (rng.random(shp)-0.5 + 1j*(rng.random(shp)-0.5)).astype(tp) output=[] output=[] for func, res in zip(funcs, results): for func, res in zip(funcs, results): tmp = func(a, nrepeat, nthr) tmp = func(a, nrepeat, nthr) ... ...
 ... @@ -2,6 +2,9 @@ import numpy as np ... @@ -2,6 +2,9 @@ import numpy as np import ducc_0_1.fft as fft import ducc_0_1.fft as fft rng = np.random.default_rng(42) def _l2error(a, b, axes): def _l2error(a, b, axes): return np.sqrt(np.sum(np.abs(a-b)**2)/np.sum(np.abs(a)**2))/np.log2(np.max([2,np.prod(np.take(a.shape,axes))])) return np.sqrt(np.sum(np.abs(a-b)**2)/np.sum(np.abs(a)**2))/np.log2(np.max([2,np.prod(np.take(a.shape,axes))])) ... @@ -41,15 +44,15 @@ def update_err(err, name, value, shape): ... @@ -41,15 +44,15 @@ def update_err(err, name, value, shape): def test(err): def test(err): ndim = np.random.randint(1, 5) ndim = rng.integers(1, 5) axlen = int((2**20)**(1./ndim)) axlen = int((2**20)**(1./ndim)) shape = np.random.randint(1, axlen, ndim) shape = rng.integers(1, axlen, ndim) axes = np.arange(ndim) axes = np.arange(ndim) np.random.shuffle(axes) rng.shuffle(axes) nax = np.random.randint(1, ndim+1) nax = rng.integers(1, ndim+1) axes = axes[:nax] axes = axes[:nax] lastsize = shape[axes[-1]] lastsize = shape[axes[-1]] a = np.random.rand(*shape)-0.5 + 1j*np.random.rand(*shape)-0.5j a = rng.random(shape)-0.5 + 1j*rng.random(shape)-0.5j a_32 = a.astype(np.complex64) a_32 = a.astype(np.complex64) b = ifftn(fftn(a, axes=axes, nthreads=nthreads), axes=axes, inorm=2, b = ifftn(fftn(a, axes=axes, nthreads=nthreads), axes=axes, inorm=2, nthreads=nthreads) nthreads=nthreads) ... ...
 ... @@ -3,17 +3,19 @@ import math ... @@ -3,17 +3,19 @@ import math import numpy as np import numpy as np import ducc_0_1.healpix as ph import ducc_0_1.healpix as ph rng = np.random.default_rng(42) def report (name,vlen,ntry,nside,isnest,perf): def report (name,vlen,ntry,nside,isnest,perf): print (name,": ",perf*1e-6,"MOps/s",sep="") print (name,": ",perf*1e-6,"MOps/s",sep="") def random_ptg(vlen): def random_ptg(vlen): res=np.empty((vlen,2),dtype=np.float64) res=np.empty((vlen,2),dtype=np.float64) res[:,0]=np.arccos((np.random.random_sample(vlen)-0.5)*2) res[:,0]=np.arccos((rng.random(vlen)-0.5)*2) res[:,1]=np.random.random_sample(vlen)*2*math.pi res[:,1]=rng.random(vlen)*2*math.pi return res return res def random_pix(nside,vlen): def random_pix(nside,vlen): return np.random.randint(low=0,high=12*nside*nside-1,size=vlen,dtype=np.int64) return rng.integers(low=0,high=12*nside*nside-1,size=vlen,dtype=np.int64) def dummy(vlen): def dummy(vlen): inp=np.zeros(vlen,dtype=np.int64) inp=np.zeros(vlen,dtype=np.int64) ... ...
 ... @@ -2,10 +2,12 @@ import ducc_0_1.healpix as ph ... @@ -2,10 +2,12 @@ import ducc_0_1.healpix as ph import numpy as np import numpy as np import math import math rng = np.random.default_rng(42) def random_ptg(vlen): def random_ptg(vlen): res = np.empty((vlen, 2), dtype=np.float64) res = np.empty((vlen, 2), dtype=np.float64) res[:,0] = np.arccos((np.random.random_sample(vlen)-0.5)*2) res[:,0] = np.arccos((rng.random(vlen)-0.5)*2) res[:,1] = np.random.random_sample(vlen)*2*math.pi res[:,1] = rng.random(vlen)*2*math.pi return res return res def check_pixangpix(vlen,ntry,nside,isnest): def check_pixangpix(vlen,ntry,nside,isnest): ... @@ -13,7 +15,7 @@ def check_pixangpix(vlen,ntry,nside,isnest): ... @@ -13,7 +15,7 @@ def check_pixangpix(vlen,ntry,nside,isnest): cnt = 0 cnt = 0 while cnt < ntry: while cnt < ntry: cnt += 1 cnt += 1 inp = np.random.randint(low=0, high=12*nside*nside-1, size=vlen) inp = rng.integers(low=0, high=12*nside*nside-1, size=vlen) out = base.ang2pix(base.pix2ang(inp)) out = base.ang2pix(base.pix2ang(inp)) if not np.array_equal(inp, out): if not np.array_equal(inp, out): raise ValueError("Test failed") raise ValueError("Test failed") ... @@ -33,7 +35,7 @@ def check_pixangvecpix(vlen, ntry, nside, isnest): ... @@ -33,7 +35,7 @@ def check_pixangvecpix(vlen, ntry, nside, isnest): cnt = 0 cnt = 0 while cnt < ntry: while cnt < ntry: cnt += 1 cnt += 1 inp = np.random.randint(low=0, high=12*nside*nside-1, size=vlen) inp = rng.integers(low=0, high=12*nside*nside-1, size=vlen) out = base.vec2pix(ph.ang2vec(base.pix2ang(inp))) out = base.vec2pix(ph.ang2vec(base.pix2ang(inp))) if not np.array_equal(inp,out): if not np.array_equal(inp,out): raise ValueError("Test failed") raise ValueError("Test failed") ... @@ -43,7 +45,7 @@ def check_pixvecangpix(vlen, ntry, nside, isnest): ... @@ -43,7 +45,7 @@ def check_pixvecangpix(vlen, ntry, nside, isnest): cnt = 0 cnt = 0 while cnt < ntry: while cnt < ntry: cnt += 1 cnt += 1 inp = np.random.randint(low=0, high=12*nside*nside-1, size=vlen) inp = rng.integers(low=0, high=12*nside*nside-1, size=vlen) out = base.ang2pix(ph.vec2ang(base.pix2vec(inp))) out = base.ang2pix(ph.vec2ang(base.pix2vec(inp))) if not np.array_equal(inp,out): if not np.array_equal(inp,out): raise ValueError("Test failed") raise ValueError("Test failed") ... @@ -53,7 +55,7 @@ def check_pixvecpix(vlen,ntry,nside,isnest): ... @@ -53,7 +55,7 @@ def check_pixvecpix(vlen,ntry,nside,isnest): cnt=0 cnt=0 while (cnt
 ... @@ -35,7 +35,8 @@ job = sht.sharpjob_d() ... @@ -35,7 +35,8 @@ job = sht.sharpjob_d() # number of required a_lm coefficients # number of required a_lm coefficients nalm = ((mmax+1)*(mmax+2))//2 + (mmax+1)*(lmax-mmax) nalm = ((mmax+1)*(mmax+2))//2 + (mmax+1)*(lmax-mmax) # get random a_lm # get random a_lm alm = np.random.uniform(-1., 1., nalm) + 1j*np.random.uniform(-1., 1., nalm) rng = np.random.default_rng(42) alm = rng.uniform(-1., 1., nalm) + 1j*rng.uniform(-1., 1., nalm) # make a_lm with m==0 real-valued # make a_lm with m==0 real-valued alm[0:lmax+1].imag = 0. alm[0:lmax+1].imag = 0. ... ...
 ... @@ -14,7 +14,8 @@ print("Generating spherical harmonic coefficients up to {}".format(lmax)) ... @@ -14,7 +14,8 @@ print("Generating spherical harmonic coefficients up to {}".format(lmax)) # number of required a_lm coefficients # number of required a_lm coefficients nalm = ((mmax+1)*(mmax+2))//2 + (mmax+1)*(lmax-mmax) nalm = ((mmax+1)*(mmax+2))//2 + (mmax+1)*(lmax-mmax) # get random a_lm # get random a_lm alm = np.random.uniform(-1., 1., nalm) + 1j*np.random.uniform(-1., 1., nalm) rng = np.random.default_rng(42) alm = rng.uniform(-1., 1., nalm) + 1j*rng.uniform(-1., 1., nalm) # make a_lm with m==0 real-valued # make a_lm with m==0 real-valued alm[0:lmax+1].imag = 0. alm[0:lmax+1].imag = 0. ... ...
 ... @@ -5,15 +5,15 @@ import ducc_0_1.misc as misc ... @@ -5,15 +5,15 @@ import ducc_0_1.misc as misc import time import time import matplotlib.pyplot as plt import matplotlib.pyplot as plt np.random.seed(48) rng = np.random.default_rng(42) def nalm(lmax, mmax): def nalm(lmax, mmax): return ((mmax+1)*(mmax+2))//2 + (mmax+1)*(lmax-mmax) return ((mmax+1)*(mmax+2))//2 + (mmax+1)*(lmax-mmax) def random_alm(lmax, mmax, ncomp): def random_alm(lmax, mmax, ncomp): res = np.random.uniform(-1., 1., (nalm(lmax, mmax), ncomp)) \ res = rng.uniform(-1., 1., (nalm(lmax, mmax), ncomp)) \ + 1j*np.random.uniform(-1., 1., (nalm(lmax, mmax), ncomp)) + 1j*rng.uniform(-1., 1., (nalm(lmax, mmax), ncomp)) # make a_lm with m==0 real-valued # make a_lm with m==0 real-valued res[0:lmax+1,:].imag = 0. res[0:lmax+1,:].imag = 0. return res return res ... ...
 ... @@ -2,15 +2,15 @@ import ducc_0_1.totalconvolve as totalconvolve ... @@ -2,15 +2,15 @@ import ducc_0_1.totalconvolve as totalconvolve import numpy as np import numpy as np import time import time np.random.seed(48) rng = np.random.default_rng(48) def nalm(lmax, mmax): def nalm(lmax, mmax): return ((mmax+1)*(mmax+2))//2 + (mmax+1)*(lmax-mmax) return ((mmax+1)*(mmax+2))//2 + (mmax+1)*(lmax-mmax) def random_alm(lmax, mmax, ncomp): def random_alm(lmax, mmax, ncomp): res = np.random.uniform(-1., 1., (nalm(lmax, mmax), ncomp)) \ res = rng.uniform(-1., 1., (nalm(lmax, mmax), ncomp)) \ + 1j*np.random.uniform(-1., 1., (nalm(lmax, mmax), ncomp)) + 1j*rng.uniform(-1., 1., (nalm(lmax, mmax), ncomp)) # make a_lm with m==0 real-valued # make a_lm with m==0 real-valued res[0:lmax+1,:].imag = 0. res[0:lmax+1,:].imag = 0. return res return res ... @@ -68,7 +68,7 @@ t0=time.time() ... @@ -68,7 +68,7 @@ t0=time.time() nth = lmax+1 nth = lmax+1 nph = 2*lmax+1 nph = 2*lmax+1 ptg=np.random.uniform(0.,1.,3*nptg).reshape(nptg,3) ptg=rng.uniform(0.,1.,3*nptg).reshape(nptg,3) ptg[:,0]*=np.pi ptg[:,0]*=np.pi ptg[:,1]*=2*np.pi ptg[:,1]*=2*np.pi ptg[:,2]*=2*np.pi ptg[:,2]*=2*np.pi ... @@ -78,7 +78,7 @@ bar=foo.interpol(ptg) ... @@ -78,7 +78,7 @@ bar=foo.interpol(ptg) del foo del foo print("Interpolating {} random angle triplets: {}s".format(nptg, time.time() -t0)) print("Interpolating {} random angle triplets: {}s".format(nptg, time.time() -t0)) t0=time.time() t0=time.time() fake = np.random.uniform(0.,1., (ptg.shape[0],ncomp2)) fake = rng.uniform(0.,1., (ptg.shape[0],ncomp2)) foo2 = totalconvolve.PyInterpolator(lmax, kmax, ncomp2, epsilon=epsilon, ofactor=ofactor, nthreads=nthreads) foo2 = totalconvolve.PyInterpolator(lmax, kmax, ncomp2, epsilon=epsilon, ofactor=ofactor, nthreads=nthreads) t0=time.time() t0=time.time() foo2.deinterpol(ptg.reshape((-1,3)), fake) foo2.deinterpol(ptg.reshape((-1,3)), fake) ... ...
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!