getkeops / keops

KErnel OPerationS, on CPUs and GPUs, with autodiff and without memory overflows
https://www.kernel-operations.io
MIT License
1.03k stars 65 forks source link

Error when running test shared library file in C++ mode too short #223

Closed gdurif closed 2 years ago

gdurif commented 2 years ago
$ cd pykeops/test && python3 unit_tests_numpy.py
[KeOps] Warning : Cuda libraries were not detected on the system ; using cpu only mode
[pyKeOps] Compiling pykeops cpp 848054da7e module ... /home/drg/work/dev/project/keops/.pyenv/bin/python3: No module named pybind11
/home/drg/.cache/keops2.0b1/build/pykeops_cpp_848054da7e.cpp:4:10: fatal error: pybind11/pybind11.h: No such file or directory
    4 | #include <pybind11/pybind11.h>
      |          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
....
gdurif commented 2 years ago

pip install pybind11 fixes the issue.

gdurif commented 2 years ago

I am not able to replicate the problem... :face_with_spiral_eyes: Still doing some tests

gdurif commented 2 years ago

While doing some tests, I stumbled upon the following problem while running pykeops/test/unit_tests_numpy.py.

Issue with shared library file in C++ mode: pykeops_cpp_xxx.so: file too short

$ python unit_tests_numpy.py
[KeOps] Warning : Cuda libraries were not detected on the system ; using cpu only mode
.......E
======================================================================
ERROR: test_non_contiguity (__main__.NumpyUnitTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "unit_tests_numpy.py", line 179, in test_non_contiguity
    gamma_keops1 = my_routine(
  File "/xxx/keops/pykeops/test/../../pykeops/numpy/generic/generic_red.py", line 303, in __call__
    self.myconv = keops_binder["nvrtc" if tagCPUGPU else "cpp"](
  File "/xxx/keops/pykeops/test/../../keopscore/utils/Cache.py", line 64, in __call__
    obj = self.cls(*args)
  File "/xxx/keops/pykeops/test/../../pykeops/common/keops_io/LoadKeOps_cpp.py", line 15, in __init__
    super().__init__(*args, fast_init=fast_init)
  File "/xxx/keops/pykeops/test/../../pykeops/common/keops_io/LoadKeOps.py", line 31, in __init__
    self.init_phase2()
  File "/xxx/keops/pykeops/test/../../pykeops/common/keops_io/LoadKeOps_cpp.py", line 40, in init_phase2
    mylib = importlib.import_module(
  File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  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 657, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 556, in module_from_spec
  File "<frozen importlib._bootstrap_external>", line 1166, in create_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
ImportError: /home/drg/.cache/keops2.0b1/build/pykeops_cpp_8b7bae2c36.cpython-38-x86_64-linux-gnu.so: file too short

----------------------------------------------------------------------
Ran 8 tests in 0.009s

FAILED (errors=1)
gdurif commented 2 years ago

Not able to reproduce, closing this.