use of com.tencent.angel.ml.matrix.psf.update.base.PartitionUpdateParam in project angel by Tencent.
the class UserRequestAdapter method update.
/**
* Update matrix use a udf.
*
* @param updateFunc update udf function
* @return Future<VoidResult> update future result
*/
public Future<VoidResult> update(UpdateFunc updateFunc) {
MatrixTransportClient matrixClient = PSAgentContext.get().getMatrixTransportClient();
UpdateParam param = updateFunc.getParam();
// Split the param use matrix partitions
List<PartitionUpdateParam> partParams = param.split();
int size = partParams.size();
UpdatePSFRequest request = new UpdatePSFRequest(updateFunc);
ResponseCache cache = new MapResponseCache(size);
FutureResult<VoidResult> result = new FutureResult<>();
int requestId = request.getRequestId();
requests.put(requestId, request);
requestIdToResponseCache.put(requestId, cache);
requestIdToResultMap.put(requestId, result);
// Send request to PSS
for (int i = 0; i < size; i++) {
sendUpdateUDFRequest(matrixClient, requestId, partParams.get(i).getMatrixId(), partParams.get(i).getPartKey().getPartitionId(), updateFunc, partParams.get(i));
}
return result;
}
use of com.tencent.angel.ml.matrix.psf.update.base.PartitionUpdateParam in project angel by Tencent.
the class QuantifyDoubleParam method split.
@Override
public List<PartitionUpdateParam> split() {
List<PartitionKey> partList = PSAgentContext.get().getMatrixMetaManager().getPartitions(matrixId, rowId);
int size = partList.size();
List<PartitionUpdateParam> partParams = new ArrayList<>(size);
for (PartitionKey part : partList) {
if (rowId < part.getStartRow() || rowId >= part.getEndRow()) {
throw new RuntimeException("Wrong rowId!");
}
partParams.add(new QuantifyDoublePartUParam(matrixId, part, rowId, (int) part.getStartCol(), (int) part.getEndCol(), array, numBits));
}
return partParams;
}
use of com.tencent.angel.ml.matrix.psf.update.base.PartitionUpdateParam in project angel by Tencent.
the class InitParam method split.
@Override
public List<PartitionUpdateParam> split() {
List<PartitionKey> pkeys = PSAgentContext.get().getMatrixMetaManager().getPartitions(matrixId);
IntOpenHashSet serverIds = new IntOpenHashSet();
List<PartitionUpdateParam> params = new ArrayList<>();
for (PartitionKey pkey : pkeys) {
int serverId = PSAgentContext.get().getMatrixMetaManager().getMasterPS(pkey).getIndex();
if (!serverIds.contains(serverId)) {
serverIds.add(serverId);
params.add(new InitPartitionParam(matrixId, pkey, numPartitions, maxIndex, maxLength, negative, order, partDim, window));
}
}
return params;
}
use of com.tencent.angel.ml.matrix.psf.update.base.PartitionUpdateParam in project angel by Tencent.
the class AdjustParam method split.
@Override
public List<PartitionUpdateParam> split() {
List<PartitionKey> pkeys = PSAgentContext.get().getMatrixMetaManager().getPartitions(matrixId);
List<PartitionUpdateParam> params = new ArrayList<>();
for (PartitionKey pkey : pkeys) {
AdjustPartitionParam partParam = new AdjustPartitionParam(matrixId, pkey, dataBuf, bufLength);
params.add(partParam);
}
return params;
}
use of com.tencent.angel.ml.matrix.psf.update.base.PartitionUpdateParam 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;
}
Aggregations