def iteration(self): mpi.bcast(self.phi) mpi.scatter(self.rootbufs.x, self.nodebufs.x) self.infer_coefficients() self.learn_basis() if self.t > 0 and self.t % self.update_coefficient_statistics_interval == 0: self.update_coefficient_statistics()
def iteration(self): if mpi.rank == mpi.root: self.load_samples() mpi.scatter(self.rbuf.npats, self.nbuf.npats) mpi.scatter(self.rbuf.x, self.nbuf.x) self.infer_coefficients() self.compute_phi_gradient() if mpi.rank == mpi.root: self.update_phi() self.update_eta()
def parallelRunTest(self): #decide on roots roots = [0,0,0] roots = [int(mpi.procs / 3), 0, int(mpi.procs / 2) ] nprocs = mpi.procs #values to be scattered list1 = [] list2 = [] longList = [] tuple1 = () string1 = "" for x in range(nprocs): list1 += [nprocs - x] list2 += [ "fOo", x, ( 8,str(x*x) )] tuple1 += (2*x, 2*x + 1) string1 += "fOo for" + str(x%10) for i in range(1024): longList += [ 500-4*i - 10*x, "K" ] #do scatters results = [0,0,0, 0,0,0, 0,0,0] results[0] = mpi.scatter( list1, roots[0]) results[1] = mpi.scatter( list2, roots[0] ) results[2] = mpi.scatter( tuple1, roots[0] ) results[3] = mpi.scatter( string1,roots[0]) results[4] = mpi.scatter( longList, roots[0] ) #correct answers correctAnswers = [0,0,0, 0,0,0, 0,0,0] for x in range(5): correctAnswers[x] = [] correctAnswers[0] = [nprocs - mpi.rank] correctAnswers[1] = list2[ mpi.rank*3: mpi.rank*3 + 3] correctAnswers[2] = (2*mpi.rank, 2*mpi.rank+1) correctAnswers[3] = "fOo for"+str(mpi.rank%10) correctAnswers[4] = longList[2048*mpi.rank: 2048*(mpi.rank+1)] for x in range(5): if results[x] != correctAnswers[x]: failString = "scatter failed on test "+str(x) failString += " and process " + str(mpi.rank) + "\n" failString += "Scatter result was " + str(results[x]) failString += " and it should be "+ str(correctAnswers[x]) self.fail( failString); return
def parallelRunTest(self): #decide on roots roots = [0, 0, 0] roots = [int(mpi.procs / 3), 0, int(mpi.procs / 2)] nprocs = mpi.procs #values to be scattered list1 = [] list2 = [] longList = [] tuple1 = () string1 = "" for x in range(nprocs): list1 += [nprocs - x] list2 += ["fOo", x, (8, str(x * x))] tuple1 += (2 * x, 2 * x + 1) string1 += "fOo for" + str(x % 10) for i in range(1024): longList += [500 - 4 * i - 10 * x, "K"] #do scatters results = [0, 0, 0, 0, 0, 0, 0, 0, 0] results[0] = mpi.scatter(list1, roots[0]) results[1] = mpi.scatter(list2, roots[0]) results[2] = mpi.scatter(tuple1, roots[0]) results[3] = mpi.scatter(string1, roots[0]) results[4] = mpi.scatter(longList, roots[0]) #correct answers correctAnswers = [0, 0, 0, 0, 0, 0, 0, 0, 0] for x in range(5): correctAnswers[x] = [] correctAnswers[0] = [nprocs - mpi.rank] correctAnswers[1] = list2[mpi.rank * 3:mpi.rank * 3 + 3] correctAnswers[2] = (2 * mpi.rank, 2 * mpi.rank + 1) correctAnswers[3] = "fOo for" + str(mpi.rank % 10) correctAnswers[4] = longList[2048 * mpi.rank:2048 * (mpi.rank + 1)] for x in range(5): if results[x] != correctAnswers[x]: failString = "scatter failed on test " + str(x) failString += " and process " + str(mpi.rank) + "\n" failString += "Scatter result was " + str(results[x]) failString += " and it should be " + str(correctAnswers[x]) self.fail(failString) return
def scatter_test(comm, generator, kind, root): if comm.rank == root: print ("Scattering %s from root %d..." % (kind, root)), if comm.rank == root: values = list() for p in range(0, comm.size): values.append(generator(p)) result = mpi.scatter(comm, values, root = root) else: result = mpi.scatter(comm, root = root); assert result == generator(comm.rank) if comm.rank == root: print "OK." return
def scatter_test(comm, generator, kind, root): if comm.rank == root: print("Scattering %s from root %d..." % (kind, root)), if comm.rank == root: values = list() for p in range(0, comm.size): values.append(generator(p)) result = mpi.scatter(comm, values, root=root) else: result = mpi.scatter(comm, root=root) assert result == generator(comm.rank) if comm.rank == root: print("OK.") return
newphi += dphi newpsi += dpsi z.append([newphi, newpsi]) z.append([phiF, psiF]) print "\nI0: ", print z else: z = [] #if (mpi.rank == 0): # z = mpi.bcast(z) #else: # z = mpi.bcast() # #z_p = z[mpi.rank] z_p = mpi.scatter(z)[0] print z_p import sys sys.exit(0) ff.params['HarmonicDihedral'] = {'kbias':[kappa, kappa], 'dihedralnum':[PHI-1, PSI-1], 'angle':[z_p[0], z_p[1]]} dt = 1.0 kappaincr = (1000.-40.)/100000. for iter in range(0, 2000): # NUMBER OF FTSM ITERATIONS #for workpt in range(0, numpoints): # LOOPING OVER POINTS if (iter >= 10001 and iter <= 110000): kappa += kappaincr
import mpi, sys, os, string if mpi.rank == 0: sequences = sys.argv[1:] else: sequences = [] local_sequences = mpi.scatter(sequences) result = [] for sequence in local_sequences: cmd = "java -Djava.awt.headless=true -cp FoldingServer.jar foldingServer.FoldingServer -c " + sequence for line in os.popen(cmd).readlines(): if line.find(":") >= 0: message = str(mpi.rank) + ";" + sequence + ";" + line.rstrip("\n") result.append(message) all = mpi.gather(result) if mpi.rank == 0: for result in all: print result
import sys, os import Numeric import mpi if __name__=="__main__": rank,size = mpi.init() if(size >= 2): print "testing scatter on",size,"processors..." else: print "unable to run test on",size,"processors!" print "please rerun on 2 or more processors." sys.exit() print "\n" print "allocating test data:" data = 0 if(rank==0): data = Numeric.array("abcdefghijklmnopqrst",Numeric.Character) print "scattering data:" mydata = mpi.scatter(data, 10, mpi.MPI_CHAR, 10, mpi.MPI_CHAR, 0, mpi.MPI_COMM_WORLD) print "scattered data:",mydata mpi.barrier(mpi.MPI_COMM_WORLD) mpi.finalize()
newphi += dphi newpsi += dpsi z.append([newphi, newpsi]) z.append([phiF, psiF]) print "\nI0: ", print z else: z = [] #if (mpi.rank == 0): # z = mpi.bcast(z) #else: # z = mpi.bcast() # #z_p = z[mpi.rank] z_p = mpi.scatter(z)[0] print z_p import sys sys.exit(0) ff.params['HarmonicDihedral'] = { 'kbias': [kappa, kappa], 'dihedralnum': [PHI - 1, PSI - 1], 'angle': [z_p[0], z_p[1]] } dt = 1.0 kappaincr = (1000. - 40.) / 100000. for iter in range(0, 2000): # NUMBER OF FTSM ITERATIONS #for workpt in range(0, numpoints): # LOOPING OVER POINTS if (iter >= 10001 and iter <= 110000): kappa += kappaincr