use of com.tencent.angel.ml.math.vector.DenseIntVector in project angel by Tencent.
the class TransportTest method testGetDenseIntMatrix.
@Test
public void testGetDenseIntMatrix() throws Exception {
try {
Worker worker = LocalClusterContext.get().getWorker(worker0Attempt0Id).getWorker();
MatrixClient mat = worker.getPSAgent().getMatrixClient("dense_int_mat", 0);
Random rand = new Random(System.currentTimeMillis());
for (int rowId = 0; rowId < diRow; rowId += rand.nextInt(5) + 1) {
DenseIntVector row = (DenseIntVector) mat.getRow(rowId);
DenseIntVector expect = new DenseIntVector(diCol);
assertArrayEquals(row.getValues(), expect.getValues());
DenseIntVector update = new DenseIntVector(diCol);
update.setRowId(rowId);
for (int i = 0; i < ddCol; i += 2) update.set(i, rand.nextInt());
mat.increment(update);
mat.clock().get();
row = (DenseIntVector) mat.getRow(rowId);
expect.plusBy(update);
assertArrayEquals(expect.getValues(), row.getValues());
update = new DenseIntVector(diCol);
update.setRowId(rowId);
for (int i = 0; i < diCol; i += 3) update.set(i, rand.nextInt());
mat.increment(update);
mat.clock().get();
row = (DenseIntVector) mat.getRow(rowId);
expect.plusBy(update);
assertArrayEquals(expect.getValues(), row.getValues());
}
} catch (Exception x) {
LOG.error("run testGetDenseIntMatrix failed ", x);
throw x;
}
}
use of com.tencent.angel.ml.math.vector.DenseIntVector in project angel by Tencent.
the class DenseIntMatrixTest method getValues.
@Test
public void getValues() throws Exception {
int[][] value = { { 1, 2 }, { 3, 4 } };
DenseIntMatrix mat = new DenseIntMatrix(2, 2, value);
DenseIntVector row0 = (DenseIntVector) mat.getRow(0);
DenseIntVector row1 = (DenseIntVector) mat.getRow(1);
assertEquals(1, row0.get(0));
assertEquals(2, row0.get(1));
assertEquals(3, row1.get(0));
assertEquals(4, row1.get(1));
}
use of com.tencent.angel.ml.math.vector.DenseIntVector in project angel by Tencent.
the class DenseIntMatrixTest method plusBy2.
@Test
public void plusBy2() throws Exception {
int[][] value = { { 1, 2 }, { 3, 4 } };
DenseIntMatrix mat = new DenseIntMatrix(2, 2, value);
DenseIntVector vec = new DenseIntVector(2, new int[] { 1, 2 });
vec.setRowId(0);
mat.plusBy(vec);
assertEquals(2, mat.get(0, 0));
assertEquals(4, mat.get(0, 1));
assertEquals(3, mat.get(1, 0));
assertEquals(4, mat.get(1, 1));
DenseIntMatrix mat_1 = new DenseIntMatrix(2, 2);
mat_1.plusBy(vec);
assertEquals(1, mat_1.get(0, 0));
assertEquals(2, mat_1.get(0, 1));
assertEquals(0, mat_1.get(1, 0));
assertEquals(0, mat_1.get(1, 1));
}
use of com.tencent.angel.ml.math.vector.DenseIntVector in project angel by Tencent.
the class DenseIntMatrix method initVector.
/**
* init the empty vector
*
* @param rowIndex row index
* @return
*/
@Override
public DenseIntVector initVector(int rowIndex) {
DenseIntVector ret = new DenseIntVector((int) col);
ret.setMatrixId(matrixId);
ret.setRowId(rowIndex);
return ret;
}
use of com.tencent.angel.ml.math.vector.DenseIntVector in project angel by Tencent.
the class PSFailedReportTest method testPSFailedReport.
@Test
public void testPSFailedReport() throws Exception {
ParameterServerId ps1Id = new ParameterServerId(0);
final ParameterServerId ps2Id = new ParameterServerId(1);
PSAttemptId ps1Attempt0Id = new PSAttemptId(ps1Id, 0);
PSAttemptId ps2Attempt0Id = new PSAttemptId(ps2Id, 0);
PSAttemptId ps2Attempt1Id = new PSAttemptId(ps2Id, 1);
ParameterServer ps1Attempt0 = LocalClusterContext.get().getPS(ps1Attempt0Id).getPS();
ParameterServer ps2Attempt0 = LocalClusterContext.get().getPS(ps2Attempt0Id).getPS();
WorkerId worker0Id = new WorkerId(new WorkerGroupId(0), 0);
WorkerAttemptId worker0Attempt0Id = new WorkerAttemptId(worker0Id, 0);
Worker worker0 = LocalClusterContext.get().getWorker(worker0Attempt0Id).getWorker();
TaskContext task0Context = worker0.getTaskManager().getRunningTask().get(task0Id).getTaskContext();
MatrixClient matrixClient = task0Context.getMatrix("w1");
int iterNum = 20;
for (int i = 0; i < iterNum; i++) {
DenseIntVector update = new DenseIntVector(dim);
for (int j = 0; j < dim; j++) {
update.set(j, 1);
}
update.setMatrixId(matrixClient.getMatrixId());
update.setRowId(0);
matrixClient.increment(update);
matrixClient.clock().get();
Thread.sleep(1000);
MatrixStorageManager ps1Storage = ps1Attempt0.getMatrixStorageManager();
ServerMatrix ps1w1 = ps1Storage.getMatrix(matrixClient.getMatrixId());
assertNotNull(ps1w1.getPartition(0));
assertNotNull(ps1w1.getPartition(1));
IntBuffer row0Part0 = ((ServerDenseIntRow) ps1w1.getRow(0, 0)).getData();
int part0Size = ps1w1.getRow(0, 0).size();
IntBuffer row0Part1 = ((ServerDenseIntRow) ps1w1.getRow(1, 0)).getData();
int part1Size = ps1w1.getRow(1, 0).size();
assertEquals(sum(row0Part0, part0Size), (i + 1) * dim / 2);
assertEquals(sum(row0Part1, part1Size), (i + 1) * dim / 2);
MatrixStorageManager ps2Storage = ps2Attempt0.getMatrixStorageManager();
ServerMatrix ps2w1 = ps2Storage.getMatrix(matrixClient.getMatrixId());
assertNotNull(ps2w1.getPartition(0));
assertNotNull(ps2w1.getPartition(1));
row0Part0 = ((ServerDenseIntRow) ps2w1.getRow(0, 0)).getData();
part0Size = ps2w1.getRow(0, 0).size();
row0Part1 = ((ServerDenseIntRow) ps2w1.getRow(1, 0)).getData();
part1Size = ps2w1.getRow(1, 0).size();
assertEquals(sum(row0Part0, part0Size), (i + 1) * dim / 2);
assertEquals(sum(row0Part1, part1Size), (i + 1) * dim / 2);
}
LOG.info("===================================================================ps2 failed");
HashMap<PSLocation, Integer> failedCounters = new HashMap<>();
PSLocation psLoc = new PSLocation(ps2Id, ps2Attempt0.getLocationManager().getPsLocation(ps2Id));
failedCounters.put(psLoc, 10000);
worker0.getPSAgent().getMasterClient().psFailedReport(failedCounters);
Thread.sleep(20000);
for (int i = iterNum; i < 2 * iterNum; i++) {
DenseIntVector update = new DenseIntVector(dim);
for (int j = 0; j < dim; j++) {
update.set(j, 1);
}
update.setMatrixId(matrixClient.getMatrixId());
update.setRowId(0);
matrixClient.increment(update);
matrixClient.clock().get();
Thread.sleep(1000);
MatrixStorageManager ps1Storage = ps1Attempt0.getMatrixStorageManager();
ServerMatrix ps1w1 = ps1Storage.getMatrix(matrixClient.getMatrixId());
assertNotNull(ps1w1.getPartition(0));
assertNotNull(ps1w1.getPartition(1));
IntBuffer row0Part0 = ((ServerDenseIntRow) ps1w1.getRow(0, 0)).getData();
int part0Size = ps1w1.getRow(0, 0).size();
IntBuffer row0Part1 = ((ServerDenseIntRow) ps1w1.getRow(1, 0)).getData();
int part1Size = ps1w1.getRow(1, 0).size();
assertEquals(sum(row0Part0, part0Size), (i + 1) * dim / 2);
assertEquals(sum(row0Part1, part1Size), (i + 1) * dim / 2);
}
ParameterServer ps2Attempt = LocalClusterContext.get().getPS(ps2Attempt1Id).getPS();
for (int i = iterNum * 2; i < 3 * iterNum; i++) {
DenseIntVector update = new DenseIntVector(dim);
for (int j = 0; j < dim; j++) {
update.set(j, 1);
}
update.setMatrixId(matrixClient.getMatrixId());
update.setRowId(0);
matrixClient.increment(update);
matrixClient.clock().get();
Thread.sleep(1000);
MatrixStorageManager ps1Storage = ps1Attempt0.getMatrixStorageManager();
ServerMatrix ps1w1 = ps1Storage.getMatrix(matrixClient.getMatrixId());
assertNotNull(ps1w1.getPartition(0));
assertNotNull(ps1w1.getPartition(1));
IntBuffer row0Part0 = ((ServerDenseIntRow) ps1w1.getRow(0, 0)).getData();
int part0Size = ps1w1.getRow(0, 0).size();
IntBuffer row0Part1 = ((ServerDenseIntRow) ps1w1.getRow(1, 0)).getData();
int part1Size = ps1w1.getRow(1, 0).size();
assertEquals(sum(row0Part0, part0Size), (i + 1) * dim / 2);
assertEquals(sum(row0Part1, part1Size), (i + 1) * dim / 2);
MatrixStorageManager ps2Storage = ps2Attempt.getMatrixStorageManager();
ServerMatrix ps2w1 = ps2Storage.getMatrix(matrixClient.getMatrixId());
assertNotNull(ps2w1.getPartition(0));
assertNotNull(ps2w1.getPartition(1));
row0Part0 = ((ServerDenseIntRow) ps2w1.getRow(0, 0)).getData();
part0Size = ps2w1.getRow(0, 0).size();
row0Part1 = ((ServerDenseIntRow) ps2w1.getRow(1, 0)).getData();
part1Size = ps2w1.getRow(1, 0).size();
assertEquals(sum(row0Part0, part0Size), (i + 1) * dim / 2);
assertEquals(sum(row0Part1, part1Size), (i + 1) * dim / 2);
}
}
Aggregations