| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- import os.path
- import itertools
- import Tools
- import random
- import numpy as np
- NBTESTSAMPLES = 10
- # Nb vectors for barycenter
- NBVECTORS = [4,10,16]
- VECDIM = [12,14,20]
- def genWsum(config,nb,vecDim):
- dims=[]
- inputs=[]
- weights=[]
- output=[]
- va = np.random.rand(vecDim)
- vb = np.random.rand(vecDim)
- e = np.sum(va.T * vb) / np.sum(vb)
- inputs += list(va)
- weights += list(vb)
- output.append(e)
- inputs=np.array(inputs)
- weights=np.array(weights)
- output=np.array(output)
- config.writeInput(nb, inputs,"Inputs")
- config.writeInput(nb, weights,"Weights")
- config.writeReference(nb, output,"Ref")
- def genBarycenter(config,nb,nbTests,nbVecs,vecDim):
- dims=[]
- inputs=[]
- weights=[]
- output=[]
- dims.append(nbTests)
- dims.append(nbVecs)
- dims.append(vecDim)
- for _ in range(0,nbTests):
-
- vecs = []
- b = np.zeros(vecDim)
- coefs = np.random.rand(nbVecs)
-
- for i in range(nbVecs):
- va = np.random.rand(vecDim)
- b += va * coefs[i]
- vecs += list(va)
-
- b = b / np.sum(coefs)
-
- inputs += list(vecs)
- weights += list(coefs)
- output += list(b)
- inputs=np.array(inputs)
- weights=np.array(weights)
- output=np.array(output)
- config.writeInput(nb, inputs,"Inputs")
- config.writeInputS16(nb, dims,"Dims")
- config.writeInput(nb, weights,"Weights")
- config.writeReference(nb, output,"Ref")
- def writeTestsF32(config):
- NBSAMPLES=256
- va = np.random.rand(NBSAMPLES)
- config.writeInput(1,va,"Samples")
- config.writeInputQ15(3,va,"Samples")
- config.writeInputQ31(4,va,"Samples")
- config.writeInputQ7(5,va,"Samples")
- # This is for benchmarking the weighted sum and we use only one test pattern
- genWsum(config,6,256)
-
- def writeTestsQ31(config):
- NBSAMPLES=256
- va = np.random.rand(NBSAMPLES)
- config.writeInput(1,va,"Samples")
- config.writeInputQ15(3,va,"Samples")
- config.writeInputQ7(4,va,"Samples")
- def writeTestsQ15(config):
- NBSAMPLES=256
- va = np.random.rand(NBSAMPLES)
- config.writeInput(1,va,"Samples")
- config.writeInputQ31(3,va,"Samples")
- config.writeInputQ7(4,va,"Samples")
- def writeTestsQ7(config):
- NBSAMPLES=256
- va = np.random.rand(NBSAMPLES)
- config.writeInput(1,va,"Samples")
- config.writeInputQ31(3,va,"Samples")
- config.writeInputQ15(4,va,"Samples")
- def writeBarTests(config):
- # For testing
- genBarycenter(config,1,NBTESTSAMPLES,10,14)
- # For benchmarks
- va = np.random.rand(128*15)
- vb = np.random.rand(128)
- config.writeInput(1,va,"Samples")
- config.writeInput(1,vb,"Coefs")
- PATTERNDIR = os.path.join("Patterns","DSP","Support","Support")
- PARAMDIR = os.path.join("Parameters","DSP","Support","Support")
- configf32=Tools.Config(PATTERNDIR,PARAMDIR,"f32")
- configq31=Tools.Config(PATTERNDIR,PARAMDIR,"q31")
- configq15=Tools.Config(PATTERNDIR,PARAMDIR,"q15")
- configq7=Tools.Config(PATTERNDIR,PARAMDIR,"q7")
- writeTestsF32(configf32)
- writeTestsQ31(configq31)
- writeTestsQ15(configq15)
- writeTestsQ7(configq7)
- # For benchmarking we need to vary number of vectors and vector dimension separately
- PATTERNBARDIR = os.path.join("Patterns","DSP","SupportBar")
- PARAMBARDIR = os.path.join("Parameters","DSP","SupportBar")
- configBarf32=Tools.Config(PATTERNBARDIR,PARAMBARDIR,"f32")
- writeBarTests(configBarf32)
|