Closed divjakm closed 5 months ago
Additionaly, making an explicit copy of matrix A to initialize B like this:
B = copy(A); // INIT 3: B is copy of A
throws the following error:
JIT session error: Symbols not found: [ _copy__DenseMatrix_double__DenseMatrix_double ]
JIT-Engine invocation failed: Failed to materialize symbols: { (main, { _mlir_func-1-1, func-1-1, _mlir_ciface_main, _mlir__mlir_ciface_func-1-1, _mlir_main, _mlir_ciface_func-1-1, _mlir__mlir_ciface_main, main }) }Program aborted due to an unhandled Error:
Failed to materialize symbols: { (main, { _mlir_func-1-1, func-1-1, _mlir_ciface_main, _mlir__mlir_ciface_func-1-1, _mlir_main, _mlir_ciface_func-1-1, _mlir__mlir_ciface_main, main }) }
[error]: Got an abort signal from the execution engine. Most likely an exception in a shared library. Check logs!
[error]: Execution error: Returning from signal 6
Thanks a lot for reporting this bug, @divjakm. And sorry for the late response. This issue must have escaped our attention somehow. Yes, I can confirm the described behavior (even with the current state of DAPHNE), and it is indeed a bug. You are right, A
should be a 3x3 matrix filled with 1s and B
should be a 3x3 matrix filled with 3s for every combination of {INIT1, INIT2} x {VER1, VER2}. We will further investigate and fix this...
@divjakm: This bug is fixed now and we have a test case that is a slightly simplified variant of your example now.
I think I found a bug in the copy-on-write mechanics, as demonstrated by this code:
Tha matrix A should never change, while the resulting matrix B should be filled with value 3 (as is in the case of INIT 1 code):
However, in case of INIT 2 code B contains the following values:
It seems that when calculating row sum of A the data is somehow modified by data previously stored in B?