CERN / TIGRE

TIGRE: Tomographic Iterative GPU-based Reconstruction Toolbox
BSD 3-Clause "New" or "Revised" License
535 stars 180 forks source link

Tigre could not compile under CUDA 12.0 #427

Closed yliu88au closed 1 year ago

yliu88au commented 1 year ago

Expected Behavior

Actual Behavior

Two issues: (1) Need remove support for earlier GPU type "compute_37" to run setup.py (2) Error compiling some *.cu code, for example ../Common/CUDA/ray_interpolated_projection_parallel.cu(70): error: texture is not a template

Looks like CUDA 12.0 does not support texture reference any more. See https://forums.developer.nvidia.com/t/cuda-12-0-still-support-for-texture-reference-support-for-pascal-architecture-warp-synchronous-programming/237284

Code to reproduce the problem (If applicable)

python setup.py install

Specifications

python version: 3.9.13

AnderBiguri commented 1 year ago

Indeed, I am aware of this, but thanks for opening an issue.

Both are solvable issues.

1- setup.py (and the equivalent Compile.m) both already do modify the compilation flags given the CUDA selected. These functions need to be simply updated to account for CUDA 12. 2-Most TIGRE already uses texture objects, but some of the older code (parallel beam) still uses texture references. Modifying this should hopefully not be a big deal.

I will try to find time to do these, but can't promise to fix them anytime "soon".

AnderBiguri commented 1 year ago

I have now updated master to have CUDA 12 support, but I don't have the capability to test it.

I someone does, please let me know.

AnderBiguri commented 1 year ago

tested and working.

yliu88au commented 1 year ago

Hi Ander,

Sorry for my late reply and thanks for fixing the issue. I have test it on my laptop, and it works. I noticed the following warnings when compiling:

############################
# Package would be ignored #
############################
Python recognizes 'tigre.utilities.cuda_interface' as an importable package,
but it is not listed in the `packages` configuration of setuptools.

'tigre.utilities.cuda_interface' has been automatically added to the distribution only
because it may contain data files, but this behavior is likely to change
in future versions of setuptools (and therefore is considered deprecated).

Please make sure that 'tigre.utilities.cuda_interface' is included as a package by using
the `packages` configuration field or the proper discovery methods
(for example by using `find_namespace_packages(...)`/`find_namespace:`
instead of `find_packages(...)`/`find:`).

You can read more about "package discovery" and "data files" on setuptools

documentation page.

Otherwise, all looks OK.

Regards, Yi

From: Biguri @.> Sent: Friday, 5 May 2023 1:12 AM To: CERN/TIGRE @.> Cc: Liu, Yi (Mineral Resources, Lucas Heights) @.>; Author @.> Subject: Re: [CERN/TIGRE] Tigre could not compile under CUDA 12.0 (Issue #427)

tested and working.

— Reply to this email directly, view it on GitHubhttps://github.com/CERN/TIGRE/issues/427#issuecomment-1534956456, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AR6OBUJSCHYH2NHH3XNROJDXEPBNFANCNFSM6AAAAAAUNVPLTE. You are receiving this because you authored the thread.Message ID: @.***>

AnderBiguri commented 1 year ago

Fantastic!

I think that warning is OK, as those files are just for compiling, so they don't need to be a package. Thanks for double testing, I appreciate it!