use of com.tencent.angel.ml.math.TVector in project angel by Tencent.
the class ConsistencyController method findRowsInStorage.
private void findRowsInStorage(TaskContext taskContext, GetRowsResult result, RowIndex rowIndexes, int stalenessClock) throws InterruptedException {
MatrixStorage storage = PSAgentContext.get().getMatrixStorageManager().getMatrixStoage(rowIndexes.getMatrixId());
for (int rowIndex : rowIndexes.getRowIds()) {
TVector processRow = storage.getRow(rowIndex);
if (processRow != null && (taskContext.getPSMatrixClock(rowIndexes.getMatrixId()) <= processRow.getClock()) && (processRow.getClock() >= stalenessClock)) {
result.put(processRow);
if (result.getRowsNumber() == rowIndexes.getRowsNumber()) {
rowIndexes.clearFilted();
result.fetchOver();
return;
}
rowIndexes.filted(rowIndex);
}
}
}
use of com.tencent.angel.ml.math.TVector in project angel by Tencent.
the class TransportTest method testGetFlowDenseDoubleMatrix.
@Test
public void testGetFlowDenseDoubleMatrix() throws Exception {
try {
Worker worker = LocalClusterContext.get().getWorker(worker0Attempt0Id).getWorker();
MatrixClient mat = worker.getPSAgent().getMatrixClient("dense_double_mat_1", 0);
double[][] data = new double[ddRow][ddCol];
DenseDoubleMatrix expect = new DenseDoubleMatrix(ddRow, ddCol, data);
RowIndex rowIndex = new RowIndex();
for (int i = 0; i < ddRow; i++) rowIndex.addRowId(i);
GetRowsResult result = mat.getRowsFlow(rowIndex, ddRow / 2);
TVector row;
while ((row = result.take()) != null) {
LOG.info("===========get row index=" + row.getRowId());
assertArrayEquals(((DenseDoubleVector) expect.getRow(row.getRowId())).getValues(), ((DenseDoubleVector) row).getValues(), 0.0);
}
Random rand = new Random(System.currentTimeMillis());
for (int rowId = 0; rowId < ddRow; rowId++) {
DenseDoubleVector update = new DenseDoubleVector(ddCol);
for (int j = 0; j < ddCol; j += 3) update.set(j, rand.nextDouble());
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(((DenseDoubleVector) expect.getRow(row.getRowId())).getValues(), ((DenseDoubleVector) row).getValues(), 0.0);
}
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(((DenseDoubleVector) expect.getRow(row.getRowId())).getValues(), ((DenseDoubleVector) row).getValues(), 0.0);
}
} catch (Exception x) {
LOG.error("run testGetFlowDenseDoubleMatrix failed ", x);
throw x;
}
}
use of com.tencent.angel.ml.math.TVector in project angel by Tencent.
the class LongKeyTestTask method run.
@Override
public void run(TaskContext taskContext) throws AngelException {
try {
MatrixClient client = taskContext.getMatrix("longkey_test");
while (taskContext.getEpoch() < 100) {
long startTs = System.currentTimeMillis();
TVector row = client.getRow(0);
LOG.info("Task " + taskContext.getTaskId() + " in iteration " + taskContext.getEpoch() + " pull use time=" + (System.currentTimeMillis() - startTs) + ", sum=" + ((CompSparseLongKeyDoubleVector) row).sum());
startTs = System.currentTimeMillis();
CompSparseLongKeyDoubleVector deltaV = new CompSparseLongKeyDoubleVector(client.getMatrixId(), 0, 2100000000, 110000000);
SparseLongKeyDoubleVector deltaV1 = new SparseLongKeyDoubleVector(2100000000, 150000000);
DenseDoubleVector deltaV2 = new DenseDoubleVector(110000000);
for (int i = 0; i < 2100000000; i += 20) {
deltaV.set(i, 1.0);
deltaV1.set(i, 1.0);
}
for (int i = 0; i < 110000000; i++) {
deltaV2.set(i, 1.0);
}
startTs = System.currentTimeMillis();
int tryNum = 100;
while (tryNum-- > 0) {
deltaV.timesBy(2.0);
}
LOG.info("combine times use time " + (System.currentTimeMillis() - startTs));
startTs = System.currentTimeMillis();
tryNum = 100;
while (tryNum-- > 0) {
deltaV1.timesBy(2.0);
}
LOG.info("single times use time " + (System.currentTimeMillis() - startTs));
startTs = System.currentTimeMillis();
tryNum = 100;
while (tryNum-- > 0) {
deltaV2.timesBy(2.0);
}
LOG.info("dense times use time " + (System.currentTimeMillis() - startTs));
deltaV.setMatrixId(client.getMatrixId());
deltaV.setRowId(0);
LOG.info("Task " + taskContext.getTaskId() + " in iteration " + taskContext.getEpoch() + " train use time=" + (System.currentTimeMillis() - startTs));
startTs = System.currentTimeMillis();
client.increment(deltaV);
client.clock().get();
LOG.info("Task " + taskContext.getTaskId() + " in iteration " + taskContext.getEpoch() + " flush use time=" + (System.currentTimeMillis() - startTs));
taskContext.incEpoch();
}
} catch (Throwable x) {
throw new AngelException("run task failed ", x);
}
}
use of com.tencent.angel.ml.math.TVector in project angel by Tencent.
the class PSFTestTask method run.
@Override
public void run(TaskContext taskContext) throws AngelException {
try {
MatrixClient client = taskContext.getMatrix("psf_test");
Pull func = new Pull(client.getMatrixId(), 0);
Pull func1 = new Pull(client.getMatrixId(), 1);
while (taskContext.getEpoch() < 100) {
taskContext.globalSync(client.getMatrixId());
long startTs = System.currentTimeMillis();
TVector row = ((GetRowResult) client.get(func)).getRow();
TVector row1 = ((GetRowResult) client.get(func1)).getRow();
LOG.info("Task " + taskContext.getTaskId() + " in iteration " + taskContext.getEpoch() + " pull use time=" + (System.currentTimeMillis() - startTs) + ", sum of row 0=" + sum((DenseDoubleVector) row) + " sum of row 1=" + sum((DenseDoubleVector) row1));
double[] delta = new double[10000000];
for (int i = 0; i < 10000000; i++) {
delta[i] = 1.0;
}
DenseDoubleVector deltaV = new DenseDoubleVector(10000000, delta);
deltaV.setMatrixId(client.getMatrixId());
deltaV.setRowId(0);
double[] delta1 = new double[10000000];
for (int i = 0; i < 10000000; i++) {
delta1[i] = 2.0;
}
DenseDoubleVector deltaV1 = new DenseDoubleVector(10000000, delta1);
deltaV1.setMatrixId(client.getMatrixId());
deltaV1.setRowId(1);
client.increment(deltaV);
client.increment(deltaV1);
client.clock().get();
taskContext.incEpoch();
}
} catch (Throwable x) {
throw new AngelException("run task failed ", x);
}
}
use of com.tencent.angel.ml.math.TVector in project angel by Tencent.
the class SparseDoubleTask method run.
@Override
public void run(TaskContext taskContext) throws AngelException {
try {
MatrixClient client = taskContext.getMatrix("sparse_double_test");
while (taskContext.getEpoch() < 100) {
long startTs = System.currentTimeMillis();
TVector row = client.getRow(0);
LOG.info("Task " + taskContext.getTaskId() + " in iteration " + taskContext.getEpoch() + " pull use time=" + (System.currentTimeMillis() - startTs) + ", sum=" + sum((SparseDoubleVector) row));
startTs = System.currentTimeMillis();
SparseDoubleVector deltaV = new SparseDoubleVector(2100000000, 150000000);
for (int i = 0; i < 2100000000; i += 20) {
deltaV.set(i, 1.0);
}
deltaV.setMatrixId(client.getMatrixId());
deltaV.setRowId(0);
LOG.info("Task " + taskContext.getTaskId() + " in iteration " + taskContext.getEpoch() + " train use time=" + (System.currentTimeMillis() - startTs));
startTs = System.currentTimeMillis();
client.increment(deltaV);
client.clock().get();
LOG.info("Task " + taskContext.getTaskId() + " in iteration " + taskContext.getEpoch() + " flush use time=" + (System.currentTimeMillis() - startTs));
taskContext.incEpoch();
}
} catch (Throwable x) {
throw new AngelException("run task failed ", x);
}
}
Aggregations