Search in sources :

Example 11 with KeyPart

use of com.tencent.angel.psagent.matrix.transport.router.KeyPart in project angel by Tencent.

the class GetLabels method partitionGet.

@Override
public PartitionGetResult partitionGet(PartitionGetParam partParam) {
    GeneralPartGetParam param = (GeneralPartGetParam) partParam;
    KeyPart keyPart = param.getIndicesPart();
    switch(keyPart.getKeyType()) {
        case LONG:
            {
                // Long type node id
                long[] nodeIds = ((ILongKeyPartOp) keyPart).getKeys();
                ServerLongFloatRow row = (ServerLongFloatRow) psContext.getMatrixStorageManager().getRow(param.getPartKey(), 0);
                LongArrayList keys = new LongArrayList();
                FloatArrayList vals = new FloatArrayList();
                for (int i = 0; i < nodeIds.length; i++) {
                    if (row.exist(nodeIds[i])) {
                        keys.add(nodeIds[i]);
                        vals.add(row.get(nodeIds[i]));
                    }
                }
                return new GetLabelsPartResult(keys.toLongArray(), vals.toFloatArray());
            }
        default:
            {
                // TODO: support String, Int, and Any type node id
                throw new InvalidParameterException("Unsupport index type " + keyPart.getKeyType());
            }
    }
}
Also used : InvalidParameterException(com.tencent.angel.exception.InvalidParameterException) GeneralPartGetParam(com.tencent.angel.ml.matrix.psf.get.base.GeneralPartGetParam) LongArrayList(it.unimi.dsi.fastutil.longs.LongArrayList) ServerLongFloatRow(com.tencent.angel.ps.storage.vector.ServerLongFloatRow) KeyPart(com.tencent.angel.psagent.matrix.transport.router.KeyPart) FloatArrayList(it.unimi.dsi.fastutil.floats.FloatArrayList)

Example 12 with KeyPart

use of com.tencent.angel.psagent.matrix.transport.router.KeyPart in project angel by Tencent.

the class InitHyperLogLogParam method split.

@Override
public List<PartitionUpdateParam> split() {
    MatrixMeta matrixMeta = PSAgentContext.get().getMatrixMetaManager().getMatrixMeta(matrixId);
    PartitionKey[] parts = matrixMeta.getPartitionKeys();
    KeyPart[] keyParts = RouterUtils.split(matrixMeta, 0, nodes);
    List<PartitionUpdateParam> params = new ArrayList<>(parts.length);
    for (int i = 0; i < parts.length; i++) {
        if (keyParts[i] != null && keyParts[i].size() > 0) {
            params.add(new InitHyperLogLogPartParam(matrixId, parts[i], keyParts[i], p, sp, seed));
        }
    }
    return params;
}
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) KeyPart(com.tencent.angel.psagent.matrix.transport.router.KeyPart)

Example 13 with KeyPart

use of com.tencent.angel.psagent.matrix.transport.router.KeyPart in project angel by Tencent.

the class ReadTagParam method split.

@Override
public List<PartitionGetParam> split() {
    MatrixMeta meta = PSAgentContext.get().getMatrixMetaManager().getMatrixMeta(matrixId);
    PartitionKey[] parts = meta.getPartitionKeys();
    KeyPart[] nodeIdsParts = RouterUtils.split(meta, rowId, nodeIds, false);
    List<PartitionGetParam> partParams = new ArrayList<>(parts.length);
    assert parts.length == nodeIdsParts.length;
    for (int i = 0; i < parts.length; i++) {
        if (nodeIdsParts[i] != null && nodeIdsParts[i].size() > 0) {
            partParams.add(new GeneralPartGetParam(matrixId, parts[i], nodeIdsParts[i]));
        }
    }
    return partParams;
}
Also used : GeneralPartGetParam(com.tencent.angel.ml.matrix.psf.get.base.GeneralPartGetParam) MatrixMeta(com.tencent.angel.ml.matrix.MatrixMeta) ArrayList(java.util.ArrayList) PartitionKey(com.tencent.angel.PartitionKey) KeyPart(com.tencent.angel.psagent.matrix.transport.router.KeyPart) PartitionGetParam(com.tencent.angel.ml.matrix.psf.get.base.PartitionGetParam)

Example 14 with KeyPart

use of com.tencent.angel.psagent.matrix.transport.router.KeyPart in project angel by Tencent.

the class SampleParam method split.

@Override
public List<PartitionGetParam> split() {
    // Get matrix meta
    MatrixMeta meta = PSAgentContext.get().getMatrixMetaManager().getMatrixMeta(matrixId);
    PartitionKey[] parts = meta.getPartitionKeys();
    // Split
    KeyPart[] nodeIdsParts = RouterUtils.split(meta, 0, nodeIds, false);
    // Generate Part psf get param
    List<PartitionGetParam> partParams = new ArrayList<>(parts.length);
    assert parts.length == nodeIdsParts.length;
    for (int i = 0; i < parts.length; i++) {
        if (nodeIdsParts[i] != null && nodeIdsParts[i].size() > 0) {
            partParams.add(new PartSampleParam(matrixId, parts[i], nodeIdsParts[i], sampleType));
        }
    }
    return partParams;
}
Also used : MatrixMeta(com.tencent.angel.ml.matrix.MatrixMeta) ArrayList(java.util.ArrayList) PartitionKey(com.tencent.angel.PartitionKey) KeyPart(com.tencent.angel.psagent.matrix.transport.router.KeyPart) PartitionGetParam(com.tencent.angel.ml.matrix.psf.get.base.PartitionGetParam)

Example 15 with KeyPart

use of com.tencent.angel.psagent.matrix.transport.router.KeyPart in project angel by Tencent.

the class ByteBufSerdeUtils method deserializeKeyPart.

public static KeyPart deserializeKeyPart(ByteBuf in) {
    RouterType routerType = RouterType.valueOf(deserializeInt(in));
    KeyType keyType = KeyType.valueOf(deserializeInt(in));
    KeyPart keyPart = DataPartFactory.createKeyPart(keyType, routerType);
    keyPart.deserialize(in);
    return keyPart;
}
Also used : KeyType(com.tencent.angel.ps.server.data.request.KeyType) RouterType(com.tencent.angel.psagent.matrix.transport.router.RouterType) KeyPart(com.tencent.angel.psagent.matrix.transport.router.KeyPart)

Aggregations

KeyPart (com.tencent.angel.psagent.matrix.transport.router.KeyPart)26 MatrixMeta (com.tencent.angel.ml.matrix.MatrixMeta)13 PartitionKey (com.tencent.angel.PartitionKey)12 ArrayList (java.util.ArrayList)10 PartitionGetParam (com.tencent.angel.ml.matrix.psf.get.base.PartitionGetParam)9 ServerLongAnyRow (com.tencent.angel.ps.storage.vector.ServerLongAnyRow)9 InvalidParameterException (com.tencent.angel.exception.InvalidParameterException)8 GeneralPartGetParam (com.tencent.angel.ml.matrix.psf.get.base.GeneralPartGetParam)8 Long2ObjectOpenHashMap (it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap)7 ILongKeyPartOp (com.tencent.angel.psagent.matrix.transport.router.operator.ILongKeyPartOp)3 PartGetFloatArrayAttrsResult (com.tencent.angel.graph.client.psf.get.utils.PartGetFloatArrayAttrsResult)2 PartGetIntArrayAttrsResult (com.tencent.angel.graph.client.psf.get.utils.PartGetIntArrayAttrsResult)2 IntFloatVector (com.tencent.angel.ml.math2.vector.IntFloatVector)2 ServerRow (com.tencent.angel.ps.storage.vector.ServerRow)2 FutureResult (com.tencent.angel.psagent.matrix.transport.FutureResult)2 MatrixTransportClient (com.tencent.angel.psagent.matrix.transport.MatrixTransportClient)2 MapResponseCache (com.tencent.angel.psagent.matrix.transport.response.MapResponseCache)2 ResponseCache (com.tencent.angel.psagent.matrix.transport.response.ResponseCache)2 ValuePart (com.tencent.angel.psagent.matrix.transport.router.ValuePart)2 DynamicLongArray (com.tencent.angel.common.collections.DynamicLongArray)1