47 from daal
import step1Local, step2Master, step3Local
48 from daal.algorithms
import qr
49 from daal.data_management
import FileDataSource, DataSourceIface
51 utils_folder = os.path.realpath(os.path.abspath(os.path.dirname(os.path.dirname(__file__))))
52 if utils_folder
not in sys.path:
53 sys.path.insert(0, utils_folder)
54 from utils
import printNumericTable
56 DAAL_PREFIX = os.path.join(
'..',
'data')
62 os.path.join(DAAL_PREFIX,
'distributed',
'qr_1.csv'),
63 os.path.join(DAAL_PREFIX,
'distributed',
'qr_2.csv'),
64 os.path.join(DAAL_PREFIX,
'distributed',
'qr_3.csv'),
65 os.path.join(DAAL_PREFIX,
'distributed',
'qr_4.csv')
68 dataFromStep1ForStep2 = [0] * nBlocks
69 dataFromStep1ForStep3 = [0] * nBlocks
70 dataFromStep2ForStep3 = [0] * nBlocks
75 def computestep1Local(block):
76 global dataFromStep1ForStep2, dataFromStep1ForStep3
79 dataSource = FileDataSource(
80 datasetFileNames[block],
81 DataSourceIface.doAllocateNumericTable,
82 DataSourceIface.doDictionaryFromContext
86 dataSource.loadDataBlock()
89 algorithm = qr.Distributed(step1Local)
91 algorithm.input.set(qr.data, dataSource.getNumericTable())
94 pres = algorithm.compute()
96 dataFromStep1ForStep2[block] = pres.get(qr.outputOfStep1ForStep2)
97 dataFromStep1ForStep3[block] = pres.get(qr.outputOfStep1ForStep3)
100 def computeOnMasterNode():
101 global R, dataFromStep2ForStep3
104 algorithm = qr.Distributed(step2Master)
106 for i
in range(nBlocks):
107 algorithm.input.add(qr.inputOfStep2FromStep1, i, dataFromStep1ForStep2[i])
110 pres = algorithm.compute()
112 for i
in range(nBlocks):
113 dataFromStep2ForStep3[i] = pres.getCollection(qr.outputOfStep2ForStep3, i)
115 res = algorithm.finalizeCompute()
116 R = res.get(qr.matrixR)
119 def finalizeComputestep1Local(block):
123 algorithm = qr.Distributed(step3Local)
125 algorithm.input.set(qr.inputOfStep3FromStep1, dataFromStep1ForStep3[block])
126 algorithm.input.set(qr.inputOfStep3FromStep2, dataFromStep2ForStep3[block])
131 res = algorithm.finalizeCompute()
133 Qi[block] = res.get(qr.matrixQ)
135 if __name__ ==
"__main__":
137 for i
in range(nBlocks):
140 computeOnMasterNode()
142 for i
in range(nBlocks):
143 finalizeComputestep1Local(i)
146 printNumericTable(Qi[0],
"Part of orthogonal matrix Q from 1st node:", 10)
147 printNumericTable(R,
"Triangular matrix R:")