Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BUG: Fix Python wheel name of Cuda versions #601

Merged
merged 3 commits into from
Jul 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build-test-cxx-cuda.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on: [push,pull_request]

env:
itk-git-tag: "v5.4.0"
itk-module-deps: "CudaCommon@c7c766a6b944124da21131c6eb689ee75e61bd6e"
itk-module-deps: "CudaCommon@v1.1.0"

jobs:
build-test-cxx:
Expand Down
16 changes: 11 additions & 5 deletions .github/workflows/build-test-package-python-cuda.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ on: [push,pull_request]

env:
itk-wheel-tag: 'v5.4.0'
itk-python-package-tag: 'v5.4.0'
itk-python-package-org: 'InsightSoftwareConsortium'
itk-module-deps: "RTKConsortium/ITKCudaCommon@c7c766a6b944124da21131c6eb689ee75e61bd6e"
itk-python-package-tag: '766eaae6ba783d92ded30e8379de8bef981bd041'
itk-python-package-org: 'SimonRit'
itk-module-deps: "RTKConsortium/ITKCudaCommon@v1.1.0"

jobs:
build-linux-cuda-python-packages:
Expand Down Expand Up @@ -39,7 +39,8 @@ jobs:
export CUDA_VERSION=${{ matrix.cuda-version }}
export CUDA_VERSION_MAJOR=`(echo ${CUDA_VERSION} | cut -b1-2)`
export CUDA_VERSION_MINOR=`(echo ${CUDA_VERSION} | cut -b3-)`
CMAKE_OPTIONS="-DCUDACOMMON_CUDA_VERSION=${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}"
CMAKE_OPTIONS="-DRTK_CUDA_VERSION=${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}"
CMAKE_OPTIONS="${CMAKE_OPTIONS} -DRTK_BUILD_APPLICATIONS:BOOL=OFF"
CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCUDAToolkit_ROOT=/usr/lib64/cuda${CUDA_VERSION}"
CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_CUDA_COMPILER=/usr/lib64/cuda${CUDA_VERSION}/bin/nvcc"

Expand Down Expand Up @@ -68,6 +69,8 @@ jobs:
LIBCUBLAS=`basename /home/srit/Downloads/cuda${CUDA_VERSION}/targets/x86_64-linux/lib/libcublas.so.${CUDA_VERSION_MAJOR}*`
LIBCUBLASLT=`basename /home/srit/Downloads/cuda${CUDA_VERSION}/targets/x86_64-linux/lib/libcublasLt.so.${CUDA_VERSION_MAJOR}*`
LIBCUFFT=`basename /home/srit/Downloads/cuda${CUDA_VERSION}/targets/x86_64-linux/lib/libcufft.so.$((${CUDA_VERSION_MAJOR}-1))*`
sed -i "s/dependencies = \[/dependencies = [ \"itk-cudacommon-cuda${CUDA_VERSION} == 1.1.*\",/g" pyproject.toml
sed -i "s/itk-rtk/itk-rtk-cuda${CUDA_VERSION}/g" pyproject.toml

./dockcross-manylinux-download-cache-and-build-module-wheels.sh "${CMAKE_OPTIONS[@]}" -x "libcuda.so.1;${LIBCUDART};${LIBCUBLAS};${LIBCUBLASLT};${LIBCUFFT}" cp3${{ matrix.python3-minor-version }}
mv *zst ../..
Expand Down Expand Up @@ -147,12 +150,15 @@ jobs:
$CUDA_VERSION_MAJOR=$CUDA_VERSION.substring(0,2)
$CUDA_VERSION_MINOR=$CUDA_VERSION.substring(2,$CUDA_VERSION.Length-2)
$env:CUDA_PATH = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}"
$env:CUDACXX = "$env:CUDA_PATH\bin\nvcc.exe"
$env:Path = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}\bin;" + $env:Path
$LIBCUDART= (Get-Item "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}\bin\cudart64*dll" ).Name
$LIBCUBLAS= (Get-Item "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}\bin\cublas64*dll" ).Name
$LIBCUBLASLT= (Get-Item "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}\bin\cublasLt64*dll" ).Name
$LIBCUFFT= (Get-Item "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}\bin\cufft64*dll" ).Name
./windows-download-cache-and-build-module-wheels.ps1 "${{ matrix.python3-minor-version }}" -setup_options "--lib-paths ""C:/Program\ Files/NVIDIA\ GPU\ Computing\ Toolkit/CUDA/v${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}/bin"" --exclude-libs ""nvcuda.dll;concrt140.dll;${LIBCUDART};${LIBCUBLAS};${LIBCUBLASLT};${LIBCUFFT}""" -cmake_options "${{ env.cmake-options }}"
((Get-Content -Path pyproject.toml) -replace "itk-rtk","itk-rtk-cuda${CUDA_VERSION}") | Set-Content -Path pyproject.toml
((Get-Content -Path pyproject.toml) -replace "dependencies = \[","dependencies = [""itk-cudacommon-cuda${CUDA_VERSION} == 1.1.*"",") | Set-Content -Path pyproject.toml
./windows-download-cache-and-build-module-wheels.ps1 "${{ matrix.python3-minor-version }}" -setup_options "--lib-paths ""C:/Program\ Files/NVIDIA\ GPU\ Computing\ Toolkit/CUDA/v${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}/bin"" --exclude-libs ""nvcuda.dll;concrt140.dll;${LIBCUDART};${LIBCUBLAS};${LIBCUBLASLT};${LIBCUFFT}""" -cmake_options """-DRTK_CUDA_VERSION=${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}"" ""-DRTK_BUILD_APPLICATIONS:BOOL=OFF"""

mkdir -p '${{ github.workspace }}\dist'
cp 'dist\*.whl' '${{ github.workspace }}\dist'
Expand Down
9 changes: 4 additions & 5 deletions .github/workflows/build-test-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,13 @@ on: [push,pull_request]

jobs:
cxx-build-workflow:
uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-cxx.yml@f675eac324601214287717c06dd8f77224689c76
uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-cxx.yml@v5.4.0

python-build-workflow:
uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-package-python.yml@f675eac324601214287717c06dd8f77224689c76
uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-package-python.yml@v5.4.0
with:
cmake-options: '-DRTK_BUILD_APPLICATIONS:BOOL=OFF'
itk-wheel-tag: 'v5.4.0'
itk-python-package-tag: 'v5.4.0'
itk-module-deps: "RTKConsortium/ITKCudaCommon@c7c766a6b944124da21131c6eb689ee75e61bd6e"
itk-python-package-org: 'SimonRit'
itk-python-package-tag: '766eaae6ba783d92ded30e8379de8bef981bd041'
secrets:
pypi_password: ${{ secrets.pypi_password }}
10 changes: 0 additions & 10 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -280,16 +280,6 @@ option(RTK_BUILD_APPLICATIONS "Build RTK applications" ON)
if(RTK_BUILD_APPLICATIONS)
add_subdirectory(applications)
endif()
if(ITK_WRAP_PYTHON)
# Install Python application
install(FILES applications/rtkconjugategradient/rtkconjugategradient.py
applications/rtkelektasynergygeometry/rtkelektasynergygeometry.py
applications/rtkorageometry/rtkorageometry.py
applications/rtksimulatedgeometry/rtksimulatedgeometry.py
applications/rtkvarianobigeometry/rtkvarianobigeometry.py
DESTINATION ${RTK_INSTALL_LIB_DIR}
COMPONENT PythonWheelRuntimeLibraries)
endif()

# --------------------------------------------------------
# Setup KWStyle from ITK
Expand Down
5 changes: 4 additions & 1 deletion applications/rtkconjugategradient/rtkconjugategradient.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ def GetCudaImageFromImage(img):
else:
return img

if __name__ == '__main__':
def main():
# argument parsing
parser = argparse.ArgumentParser(description=
'Reconstructs a 3D volume from a sequence of projections with a conjugate gradient technique',
Expand Down Expand Up @@ -131,3 +131,6 @@ def GetCudaImageFromImage(img):
writer.SetFileName(args_info.output)
writer.SetInput(conjugategradient.GetOutput())
writer.Update()

if __name__ == '__main__':
main()
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import itk
from itk import RTK as rtk

if __name__ == '__main__':
def main():
# Argument parsing
parser = argparse.ArgumentParser(description=
"Creates an RTK geometry file from an Elekta Synergy acquisition.")
Expand All @@ -27,3 +27,6 @@
xmlWriter.SetFilename(args.output)
xmlWriter.SetObject(reader.GetGeometry())
xmlWriter.WriteFile()

if __name__ == '__main__':
main()
5 changes: 4 additions & 1 deletion applications/rtkorageometry/rtkorageometry.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import itk
from itk import RTK as rtk

if __name__ == '__main__':
def main():
# Argument parsing
parser = argparse.ArgumentParser(description=
"Creates an RTK geometry file from a Varian OBI acquisition.")
Expand Down Expand Up @@ -37,3 +37,6 @@
xmlWriter.SetFilename(args.output)
xmlWriter.SetObject(reader.GetGeometry())
xmlWriter.WriteFile()

if __name__ == '__main__':
main()
5 changes: 4 additions & 1 deletion applications/rtksimulatedgeometry/rtksimulatedgeometry.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import sys
from itk import RTK as rtk

if __name__ == '__main__':
def main():
# Argument parsing
parser = argparse.ArgumentParser(description=
"Creates an RTK geometry file from simulated/regular trajectory. See https://www.openrtk.org/Doxygen/DocGeo3D.html for more information.")
Expand Down Expand Up @@ -51,3 +51,6 @@
writer.SetFilename(args.output)
writer.SetObject(geometry)
writer.WriteFile()

if __name__ == '__main__':
main()
5 changes: 4 additions & 1 deletion applications/rtkvarianobigeometry/rtkvarianobigeometry.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import itk
from itk import RTK as rtk

if __name__ == '__main__':
def main():
# Argument parsing
parser = argparse.ArgumentParser(description=
"Creates an RTK geometry file from a Varian OBI acquisition.")
Expand Down Expand Up @@ -34,3 +34,6 @@
xmlWriter.SetFilename(args.output)
xmlWriter.SetObject(reader.GetGeometry())
xmlWriter.WriteFile()

if __name__ == '__main__':
main()
127 changes: 127 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
[build-system]
requires = ["scikit-build-core"]
build-backend = "scikit_build_core.build"

[project]
name = "itk-rtk"
version = "2.5.0"
description = "The Reconstruction Toolkit (RTK) for fast circular cone-beam CT reconstruction"
readme = "README.md"
license = {file = "LICENSE.TXT"}
authors = [
{ name = "RTK Consortium", email = "simon.rit@creatis.insa-lyon.fr" },
]
keywords = [
"itk",
"rtk",
]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Intended Audience :: Education",
"Intended Audience :: Healthcare Industry",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: Apache Software License",
"Operating System :: Android",
"Operating System :: MacOS",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX",
"Operating System :: Unix",
"Programming Language :: C++",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Topic :: Scientific/Engineering",
"Topic :: Scientific/Engineering :: Information Analysis",
"Topic :: Scientific/Engineering :: Medical Science Apps.",
"Topic :: Software Development :: Libraries",
]
requires-python = ">=3.8"
dependencies = [
"itk == 5.4.*",
]

[project.scripts]
rtkconjugategradient = "itk.rtkconjugategradient:main"
rtkelektasynergygeometry = "itk.rtkelektasynergygeometry:main"
rtkorageometry = "itk.rtkorageometry:main"
rtksimulatedgeometry = "itk.rtksimulatedgeometry:main"
rtkvarianobigeometry = "itk.rtkvarianobigeometry:main"

[project.urls]
Download = "https://github.com/RTKConsortium/RTK"
Homepage = "https://www.openrtk.org"

[tool.scikit-build]
# The versions of CMake to allow. If CMake is not present on the system or does
# not pass this specifier, it will be downloaded via PyPI if possible. An empty
# string will disable this check.
cmake.version = ">=3.16.3"

# A list of args to pass to CMake when configuring the project. Setting this in
# config or envvar will override toml. See also ``cmake.define``.
cmake.args = []

# A table of defines to pass to CMake when configuring the project. Additive.
cmake.define = {}

# Verbose printout when building.
cmake.verbose = true

# The build type to use when building the project. Valid options are: "Debug",
# "Release", "RelWithDebInfo", "MinSizeRel", "", etc.
cmake.build-type = "Release"

# The source directory to use when building the project. Currently only affects
# the native builder (not the setuptools plugin).
cmake.source-dir = "."

# The versions of Ninja to allow. If Ninja is not present on the system or does
# not pass this specifier, it will be downloaded via PyPI if possible. An empty
# string will disable this check.
ninja.version = ">=1.11"

# If CMake is not present on the system or is older required, it will be
# downloaded via PyPI if possible. An empty string will disable this check.
ninja.make-fallback = true

# The logging level to display, "DEBUG", "INFO", "WARNING", and "ERROR" are
# possible options.
logging.level = "INFO"

# Files to include in the SDist even if they are skipped by default. Supports
# gitignore syntax.
sdist.include = []

# Files to exclude from the SDist even if they are included by default. Supports
# gitignore syntax.
sdist.exclude = []

# A list of license files to include in the wheel. Supports glob patterns.
wheel.license-files = ["LICEN[CS]E*",]

# Target the platlib or the purelib. If not set, the default is to target the
# platlib if wheel.cmake is true, and the purelib otherwise.
wheel.platlib = "false"

# If CMake is less than this value, backport a copy of FindPython. Set to 0
# disable this, or the empty string.
backport.find-python = "3.26.1"

# Select the editable mode to use. Can be "redirect" (default) or "inplace".
editable.mode = "redirect"

# Rebuild the project when the package is imported. The build-directory must be
# set.
editable.rebuild = false

# The components to install. If empty, all default components are installed.
install.components = []

# Whether to strip the binaries. True for scikit-build-core 0.5+.
install.strip = true

# If set, this will provide a method for backward compatibility.
minimum-version = "0.8.2"

# The build directory. Defaults to a temporary directory, but can be set.
build-dir = "build/{wheel_tag}"
65 changes: 0 additions & 65 deletions setup.py

This file was deleted.

8 changes: 7 additions & 1 deletion wrapping/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,10 @@ wrap_itk_python_bindings_install(/itk "RTK"
${RTK_SOURCE_DIR}/applications/rtk3Doutputimage_group.py
${RTK_SOURCE_DIR}/applications/rtkinputprojections_group.py
${RTK_SOURCE_DIR}/applications/rtkiterations_group.py
${RTK_SOURCE_DIR}/applications/rtkprojectors_group.py)
${RTK_SOURCE_DIR}/applications/rtkprojectors_group.py
${RTK_SOURCE_DIR}/applications/rtkconjugategradient/rtkconjugategradient.py
${RTK_SOURCE_DIR}/applications/rtkelektasynergygeometry/rtkelektasynergygeometry.py
${RTK_SOURCE_DIR}/applications/rtkorageometry/rtkorageometry.py
${RTK_SOURCE_DIR}/applications/rtksimulatedgeometry/rtksimulatedgeometry.py
${RTK_SOURCE_DIR}/applications/rtkvarianobigeometry/rtkvarianobigeometry.py
)
Loading