Search in sources :

Example 21 with PartitionUpdateParam

use of com.tencent.angel.ml.matrix.psf.update.base.PartitionUpdateParam in project angel by Tencent.

the class PushNeighborParam method split.

@Override
public List<PartitionUpdateParam> split() {
    List<PartitionKey> parts = PSAgentContext.get().getMatrixMetaManager().getPartitions(matrixId);
    List<PartitionUpdateParam> partParams = new ArrayList<>(parts.size());
    int count = 0;
    int nodeIndex = 0;
    for (PartitionKey part : parts) {
        // include start
        int start = nodeIndex;
        while (nodeIndex < keyIds.length && keyIds[nodeIndex] < part.getEndCol()) {
            nodeIndex++;
        }
        // exclude end
        int end = nodeIndex;
        int sizePart = end - start;
        count += sizePart;
        if (sizePart > 0) {
            partParams.add(new PushNeighborPartitionParam(matrixId, part, nodeIdToNeighborIndices, keyIds, start, end));
        }
    }
    assert (count == nodeIdToNeighborIndices.size());
    return partParams;
}
Also used : PartitionUpdateParam(com.tencent.angel.ml.matrix.psf.update.base.PartitionUpdateParam) ArrayList(java.util.ArrayList) PartitionKey(com.tencent.angel.PartitionKey)

Example 22 with PartitionUpdateParam

use of com.tencent.angel.ml.matrix.psf.update.base.PartitionUpdateParam in project angel by Tencent.

the class InitNeighborParam method split.

@Override
public List<PartitionUpdateParam> split() {
    LongIndexComparator comparator = new LongIndexComparator(keys);
    int size = end - start;
    int[] index = new int[size];
    for (int i = 0; i < size; i++) index[i] = i + start;
    IntArrays.quickSort(index, comparator);
    List<PartitionUpdateParam> params = new ArrayList<>();
    List<PartitionKey> parts = PSAgentContext.get().getMatrixMetaManager().getPartitions(matrixId);
    if (!RowUpdateSplitUtils.isInRange(keys, index, parts)) {
        throw new AngelException("node id is not in range [" + parts.get(0).getStartCol() + ", " + parts.get(parts.size() - 1).getEndCol());
    }
    int nodeIndex = start;
    int partIndex = 0;
    while (nodeIndex < end || partIndex < parts.size()) {
        int length = 0;
        long endOffset = parts.get(partIndex).getEndCol();
        while (nodeIndex < end && keys[index[nodeIndex - start]] < endOffset) {
            nodeIndex++;
            length++;
        }
        if (length > 0)
            params.add(new InitNeighborPartParam(matrixId, parts.get(partIndex), keys, index, indptr, neighbors, edgeTypes, dstTypes, nodeIndex - length - start, nodeIndex - start));
        partIndex++;
    }
    return params;
}
Also used : AngelException(com.tencent.angel.exception.AngelException) PartitionUpdateParam(com.tencent.angel.ml.matrix.psf.update.base.PartitionUpdateParam) ArrayList(java.util.ArrayList) PartitionKey(com.tencent.angel.PartitionKey) LongIndexComparator(com.tencent.angel.graph.utils.LongIndexComparator)

Example 23 with PartitionUpdateParam

use of com.tencent.angel.ml.matrix.psf.update.base.PartitionUpdateParam in project angel by Tencent.

the class UpdateHyperLogLogParam method split.

@Override
public List<PartitionUpdateParam> split() {
    MatrixMeta meta = PSAgentContext.get().getMatrixMetaManager().getMatrixMeta(matrixId);
    PartitionKey[] parts = meta.getPartitionKeys();
    KeyValuePart[] splits = splitHLLMap(meta, updates);
    assert parts.length == splits.length;
    List<PartitionUpdateParam> partParams = new ArrayList<>(parts.length);
    for (int i = 0; i < parts.length; i++) {
        if (splits[i] != null && splits[i].size() > 0) {
            partParams.add(new UpdateHyperLogLogPartParam(matrixId, parts[i], splits[i], p, sp, seed));
        }
    }
    return partParams;
}
Also used : MatrixMeta(com.tencent.angel.ml.matrix.MatrixMeta) PartitionUpdateParam(com.tencent.angel.ml.matrix.psf.update.base.PartitionUpdateParam) ArrayList(java.util.ArrayList) PartitionKey(com.tencent.angel.PartitionKey) KeyValuePart(com.tencent.angel.psagent.matrix.transport.router.KeyValuePart)

Aggregations

PartitionUpdateParam (com.tencent.angel.ml.matrix.psf.update.base.PartitionUpdateParam)23 PartitionKey (com.tencent.angel.PartitionKey)22 ArrayList (java.util.ArrayList)21 MatrixMeta (com.tencent.angel.ml.matrix.MatrixMeta)6 KeyValuePart (com.tencent.angel.psagent.matrix.transport.router.KeyValuePart)5 AngelException (com.tencent.angel.exception.AngelException)4 GeneralPartUpdateParam (com.tencent.angel.ml.matrix.psf.update.base.GeneralPartUpdateParam)4 LongIndexComparator (com.tencent.angel.graph.utils.LongIndexComparator)2 Vector (com.tencent.angel.ml.math2.vector.Vector)1 UpdateParam (com.tencent.angel.ml.matrix.psf.update.base.UpdateParam)1 VoidResult (com.tencent.angel.ml.matrix.psf.update.base.VoidResult)1 FutureResult (com.tencent.angel.psagent.matrix.transport.FutureResult)1 MatrixTransportClient (com.tencent.angel.psagent.matrix.transport.MatrixTransportClient)1 MapResponseCache (com.tencent.angel.psagent.matrix.transport.response.MapResponseCache)1 ResponseCache (com.tencent.angel.psagent.matrix.transport.response.ResponseCache)1 KeyPart (com.tencent.angel.psagent.matrix.transport.router.KeyPart)1 IntOpenHashSet (it.unimi.dsi.fastutil.ints.IntOpenHashSet)1