Oct-02-2018, 02:00 AM
I am going to get 5 computers from my school. Why five? HPC cluster. Why HPC cluster? So I feel smart and that I'm actually doing something with my life. Anyways, they're just a bunch of 2012-2014 boxes. I know about clustering to receiving the computers because of some late night essay research. Unfortunately, I only know Python (not that its bad or anything) and must use MPI4PY (isn't actually a problem either, its just a lack of options on my end). For the last few days I've been trying to organize data sent to the master into a dictionary, with the the name of the node associated with the GFLOPs of the node (I know this isn't the best way to determine how good a given computer is, but I'm lazy). My idea is to create a one entry dictionary for on each node and send that to the master node which updates() it to the master dictionary. But, I can't figure out how to recv the data.
I need GFLOPS and node rank because I plan to distribute workloads based on GFLOPS.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
from mpi4py import MPI import time comm = MPI.COMM_WORLD #i dont wanna type alot rank = comm.rank #i dont wanna type alot size = comm.size #you know me :) slavenodes = {} #this is so i can gather and store node and their FLOPS stat = {} #one entry dict sent gathered from each node and merged with the slavenodes dictionary for workload distribution. print ( "My rank is: " , rank) if comm.rank = = 0 : #grab one entry dictionary, add to master dictionary while len (slavenodes) < size: g = comm.gather(stat, root = 0 ) slavenodes.update(g) print (slavenodes) else : #calculate GFLOPS, create one entry dictionary with rank and GFLOPS, and send it to Master. float_increment = 1.03 #random start = 57.24 #random floating_point = start #reusing variables start = time.time() #start time for i in range ( 10 * * 6 ): floating_point + = float_increment end = time.time() #end time seconds = end - start giga = 10 * * 6 flops = giga / seconds print ( "I can run at" , str (flops), "FLOPS. Actually, because Python is pretty slow, it is probably much more." ) node = rank stat[node] = flops #comm.send(stat, dest=0,) print (stat) |
I need GFLOPS and node rank because I plan to distribute workloads based on GFLOPS.