hightower8083 / synchrad

Synchrotron Radiation calculator via openCL
GNU General Public License v3.0
18 stars 11 forks source link

no locator available when extracting particle tracks #14

Closed berceanu closed 3 years ago

berceanu commented 3 years ago
$ git checkout dev
$ cd example/PIC
$ python fbpic_lwfa_script.py  # takes a while, but works and produces diags/ and diags_track/
$ python extract_tracks.py
Traceback (most recent call last):
  File "extract_tracks.py", line 1, in <module>
    from openpmd_viewer import ParticleTracker
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 618, in _load_backward_compatible
  File "<frozen zipimport>", line 259, in load_module
  File "/data/storage/berceanu/software/pkg/minicondapic/lib/python3.8/site-packages/openPMD_viewer-1.0.1-py3.8.egg/openpmd_viewer/__init__.py", line 9, in <module>
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 618, in _load_backward_compatible
  File "<frozen zipimport>", line 259, in load_module
  File "/data/storage/berceanu/software/pkg/minicondapic/lib/python3.8/site-packages/openPMD_viewer-1.0.1-py3.8.egg/openpmd_viewer/openpmd_timeseries/__init__.py", line 2, in <module>
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 618, in _load_backward_compatible
  File "<frozen zipimport>", line 259, in load_module
  File "/data/storage/berceanu/software/pkg/minicondapic/lib/python3.8/site-packages/openPMD_viewer-1.0.1-py3.8.egg/openpmd_viewer/openpmd_timeseries/main.py", line 13, in <module>
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 618, in _load_backward_compatible
  File "<frozen zipimport>", line 259, in load_module
  File "/data/storage/berceanu/software/pkg/minicondapic/lib/python3.8/site-packages/openPMD_viewer-1.0.1-py3.8.egg/openpmd_viewer/openpmd_timeseries/utilities.py", line 223, in <module>
  File "/data/storage/berceanu/software/pkg/minicondapic/lib/python3.8/site-packages/numba/core/decorators.py", line 211, in wrapper
    disp.enable_caching()
  File "/data/storage/berceanu/software/pkg/minicondapic/lib/python3.8/site-packages/numba/core/dispatcher.py", line 743, in enable_caching
    self._cache = FunctionCache(self.py_func)
  File "/data/storage/berceanu/software/pkg/minicondapic/lib/python3.8/site-packages/numba/core/caching.py", line 620, in __init__
    self._impl = self._impl_class(py_func)
  File "/data/storage/berceanu/software/pkg/minicondapic/lib/python3.8/site-packages/numba/core/caching.py", line 355, in __init__
    raise RuntimeError("cannot cache function %r: no locator available "
RuntimeError: cannot cache function 'histogram_cic_1d': no locator available for file '/data/storage/berceanu/software/pkg/minicondapic/lib/python3.8/site-packages/openPMD_viewer-1.0.1-py3.8.egg/openpmd_viewer/openpmd_timeseries/utilities.py'

I am using openPMD_viewer-1.0.1.

berceanu commented 3 years ago

It seems the offending line is

from openpmd_viewer import ParticleTracker
hightower8083 commented 3 years ago

Hi @berceanu

I know this error and it appears directly at loading from openpmd_viewer import ParticleTracker so its not really related to synchrad itself.

As far as I could get its related to the numba caching, and in particular to this option -- setting cache=False should fix it, but its not a proper solution. Curiously, I've also found, that it is related to the way how openPMD_viewer is installed, and it appears only when you do it via python setup.py install. The reason could be that setuptools does not set correctly the NUMBA_CACHE_DIR. This error does not appear when openPMD_viewer is installed via pip

The best way I've found to resolve this issue with local installation was to use pip install . instead of python setup.py install (or install it directly from pip repository).

berceanu commented 3 years ago

https://github.com/openPMD/openPMD-viewer/issues/290#issue-737867506

hightower8083 commented 3 years ago

this problem has been there for a while and I've been using pip to overcome it..