use of com.tencent.angel.ml.math2.vector.LongIntVector in project angel by Tencent.
the class VectorUtils method emptyLike.
private static ComponentVector emptyLike(ComponentVector v) {
ComponentVector result;
if (v instanceof CompIntDoubleVector) {
IntDoubleVector[] parts = new IntDoubleVector[v.getNumPartitions()];
IntDoubleVector[] refParts = ((CompIntDoubleVector) v).getPartitions();
for (int i = 0; i < refParts.length; i++) {
if (null != refParts[i]) {
parts[i] = (IntDoubleVector) emptyLike((SimpleVector) refParts[i]);
}
}
result = new CompIntDoubleVector(((CompIntDoubleVector) v).getMatrixId(), ((CompIntDoubleVector) v).getRowId(), ((CompIntDoubleVector) v).getClock(), ((CompIntDoubleVector) v).getDim(), parts, ((CompIntDoubleVector) v).getSubDim());
} else if (v instanceof CompIntFloatVector) {
IntFloatVector[] parts = new IntFloatVector[v.getNumPartitions()];
IntFloatVector[] refParts = ((CompIntFloatVector) v).getPartitions();
for (int i = 0; i < refParts.length; i++) {
if (null != refParts[i]) {
parts[i] = (IntFloatVector) emptyLike((SimpleVector) refParts[i]);
}
}
result = new CompIntFloatVector(((CompIntFloatVector) v).getMatrixId(), ((CompIntFloatVector) v).getRowId(), ((CompIntFloatVector) v).getClock(), ((CompIntFloatVector) v).getDim(), parts, ((CompIntFloatVector) v).getSubDim());
} else if (v instanceof CompIntLongVector) {
IntLongVector[] parts = new IntLongVector[v.getNumPartitions()];
IntLongVector[] refParts = ((CompIntLongVector) v).getPartitions();
for (int i = 0; i < refParts.length; i++) {
if (null != refParts[i]) {
parts[i] = (IntLongVector) emptyLike((SimpleVector) refParts[i]);
}
}
result = new CompIntLongVector(((CompIntLongVector) v).getMatrixId(), ((CompIntLongVector) v).getRowId(), ((CompIntLongVector) v).getClock(), ((CompIntLongVector) v).getDim(), parts, ((CompIntLongVector) v).getSubDim());
} else if (v instanceof CompIntIntVector) {
IntIntVector[] parts = new IntIntVector[v.getNumPartitions()];
IntIntVector[] refParts = ((CompIntIntVector) v).getPartitions();
for (int i = 0; i < refParts.length; i++) {
if (null != refParts[i]) {
parts[i] = (IntIntVector) emptyLike((SimpleVector) refParts[i]);
}
}
result = new CompIntIntVector(((CompIntIntVector) v).getMatrixId(), ((CompIntIntVector) v).getRowId(), ((CompIntIntVector) v).getClock(), ((CompIntIntVector) v).getDim(), parts, ((CompIntIntVector) v).getSubDim());
} else if (v instanceof CompLongDoubleVector) {
LongDoubleVector[] parts = new LongDoubleVector[v.getNumPartitions()];
LongDoubleVector[] refParts = ((CompLongDoubleVector) v).getPartitions();
for (int i = 0; i < refParts.length; i++) {
if (null != refParts[i]) {
parts[i] = (LongDoubleVector) emptyLike((SimpleVector) refParts[i]);
}
}
result = new CompLongDoubleVector(((CompLongDoubleVector) v).getMatrixId(), ((CompLongDoubleVector) v).getRowId(), ((CompLongDoubleVector) v).getClock(), ((CompLongDoubleVector) v).getDim(), parts, ((CompLongDoubleVector) v).getSubDim());
} else if (v instanceof CompLongFloatVector) {
LongFloatVector[] parts = new LongFloatVector[v.getNumPartitions()];
LongFloatVector[] refParts = ((CompLongFloatVector) v).getPartitions();
for (int i = 0; i < refParts.length; i++) {
if (null != refParts[i]) {
parts[i] = (LongFloatVector) emptyLike((SimpleVector) refParts[i]);
}
}
result = new CompLongFloatVector(((CompLongFloatVector) v).getMatrixId(), ((CompLongFloatVector) v).getRowId(), ((CompLongFloatVector) v).getClock(), ((CompLongFloatVector) v).getDim(), parts, ((CompLongFloatVector) v).getSubDim());
} else if (v instanceof CompLongLongVector) {
LongLongVector[] parts = new LongLongVector[v.getNumPartitions()];
LongLongVector[] refParts = ((CompLongLongVector) v).getPartitions();
for (int i = 0; i < refParts.length; i++) {
if (null != refParts[i]) {
parts[i] = (LongLongVector) emptyLike((SimpleVector) refParts[i]);
}
}
result = new CompLongLongVector(((CompLongLongVector) v).getMatrixId(), ((CompLongLongVector) v).getRowId(), ((CompLongLongVector) v).getClock(), ((CompLongLongVector) v).getDim(), parts, ((CompLongLongVector) v).getSubDim());
} else if (v instanceof CompLongIntVector) {
LongIntVector[] parts = new LongIntVector[v.getNumPartitions()];
LongIntVector[] refParts = ((CompLongIntVector) v).getPartitions();
for (int i = 0; i < refParts.length; i++) {
if (null != refParts[i]) {
parts[i] = (LongIntVector) emptyLike((SimpleVector) refParts[i]);
}
}
result = new CompLongIntVector(((CompLongIntVector) v).getMatrixId(), ((CompLongIntVector) v).getRowId(), ((CompLongIntVector) v).getClock(), ((CompLongIntVector) v).getDim(), parts, ((CompLongIntVector) v).getSubDim());
} else {
throw new AngelException("The operation is not support!");
}
return result;
}
use of com.tencent.angel.ml.math2.vector.LongIntVector in project angel by Tencent.
the class ColumnFormat method saveLongIntRows.
private void saveLongIntRows(ServerPartition part, ServerRow[] rows, MatrixPartitionMeta partMeta, PSMatrixSaveContext saveContext, DataOutputStream output) throws IOException {
Vector vec = ServerRowUtils.getVector((ServerLongIntRow) rows[0]);
// int size = rows.size();
long indexOffset = part.getPartitionKey().getStartCol();
LongIntsCol col = new LongIntsCol(0, new int[rows.length]);
if (vec instanceof IntIntVector) {
IntIntVectorStorage storage = ((IntIntVector) vec).getStorage();
long startCol = rows[0].getStartCol();
long endCol = rows[0].getEndCol();
if (storage.isDense()) {
for (long i = startCol; i < endCol; i++) {
col.colId = i;
for (int j = 0; j < rows.length; j++) {
col.colElems[j] = ((ServerLongIntRow) (rows[j])).get(col.colId);
}
save(col, output);
}
} else {
if (saveContext.sortFirst()) {
int[] indices = storage.getIndices();
Sort.quickSort(indices, 0, indices.length - 1);
for (int i = 0; i < indices.length; i++) {
col.colId = indices[i] + indexOffset;
for (int j = 0; j < rows.length; j++) {
col.colElems[j] = ((ServerLongIntRow) (rows[j])).get(col.colId);
}
save(col, output);
}
} else {
ObjectIterator<Int2IntMap.Entry> iter = storage.entryIterator();
while (iter.hasNext()) {
col.colId = iter.next().getIntKey() + indexOffset;
for (int j = 0; j < rows.length; j++) {
col.colElems[j] = ((ServerLongIntRow) (rows[j])).get(col.colId);
}
save(col, output);
}
}
}
} else {
LongIntVectorStorage storage = ((LongIntVector) vec).getStorage();
if (saveContext.sortFirst()) {
long[] indices = storage.getIndices();
Sort.quickSort(indices, 0, indices.length - 1);
for (int i = 0; i < indices.length; i++) {
col.colId = indices[i] + indexOffset;
for (int j = 0; j < rows.length; j++) {
col.colElems[j] = ((ServerLongIntRow) (rows[j])).get(col.colId);
}
save(col, output);
}
} else {
ObjectIterator<Long2IntMap.Entry> iter = storage.entryIterator();
while (iter.hasNext()) {
col.colId = iter.next().getLongKey() + indexOffset;
for (int j = 0; j < rows.length; j++) {
col.colElems[j] = ((ServerLongIntRow) (rows[j])).get(col.colId);
}
save(col, output);
}
}
}
}
use of com.tencent.angel.ml.math2.vector.LongIntVector in project angel by Tencent.
the class ByteBufSerdeUtils method deserializeLongIntVector.
private static LongIntVector deserializeLongIntVector(ByteBuf in, long dim) {
int storageType = deserializeInt(in);
switch(storageType) {
case SPARSE_STORAGE_TYPE:
int len = deserializeInt(in);
Long2IntOpenHashMap idToValueMap = new Long2IntOpenHashMap(len);
for (int i = 0; i < len; i++) {
idToValueMap.put(deserializeInt(in), deserializeInt(in));
}
return new LongIntVector((int) dim, new LongIntSparseVectorStorage((int) dim, idToValueMap));
case SORTED_STORAGE_TYPE:
return VFactory.sortedLongKeyIntVector((int) dim, deserializeLongs(in), deserializeInts(in));
default:
throw new UnsupportedOperationException("Unsupport storage type " + storageType);
}
}
use of com.tencent.angel.ml.math2.vector.LongIntVector in project angel by Tencent.
the class ByteBufSerdeUtils method serializedLongIntVectorLen.
public static int serializedLongIntVectorLen(LongIntVector vector) {
int len = 0;
LongIntVectorStorage storage = vector.getStorage();
if (storage.isSparse()) {
len += serializedIntLen(SPARSE_STORAGE_TYPE);
len += serializedIntLen(storage.size());
len += storage.size() * (INT_LENGTH + FLOAT_LENGTH);
} else if (storage.isSorted()) {
len += serializedIntLen(SORTED_STORAGE_TYPE);
len += serializedLongsLen(vector.getStorage().getIndices());
len += serializedIntsLen(vector.getStorage().getValues());
} else {
throw new UnsupportedOperationException("Unsupport storage type " + vector.getStorage().getClass());
}
return len;
}
use of com.tencent.angel.ml.math2.vector.LongIntVector in project angel by Tencent.
the class ByteBufSerdeUtils method serializeLongIntVectors.
// LongFloatVector array
public static void serializeLongIntVectors(ByteBuf out, LongIntVector[] vectors) {
int start = 0;
int end = vectors.length;
serializeInt(out, end - start);
for (int i = start; i < end; i++) {
LongIntVector vector = vectors[i];
serializeInt(out, vector.getRowId());
serializeLong(out, vector.dim());
// serializeInt(out, vector.getType().getNumber()); // no need to record type
serializeLongIntVector(out, vectors[i]);
}
}
Aggregations