NVIDIA / cuda-python

CUDA Python Low-level Bindings
https://nvidia.github.io/cuda-python/
Other
809 stars 63 forks source link

Error with pyparsing when no CUDA is found #45

Closed bdice closed 1 year ago

bdice commented 1 year ago

https://github.com/NVIDIA/cuda-python/blob/6782a648bc728cdf55e280eb20631748b8c15627/setup.py#L104

This line assumes that pyparsing has been imported, but it is not imported in the setup.py script.

This appears to be a transitive dependency of pyclibrary, and cuda-python's setup.py expects version 2.4.7. However, the latest version of pyclibrary has a much looser pinning on pyparsing>=2.3.1,<4: https://github.com/MatthieuDartiailh/pyclibrary/blob/1d4dbfc207afee3fd80b72e94c60d47d8263d49a/setup.py#L48

As of this writing, the latest pyparsing is 3.0.9. https://github.com/pyparsing/pyparsing/releases/tag/pyparsing_3.0.9

I'm not sure how to reconcile this. Is the error message out of date? Does a dependency on pyparsing need to be added? Is pyparsing 3.0.9 allowable or not?

Here is an example traceback I encountered while attempting to package cuda-python for CUDA 12 on conda-forge (work in progress: https://github.com/conda-forge/cuda-python-feedstock/pull/33).

Processing $SRC_DIR
  Added file://$SRC_DIR to build tracker '/tmp/pip-build-tracker-8n7yddr7'
  Running setup.py (path:$SRC_DIR/setup.py) egg_info for package from file://$SRC_DIR
  Created temporary directory: /tmp/pip-pip-egg-info-3mflzan5
  Preparing metadata (setup.py): started
  Running command python setup.py egg_info
  Parsing headers in "/home/conda/feedstock_root/build_artifacts/cuda-python_1682019216274/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/targets/x86_64-linux/include" (Caching False)
  Missing header cuda.h
  Missing header cudaProfiler.h
  Missing header cudaEGL.h
  Missing header cudaGL.h
  Missing header cudaVDPAU.h
  Parsing driver headers
  Missing header driver_types.h
  Missing header vector_types.h
  Missing header cuda_runtime.h
  Missing header surface_types.h
  Missing header texture_types.h
  Missing header library_types.h
  Missing header cuda_runtime_api.h
  Missing header device_types.h
  Missing header driver_functions.h
  Missing header cuda_profiler_api.h
  Missing header cuda_egl_interop.h
  Missing header cuda_gl_interop.h
  Missing header cuda_vdpau_interop.h
  Parsing runtime headers
  Missing header nvrtc.h
  Parsing nvrtc headers
  Traceback (most recent call last):
    File "<string>", line 2, in <module>
    File "<pip-setuptools-caller>", line 34, in <module>
    File "/home/conda/feedstock_root/build_artifacts/cuda-python_1682019216274/work/setup.py", line 103, in <module>
      if pyparsing.__version__ != '2.4.7':
  NameError: name 'pyparsing' is not defined
  error: subprocess-exited-with-error

  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> See above for output.

CI link (this link will eventually expire, so the relevant portion is copied above): https://dev.azure.com/conda-forge/feedstock-builds/_build/results?buildId=693718&view=logs&j=d0d954b5-f111-5dc4-4d76-03b6c9d0cf7e&t=841356e0-85bb-57d8-dbbc-852e683d1642

vzhurba01 commented 1 year ago

Resolved in CUDA Python 12.2.0. Closing.

bdice commented 1 year ago

Thanks @vzhurba01!