use of com.tencent.angel.ps.storage.partition.ServerPartition in project angel by Tencent.
the class GraphMatrixUtils method getPSAnyKeyRow.
public static ServerAnyAnyRow getPSAnyKeyRow(PSContext psContext, PartitionUpdateParam partParam) {
ServerMatrix matrix = psContext.getMatrixStorageManager().getMatrix(partParam.getMatrixId());
ServerPartition part = matrix.getPartition(partParam.getPartKey().getPartitionId());
return (ServerAnyAnyRow) (((RowBasedPartition) part).getRow(0));
}
use of com.tencent.angel.ps.storage.partition.ServerPartition in project angel by Tencent.
the class GraphMatrixUtils method getPSLongKeyRow.
public static ServerLongAnyRow getPSLongKeyRow(PSContext psContext, GeneralPartGetParam partParam) {
ServerMatrix matrix = psContext.getMatrixStorageManager().getMatrix(partParam.getMatrixId());
ServerPartition part = matrix.getPartition(partParam.getPartKey().getPartitionId());
return (ServerLongAnyRow) (((RowBasedPartition) part).getRow(0));
}
use of com.tencent.angel.ps.storage.partition.ServerPartition in project angel by Tencent.
the class SampleNeighbor method partitionGet.
@Override
public PartitionGetResult partitionGet(PartitionGetParam partParam) {
PartSampleNeighborParam param = (PartSampleNeighborParam) partParam;
ServerMatrix matrix = psContext.getMatrixStorageManager().getMatrix(partParam.getMatrixId());
ServerPartition part = matrix.getPartition(partParam.getPartKey().getPartitionId());
ServerLongAnyRow row = (ServerLongAnyRow) (((RowBasedPartition) part).getRow(0));
long[] nodeIds = param.getNodeIds();
long[][] neighbors = new long[nodeIds.length][];
int count = param.getCount();
Random r = new Random(System.currentTimeMillis());
for (int i = 0; i < nodeIds.length; i++) {
long nodeId = nodeIds[i];
// Get node neighbor number
Node element = (Node) (row.get(nodeId));
if (element == null) {
neighbors[i] = null;
} else {
long[] nodeNeighbors = element.getNeighbors();
if (nodeNeighbors == null || nodeNeighbors.length == 0) {
neighbors[i] = null;
} else if (count <= 0 || nodeNeighbors.length <= count) {
neighbors[i] = nodeNeighbors;
} else {
neighbors[i] = new long[count];
// If the neighbor number > count, just copy a range of neighbors to the result array, the copy position is random
int startPos = Math.abs(r.nextInt()) % nodeNeighbors.length;
if (startPos + count <= nodeNeighbors.length) {
System.arraycopy(nodeNeighbors, startPos, neighbors[i], 0, count);
} else {
System.arraycopy(nodeNeighbors, startPos, neighbors[i], 0, nodeNeighbors.length - startPos);
System.arraycopy(nodeNeighbors, 0, neighbors[i], nodeNeighbors.length - startPos, count - (nodeNeighbors.length - startPos));
}
}
}
}
return new PartSampleNeighborResult(part.getPartitionKey().getPartitionId(), neighbors);
}
use of com.tencent.angel.ps.storage.partition.ServerPartition in project angel by Tencent.
the class SampleNeighbor method partitionGet.
@Override
public PartitionGetResult partitionGet(PartitionGetParam partParam) {
PartSampleNeighborParam param = (PartSampleNeighborParam) partParam;
ServerMatrix matrix = psContext.getMatrixStorageManager().getMatrix(partParam.getMatrixId());
ServerPartition part = matrix.getPartition(partParam.getPartKey().getPartitionId());
ServerLongAnyRow row = (ServerLongAnyRow) (((RowBasedPartition) part).getRow(0));
long[] nodeIds = param.getNodeIds();
long[][] neighbors = new long[nodeIds.length][];
int count = param.getCount();
Random r = new Random();
for (int i = 0; i < nodeIds.length; i++) {
long nodeId = nodeIds[i];
// Get node neighbor number
LongArrayElement element = (LongArrayElement) (row.get(nodeId));
if (element == null) {
neighbors[i] = null;
} else {
long[] nodeNeighbors = element.getData();
if (nodeNeighbors == null || nodeNeighbors.length == 0) {
neighbors[i] = null;
} else if (count <= 0 || nodeNeighbors.length <= count) {
neighbors[i] = nodeNeighbors;
} else {
neighbors[i] = new long[count];
// If the neighbor number > count, just copy a range of neighbors to the result array, the copy position is random
int startPos = Math.abs(r.nextInt()) % nodeNeighbors.length;
if (startPos + count <= nodeNeighbors.length) {
System.arraycopy(nodeNeighbors, startPos, neighbors[i], 0, count);
} else {
System.arraycopy(nodeNeighbors, startPos, neighbors[i], 0, nodeNeighbors.length - startPos);
System.arraycopy(nodeNeighbors, 0, neighbors[i], nodeNeighbors.length - startPos, count - (nodeNeighbors.length - startPos));
}
}
}
}
return new PartSampleNeighborResult(part.getPartitionKey().getPartitionId(), neighbors);
}
use of com.tencent.angel.ps.storage.partition.ServerPartition in project angel by Tencent.
the class GraphMatrixUtils method getPSIntKeyRow.
public static ServerIntAnyRow getPSIntKeyRow(PSContext psContext, GeneralPartGetParam partParam) {
ServerMatrix matrix = psContext.getMatrixStorageManager().getMatrix(partParam.getMatrixId());
ServerPartition part = matrix.getPartition(partParam.getPartKey().getPartitionId());
return (ServerIntAnyRow) (((RowBasedPartition) part).getRow(0));
}
Aggregations