Skip to content

Commit 8273885

Browse files
committed
always fallback to safecast
1 parent b1b16c5 commit 8273885

File tree

1 file changed

+10
-15
lines changed

1 file changed

+10
-15
lines changed

src/main/java/org/apache/sysds/runtime/frame/data/lib/MatrixBlockFromFrame.java

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -102,14 +102,11 @@ private static long convert(FrameBlock frame, MatrixBlock mb, int n, int rl, int
102102
return convertGeneric(frame, mb, n, rl, ru);
103103
}
104104
catch(NumberFormatException | DMLRuntimeException e) {
105-
if(e.getMessage().contains("Unable to change to double")){
106-
LOG.error(
107-
"Failed to convert to Matrix because of number format errors, falling back to NaN on incompatible cells",
108-
e);
109-
return convertSafeCast(frame, mb, n, rl, ru);
110-
}
111-
else
112-
throw e;
105+
LOG.error(
106+
"Failed to convert to Matrix because of number format errors, falling back to NaN on incompatible cells",
107+
e);
108+
return convertSafeCast(frame, mb, n, rl, ru);
109+
113110
}
114111
}
115112

@@ -183,9 +180,8 @@ private static long convertBlockGeneric(final FrameBlock frame, long lnnz, final
183180
return lnnz;
184181
}
185182

186-
187-
188-
private static long convertSafeCast(final FrameBlock frame, final MatrixBlock mb, final int n, final int rl, final int ru){
183+
private static long convertSafeCast(final FrameBlock frame, final MatrixBlock mb, final int n, final int rl,
184+
final int ru) {
189185
final DenseBlock c = mb.getDenseBlock();
190186
long lnnz = 0;
191187
for(int bi = rl; bi < ru; bi += blocksizeIJ) {
@@ -198,17 +194,16 @@ private static long convertSafeCast(final FrameBlock frame, final MatrixBlock mb
198194
return lnnz;
199195
}
200196

201-
202197
private static long convertBlockSafeCast(final FrameBlock frame, long lnnz, final DenseBlock c, final int rl,
203198
final int cl, final int ru, final int cu) {
204199
for(int i = rl; i < ru; i++) {
205200
final double[] cvals = c.values(i);
206201
final int cpos = c.pos(i);
207-
for(int j = cl; j < cu; j++){
208-
try{
202+
for(int j = cl; j < cu; j++) {
203+
try {
209204
lnnz += (cvals[cpos + j] = frame.getDoubleNaN(i, j)) != 0 ? 1 : 0;
210205
}
211-
catch(DMLRuntimeException e){
206+
catch(DMLRuntimeException e) {
212207
lnnz += 1;
213208
cvals[cpos + j] = Double.NaN;
214209
}

0 commit comments

Comments
 (0)