Hi,
the following code needs to look differently, depending whether the @jit
directive is activated or not.
Just out of curiosity: is it possible to change the code that it is independent from the @jit
directive?
import numba as nb
import numpy as np
float_array = nb.types.float64[:]
@nb.jit(nopython=True, cache=True)
def myF1(myInputArray):
myIoArrayDict = nb.typed.Dict.empty(
key_type=nb.types.unicode_type,
value_type=float_array, )
if True: # <<<<<<<<< change to False depending from @jit setting
myIoArrayDict['a'] = np.zeros_like(myInputArray[:, 0], dtype=nb.types.float64)
else:
myIoArrayDict['a'] = np.zeros_like(myInputArray[:, 0], dtype=float)
def main():
myInputArray = np.array([[1, 2, 3], [1, 2, 3]])
myF1(myInputArray)
if __name__ == '__main__':
main()
So when I deactivate @nb.jit(nopython=True, cache=True)
, I get a TypeError: Cannot interpret 'float64' as a data type
.
I can mitigate this with choosing dtype=float
(setting True
to False
at the if
statement), but then I would get the following error once I activate the @jit
again:
No implementation of function Function(<function zeros_like at 0x7f21231243a0>) found for signature:
>>> zeros_like(array(int64, 1d, A), dtype=Function(<class 'float'>))
So my question is:
Is there any definition of myIoArrayDict['a']
possible that is invariant of the @jit
directive?
Thanks in advance!