24 from daal
import step1Local, step2Master, step3Local
25 from daal.algorithms
import qr
26 from daal.data_management
import FileDataSource, DataSourceIface
28 utils_folder = os.path.realpath(os.path.abspath(os.path.dirname(os.path.dirname(__file__))))
29 if utils_folder
not in sys.path:
30 sys.path.insert(0, utils_folder)
31 from utils
import printNumericTable
33 DAAL_PREFIX = os.path.join(
'..',
'data')
39 os.path.join(DAAL_PREFIX,
'distributed',
'qr_1.csv'),
40 os.path.join(DAAL_PREFIX,
'distributed',
'qr_2.csv'),
41 os.path.join(DAAL_PREFIX,
'distributed',
'qr_3.csv'),
42 os.path.join(DAAL_PREFIX,
'distributed',
'qr_4.csv')
45 dataFromStep1ForStep2 = [0] * nBlocks
46 dataFromStep1ForStep3 = [0] * nBlocks
47 dataFromStep2ForStep3 = [0] * nBlocks
52 def computestep1Local(block):
53 global dataFromStep1ForStep2, dataFromStep1ForStep3
56 dataSource = FileDataSource(
57 datasetFileNames[block],
58 DataSourceIface.doAllocateNumericTable,
59 DataSourceIface.doDictionaryFromContext
63 dataSource.loadDataBlock()
66 algorithm = qr.Distributed(step1Local)
68 algorithm.input.set(qr.data, dataSource.getNumericTable())
71 pres = algorithm.compute()
73 dataFromStep1ForStep2[block] = pres.get(qr.outputOfStep1ForStep2)
74 dataFromStep1ForStep3[block] = pres.get(qr.outputOfStep1ForStep3)
77 def computeOnMasterNode():
78 global R, dataFromStep2ForStep3
81 algorithm = qr.Distributed(step2Master)
83 for i
in range(nBlocks):
84 algorithm.input.add(qr.inputOfStep2FromStep1, i, dataFromStep1ForStep2[i])
87 pres = algorithm.compute()
89 for i
in range(nBlocks):
90 dataFromStep2ForStep3[i] = pres.getCollection(qr.outputOfStep2ForStep3, i)
92 res = algorithm.finalizeCompute()
93 R = res.get(qr.matrixR)
96 def finalizeComputestep1Local(block):
100 algorithm = qr.Distributed(step3Local)
102 algorithm.input.set(qr.inputOfStep3FromStep1, dataFromStep1ForStep3[block])
103 algorithm.input.set(qr.inputOfStep3FromStep2, dataFromStep2ForStep3[block])
108 res = algorithm.finalizeCompute()
110 Qi[block] = res.get(qr.matrixQ)
112 if __name__ ==
"__main__":
114 for i
in range(nBlocks):
117 computeOnMasterNode()
119 for i
in range(nBlocks):
120 finalizeComputestep1Local(i)
123 printNumericTable(Qi[0],
"Part of orthogonal matrix Q from 1st node:", 10)
124 printNumericTable(R,
"Triangular matrix R:")