#logging.info("WriteLoopTest1 finished") reset() #WriteLoopTest2(workerID) #logging.info("WriteLoopTest2 finished") #reset() WriteLoopTest3(workerID) #logging.info("WriteLoopTest3 finished") reset() AttributeTest1(workerID) #logging.info("AttributeTest1 finished") reset() ObjectAttributeTest1(workerID) #logging.info("ObjectAttributeTest1 finished") ShutdownTest(workerID) #logging.info("ShutdownTest finished") try: PyDOOMS.execute(testSuite) if (PyDOOMS.getNodeID() == 0): logging.info("All tests passed") except Exception as e: logging.exception(e) logging.critical("Tests failed")
# Create regular chunks for i in range(0,numberOfWorkers): RowChunk(getChunkRowIndex(row,i+1), matrix[row][i*chunkSize + 1:i*chunkSize+chunkSize+1]) # Last column has single element chunks lastColumn = matrix[row][matrixSize-1:matrixSize] # Pad to use it as any other chunk rightmostChunk = [] rightmostChunk.append(lastColumn[0]) for e in range(chunkSize-1): rightmostChunk.append(None) RowChunk(getChunkRowIndex(row,numberOfWorkers+1),rightmostChunk) def generateMatrix(size): random_matrix = [[float(randrange(0,10)) for e in range(size)] for e in range(size)] return random_matrix def printMatrix(matrix): for i in range(len(matrix)): print(str(matrix[i])) matrixSize = 1200 PyDOOMS.execute(gaussSeidel, matrixSize)
PyDOOMS. objectUpdated(centerRow, "row") PyDOOMS.objectUpdated(workerInfo, "error") PyDOOMS.barrier() if (workerID == numberOfWorkers - 1): globalError = 0.0 for w in range(numberOfWorkers): globalError += PyDOOMS.get(w).error logging.info("Iteration " + str(iteration+1) + " global error = " + str(globalError)) logging.info("Worker: " + str(workerID) + " done in " + str(time.time() - start) + " seconds") def generateSharedMatrixRows(matrixSize): for row in range(matrixOffset,matrixOffset + matrixSize): MatrixRow(row, [float(randrange(0,10)) for e in range(matrixSize)]) def printMatrixRows(matrixSize): for row in range(matrixSize): logging.debug(str(PyDOOMS.get(matrixOffset + row).row)) matrixSize = 1002 PyDOOMS.execute(RedBlackGaussSeidel, matrixSize)
PyDOOMS.objectUpdated(board, "hits") PyDOOMS.objectUpdated(board, "darts") PyDOOMS.objectUpdated(board, "ready") PyDOOMS.barrier() # Sum result if (workerID == 0): pi = 0.0 i = 0 while i < PyDOOMS.getNumberOfWorkers(): b = PyDOOMS.get(i) if b.ready: pi = pi + b.calc_pi() i = i + 1 else: logging.critical("Board: " + str(i) + " - " + str(b.ready)) time.sleep(1) logging.info("Pi: " + str(pi / PyDOOMS.getNumberOfWorkers()) + " calculated in " + str(time.time() - start) + " seconds.") logging.info("Worker: " + str(workerID) + " dead. Worked for " + str(time.time() - start) + " seconds.") darts = 4000000 / PyDOOMS.getNumberOfWorkers() PyDOOMS.execute(monteCarlo, darts)
L = getMatrixBlock(LOffset, j, x) U = getMatrixBlock(UOffset, x, x) L.block = multiplyMatrix(A.block, invertMatrix(U.block)) PyDOOMS.objectUpdated(L, "block") PyDOOMS.barrier() for j in range(x+1, blocksPerSide): for k in range(x+1, blocksPerSide): if workerID == workerList.pop(): logging.debug("Worker" +str(workerID) + "working on sub-block " + str(k) + str(",") + str(j)) A = getMatrixBlock(matrixOffset, k, j) L = getMatrixBlock(LOffset, k, x) U = getMatrixBlock(UOffset, x, j) A.block = subtractMatrix(A.block, multiplyMatrix(L.block, U.block)) PyDOOMS.objectUpdated(A, "block") PyDOOMS.barrier() if workerID == 0: print "Done in ", time.time() - start, "seconds." #multiplyLU() workerList = workerList(size) PyDOOMS.execute(LUdecomp)