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);
}
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);
}
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;
}
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);
}
}
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);
}
Aggregations