def _declareArguments(self): nGlobal = self.comp.varParams['size'] localSizes = numpy.zeros(self.size, int) for i in xrange(self.size): procPctg = 1.0 / (self.size - i) remainingSize = nGlobal - numpy.sum(localSizes) localSizes[i] = int(round(procPctg * remainingSize)) i1 = numpy.sum(localSizes[:self.rank]) i2 = numpy.sum(localSizes[:self.rank + 1]) self._setLocalSize(localSizes[self.rank]) self.cplFactors = [] wrap, a, b = self.comp.compParams['struct'] coupling = self.comp.compParams['coupling'] numDeps = self.comp.compParams['numDeps'] rands = numpy.array([random.random() for i in xrange(numDeps)]) nLocal = i2 - i1 indices, cplFactors = GCMPlib.unknownarg(wrap, a, b, i1, i2, \ nGlobal, nLocal, numDeps, \ coupling, rands) indices = indices.reshape(nLocal * numDeps, order='F') self._setArgument(self.name, self.copy, indices=indices) self.cplFactors.append(cplFactors) args = self.comp.args for (n, c) in args: nLocal = i2 - i1 indices = GCMPlib.parameterarg(i1, i2, nGlobal, nLocal, \ args[n,c][0], numDeps) indices = indices.reshape(nLocal * numDeps, order='F') self._setArgument(n, c, indices=indices) self.cplFactors.append( numpy.ones((nLocal, numDeps), order='F')) self.cplFactors = numpy.concatenate(self.cplFactors, axis=0) self.i1, self.i2 = i1, i2
def _evalC(self): nLocal = self.i2 - self.i1 degree = self.comp.varParams['degree'] nonlin = self.comp.varParams['nonlin'] scaling = self.comp.scaling condNum = self.comp.compParams['condNum'] v = [] for (n, c) in self.comp.args: v.append(self.vVec([n, c])) v = numpy.concatenate(v) self.cVec()[:] = GCMPlib.evalc(nLocal, self.cplFactors.shape[1], \ self.i1, self.i2, degree, scaling, \ condNum, nonlin, self.cplFactors, v)
def _evalC(self): nLocal = self.i2 - self.i1 degree = self.comp.varParams['degree'] nonlin = self.comp.varParams['nonlin'] scaling = self.comp.scaling condNum = self.comp.compParams['condNum'] v = [] for (n,c) in self.comp.args: v.append(self.vVec([n,c])) v = numpy.concatenate(v) self.cVec()[:] = GCMPlib.evalc(nLocal, self.cplFactors.shape[1], \ self.i1, self.i2, degree, scaling, \ condNum, nonlin, self.cplFactors, v)
def _declareArguments(self): nGlobal = self.comp.varParams['size'] localSizes = numpy.zeros(self.size, int) for i in xrange(self.size): procPctg = 1.0/(self.size-i) remainingSize = nGlobal - numpy.sum(localSizes) localSizes[i] = int(round(procPctg * remainingSize)) i1 = numpy.sum(localSizes[:self.rank]) i2 = numpy.sum(localSizes[:self.rank+1]) self._setLocalSize(localSizes[self.rank]) self.cplFactors = [] wrap, a, b = self.comp.compParams['struct'] coupling = self.comp.compParams['coupling'] numDeps = self.comp.compParams['numDeps'] rands = numpy.array([random.random() for i in xrange(numDeps)]) nLocal = i2 - i1 indices, cplFactors = GCMPlib.unknownarg(wrap, a, b, i1, i2, \ nGlobal, nLocal, numDeps, \ coupling, rands) indices = indices.reshape(nLocal*numDeps, order='F') self._setArgument(self.name, self.copy, indices=indices) self.cplFactors.append(cplFactors) args = self.comp.args for (n,c) in args: nLocal = i2 - i1 indices = GCMPlib.parameterarg(i1, i2, nGlobal, nLocal, \ args[n,c][0], numDeps) indices = indices.reshape(nLocal*numDeps, order='F') self._setArgument(n, c, indices=indices) self.cplFactors.append(numpy.ones((nLocal,numDeps), order='F')) self.cplFactors = numpy.concatenate(self.cplFactors, axis=0) self.i1, self.i2 = i1, i2