Repository: ignite Updated Branches: refs/heads/master 035dcb7f7 -> 94dd19d36
IGNITE-6761: Change block numeration in SparseBlockMatrixStorage. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/94dd19d3 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/94dd19d3 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/94dd19d3 Branch: refs/heads/master Commit: 94dd19d36812d0bea3a1652ff745fbefc10eba70 Parents: 035dcb7 Author: Yury Babak <[email protected]> Authored: Tue Oct 31 15:35:28 2017 +0300 Committer: Igor Sapego <[email protected]> Committed: Tue Oct 31 15:37:40 2017 +0300 ---------------------------------------------------------------------- .../math/distributed/keys/BlockMatrixKey.java | 12 +- .../distributed/keys/impl/BlockMatrixKey.java | 49 +++-- .../matrix/SparseBlockDistributedMatrix.java | 15 +- .../impls/matrix/SparseDistributedMatrix.java | 2 +- .../storage/matrix/BlockMatrixStorage.java | 213 +++++++++---------- .../SparseDistributedBlockMatrixTest.java | 15 +- 6 files changed, 157 insertions(+), 149 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/94dd19d3/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/BlockMatrixKey.java ---------------------------------------------------------------------- diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/BlockMatrixKey.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/BlockMatrixKey.java index c55b950..091b325 100644 --- a/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/BlockMatrixKey.java +++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/BlockMatrixKey.java @@ -17,14 +17,22 @@ package org.apache.ignite.ml.math.distributed.keys; +import org.apache.ignite.internal.util.lang.IgnitePair; import org.apache.ignite.ml.math.impls.matrix.SparseBlockDistributedMatrix; /** * Cache key for blocks in {@link SparseBlockDistributedMatrix}. + * + * TODO: check if using {@link IgnitePair} will be better for block id. */ public interface BlockMatrixKey extends MatrixCacheKey { /** - * @return block id. + * @return block row id. + */ + public long blockRowId(); + + /** + * @return block col id. */ - public long blockId(); + public long blockColId(); } http://git-wip-us.apache.org/repos/asf/ignite/blob/94dd19d3/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/impl/BlockMatrixKey.java ---------------------------------------------------------------------- diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/impl/BlockMatrixKey.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/impl/BlockMatrixKey.java index 5fd1a16..2edd9cb 100644 --- a/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/impl/BlockMatrixKey.java +++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/impl/BlockMatrixKey.java @@ -42,8 +42,10 @@ import org.jetbrains.annotations.Nullable; public class BlockMatrixKey implements org.apache.ignite.ml.math.distributed.keys.BlockMatrixKey, Externalizable, Binarylizable { /** */ private static final long serialVersionUID = 0L; - /** Block ID */ - private long blockId; + /** Block row ID */ + private long blockIdRow; + /** Block col ID */ + private long blockIdCol; /** Matrix ID */ private IgniteUuid matrixUuid; /** Block affinity key. */ @@ -59,22 +61,28 @@ public class BlockMatrixKey implements org.apache.ignite.ml.math.distributed.key /** * Construct matrix block key. * - * @param blockId Block id. * @param matrixUuid Matrix uuid. * @param affinityKey Affinity key. */ - public BlockMatrixKey(long blockId, IgniteUuid matrixUuid, @Nullable IgniteUuid affinityKey) { - assert blockId >= 0; + public BlockMatrixKey(long rowId, long colId, IgniteUuid matrixUuid, @Nullable IgniteUuid affinityKey) { + assert rowId >= 0; + assert colId >= 0; assert matrixUuid != null; - this.blockId = blockId; + this.blockIdRow = rowId; + this.blockIdCol = colId; this.matrixUuid = matrixUuid; this.affinityKey = affinityKey; } /** {@inheritDoc} */ - @Override public long blockId() { - return blockId; + @Override public long blockRowId() { + return blockIdRow; + } + + /** {@inheritDoc} */ + @Override public long blockColId() { + return blockIdCol; } /** {@inheritDoc} */ @@ -91,14 +99,16 @@ public class BlockMatrixKey implements org.apache.ignite.ml.math.distributed.key @Override public void writeExternal(ObjectOutput out) throws IOException { U.writeGridUuid(out, matrixUuid); U.writeGridUuid(out, affinityKey); - out.writeLong(blockId); + out.writeLong(blockIdRow); + out.writeLong(blockIdCol); } /** {@inheritDoc} */ @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { matrixUuid = U.readGridUuid(in); affinityKey = U.readGridUuid(in); - blockId = in.readLong(); + blockIdRow = in.readLong(); + blockIdCol = in.readLong(); } /** {@inheritDoc} */ @@ -107,7 +117,8 @@ public class BlockMatrixKey implements org.apache.ignite.ml.math.distributed.key BinaryUtils.writeIgniteUuid(out, matrixUuid); BinaryUtils.writeIgniteUuid(out, affinityKey); - out.writeLong(blockId); + out.writeLong(blockIdRow); + out.writeLong(blockIdCol); } /** {@inheritDoc} */ @@ -116,12 +127,19 @@ public class BlockMatrixKey implements org.apache.ignite.ml.math.distributed.key matrixUuid = BinaryUtils.readIgniteUuid(in); affinityKey = BinaryUtils.readIgniteUuid(in); - blockId = in.readLong(); + blockIdRow = in.readLong(); + blockIdCol = in.readLong(); } /** {@inheritDoc} */ @Override public int hashCode() { - return matrixUuid.hashCode() + (int)(blockId ^ (blockId >>> 32)); + int res = 37; + + res += res * 37 + blockIdCol; + res += res * 37 + blockIdRow; + res += res * 37 + matrixUuid.hashCode(); + + return res; } /** {@inheritDoc} */ @@ -134,11 +152,14 @@ public class BlockMatrixKey implements org.apache.ignite.ml.math.distributed.key BlockMatrixKey that = (BlockMatrixKey)obj; - return blockId == that.blockId && matrixUuid.equals(that.matrixUuid) && F.eq(affinityKey, that.affinityKey); + return blockIdRow == that.blockIdRow && blockIdCol == that.blockIdCol && matrixUuid.equals(that.matrixUuid) + && F.eq(affinityKey, that.affinityKey); } /** {@inheritDoc} */ @Override public String toString() { return S.toString(BlockMatrixKey.class, this); } + + } http://git-wip-us.apache.org/repos/asf/ignite/blob/94dd19d3/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/SparseBlockDistributedMatrix.java ---------------------------------------------------------------------- diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/SparseBlockDistributedMatrix.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/SparseBlockDistributedMatrix.java index 1dcf1d8..3d542bc 100644 --- a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/SparseBlockDistributedMatrix.java +++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/SparseBlockDistributedMatrix.java @@ -25,6 +25,7 @@ import org.apache.ignite.IgniteCache; import org.apache.ignite.Ignition; import org.apache.ignite.cache.affinity.Affinity; import org.apache.ignite.cluster.ClusterNode; +import org.apache.ignite.internal.util.lang.IgnitePair; import org.apache.ignite.lang.IgniteUuid; import org.apache.ignite.ml.math.Matrix; import org.apache.ignite.ml.math.StorageConstants; @@ -106,7 +107,7 @@ public class SparseBlockDistributedMatrix extends AbstractMatrix implements Stor CacheUtils.bcast(cacheName, () -> { Ignite ignite = Ignition.localIgnite(); - Affinity affinity = ignite.affinity(cacheName); + Affinity<BlockMatrixKey> affinity = ignite.affinity(cacheName); IgniteCache<BlockMatrixKey, BlockEntry> cache = ignite.getOrCreateCache(cacheName); ClusterNode locNode = ignite.cluster().localNode(); @@ -122,11 +123,15 @@ public class SparseBlockDistributedMatrix extends AbstractMatrix implements Stor // compute Cij locally on each node // TODO: IGNITE:5114, exec in parallel locKeys.forEach(key -> { - long newBlockId = key.blockId(); + long newBlockIdRow = key.blockRowId(); + long newBlockIdCol = key.blockColId(); + + IgnitePair<Long> newBlockId = new IgnitePair<>(newBlockIdRow, newBlockIdCol); + BlockEntry blockC = null; - List<BlockEntry> aRow = matrixA.storage().getRowForBlock(newBlockId, storageC); - List<BlockEntry> bCol = matrixB.storage().getColForBlock(newBlockId, storageC); + List<BlockEntry> aRow = matrixA.storage().getRowForBlock(newBlockId); + List<BlockEntry> bCol = matrixB.storage().getColForBlock(newBlockId); for (int i = 0; i < aRow.size(); i++) { BlockEntry blockA = aRow.get(i); @@ -137,7 +142,7 @@ public class SparseBlockDistributedMatrix extends AbstractMatrix implements Stor blockC = blockC == null ? tmpBlock : new BlockEntry(blockC.plus(tmpBlock)); } - cache.put(storageC.getCacheKey(newBlockId), blockC); + cache.put(storageC.getCacheKey(newBlockIdRow, newBlockIdCol), blockC); }); }); http://git-wip-us.apache.org/repos/asf/ignite/blob/94dd19d3/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/SparseDistributedMatrix.java ---------------------------------------------------------------------- diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/SparseDistributedMatrix.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/SparseDistributedMatrix.java index 92d7c39..9a18f8b 100644 --- a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/SparseDistributedMatrix.java +++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/SparseDistributedMatrix.java @@ -119,7 +119,7 @@ public class SparseDistributedMatrix extends AbstractMatrix implements StorageCo CacheUtils.bcast(cacheName, () -> { Ignite ignite = Ignition.localIgnite(); - Affinity affinity = ignite.affinity(cacheName); + Affinity<RowColMatrixKey> affinity = ignite.affinity(cacheName); IgniteCache<RowColMatrixKey, BlockEntry> cache = ignite.getOrCreateCache(cacheName); ClusterNode locNode = ignite.cluster().localNode(); http://git-wip-us.apache.org/repos/asf/ignite/blob/94dd19d3/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/BlockMatrixStorage.java ---------------------------------------------------------------------- diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/BlockMatrixStorage.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/BlockMatrixStorage.java index 0f285c2..0978e5a 100644 --- a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/BlockMatrixStorage.java +++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/BlockMatrixStorage.java @@ -24,8 +24,6 @@ import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.LongStream; import org.apache.ignite.IgniteCache; import org.apache.ignite.Ignition; import org.apache.ignite.cache.CacheAtomicityMode; @@ -33,6 +31,7 @@ import org.apache.ignite.cache.CacheMode; import org.apache.ignite.cache.CachePeekMode; import org.apache.ignite.cache.CacheWriteSynchronizationMode; import org.apache.ignite.configuration.CacheConfiguration; +import org.apache.ignite.internal.util.lang.IgnitePair; import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgniteUuid; import org.apache.ignite.ml.math.MatrixStorage; @@ -88,10 +87,8 @@ public class BlockMatrixStorage extends CacheUtils implements MatrixStorage, Sto this.rows = rows; this.cols = cols; - //cols % maxBlockEdge > 0 ? 1 : 0 - - this.blocksInRow = cols % maxBlockEdge == 0 ? cols / maxBlockEdge : cols / maxBlockEdge + 1; - this.blocksInCol = rows % maxBlockEdge == 0 ? rows / maxBlockEdge : rows / maxBlockEdge + 1; + this.blocksInRow = rows % maxBlockEdge == 0 ? rows / maxBlockEdge : rows / maxBlockEdge + 1; + this.blocksInCol = cols % maxBlockEdge == 0 ? cols / maxBlockEdge : cols / maxBlockEdge + 1; cache = newCache(); @@ -135,6 +132,20 @@ public class BlockMatrixStorage extends CacheUtils implements MatrixStorage, Sto return RANDOM_ACCESS_MODE; } + /** + * @return Blocks in column. + */ + public int blocksInCol() { + return blocksInCol; + } + + /** + * @return Blocks in row. + */ + public int blocksInRow() { + return blocksInRow; + } + /** {@inheritDoc} */ @Override public void writeExternal(ObjectOutput out) throws IOException { out.writeInt(rows); @@ -182,37 +193,7 @@ public class BlockMatrixStorage extends CacheUtils implements MatrixStorage, Sto /** Delete all data from cache. */ @Override public void destroy() { - long maxBlockId = getBlockId(cols, rows); - - Set<BlockMatrixKey> keyset = LongStream.rangeClosed(0, maxBlockId).mapToObj(this::getCacheKey).collect(Collectors.toSet()); - - cache.clearAll(keyset); - } - - /** {@inheritDoc} */ - @Override public int hashCode() { - int res = 1; - - res = res * 37 + cols; - res = res * 37 + rows; - res = res * 37 + uuid.hashCode(); - res = res * 37 + cache.hashCode(); - - return res; - } - - /** {@inheritDoc} */ - @Override public boolean equals(Object obj) { - if (this == obj) - return true; - - if (obj == null || getClass() != obj.getClass()) - return false; - - BlockMatrixStorage that = (BlockMatrixStorage)obj; - - return rows == that.rows && cols == that.cols && uuid.equals(that.uuid) - && (cache != null ? cache.equals(that.cache) : that.cache == null); + cache.clearAll(getAllKeys()); } /** @@ -225,126 +206,123 @@ public class BlockMatrixStorage extends CacheUtils implements MatrixStorage, Sto } /** - * Build the cache key for the given block id + * Build the cache key for the given blocks id. + * + * NB: NOT cell indices. */ - public BlockMatrixKey getCacheKey(long blockId) { - return new BlockMatrixKey(blockId, uuid, getAffinityKey(blockId)); + public BlockMatrixKey getCacheKey(long blockIdRow, long blockIdCol) { + return new BlockMatrixKey(blockIdRow, blockIdCol, uuid, getAffinityKey(blockIdRow, blockIdCol)); } /** - * Get rows for current block. + * Build the cache key for the given blocks id. * - * @param blockId block id. - * @param storageC result storage. - * @return The list of block entries. + * NB: NOT cell indices. */ - public List<BlockEntry> getRowForBlock(long blockId, BlockMatrixStorage storageC) { - long blockRow = blockId / storageC.blocksInCol; - long blockCol = blockId % storageC.blocksInRow; + public BlockMatrixKey getCacheKey(IgnitePair<Long> blockId) { + return new BlockMatrixKey(blockId.get1(), blockId.get2(), uuid, getAffinityKey(blockId.get1(), blockId.get2())); + } + + /** {@inheritDoc} */ + @Override public Set<BlockMatrixKey> getAllKeys() { + IgnitePair<Long> maxBlockId = getBlockId(rows, cols); + + Set<BlockMatrixKey> keyset = new HashSet<>(); - long locBlock = this.blocksInRow * (blockRow) + (blockCol >= this.blocksInRow ? (blocksInRow - 1) : blockCol); + for(int i = 0; i <= maxBlockId.get1(); i++) + for(int j = 0; j <= maxBlockId.get2(); j++) + keyset.add(getCacheKey(i,j)); - return getRowForBlock(locBlock); + return keyset; + } + + /** {@inheritDoc} */ + @Override public String cacheName() { + return CACHE_NAME; } /** - * Get cols for current block. + * Get rows for current block. * * @param blockId block id. - * @param storageC result storage. * @return The list of block entries. */ - public List<BlockEntry> getColForBlock(long blockId, BlockMatrixStorage storageC) { - long blockRow = blockId / storageC.blocksInCol; - long blockCol = blockId % storageC.blocksInRow; + public List<BlockEntry> getRowForBlock(IgnitePair<Long> blockId) { + List<BlockEntry> res = new LinkedList<>(); - long locBlock = this.blocksInRow * (blockRow) + (blockCol >= this.blocksInRow ? (blocksInRow - 1) : blockCol); + for (int i = 0; i < blocksInCol; i++) + res.add(getEntryById(new IgnitePair<>((long) i, blockId.get2()))); - return getColForBlock(locBlock); + return res; } - /** {@inheritDoc} */ - @Override public Set<BlockMatrixKey> getAllKeys() { - long maxBlockId = numberOfBlocks(); - Set<BlockMatrixKey> keys = new HashSet<>(); + /** + * Get cols for current block. + * + * @param blockId block id. + * @return The list of block entries. + */ + public List<BlockEntry> getColForBlock(IgnitePair<Long> blockId) { + List<BlockEntry> res = new LinkedList<>(); - for (long id = 0; id < maxBlockId; id++) - keys.add(getCacheKey(id)); + for (int i = 0; i < blocksInRow; i++) + res.add(getEntryById(new IgnitePair<>(blockId.get1(), (long) i))); - return keys; + return res; } /** {@inheritDoc} */ - @Override public String cacheName() { - return CACHE_NAME; - } - - /** */ - private List<BlockEntry> getRowForBlock(long blockId) { - List<BlockEntry> res = new LinkedList<>(); - - boolean isFirstRow = blockId < blocksInRow; - - long startBlock = isFirstRow ? 0 : blockId - blockId % blocksInRow; - long endBlock = startBlock + blocksInRow - 1; + @Override public int hashCode() { + int res = 1; - for (long i = startBlock; i <= endBlock; i++) - res.add(getEntryById(i)); + res = res * 37 + cols; + res = res * 37 + rows; + res = res * 37 + uuid.hashCode(); + res = res * 37 + cache.hashCode(); return res; } - /** */ - private List<BlockEntry> getColForBlock(long blockId) { - List<BlockEntry> res = new LinkedList<>(); + /** {@inheritDoc} */ + @Override public boolean equals(Object obj) { + if (this == obj) + return true; - long startBlock = blockId % blocksInRow; - long endBlock = startBlock + blocksInRow * (blocksInCol - 1); + if (obj == null || getClass() != obj.getClass()) + return false; - for (long i = startBlock; i <= endBlock; i += blocksInRow) - res.add(getEntryById(i)); + BlockMatrixStorage that = (BlockMatrixStorage)obj; - return res; + return rows == that.rows && cols == that.cols && uuid.equals(that.uuid) + && (cache != null ? cache.equals(that.cache) : that.cache == null); } /** * */ - private BlockEntry getEntryById(long blockId) { - BlockMatrixKey key = getCacheKey(blockId); + private BlockEntry getEntryById(IgnitePair<Long> blockId) { + BlockMatrixKey key = getCacheKey(blockId.get1(), blockId.get2()); BlockEntry entry = cache.localPeek(key); entry = entry != null ? entry : cache.get(key); if (entry == null) { - long colId = blockId == 0 ? 0 : blockId + 1; - boolean isLastRow = (blockId) >= blocksInRow * (blocksInCol - 1); - boolean isLastCol = (colId) % blocksInRow == 0; + int colSize = blockId.get1() == (blocksInCol - 1) ? rows % maxBlockEdge : maxBlockEdge; + int rowSize = blockId.get2() == (blocksInRow -1 ) ? cols % maxBlockEdge : maxBlockEdge; - entry = new BlockEntry(isLastRow && rows % maxBlockEdge != 0 ? rows % maxBlockEdge : maxBlockEdge, isLastCol && cols % maxBlockEdge != 0 ? cols % maxBlockEdge : maxBlockEdge); + entry = new BlockEntry(rowSize, colSize); } return entry; } /** - * - */ - private long numberOfBlocks() { - int rows = rowSize(); - int cols = columnSize(); - - return ((rows / maxBlockEdge) + (((rows % maxBlockEdge) > 0) ? 1 : 0)) - * ((cols / maxBlockEdge) + (((cols % maxBlockEdge) > 0) ? 1 : 0)); - } - - /** * TODO: IGNITE-5646, WIP * * Get affinity key for the given id. */ - private IgniteUuid getAffinityKey(long id) { + private IgniteUuid getAffinityKey(long blockIdRow, long blockIdCol) { return null; } @@ -356,12 +334,12 @@ public class BlockMatrixStorage extends CacheUtils implements MatrixStorage, Sto * @param v New value to set. */ private void matrixSet(int a, int b, double v) { - long id = getBlockId(a, b); + IgnitePair<Long> blockId = getBlockId(a, b); // Remote set on the primary node (where given row or column is stored locally). - ignite().compute(groupForKey(CACHE_NAME, id)).run(() -> { + ignite().compute(groupForKey(CACHE_NAME, blockId)).run(() -> { IgniteCache<BlockMatrixKey, BlockEntry> cache = Ignition.localIgnite().getOrCreateCache(CACHE_NAME); - BlockMatrixKey key = getCacheKey(getBlockId(a, b)); + BlockMatrixKey key = getCacheKey(blockId.get1(), blockId.get2()); // Local get. BlockEntry block = cache.localPeek(key, CachePeekMode.PRIMARY); @@ -380,21 +358,26 @@ public class BlockMatrixStorage extends CacheUtils implements MatrixStorage, Sto } /** */ - private long getBlockId(int x, int y) { - return (y / maxBlockEdge) * blockShift(cols) + (x / maxBlockEdge); + public IgnitePair<Long> getBlockId(int x, int y) { + return new IgnitePair<>((long)x / maxBlockEdge, (long)y / maxBlockEdge); } /** */ private BlockEntry initBlockFor(int x, int y) { - int blockRows = rows - x >= maxBlockEdge ? maxBlockEdge : rows - x; - int blockCols = cols - y >= maxBlockEdge ? maxBlockEdge : cols - y; + int blockRows = 0; + int blockCols = 0; - return new BlockEntry(blockRows, blockCols); - } + if(rows >= maxBlockEdge) + blockRows = rows - x >= maxBlockEdge ? maxBlockEdge : rows - x; + else + blockRows = rows; - /** */ - private int blockShift(int i) { - return (i) / maxBlockEdge + ((i) % maxBlockEdge > 0 ? 1 : 0); + if(cols >= maxBlockEdge) + blockCols = cols - y >= maxBlockEdge ? maxBlockEdge : cols - y; + else + blockCols = cols; + + return new BlockEntry(blockRows, blockCols); } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/94dd19d3/modules/ml/src/test/java/org/apache/ignite/ml/math/impls/matrix/SparseDistributedBlockMatrixTest.java ---------------------------------------------------------------------- diff --git a/modules/ml/src/test/java/org/apache/ignite/ml/math/impls/matrix/SparseDistributedBlockMatrixTest.java b/modules/ml/src/test/java/org/apache/ignite/ml/math/impls/matrix/SparseDistributedBlockMatrixTest.java index 56ff638..35329ae 100644 --- a/modules/ml/src/test/java/org/apache/ignite/ml/math/impls/matrix/SparseDistributedBlockMatrixTest.java +++ b/modules/ml/src/test/java/org/apache/ignite/ml/math/impls/matrix/SparseDistributedBlockMatrixTest.java @@ -23,12 +23,10 @@ import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.Collection; -import java.util.HashSet; import java.util.Set; import org.apache.ignite.Ignite; import org.apache.ignite.IgniteCache; import org.apache.ignite.internal.util.IgniteUtils; -import org.apache.ignite.lang.IgniteUuid; import org.apache.ignite.ml.math.Matrix; import org.apache.ignite.ml.math.distributed.DistributedStorage; import org.apache.ignite.ml.math.distributed.keys.impl.BlockMatrixKey; @@ -293,6 +291,8 @@ public class SparseDistributedBlockMatrixTest extends GridCommonAbstractTest { Matrix res = cacheMatrix1.times(cacheMatrix2); + BlockMatrixStorage storage = (BlockMatrixStorage)res.getStorage(); + for(int i = 0; i < size; i++) for(int j = 0; j < size; j++) if (i == j) @@ -364,17 +364,8 @@ public class SparseDistributedBlockMatrixTest extends GridCommonAbstractTest { /** Build key set for SparseBlockDistributedMatrix. */ private Set<BlockMatrixKey> buildKeySet(SparseBlockDistributedMatrix m){ - Set<BlockMatrixKey> set = new HashSet<>(); - BlockMatrixStorage storage = (BlockMatrixStorage)m.getStorage(); - IgniteUuid uuid = storage.getUUID(); - - long maxBlock = (rows / 32 + (rows % 32 > 0 ? 1 : 0)) * (cols / 32 + (cols % 32 > 0 ? 1 : 0)); - - for (long i = 0; i < maxBlock; i++) - set.add(new BlockMatrixKey(i,uuid,null)); - - return set; + return storage.getAllKeys(); } }
