Search in sources :

Example 21 with PartitionGetResult

use of com.tencent.angel.ml.matrix.psf.get.base.PartitionGetResult in project angel by Tencent.

the class GetNodeFeats method merge.

@Override
public GetResult merge(List<PartitionGetResult> partResults) {
    Int2ObjectArrayMap<PartitionGetResult> partIdToResultMap = new Int2ObjectArrayMap<>(partResults.size());
    for (PartitionGetResult result : partResults) {
        partIdToResultMap.put(((PartGetNodeFeatsResult) result).getPartId(), result);
    }
    GetNodeFeatsParam param = (GetNodeFeatsParam) getParam();
    long[] nodeIds = param.getNodeIds();
    List<PartitionGetParam> partParams = param.getPartParams();
    Long2ObjectOpenHashMap<IntFloatVector> results = new Long2ObjectOpenHashMap<>(nodeIds.length);
    int size = partResults.size();
    for (int i = 0; i < size; i++) {
        PartGetNodeFeatsParam partParam = (PartGetNodeFeatsParam) partParams.get(i);
        PartGetNodeFeatsResult partResult = (PartGetNodeFeatsResult) partIdToResultMap.get(partParam.getPartKey().getPartitionId());
        int start = partParam.getStartIndex();
        int end = partParam.getEndIndex();
        IntFloatVector[] feats = partResult.getFeats();
        for (int j = start; j < end; j++) {
            if (feats[j - start] != null) {
                results.put(nodeIds[j], feats[j - start]);
            }
        }
    }
    return new GetNodeFeatsResult(results);
}
Also used : Int2ObjectArrayMap(it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap) PartitionGetParam(com.tencent.angel.ml.matrix.psf.get.base.PartitionGetParam) Long2ObjectOpenHashMap(it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap) IntFloatVector(com.tencent.angel.ml.math2.vector.IntFloatVector) PartitionGetResult(com.tencent.angel.ml.matrix.psf.get.base.PartitionGetResult)

Example 22 with PartitionGetResult

use of com.tencent.angel.ml.matrix.psf.get.base.PartitionGetResult in project angel by Tencent.

the class GetAliasTableWithTrunc method merge.

@Override
public GetResult merge(List<PartitionGetResult> partResults) {
    int resultSize = 0;
    for (PartitionGetResult result : partResults) {
        resultSize += ((PartGeneralGetResult) result).getNodeIds().length;
    }
    Long2ObjectOpenHashMap<Tuple3<long[], float[], int[]>> nodeIdToNeighbors = new Long2ObjectOpenHashMap<>(resultSize);
    for (PartitionGetResult result : partResults) {
        PartGeneralGetResult partResult = (PartGeneralGetResult) result;
        long[] nodeIds = partResult.getNodeIds();
        IElement[] data = partResult.getData();
        for (int i = 0; i < nodeIds.length; i++) {
            if (data[i] != null) {
                long[] neighbors = ((AliasElement) data[i]).getNeighborIds();
                float[] accept = ((AliasElement) data[i]).getAccept();
                int[] alias = ((AliasElement) data[i]).getAlias();
                if (neighbors.length > 0 && accept.length > 0 && alias.length > 0) {
                    nodeIdToNeighbors.put(nodeIds[i], new Tuple3<>(neighbors, accept, alias));
                } else {
                    nodeIdToNeighbors.put(nodeIds[i], emp);
                }
            } else {
                nodeIdToNeighbors.put(nodeIds[i], emp);
            }
        }
    }
    return new PullAliasResult(nodeIdToNeighbors);
}
Also used : IElement(com.tencent.angel.ps.storage.vector.element.IElement) Long2ObjectOpenHashMap(it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap) PartGeneralGetResult(com.tencent.angel.graph.model.general.get.PartGeneralGetResult) Tuple3(scala.Tuple3) PartitionGetResult(com.tencent.angel.ml.matrix.psf.get.base.PartitionGetResult)

Example 23 with PartitionGetResult

use of com.tencent.angel.ml.matrix.psf.get.base.PartitionGetResult in project angel by Tencent.

the class MatrixTransportClient method get.

@Override
public FutureResult<PartitionGetResult> get(GetFunc func, PartitionGetParam param) {
    // Request header
    RequestHeader header = createRequestHeader(-1, TransportMethod.GET_PSF, param.getMatrixId(), param.getPartKey().getPartitionId());
    // Request body
    GetUDFRequest requestData = new GetUDFRequest(func.getClass().getName(), param);
    // Request
    Request request = new Request(header, requestData);
    FutureResult<PartitionGetResult> resultFuture = new FutureResult<>();
    requestToResultMap.put(request, resultFuture);
    // Send the request
    sendGetRequest(request);
    return resultFuture;
}
Also used : UserRequest(com.tencent.angel.psagent.matrix.transport.adapter.UserRequest) Request(com.tencent.angel.ps.server.data.request.Request) UpdateUDFRequest(com.tencent.angel.ps.server.data.request.UpdateUDFRequest) GetUDFRequest(com.tencent.angel.ps.server.data.request.GetUDFRequest) RequestHeader(com.tencent.angel.ps.server.data.request.RequestHeader) GetUDFRequest(com.tencent.angel.ps.server.data.request.GetUDFRequest) PartitionGetResult(com.tencent.angel.ml.matrix.psf.get.base.PartitionGetResult)

Example 24 with PartitionGetResult

use of com.tencent.angel.ml.matrix.psf.get.base.PartitionGetResult in project angel by Tencent.

the class SampleNeighborWithType method merge.

@Override
public GetResult merge(List<PartitionGetResult> partResults) {
    SampleType sampleType = ((SampleNeighborWithTypeParam) param).getSampleType();
    Long2ObjectOpenHashMap<long[]> nodeIdToSampleNeighbors = new Long2ObjectOpenHashMap<>(((SampleNeighborParam) param).getNodeIds().length);
    Long2ObjectOpenHashMap<int[]> nodeIdToSampleNeighborType = new Long2ObjectOpenHashMap<>(((SampleNeighborParam) param).getNodeIds().length);
    Long2ObjectOpenHashMap<int[]> nodeIdToSampleEdgeType = new Long2ObjectOpenHashMap<>(((SampleNeighborParam) param).getNodeIds().length);
    for (PartitionGetResult partResult : partResults) {
        // Sample part result
        PartSampleNeighborResultWithType partSampleResult = (PartSampleNeighborResultWithType) partResult;
        // Neighbors
        Long2ObjectOpenHashMap<long[]> partNodeIdToSampleNeighbors = partSampleResult.getNodeIdToSampleNeighbors();
        if (partNodeIdToSampleNeighbors != null) {
            nodeIdToSampleNeighbors.putAll(partNodeIdToSampleNeighbors);
        }
        // Neighbors type
        Long2ObjectOpenHashMap<int[]> partNodeIdToSampleNeighborsType = partSampleResult.getNodeIdToSampleNeighborsType();
        if (partNodeIdToSampleNeighborsType != null) {
            nodeIdToSampleNeighborType.putAll(partNodeIdToSampleNeighborsType);
        }
        // Edge type
        Long2ObjectOpenHashMap<int[]> partNodeIdToSampleEdgesType = partSampleResult.getNodeIdToSampleEdgeType();
        if (partNodeIdToSampleEdgesType != null) {
            nodeIdToSampleEdgeType.putAll(partNodeIdToSampleEdgesType);
        }
    }
    if (sampleType == SampleType.NODE) {
        return new SampleNeighborResultWithType(nodeIdToSampleNeighbors, nodeIdToSampleNeighborType, null);
    } else if (sampleType == SampleType.EDGE) {
        return new SampleNeighborResultWithType(nodeIdToSampleNeighbors, null, nodeIdToSampleEdgeType);
    } else {
        return new SampleNeighborResultWithType(nodeIdToSampleNeighbors, nodeIdToSampleNeighborType, nodeIdToSampleEdgeType);
    }
}
Also used : Long2ObjectOpenHashMap(it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap) PartitionGetResult(com.tencent.angel.ml.matrix.psf.get.base.PartitionGetResult)

Example 25 with PartitionGetResult

use of com.tencent.angel.ml.matrix.psf.get.base.PartitionGetResult in project angel by Tencent.

the class SampleEdgeFeat method merge.

@Override
public GetResult merge(List<PartitionGetResult> partResults) {
    Long2ObjectOpenHashMap<long[]> nodeIdToSampleNeighbors = new Long2ObjectOpenHashMap<>(((SampleEdgeFeatParam) param).getNodeIds().length);
    Long2ObjectOpenHashMap<IntFloatVector[]> nodeIdToEdgeFeats = new Long2ObjectOpenHashMap<>(((SampleEdgeFeatParam) param).getNodeIds().length);
    for (PartitionGetResult partResult : partResults) {
        // Sample part result
        PartSampleEdgeFeatResult partSampleResult = (PartSampleEdgeFeatResult) partResult;
        // Neighbors
        Long2ObjectOpenHashMap<long[]> partNodeIdToSampleNeighbors = partSampleResult.getNodeIdToSampleNeighbors();
        if (partNodeIdToSampleNeighbors != null) {
            nodeIdToSampleNeighbors.putAll(partNodeIdToSampleNeighbors);
        }
        // EdgeFeatures
        Long2ObjectOpenHashMap<IntFloatVector[]> partNodeIdToEdgeFeats = partSampleResult.getNodeIdToSampleEdgeFeats();
        if (partNodeIdToSampleNeighbors != null) {
            nodeIdToEdgeFeats.putAll(partNodeIdToEdgeFeats);
        }
    }
    return new SampleEdgeFeatResult(nodeIdToSampleNeighbors, nodeIdToEdgeFeats);
}
Also used : Long2ObjectOpenHashMap(it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap) PartitionGetResult(com.tencent.angel.ml.matrix.psf.get.base.PartitionGetResult)

Aggregations

PartitionGetResult (com.tencent.angel.ml.matrix.psf.get.base.PartitionGetResult)60 PartitionKey (com.tencent.angel.PartitionKey)24 Long2ObjectOpenHashMap (it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap)18 MatrixMeta (com.tencent.angel.ml.matrix.MatrixMeta)12 PartitionGetParam (com.tencent.angel.ml.matrix.psf.get.base.PartitionGetParam)6 IElement (com.tencent.angel.ps.storage.vector.element.IElement)6 Int2ObjectArrayMap (it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap)6 GetLongsResult (com.tencent.angel.graph.common.psf.result.GetLongsResult)5 PartGeneralGetResult (com.tencent.angel.graph.model.general.get.PartGeneralGetResult)5 AngelException (com.tencent.angel.exception.AngelException)2 GetFunc (com.tencent.angel.ml.matrix.psf.get.base.GetFunc)2 GetRowResult (com.tencent.angel.ml.matrix.psf.get.getrow.GetRowResult)2 IndexPartGetLongResult (com.tencent.angel.ml.matrix.psf.get.indexed.IndexPartGetLongResult)2 GetUDFRequest (com.tencent.angel.ps.server.data.request.GetUDFRequest)2 Request (com.tencent.angel.ps.server.data.request.Request)2 GetUDFResponse (com.tencent.angel.ps.server.data.response.GetUDFResponse)2 RowBasedPartition (com.tencent.angel.ps.storage.partition.RowBasedPartition)2 UserRequest (com.tencent.angel.psagent.matrix.transport.adapter.UserRequest)2 Tuple3 (scala.Tuple3)2 HyperLogLogPlus (com.clearspring.analytics.stream.cardinality.HyperLogLogPlus)1