use of com.tencent.angel.ml.math.matrix.DenseIntMatrix in project angel by Tencent.
the class TransportTest method testGetFlowDenseIntMatrix.
@Test
public void testGetFlowDenseIntMatrix() throws Exception {
try {
Worker worker = LocalClusterContext.get().getWorker(worker0Attempt0Id).getWorker();
MatrixClient mat = worker.getPSAgent().getMatrixClient("dense_int_mat_1", 0);
DenseIntMatrix expect = new DenseIntMatrix(diRow, diCol);
RowIndex rowIndex = new RowIndex();
for (int i = 0; i < diRow; i++) rowIndex.addRowId(i);
GetRowsResult result = mat.getRowsFlow(rowIndex, diRow / 2);
TVector row;
while ((row = result.take()) != null) {
assertArrayEquals(((DenseIntVector) expect.getRow(row.getRowId())).getValues(), ((DenseIntVector) row).getValues());
}
Random rand = new Random(System.currentTimeMillis());
for (int rowId = 0; rowId < diRow; rowId++) {
DenseIntVector update = new DenseIntVector(diCol);
for (int j = 0; j < ddCol; j += 3) update.set(j, rand.nextInt());
mat.increment(rowId, update);
expect.getRow(rowId).plusBy(update);
}
mat.clock().get();
rowIndex = new RowIndex();
for (int i = 0; i < ddRow; i++) rowIndex.addRowId(i);
result = mat.getRowsFlow(rowIndex, 2);
while ((row = result.take()) != null) {
assertArrayEquals(((DenseIntVector) expect.getRow(row.getRowId())).getValues(), ((DenseIntVector) row).getValues());
}
rowIndex = new RowIndex();
for (int i = 0; i < ddRow; i++) rowIndex.addRowId(i);
result = mat.getRowsFlow(rowIndex, 2);
while (true) {
row = result.poll();
if (result.isFetchOver() && row == null)
break;
if (row == null)
continue;
assertArrayEquals(((DenseIntVector) expect.getRow(row.getRowId())).getValues(), ((DenseIntVector) row).getValues());
}
} catch (Exception x) {
LOG.error("run testGetFlowDenseIntMatrix failed ", x);
throw x;
}
}
Aggregations