Search in sources :

Example 1 with DenseIntVector

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;
    }
}
Also used : Random(java.util.Random) MatrixClient(com.tencent.angel.psagent.matrix.MatrixClient) IOException(java.io.IOException) DenseIntVector(com.tencent.angel.ml.math.vector.DenseIntVector) MasterServiceTest(com.tencent.angel.master.MasterServiceTest) Test(org.junit.Test)

Example 2 with DenseIntVector

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));
}
Also used : DenseIntVector(com.tencent.angel.ml.math.vector.DenseIntVector) Test(org.junit.Test)

Example 3 with DenseIntVector

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));
}
Also used : DenseIntVector(com.tencent.angel.ml.math.vector.DenseIntVector) Test(org.junit.Test)

Example 4 with DenseIntVector

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;
}
Also used : DenseIntVector(com.tencent.angel.ml.math.vector.DenseIntVector)

Example 5 with DenseIntVector

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);
    }
}
Also used : TaskContext(com.tencent.angel.worker.task.TaskContext) HashMap(java.util.HashMap) WorkerAttemptId(com.tencent.angel.worker.WorkerAttemptId) ServerMatrix(com.tencent.angel.ps.impl.matrix.ServerMatrix) WorkerId(com.tencent.angel.worker.WorkerId) ParameterServer(com.tencent.angel.ps.impl.ParameterServer) WorkerGroupId(com.tencent.angel.worker.WorkerGroupId) DenseIntVector(com.tencent.angel.ml.math.vector.DenseIntVector) PSAttemptId(com.tencent.angel.ps.PSAttemptId) PSLocation(com.tencent.angel.ml.matrix.transport.PSLocation) MatrixStorageManager(com.tencent.angel.ps.impl.MatrixStorageManager) IntBuffer(java.nio.IntBuffer) ServerDenseIntRow(com.tencent.angel.ps.impl.matrix.ServerDenseIntRow) Worker(com.tencent.angel.worker.Worker) MatrixClient(com.tencent.angel.psagent.matrix.MatrixClient) ParameterServerId(com.tencent.angel.ps.ParameterServerId) Test(org.junit.Test)

Aggregations

DenseIntVector (com.tencent.angel.ml.math.vector.DenseIntVector)11 Test (org.junit.Test)9 MatrixClient (com.tencent.angel.psagent.matrix.MatrixClient)5 Worker (com.tencent.angel.worker.Worker)3 MasterServiceTest (com.tencent.angel.master.MasterServiceTest)2 TVector (com.tencent.angel.ml.math.TVector)2 PSAttemptId (com.tencent.angel.ps.PSAttemptId)2 ParameterServerId (com.tencent.angel.ps.ParameterServerId)2 MatrixStorageManager (com.tencent.angel.ps.impl.MatrixStorageManager)2 ParameterServer (com.tencent.angel.ps.impl.ParameterServer)2 ServerDenseIntRow (com.tencent.angel.ps.impl.matrix.ServerDenseIntRow)2 ServerMatrix (com.tencent.angel.ps.impl.matrix.ServerMatrix)2 WorkerAttemptId (com.tencent.angel.worker.WorkerAttemptId)2 WorkerGroupId (com.tencent.angel.worker.WorkerGroupId)2 WorkerId (com.tencent.angel.worker.WorkerId)2 TaskContext (com.tencent.angel.worker.task.TaskContext)2 IOException (java.io.IOException)2 IntBuffer (java.nio.IntBuffer)2 Random (java.util.Random)2 DenseIntMatrix (com.tencent.angel.ml.math.matrix.DenseIntMatrix)1