Код: Выделить всё
SystemError: returned a result with an exception set
< /code>
Я скомпилировал все свои функции с любым: < /p>
@njit(error_model="numpy", cache=True)
< /code>
или < /p>
@njit(error_model="numpy", cache=True, parallel=True)
< /code>
где применимо. Я использую Puthon 3.12.9
Хотя Я установил отладчика, чтобы остановиться на поднятом исключении, это на самом деле не помогает (много), поскольку в данных или коде нет ничего плохого. Запуск всех данных через код, содержащийся в скомпилированной функции в консоли, не дает ошибок, и я даже могу вызвать скомпилированную функцию, которая подняла ошибку в отладчике и запускается. Это не является неконтевно воспроизводимой ошибкой. < /P>
Когда я вызываю скомпилированную функцию, которая вызвала ошибку, которая возникает одна из трех вещей: она возвращает правильный результат, он возвращает невидимый результат, когда все является муралым ( какое -то значение xxxxxe+303 - возможно, означающее, что Calc folidue Calc не сходился?) Или возвращает ошибку набора исключений. < /p>
происхождение Ошибка кажется довольно случайной, так как я многократно проверяю на одних и тех же данных: иногда она сталкивается с ошибкой после одного или двух вызовов фонда, в других случаях это может быть сотня вызовов к функции, прежде чем ошибка повторно поступит. В этом случае я могу извлечь следующую ошибку: < /p>
Код: Выделить всё
Traceback (most recent call last):
File "C:\Users\jpmor\anaconda3\envs\new_base\Lib\site-packages\numba\np\linalg.py", line 841, in _check_finite_matrix
raise np.linalg.LinAlgError(
numpy.linalg.LinAlgError: Array must not contain infs or NaNs.
The above exception was the direct cause of the following exception:
Код: Выделить всё
len = np.linalg.norm(vect[indx, :])
< /code>
и позже < /p>
eigenvalues = np.linalg.eigvalsh(stress.reshape(3, 3))
Код: Выделить всё
@overload(np.linalg.eigvals)
def eigvals_impl(a):
....
< /code>
Это должно быть источником моей проблемы, но я не понимаю, почему на одних и тех же данных это иногда бросает ошибку, а в другое время она работает отлично. Из документов Numpy
Я считаю Произойти с Numba , так как я никогда не получаю ошибку при запуске с более медленной, некомпилочной функцией в Pure Numpy .
i Угадайте, что возможное простое решение - не использовать Numba , но я бы хотел, чтобы мой код закончил работу в тот же день. Есть ли альтернатива np.linalg.eigvals , которая стабильна с numba ? Можно ли написать домашнюю функцию, которая будет работать и быть так же быстро?
Подробнее здесь: https://stackoverflow.com/questions/794 ... nsistenlty