Skip to content

Commit f9c14fb

Browse files
committed
by8 count
1 parent 1a5b6e9 commit f9c14fb

File tree

4 files changed

+54
-11
lines changed

4 files changed

+54
-11
lines changed

src/main/java/org/apache/sysds/runtime/compress/colgroup/mapping/MapToChar.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,11 +230,27 @@ public void copyInt(int[] d, int start, int end) {
230230

231231
@Override
232232
public int[] getCounts(int[] ret) {
233-
for(int i = 0; i < _data.length; i++)
233+
final int h = (_data.length) % 8;
234+
for(int i = 0; i < h; i++)
234235
ret[_data[i]]++;
236+
getCountsBy8P(ret, h, _data.length);
235237
return ret;
236238
}
237239

240+
private void getCountsBy8P(int[] ret, int s, int e) {
241+
for(int i = s; i < e; i += 8) {
242+
ret[_data[i]]++;
243+
ret[_data[i + 1]]++;
244+
ret[_data[i + 2]]++;
245+
ret[_data[i + 3]]++;
246+
ret[_data[i + 4]]++;
247+
ret[_data[i + 5]]++;
248+
ret[_data[i + 6]]++;
249+
ret[_data[i + 7]]++;
250+
}
251+
}
252+
253+
238254
@Override
239255
public AMapToData resize(int unique) {
240256
final int size = _data.length;

src/main/java/org/apache/sysds/runtime/compress/colgroup/mapping/MapToCharPByte.java

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public class MapToCharPByte extends AMapToData {
3737

3838
private static final long serialVersionUID = 6315708056775476541L;
3939

40-
public static final int max = (0xFFFF + 1) * 128 -1;
40+
public static final int max = (0xFFFF + 1) * 128 - 1;
4141
private final char[] _data_c;
4242
private final byte[] _data_b; // next byte after the char
4343

@@ -100,7 +100,7 @@ public void set(int n, int v) {
100100
}
101101

102102
@Override
103-
public void set(int l, int u, int off, AMapToData tm){
103+
public void set(int l, int u, int off, AMapToData tm) {
104104
for(int i = l; i < u; i++, off++) {
105105
set(i, tm.getIndex(off));
106106
}
@@ -169,14 +169,28 @@ public void copyInt(int[] d, int start, int end) {
169169
set(i, d[i]);
170170
}
171171

172-
173172
@Override
174173
public int[] getCounts(int[] ret) {
175-
for(int i = 0; i < size(); i++)
176-
ret[getIndex(i)]++;
174+
final int h = (size()) % 8;
175+
for(int i = 0; i < h; i++)
176+
ret[_data_c[i] + ((int) _data_b[i] << 16)]++;
177+
getCountsBy8P(ret, h, size());
177178
return ret;
178179
}
179180

181+
private void getCountsBy8P(int[] ret, int s, int e) {
182+
for(int i = s; i < e; i += 8) {
183+
ret[getIndex(i)]++;
184+
ret[getIndex(i + 1)]++;
185+
ret[getIndex(i + 2)]++;
186+
ret[getIndex(i + 3)]++;
187+
ret[getIndex(i + 4)]++;
188+
ret[getIndex(i + 5)]++;
189+
ret[getIndex(i + 6)]++;
190+
ret[getIndex(i + 7)]++;
191+
}
192+
}
193+
180194
@Override
181195
public AMapToData resize(int unique) {
182196
final int size = _data_c.length;
@@ -263,7 +277,6 @@ public AMapToData appendN(IMapToDataGroup[] d) {
263277

264278
}
265279

266-
267280
@Override
268281
public boolean equals(AMapToData e) {
269282
return e instanceof MapToCharPByte && //
@@ -326,7 +339,6 @@ protected void decompressToRangeNoOffBy8(double[] c, int r, double[] values) {
326339
c[r + 7] += values[getIndex(r + 7)];
327340
}
328341

329-
330342
@Override
331343
public void decompressToRange(double[] c, int rl, int ru, int offR, double[] values) {
332344
// OVERWRITTEN FOR JIT COMPILE!

src/main/java/org/apache/sysds/runtime/compress/colgroup/mapping/MapToInt.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,11 +195,27 @@ public void copyInt(int[] d, int start, int end) {
195195

196196
@Override
197197
public int[] getCounts(int[] ret) {
198-
for(int i = 0; i < _data.length; i++)
198+
final int h = (_data.length) % 8;
199+
for(int i = 0; i < h; i++)
199200
ret[_data[i]]++;
201+
getCountsBy8P(ret, h, _data.length);
200202
return ret;
201203
}
202204

205+
private void getCountsBy8P(int[] ret, int s, int e) {
206+
for(int i = s; i < e; i += 8) {
207+
ret[_data[i]]++;
208+
ret[_data[i + 1]]++;
209+
ret[_data[i + 2]]++;
210+
ret[_data[i + 3]]++;
211+
ret[_data[i + 4]]++;
212+
ret[_data[i + 5]]++;
213+
ret[_data[i + 6]]++;
214+
ret[_data[i + 7]]++;
215+
}
216+
}
217+
218+
203219
@Override
204220
public int countRuns() {
205221
int c = 1;

src/main/java/org/apache/sysds/runtime/compress/colgroup/mapping/MapToZero.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,7 @@ public int getUpperBoundValue() {
110110

111111
@Override
112112
public int[] getCounts(int[] ret) {
113-
final int sz = size();
114-
ret[0] = sz;
113+
ret[0] = size();
115114
return ret;
116115
}
117116

0 commit comments

Comments
 (0)