Beispiel #1
0
Datei: sp.py Projekt: ursk/sparco
 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()
Beispiel #2
0
Datei: sp.py Projekt: ursk/sparco
 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()
Beispiel #3
0
 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()
Beispiel #4
0
    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
Beispiel #5
0
    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
Beispiel #7
0
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
Beispiel #9
0
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

Beispiel #10
0
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