From ba1d01bff39654982ddf00575af614894e12857a Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Thu, 30 Jan 2025 21:42:34 -0300 Subject: [PATCH 01/35] Require torch 0.14.0 --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 072ffae..76a480b 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -19,7 +19,7 @@ LinkingTo: torch Imports: Rcpp, - torch (>= 0.9.0), + torch (>= 0.14.0), rlang, glue, withr From 9911ebf278bdf2bd43ddfc046a588a54d21a6888 Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Thu, 30 Jan 2025 21:44:10 -0300 Subject: [PATCH 02/35] update actions --- .github/workflows/R-CMD-check.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index bb7ef34..db39bc5 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -102,7 +102,7 @@ jobs: file_glob: true tag: v${{ steps.version.outputs.version }} - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: ${{ steps.version.outputs.fname }} path: csrc/build/*.zip @@ -157,7 +157,7 @@ jobs: version=$(Rscript -e "cat(as.character(desc::desc_get_version()))") echo "::set-output name=version::$version" - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: 'torchvisionlib-${{ steps.version.outputs.version }}${{ matrix.config.artifact }}' path: build/ From bf26801c88a3c8e3b29ce1385d2384909e932c1b Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Thu, 30 Jan 2025 21:47:11 -0300 Subject: [PATCH 03/35] Bump version --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 76a480b..9ace0cd 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: torchvisionlib Title: Additional Operators for Image Models -Version: 0.5.0.9000 +Version: 0.6.0 Authors@R: c( person("Daniel", "Falbel", , "daniel@rstudio.com", role = c("aut", "cre")), person(family = "RStudio", role = c("cph")) From 8f633fd2062cba1cc5916ad6c79446eb895a3df7 Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Thu, 30 Jan 2025 21:48:32 -0300 Subject: [PATCH 04/35] Include fstream --- csrc/src/ops.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/csrc/src/ops.cpp b/csrc/src/ops.cpp index 75ad093..0215c83 100644 --- a/csrc/src/ops.cpp +++ b/csrc/src/ops.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include From 9a0c9e8c83d2b75a5277744f52dc8c678fe58516 Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Thu, 30 Jan 2025 22:56:54 -0300 Subject: [PATCH 05/35] Bump cuda --- .github/workflows/R-CMD-check.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index db39bc5..0f48ed6 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -26,8 +26,8 @@ jobs: - {runner: [self-hosted, m1], r_version: '', os: macOS} - {runner: windows-2019, r_version: release, os: windows} - {runner: ubuntu-latest, r_version: release, os: ubuntu} - - {runner: [self-hosted, linux], r_version: release, os: ubuntu, cuda: 11.7, cuda_patch: 0} - - {runner: windows-2019, r_version: release, os: windows, cuda: 11.7, cuda_patch: 0} + - {runner: [self-hosted, linux], r_version: release, os: ubuntu, cuda: 12.4, cuda_patch: 1} + - {runner: windows-2019, r_version: release, os: windows, cuda: 12.4, cuda_patch: 1} include: - config: {os: ubuntu} From 3b3514e654a3304483fe37233222d637399ff83a Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Thu, 30 Jan 2025 22:59:05 -0300 Subject: [PATCH 06/35] Use macos 13 for intel MAcOS --- .github/workflows/R-CMD-check.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 0f48ed6..f356fec 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -22,7 +22,7 @@ jobs: fail-fast: false matrix: config: - - {runner: macOS-latest, r_version: release, os: macOS} + - {runner: macOS-13, r_version: release, os: macOS} - {runner: [self-hosted, m1], r_version: '', os: macOS} - {runner: windows-2019, r_version: release, os: windows} - {runner: ubuntu-latest, r_version: release, os: ubuntu} From 63ffaaab3431f5d14fed2d1a76b12d17e6d21fe9 Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Thu, 30 Jan 2025 23:06:29 -0300 Subject: [PATCH 07/35] Bump vision version + ignore rtools 44 --- csrc/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/csrc/CMakeLists.txt b/csrc/CMakeLists.txt index 2988cc0..a0b4418 100644 --- a/csrc/CMakeLists.txt +++ b/csrc/CMakeLists.txt @@ -64,13 +64,13 @@ if(WIN32) GIT_TAG v1.6.37 DEPENDS zlib PREFIX "${CMAKE_CURRENT_BINARY_DIR}/libpng" - CMAKE_ARGS ${COMMON_CMAKE_ARGS} -DCMAKE_IGNORE_PATH=C:/rtools40/ucrt64/include -DCMAKE_IGNORE_PATH=C:/rtools43/x86_64-w64-mingw32.static.posix/include -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH};${CURRENT_BINARY_DIR}/lib + CMAKE_ARGS ${COMMON_CMAKE_ARGS} -DCMAKE_IGNORE_PATH=C:/rtools44/x86_64-w64-mingw32.static.posix/include -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH};${CURRENT_BINARY_DIR}/lib ) ExternalProject_Add(libjpeg GIT_REPOSITORY https://github.com/libjpeg-turbo/libjpeg-turbo GIT_TAG 2.1.2 PREFIX "${CMAKE_CURRENT_BINARY_DIR}/libjpeg" - CMAKE_ARGS ${COMMON_CMAKE_ARGS} -DWITH_JPEG8=0 -DWITH_JPEG7=0 -DENABLE_SHARED=0 -DWITH_TURBOJPEG=0-DCMAKE_IGNORE_PATH=C:/rtools43/x86_64-w64-mingw32.static.posix/include + CMAKE_ARGS ${COMMON_CMAKE_ARGS} -DWITH_JPEG8=0 -DWITH_JPEG7=0 -DENABLE_SHARED=0 -DWITH_TURBOJPEG=0 -DCMAKE_IGNORE_PATH=C:/rtools44/x86_64-w64-mingw32.static.posix/include ) endif() @@ -100,7 +100,7 @@ endif() message(STATUS "CMAKE_ARGS: ${TORCHVISION_CMAKE_ARGS}") ExternalProject_Add(TorchVision-project GIT_REPOSITORY https://github.com/pytorch/vision - GIT_TAG v0.15.2 + GIT_TAG v0.20.1 DEPENDS ${TORCHVISION_DEPENDS} CMAKE_CACHE_ARGS ${TORCHVISION_CMAKE_ARGS} PREFIX "${CMAKE_CURRENT_BINARY_DIR}/libtorchvision" From fef13a752f27c1ad6488a62019030f185f910678 Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Thu, 30 Jan 2025 23:08:26 -0300 Subject: [PATCH 08/35] jimver version --- .github/workflows/R-CMD-check.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index f356fec..d71d75a 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -63,7 +63,7 @@ jobs: cmake-version: '3.25.2' - if: ${{matrix.config.cuda != ''}} - uses: Jimver/cuda-toolkit@v0.2.8 + uses: Jimver/cuda-toolkit@v0.2.21 id: cuda-toolkit with: cuda: '${{matrix.config.cuda}}.${{matrix.config.cuda_patch}}' From 6e64e84dd3f6ccfcf3abc9c03f3ddb5729c7883a Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Fri, 31 Jan 2025 00:03:17 -0300 Subject: [PATCH 09/35] make cuda toolkit required --- csrc/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/csrc/CMakeLists.txt b/csrc/CMakeLists.txt index a0b4418..71d71b0 100644 --- a/csrc/CMakeLists.txt +++ b/csrc/CMakeLists.txt @@ -41,7 +41,7 @@ message(STATUS "TORCH_HOME=${TORCH_HOME}") if (DEFINED ENV{CUDA} AND NOT '$ENV{CUDA}' STREQUAL '') if (WIN32) - find_package(CUDAToolkit) + find_package(CUDAToolkit REQUIRED) endif() enable_language(CUDA) endif() @@ -85,7 +85,7 @@ set(TORCHVISION_CMAKE_ARGS -DCMAKE_PREFIX_PATH:PATH=${CMAKE_PREFIX_PATH}) list(APPEND TORCHVISION_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${TorchVision_DESTDIR}) if(WIN32) - list(APPEND TORCHVISION_CMAKE_ARGS -DCMAKE_IGNORE_PREFIX_PATH:PATH=C:/rtools43/x86_64-w64-mingw32.static.posix/) + list(APPEND TORCHVISION_CMAKE_ARGS -DCMAKE_IGNORE_PREFIX_PATH:PATH=C:/rtools44/x86_64-w64-mingw32.static.posix/) elseif(APPLE) list(APPEND TORCHVISION_CMAKE_ARGS -DCMAKE_FIND_FRAMEWORK:STRING=LAST) endif() From fcf93b6b3846935a0ba9ec3e2e982591c022761d Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Fri, 31 Jan 2025 07:21:24 -0300 Subject: [PATCH 10/35] use recent cmake --- .github/workflows/R-CMD-check.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index d71d75a..ff2898e 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -58,9 +58,9 @@ jobs: DRY_RUN=1 sh ./get-docker.sh - name: Setup cmake - uses: jwlawson/actions-setup-cmake@v1 + uses: jwlawson/actions-setup-cmake@v2 with: - cmake-version: '3.25.2' + cmake-version: 'latest' - if: ${{matrix.config.cuda != ''}} uses: Jimver/cuda-toolkit@v0.2.21 From d731ca42b10bc5ff3dcbdd2bccf696f27257ddfe Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Fri, 31 Jan 2025 08:21:57 -0300 Subject: [PATCH 11/35] check nvtx found --- csrc/CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/csrc/CMakeLists.txt b/csrc/CMakeLists.txt index 71d71b0..8b6d033 100644 --- a/csrc/CMakeLists.txt +++ b/csrc/CMakeLists.txt @@ -42,6 +42,12 @@ message(STATUS "TORCH_HOME=${TORCH_HOME}") if (DEFINED ENV{CUDA} AND NOT '$ENV{CUDA}' STREQUAL '') if (WIN32) find_package(CUDAToolkit REQUIRED) + + if(TARGET CUDA::nvtx3) + message(STATUS "Found CUDA::nvtx3") + else() + message(FATAL_ERROR "CUDA::nvtx3 target not found!") + endif() endif() enable_language(CUDA) endif() From c1dfe3d2723ae3e53930880279838da260175ede Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Fri, 31 Jan 2025 09:08:07 -0300 Subject: [PATCH 12/35] Try this out --- .github/workflows/R-CMD-check.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index ff2898e..a13173d 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -22,7 +22,7 @@ jobs: fail-fast: false matrix: config: - - {runner: macOS-13, r_version: release, os: macOS} + - {runner: macOS-13, r_version: release, os: macOS} - {runner: [self-hosted, m1], r_version: '', os: macOS} - {runner: windows-2019, r_version: release, os: windows} - {runner: ubuntu-latest, r_version: release, os: ubuntu} From d0326cd5dc354bfa5f7c6f21cb72ead4a2209aa9 Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Fri, 31 Jan 2025 10:47:42 -0300 Subject: [PATCH 13/35] Try downloading nvtx --- csrc/CMakeLists.txt | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/csrc/CMakeLists.txt b/csrc/CMakeLists.txt index 8b6d033..bf2488a 100644 --- a/csrc/CMakeLists.txt +++ b/csrc/CMakeLists.txt @@ -42,12 +42,31 @@ message(STATUS "TORCH_HOME=${TORCH_HOME}") if (DEFINED ENV{CUDA} AND NOT '$ENV{CUDA}' STREQUAL '') if (WIN32) find_package(CUDAToolkit REQUIRED) - - if(TARGET CUDA::nvtx3) - message(STATUS "Found CUDA::nvtx3") + set(NVTX_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/NVTX") + + # Check if NVTX headers already exist in the source directory + if(NOT EXISTS "${NVTX_SOURCE_DIR}/LICENSE.txt") + message(STATUS "Downloading NVTX into project source directory...") + + # Create the third_party directory if it doesn't exist + file(MAKE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/third_party") + + # Clone the NVTX repository (shallow clone to save time) + execute_process( + COMMAND git clone --depth 1 --branch main https://github.com/NVIDIA/NVTX.git + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/third_party" + RESULT_VARIABLE GIT_RESULT + ) + + # Check for errors + if(NOT GIT_RESULT EQUAL 0) + message(FATAL_ERROR "Failed to download NVTX: Git error ${GIT_RESULT}") + endif() + + message(STATUS "NVTX downloaded to: ${NVTX_SOURCE_DIR}") else() - message(FATAL_ERROR "CUDA::nvtx3 target not found!") - endif() + message(STATUS "NVTX already exists in source directory") +endif() endif() enable_language(CUDA) endif() From 73a3d7d37a96c6fb98e966dca1f713d31ee91f08 Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Fri, 31 Jan 2025 11:21:35 -0300 Subject: [PATCH 14/35] Download the correct branch --- csrc/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csrc/CMakeLists.txt b/csrc/CMakeLists.txt index bf2488a..ee8cfb3 100644 --- a/csrc/CMakeLists.txt +++ b/csrc/CMakeLists.txt @@ -53,7 +53,7 @@ if (DEFINED ENV{CUDA} AND NOT '$ENV{CUDA}' STREQUAL '') # Clone the NVTX repository (shallow clone to save time) execute_process( - COMMAND git clone --depth 1 --branch main https://github.com/NVIDIA/NVTX.git + COMMAND git clone --depth 1 --branch release-v3 https://github.com/NVIDIA/NVTX.git WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/third_party" RESULT_VARIABLE GIT_RESULT ) From c041e34e0d692ed1892fb9a9d5c98d1d761cc129 Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Fri, 31 Jan 2025 12:16:10 -0300 Subject: [PATCH 15/35] try cloning into a different directory --- csrc/CMakeLists.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/csrc/CMakeLists.txt b/csrc/CMakeLists.txt index ee8cfb3..c53d70e 100644 --- a/csrc/CMakeLists.txt +++ b/csrc/CMakeLists.txt @@ -42,19 +42,19 @@ message(STATUS "TORCH_HOME=${TORCH_HOME}") if (DEFINED ENV{CUDA} AND NOT '$ENV{CUDA}' STREQUAL '') if (WIN32) find_package(CUDAToolkit REQUIRED) - set(NVTX_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/NVTX") + set(NVTX_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/libtorchvision/src/TorchVision-project/third_party/NVTX") # Check if NVTX headers already exist in the source directory if(NOT EXISTS "${NVTX_SOURCE_DIR}/LICENSE.txt") message(STATUS "Downloading NVTX into project source directory...") # Create the third_party directory if it doesn't exist - file(MAKE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/third_party") + file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/libtorchvision/src/TorchVision-project/third_party") # Clone the NVTX repository (shallow clone to save time) execute_process( COMMAND git clone --depth 1 --branch release-v3 https://github.com/NVIDIA/NVTX.git - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/third_party" + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/libtorchvision/src/TorchVision-project/third_party" RESULT_VARIABLE GIT_RESULT ) @@ -129,6 +129,7 @@ ExternalProject_Add(TorchVision-project DEPENDS ${TORCHVISION_DEPENDS} CMAKE_CACHE_ARGS ${TORCHVISION_CMAKE_ARGS} PREFIX "${CMAKE_CURRENT_BINARY_DIR}/libtorchvision" + SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/libtorchvision/src/TorchVision-project" PATCH_COMMAND ${PATCH_CMD} ) From fecc8f903528163411ac25bd576274f5618f9e19 Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Fri, 31 Jan 2025 13:05:04 -0300 Subject: [PATCH 16/35] Try another directory --- csrc/CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/csrc/CMakeLists.txt b/csrc/CMakeLists.txt index c53d70e..feba722 100644 --- a/csrc/CMakeLists.txt +++ b/csrc/CMakeLists.txt @@ -42,19 +42,19 @@ message(STATUS "TORCH_HOME=${TORCH_HOME}") if (DEFINED ENV{CUDA} AND NOT '$ENV{CUDA}' STREQUAL '') if (WIN32) find_package(CUDAToolkit REQUIRED) - set(NVTX_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/libtorchvision/src/TorchVision-project/third_party/NVTX") + set(NVTX_SOURCE_DIR "${TORCH_HOME}/third_party/NVTX") # Check if NVTX headers already exist in the source directory - if(NOT EXISTS "${NVTX_SOURCE_DIR}/LICENSE.txt") + if(NOT EXISTS "${TORCH_HOME}/third_party/NVTX/LICENSE.txt") message(STATUS "Downloading NVTX into project source directory...") # Create the third_party directory if it doesn't exist - file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/libtorchvision/src/TorchVision-project/third_party") + file(MAKE_DIRECTORY "${TORCH_HOME}/third_party") # Clone the NVTX repository (shallow clone to save time) execute_process( COMMAND git clone --depth 1 --branch release-v3 https://github.com/NVIDIA/NVTX.git - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/libtorchvision/src/TorchVision-project/third_party" + WORKING_DIRECTORY "${TORCH_HOME}/third_party" RESULT_VARIABLE GIT_RESULT ) From 6e380ed6dacfb3f9d8f4a974d04d5b8b58535a54 Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Fri, 31 Jan 2025 13:42:38 -0300 Subject: [PATCH 17/35] Dowgrade to cuda 11.8 --- .github/workflows/R-CMD-check.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index a13173d..bd9a03e 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -26,8 +26,8 @@ jobs: - {runner: [self-hosted, m1], r_version: '', os: macOS} - {runner: windows-2019, r_version: release, os: windows} - {runner: ubuntu-latest, r_version: release, os: ubuntu} - - {runner: [self-hosted, linux], r_version: release, os: ubuntu, cuda: 12.4, cuda_patch: 1} - - {runner: windows-2019, r_version: release, os: windows, cuda: 12.4, cuda_patch: 1} + - {runner: [self-hosted, linux], r_version: release, os: ubuntu, cuda: 12.4, cuda_patch: 0} + - {runner: windows-2019, r_version: release, os: windows, cuda: 11.8, cuda_patch: 0} include: - config: {os: ubuntu} From 74cb673ee6929fd11cc39acf1ff2e5057f9c3bff Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Fri, 31 Jan 2025 13:55:38 -0300 Subject: [PATCH 18/35] Try another workaraound --- .github/workflows/R-CMD-check.yaml | 4 ++-- csrc/CMakeLists.txt | 36 +++++++++--------------------- 2 files changed, 13 insertions(+), 27 deletions(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index bd9a03e..a13173d 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -26,8 +26,8 @@ jobs: - {runner: [self-hosted, m1], r_version: '', os: macOS} - {runner: windows-2019, r_version: release, os: windows} - {runner: ubuntu-latest, r_version: release, os: ubuntu} - - {runner: [self-hosted, linux], r_version: release, os: ubuntu, cuda: 12.4, cuda_patch: 0} - - {runner: windows-2019, r_version: release, os: windows, cuda: 11.8, cuda_patch: 0} + - {runner: [self-hosted, linux], r_version: release, os: ubuntu, cuda: 12.4, cuda_patch: 1} + - {runner: windows-2019, r_version: release, os: windows, cuda: 12.4, cuda_patch: 1} include: - config: {os: ubuntu} diff --git a/csrc/CMakeLists.txt b/csrc/CMakeLists.txt index feba722..7950594 100644 --- a/csrc/CMakeLists.txt +++ b/csrc/CMakeLists.txt @@ -42,31 +42,17 @@ message(STATUS "TORCH_HOME=${TORCH_HOME}") if (DEFINED ENV{CUDA} AND NOT '$ENV{CUDA}' STREQUAL '') if (WIN32) find_package(CUDAToolkit REQUIRED) - set(NVTX_SOURCE_DIR "${TORCH_HOME}/third_party/NVTX") - - # Check if NVTX headers already exist in the source directory - if(NOT EXISTS "${TORCH_HOME}/third_party/NVTX/LICENSE.txt") - message(STATUS "Downloading NVTX into project source directory...") - - # Create the third_party directory if it doesn't exist - file(MAKE_DIRECTORY "${TORCH_HOME}/third_party") - - # Clone the NVTX repository (shallow clone to save time) - execute_process( - COMMAND git clone --depth 1 --branch release-v3 https://github.com/NVIDIA/NVTX.git - WORKING_DIRECTORY "${TORCH_HOME}/third_party" - RESULT_VARIABLE GIT_RESULT - ) - - # Check for errors - if(NOT GIT_RESULT EQUAL 0) - message(FATAL_ERROR "Failed to download NVTX: Git error ${GIT_RESULT}") - endif() - - message(STATUS "NVTX downloaded to: ${NVTX_SOURCE_DIR}") - else() - message(STATUS "NVTX already exists in source directory") -endif() + message(STATUS "PyTorch NVTX headers workaround: Yes") + # only do this if nvToolsExt is not defined and CUDA::nvtx3 exists + if(NOT TARGET CUDA::nvToolsExt AND TARGET CUDA::nvtx3) + add_library(CUDA::nvToolsExt INTERFACE IMPORTED) + # ensure that PyTorch is told to use NVTX3 headers + target_compile_definitions( + CUDA::nvToolsExt INTERFACE + TORCH_CUDA_USE_NVTX3 + ) + target_link_libraries(CUDA::nvToolsExt INTERFACE CUDA::nvtx3) + endif() endif() enable_language(CUDA) endif() From 546abc338fcde445f3bc42004d7c92ac6e33757e Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Fri, 31 Jan 2025 14:40:09 -0300 Subject: [PATCH 19/35] Try patching torchvision CmakeLists --- csrc/CMakeLists.txt | 14 +------------- csrc/patch/nvtx_workaround.diff | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 13 deletions(-) create mode 100644 csrc/patch/nvtx_workaround.diff diff --git a/csrc/CMakeLists.txt b/csrc/CMakeLists.txt index 7950594..6319bd4 100644 --- a/csrc/CMakeLists.txt +++ b/csrc/CMakeLists.txt @@ -42,17 +42,6 @@ message(STATUS "TORCH_HOME=${TORCH_HOME}") if (DEFINED ENV{CUDA} AND NOT '$ENV{CUDA}' STREQUAL '') if (WIN32) find_package(CUDAToolkit REQUIRED) - message(STATUS "PyTorch NVTX headers workaround: Yes") - # only do this if nvToolsExt is not defined and CUDA::nvtx3 exists - if(NOT TARGET CUDA::nvToolsExt AND TARGET CUDA::nvtx3) - add_library(CUDA::nvToolsExt INTERFACE IMPORTED) - # ensure that PyTorch is told to use NVTX3 headers - target_compile_definitions( - CUDA::nvToolsExt INTERFACE - TORCH_CUDA_USE_NVTX3 - ) - target_link_libraries(CUDA::nvToolsExt INTERFACE CUDA::nvtx3) - endif() endif() enable_language(CUDA) endif() @@ -103,7 +92,7 @@ endif() if (WIN32) set(TORCHVISION_DEPENDS libpng libjpeg) - set(PATCH_CMD git apply ${CMAKE_SOURCE_DIR}/patch/jpeg_types.diff || true) + set(PATCH_CMD git apply ${CMAKE_SOURCE_DIR}/patch/jpeg_types.diff ${CMAKE_SOURCE_DIR}/patch/nvtx_workaround.diff || true) else() set(TORCHVISION_DEPENDS) endif() @@ -115,7 +104,6 @@ ExternalProject_Add(TorchVision-project DEPENDS ${TORCHVISION_DEPENDS} CMAKE_CACHE_ARGS ${TORCHVISION_CMAKE_ARGS} PREFIX "${CMAKE_CURRENT_BINARY_DIR}/libtorchvision" - SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/libtorchvision/src/TorchVision-project" PATCH_COMMAND ${PATCH_CMD} ) diff --git a/csrc/patch/nvtx_workaround.diff b/csrc/patch/nvtx_workaround.diff new file mode 100644 index 0000000..f4a573a --- /dev/null +++ b/csrc/patch/nvtx_workaround.diff @@ -0,0 +1,26 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f243055990..04b06e8335 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -15,6 +15,21 @@ option(WITH_WEBP "Enable features requiring LibWEBP." OFF) + option(WITH_AVIF "Enable features requiring LibAVIF." OFF) + + if(WITH_CUDA) ++ if (WIN32) ++ find_package(CUDAToolkit REQUIRED) ++ message(STATUS "PyTorch NVTX headers workaround: Yes") ++ # only do this if nvToolsExt is not defined and CUDA::nvtx3 exists ++ if(NOT TARGET CUDA::nvToolsExt AND TARGET CUDA::nvtx3) ++ add_library(CUDA::nvToolsExt INTERFACE IMPORTED) ++ # ensure that PyTorch is told to use NVTX3 headers ++ target_compile_definitions( ++ CUDA::nvToolsExt INTERFACE ++ TORCH_CUDA_USE_NVTX3 ++ ) ++ target_link_libraries(CUDA::nvToolsExt INTERFACE CUDA::nvtx3) ++ endif() ++ endif() ++ + enable_language(CUDA) + add_definitions(-D__CUDA_NO_HALF_OPERATORS__) + add_definitions(-DWITH_CUDA) From cf94b67ddc0b1aff68dab33c8006afeb362b849f Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Fri, 31 Jan 2025 15:28:46 -0300 Subject: [PATCH 20/35] Make sure with cuda is specified. --- csrc/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/csrc/CMakeLists.txt b/csrc/CMakeLists.txt index 6319bd4..9f8aa64 100644 --- a/csrc/CMakeLists.txt +++ b/csrc/CMakeLists.txt @@ -86,6 +86,10 @@ list(APPEND TORCHVISION_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${TorchVision_DES if(WIN32) list(APPEND TORCHVISION_CMAKE_ARGS -DCMAKE_IGNORE_PREFIX_PATH:PATH=C:/rtools44/x86_64-w64-mingw32.static.posix/) + if (DEFINED ENV{CUDA} AND NOT '$ENV{CUDA}' STREQUAL '') + list(APPEND TORCHVISION_CMAKE_ARGS -DWITH_CUDA=ON) + endif() + elseif(APPLE) list(APPEND TORCHVISION_CMAKE_ARGS -DCMAKE_FIND_FRAMEWORK:STRING=LAST) endif() From 6a1ed98edfac3d9046b6b68c90208d053578c0cf Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Fri, 31 Jan 2025 16:29:24 -0300 Subject: [PATCH 21/35] try downloading the the project source dir --- csrc/CMakeLists.txt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/csrc/CMakeLists.txt b/csrc/CMakeLists.txt index 9f8aa64..22f5015 100644 --- a/csrc/CMakeLists.txt +++ b/csrc/CMakeLists.txt @@ -42,6 +42,25 @@ message(STATUS "TORCH_HOME=${TORCH_HOME}") if (DEFINED ENV{CUDA} AND NOT '$ENV{CUDA}' STREQUAL '') if (WIN32) find_package(CUDAToolkit REQUIRED) + set(NVTX_SOURCE_DIR "${CMAKE_SOURCE_DIR}/third_party/") + + # Check if NVTX headers already exist in the source directory + if(NOT EXISTS "${NVTX_SOURCE_DIR}/NVTX/LICENSE.txt") + message(STATUS "Downloading NVTX into project source directory...") + + # Create the third_party directory if it doesn't exist + file(MAKE_DIRECTORY "${NVTX_SOURCE_DIR}") + + # Clone the NVTX repository (shallow clone to save time) + execute_process( + COMMAND git clone --depth 1 --branch release-v3 https://github.com/NVIDIA/NVTX.git + WORKING_DIRECTORY "${NVTX_SOURCE_DIR}" + RESULT_VARIABLE GIT_RESULT + ) + + message(STATUS "Git clone result: ${GIT_RESULT}. Into ${NVTX_SOURCE_DIR}") + + endif() endif() enable_language(CUDA) endif() From 395b406ecf737328bfbf217fdacf96b47c3a8c34 Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Sat, 1 Feb 2025 09:29:00 -0300 Subject: [PATCH 22/35] Maybe apply only this patch --- csrc/CMakeLists.txt | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/csrc/CMakeLists.txt b/csrc/CMakeLists.txt index 22f5015..e203783 100644 --- a/csrc/CMakeLists.txt +++ b/csrc/CMakeLists.txt @@ -61,6 +61,27 @@ if (DEFINED ENV{CUDA} AND NOT '$ENV{CUDA}' STREQUAL '') message(STATUS "Git clone result: ${GIT_RESULT}. Into ${NVTX_SOURCE_DIR}") endif() + + set(NVTX_SOURCE_DIR "${CMAKE_SOURCE_DIR}/third_party/") + + # Check if NVTX headers already exist in the source directory + if(NOT EXISTS "${NVTX_SOURCE_DIR}/NVTX/LICENSE.txt") + message(STATUS "Downloading NVTX into project source directory...") + + # Create the third_party directory if it doesn't exist + file(MAKE_DIRECTORY "${NVTX_SOURCE_DIR}") + + # Clone the NVTX repository (shallow clone to save time) + execute_process( + COMMAND git clone --depth 1 --branch release-v3 https://github.com/NVIDIA/NVTX.git + WORKING_DIRECTORY "${NVTX_SOURCE_DIR}" + RESULT_VARIABLE GIT_RESULT + ) + + message(STATUS "Git clone result: ${GIT_RESULT}. Into ${NVTX_SOURCE_DIR}") + + endif() + endif() enable_language(CUDA) endif() @@ -115,7 +136,7 @@ endif() if (WIN32) set(TORCHVISION_DEPENDS libpng libjpeg) - set(PATCH_CMD git apply ${CMAKE_SOURCE_DIR}/patch/jpeg_types.diff ${CMAKE_SOURCE_DIR}/patch/nvtx_workaround.diff || true) + set(PATCH_CMD git apply ${CMAKE_SOURCE_DIR}/patch/nvtx_workaround.diff || true) else() set(TORCHVISION_DEPENDS) endif() From c48498ab36c822d3bfcfb1560b9d9c4cca882ebc Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Tue, 4 Feb 2025 11:17:19 -0600 Subject: [PATCH 23/35] Go back to CUDA 11.8 --- .github/workflows/R-CMD-check.yaml | 4 +-- csrc/CMakeLists.txt | 41 ------------------------------ 2 files changed, 2 insertions(+), 43 deletions(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index a13173d..cb1ca2e 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -26,8 +26,8 @@ jobs: - {runner: [self-hosted, m1], r_version: '', os: macOS} - {runner: windows-2019, r_version: release, os: windows} - {runner: ubuntu-latest, r_version: release, os: ubuntu} - - {runner: [self-hosted, linux], r_version: release, os: ubuntu, cuda: 12.4, cuda_patch: 1} - - {runner: windows-2019, r_version: release, os: windows, cuda: 12.4, cuda_patch: 1} + - {runner: [self-hosted, linux], r_version: release, os: ubuntu, cuda: 11.8, cuda_patch: 0} + - {runner: windows-2019, r_version: release, os: windows, cuda: 11.8, cuda_patch: 0} include: - config: {os: ubuntu} diff --git a/csrc/CMakeLists.txt b/csrc/CMakeLists.txt index e203783..d01e6d8 100644 --- a/csrc/CMakeLists.txt +++ b/csrc/CMakeLists.txt @@ -42,46 +42,6 @@ message(STATUS "TORCH_HOME=${TORCH_HOME}") if (DEFINED ENV{CUDA} AND NOT '$ENV{CUDA}' STREQUAL '') if (WIN32) find_package(CUDAToolkit REQUIRED) - set(NVTX_SOURCE_DIR "${CMAKE_SOURCE_DIR}/third_party/") - - # Check if NVTX headers already exist in the source directory - if(NOT EXISTS "${NVTX_SOURCE_DIR}/NVTX/LICENSE.txt") - message(STATUS "Downloading NVTX into project source directory...") - - # Create the third_party directory if it doesn't exist - file(MAKE_DIRECTORY "${NVTX_SOURCE_DIR}") - - # Clone the NVTX repository (shallow clone to save time) - execute_process( - COMMAND git clone --depth 1 --branch release-v3 https://github.com/NVIDIA/NVTX.git - WORKING_DIRECTORY "${NVTX_SOURCE_DIR}" - RESULT_VARIABLE GIT_RESULT - ) - - message(STATUS "Git clone result: ${GIT_RESULT}. Into ${NVTX_SOURCE_DIR}") - - endif() - - set(NVTX_SOURCE_DIR "${CMAKE_SOURCE_DIR}/third_party/") - - # Check if NVTX headers already exist in the source directory - if(NOT EXISTS "${NVTX_SOURCE_DIR}/NVTX/LICENSE.txt") - message(STATUS "Downloading NVTX into project source directory...") - - # Create the third_party directory if it doesn't exist - file(MAKE_DIRECTORY "${NVTX_SOURCE_DIR}") - - # Clone the NVTX repository (shallow clone to save time) - execute_process( - COMMAND git clone --depth 1 --branch release-v3 https://github.com/NVIDIA/NVTX.git - WORKING_DIRECTORY "${NVTX_SOURCE_DIR}" - RESULT_VARIABLE GIT_RESULT - ) - - message(STATUS "Git clone result: ${GIT_RESULT}. Into ${NVTX_SOURCE_DIR}") - - endif() - endif() enable_language(CUDA) endif() @@ -136,7 +96,6 @@ endif() if (WIN32) set(TORCHVISION_DEPENDS libpng libjpeg) - set(PATCH_CMD git apply ${CMAKE_SOURCE_DIR}/patch/nvtx_workaround.diff || true) else() set(TORCHVISION_DEPENDS) endif() From e75c69c844787edce3231b8ebd4aab202ee608e7 Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Wed, 5 Feb 2025 09:17:57 -0600 Subject: [PATCH 24/35] Apply patch to fix at::kuint16 not found. --- csrc/CMakeLists.txt | 2 ++ csrc/patch/kuint16.patch | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 csrc/patch/kuint16.patch diff --git a/csrc/CMakeLists.txt b/csrc/CMakeLists.txt index d01e6d8..f0feeb4 100644 --- a/csrc/CMakeLists.txt +++ b/csrc/CMakeLists.txt @@ -100,6 +100,8 @@ else() set(TORCHVISION_DEPENDS) endif() +set(PATCH_CMD "git apply ${CMAKE_CURRENT_SOURCE_DIR}/patch/kuint16.patch || true") + message(STATUS "CMAKE_ARGS: ${TORCHVISION_CMAKE_ARGS}") ExternalProject_Add(TorchVision-project GIT_REPOSITORY https://github.com/pytorch/vision diff --git a/csrc/patch/kuint16.patch b/csrc/patch/kuint16.patch new file mode 100644 index 0000000..355440d --- /dev/null +++ b/csrc/patch/kuint16.patch @@ -0,0 +1,21 @@ +diff --git a/torchvision/csrc/io/image/cpu/decode_png.cpp b/torchvision/csrc/io/image/cpu/decode_png.cpp +index ede14c1e94..f8a642de82 100644 +--- a/torchvision/csrc/io/image/cpu/decode_png.cpp ++++ b/torchvision/csrc/io/image/cpu/decode_png.cpp +@@ -9,6 +9,7 @@ namespace image { + using namespace exif_private; + + #if !PNG_FOUND ++ + torch::Tensor decode_png( + const torch::Tensor& data, + ImageReadMode mode, +@@ -197,7 +198,7 @@ torch::Tensor decode_png( + auto is_16_bits = bit_depth == 16; + auto tensor = torch::empty( + {int64_t(height), int64_t(width), channels}, +- is_16_bits ? at::kUInt16 : torch::kU8); ++ is_16_bits ? torch::kUInt16 : torch::kU8); + if (is_little_endian()) { + png_set_swap(png_ptr); + } From f69cce7e6244b1ed3bc880e90ff39da68fb05a02 Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Wed, 5 Feb 2025 09:46:21 -0600 Subject: [PATCH 25/35] use CMAKE_SOURCE_DIR --- csrc/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csrc/CMakeLists.txt b/csrc/CMakeLists.txt index f0feeb4..bd15578 100644 --- a/csrc/CMakeLists.txt +++ b/csrc/CMakeLists.txt @@ -100,7 +100,7 @@ else() set(TORCHVISION_DEPENDS) endif() -set(PATCH_CMD "git apply ${CMAKE_CURRENT_SOURCE_DIR}/patch/kuint16.patch || true") +set(PATCH_CMD "git apply ${CMAKE_SOURCE_DIR}/patch/kuint16.patch || true") message(STATUS "CMAKE_ARGS: ${TORCHVISION_CMAKE_ARGS}") ExternalProject_Add(TorchVision-project From 0efb739c4a93da913dcaf6137330094df1d5a964 Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Wed, 5 Feb 2025 10:11:55 -0600 Subject: [PATCH 26/35] try again --- csrc/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csrc/CMakeLists.txt b/csrc/CMakeLists.txt index bd15578..f6435cd 100644 --- a/csrc/CMakeLists.txt +++ b/csrc/CMakeLists.txt @@ -100,7 +100,7 @@ else() set(TORCHVISION_DEPENDS) endif() -set(PATCH_CMD "git apply ${CMAKE_SOURCE_DIR}/patch/kuint16.patch || true") +set(PATCH_CMD git apply ${CMAKE_SOURCE_DIR}/patch/kuint16.patch || true) message(STATUS "CMAKE_ARGS: ${TORCHVISION_CMAKE_ARGS}") ExternalProject_Add(TorchVision-project From bdb85e85128404ccc4fd84128901987481dd4795 Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Wed, 5 Feb 2025 10:42:57 -0600 Subject: [PATCH 27/35] use torck kU6 --- csrc/patch/kuint16.patch | 2 +- csrc/src/ops.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/csrc/patch/kuint16.patch b/csrc/patch/kuint16.patch index 355440d..7d59767 100644 --- a/csrc/patch/kuint16.patch +++ b/csrc/patch/kuint16.patch @@ -15,7 +15,7 @@ index ede14c1e94..f8a642de82 100644 auto tensor = torch::empty( {int64_t(height), int64_t(width), channels}, - is_16_bits ? at::kUInt16 : torch::kU8); -+ is_16_bits ? torch::kUInt16 : torch::kU8); ++ is_16_bits ? torch::kU6 : torch::kU8); if (is_little_endian()) { png_set_swap(png_ptr); } diff --git a/csrc/src/ops.cpp b/csrc/src/ops.cpp index 0215c83..46439fa 100644 --- a/csrc/src/ops.cpp +++ b/csrc/src/ops.cpp @@ -138,4 +138,4 @@ torch::Tensor vision_read_jpeg(std::string fpath) { torch::Tensor vision_read_jpeg_float(std::string fpath) { auto ten = vision_read_jpeg(fpath); return ten.to(torch::kFloat32).div_(255); -} \ No newline at end of file +} From b7cdfa47d29f934929b5661614d8e5207692400f Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Wed, 5 Feb 2025 10:50:09 -0600 Subject: [PATCH 28/35] try importing types --- csrc/patch/kuint16.patch | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/csrc/patch/kuint16.patch b/csrc/patch/kuint16.patch index 7d59767..71d29db 100644 --- a/csrc/patch/kuint16.patch +++ b/csrc/patch/kuint16.patch @@ -1,21 +1,12 @@ diff --git a/torchvision/csrc/io/image/cpu/decode_png.cpp b/torchvision/csrc/io/image/cpu/decode_png.cpp -index ede14c1e94..f8a642de82 100644 +index ede14c1e94..9a63d9f995 100644 --- a/torchvision/csrc/io/image/cpu/decode_png.cpp +++ b/torchvision/csrc/io/image/cpu/decode_png.cpp -@@ -9,6 +9,7 @@ namespace image { - using namespace exif_private; +@@ -2,6 +2,7 @@ + #include "../common.h" + #include "common_png.h" + #include "exif.h" ++#include - #if !PNG_FOUND -+ - torch::Tensor decode_png( - const torch::Tensor& data, - ImageReadMode mode, -@@ -197,7 +198,7 @@ torch::Tensor decode_png( - auto is_16_bits = bit_depth == 16; - auto tensor = torch::empty( - {int64_t(height), int64_t(width), channels}, -- is_16_bits ? at::kUInt16 : torch::kU8); -+ is_16_bits ? torch::kU6 : torch::kU8); - if (is_little_endian()) { - png_set_swap(png_ptr); - } + namespace vision { + namespace image { From 9c4eb184d013335a1a92d84f45cb3694f09ffa14 Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Wed, 5 Feb 2025 10:51:57 -0600 Subject: [PATCH 29/35] Use a different patch --- csrc/patch/kuint16.patch | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/csrc/patch/kuint16.patch b/csrc/patch/kuint16.patch index 71d29db..09301ff 100644 --- a/csrc/patch/kuint16.patch +++ b/csrc/patch/kuint16.patch @@ -1,5 +1,5 @@ diff --git a/torchvision/csrc/io/image/cpu/decode_png.cpp b/torchvision/csrc/io/image/cpu/decode_png.cpp -index ede14c1e94..9a63d9f995 100644 +index ede14c1e94..65079a26f1 100644 --- a/torchvision/csrc/io/image/cpu/decode_png.cpp +++ b/torchvision/csrc/io/image/cpu/decode_png.cpp @@ -2,6 +2,7 @@ @@ -10,3 +10,12 @@ index ede14c1e94..9a63d9f995 100644 namespace vision { namespace image { +@@ -197,7 +198,7 @@ torch::Tensor decode_png( + auto is_16_bits = bit_depth == 16; + auto tensor = torch::empty( + {int64_t(height), int64_t(width), channels}, +- is_16_bits ? at::kUInt16 : torch::kU8); ++ is_16_bits ? torch::kU16 : torch::kU8); + if (is_little_endian()) { + png_set_swap(png_ptr); + } From e6e1cced5176e77cf1b8e7f7b9f62987546c07cf Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Wed, 5 Feb 2025 11:48:40 -0600 Subject: [PATCH 30/35] try c10 version --- csrc/patch/kuint16.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csrc/patch/kuint16.patch b/csrc/patch/kuint16.patch index 09301ff..f6d7d59 100644 --- a/csrc/patch/kuint16.patch +++ b/csrc/patch/kuint16.patch @@ -15,7 +15,7 @@ index ede14c1e94..65079a26f1 100644 auto tensor = torch::empty( {int64_t(height), int64_t(width), channels}, - is_16_bits ? at::kUInt16 : torch::kU8); -+ is_16_bits ? torch::kU16 : torch::kU8); ++ is_16_bits ? c10::kUInt16 : torch::kU8); if (is_little_endian()) { png_set_swap(png_ptr); } From 71571bef3ec340537e72a2a13fdee5134610d7bc Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Wed, 5 Feb 2025 12:11:35 -0600 Subject: [PATCH 31/35] Remove usage of kuint16 on linux/cuda --- csrc/CMakeLists.txt | 4 ++-- csrc/patch/kuint16.patch | 21 ++++++++++----------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/csrc/CMakeLists.txt b/csrc/CMakeLists.txt index f6435cd..c705c75 100644 --- a/csrc/CMakeLists.txt +++ b/csrc/CMakeLists.txt @@ -42,6 +42,8 @@ message(STATUS "TORCH_HOME=${TORCH_HOME}") if (DEFINED ENV{CUDA} AND NOT '$ENV{CUDA}' STREQUAL '') if (WIN32) find_package(CUDAToolkit REQUIRED) + else() + set(PATCH_CMD git apply ${CMAKE_SOURCE_DIR}/patch/kuint16.patch || true) endif() enable_language(CUDA) endif() @@ -100,8 +102,6 @@ else() set(TORCHVISION_DEPENDS) endif() -set(PATCH_CMD git apply ${CMAKE_SOURCE_DIR}/patch/kuint16.patch || true) - message(STATUS "CMAKE_ARGS: ${TORCHVISION_CMAKE_ARGS}") ExternalProject_Add(TorchVision-project GIT_REPOSITORY https://github.com/pytorch/vision diff --git a/csrc/patch/kuint16.patch b/csrc/patch/kuint16.patch index f6d7d59..883f2bc 100644 --- a/csrc/patch/kuint16.patch +++ b/csrc/patch/kuint16.patch @@ -1,21 +1,20 @@ diff --git a/torchvision/csrc/io/image/cpu/decode_png.cpp b/torchvision/csrc/io/image/cpu/decode_png.cpp -index ede14c1e94..65079a26f1 100644 +index ede14c1e94..a42bd06c35 100644 --- a/torchvision/csrc/io/image/cpu/decode_png.cpp +++ b/torchvision/csrc/io/image/cpu/decode_png.cpp -@@ -2,6 +2,7 @@ - #include "../common.h" - #include "common_png.h" - #include "exif.h" -+#include +@@ -195,9 +195,13 @@ torch::Tensor decode_png( - namespace vision { - namespace image { -@@ -197,7 +198,7 @@ torch::Tensor decode_png( + auto num_pixels_per_row = width * channels; auto is_16_bits = bit_depth == 16; ++ ++ if (is_16_bits) { ++ throw std::runtime_error("16-bit PNG images are not supported."); ++ } ++ auto tensor = torch::empty( - {int64_t(height), int64_t(width), channels}, +- {int64_t(height), int64_t(width), channels}, - is_16_bits ? at::kUInt16 : torch::kU8); -+ is_16_bits ? c10::kUInt16 : torch::kU8); ++ {int64_t(height), int64_t(width), channels}, torch::kU8); if (is_little_endian()) { png_set_swap(png_ptr); } From b0ca02d4cca88e3d3cd7b122aa0c501b7a2fa09d Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Wed, 5 Feb 2025 12:56:04 -0600 Subject: [PATCH 32/35] Improve patch --- csrc/patch/kuint16.patch | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/csrc/patch/kuint16.patch b/csrc/patch/kuint16.patch index 883f2bc..0e67e73 100644 --- a/csrc/patch/kuint16.patch +++ b/csrc/patch/kuint16.patch @@ -18,3 +18,19 @@ index ede14c1e94..a42bd06c35 100644 if (is_little_endian()) { png_set_swap(png_ptr); } +diff --git a/torchvision/csrc/ops/nms.cpp b/torchvision/csrc/ops/nms.cpp +index 5ecf8812f1..2cbbe93873 100644 +--- a/torchvision/csrc/ops/nms.cpp ++++ b/torchvision/csrc/ops/nms.cpp +@@ -18,11 +18,5 @@ at::Tensor nms( + return op.call(dets, scores, iou_threshold); + } + +-TORCH_LIBRARY_FRAGMENT(torchvision, m) { +- m.set_python_module("torchvision._meta_registrations"); +- m.def(TORCH_SELECTIVE_SCHEMA( +- "torchvision::nms(Tensor dets, Tensor scores, float iou_threshold) -> Tensor")); +-} +- + } // namespace ops + } // namespace vision From f632209f0d818f849e263c7c7960b6ba315be1fc Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Wed, 5 Feb 2025 13:22:03 -0600 Subject: [PATCH 33/35] Add some more packages to install list --- .github/workflows/R-CMD-check.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index cb1ca2e..8a6c909 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -76,8 +76,8 @@ jobs: - name: Install dependencies run: | - Rscript -e "install.packages(c('remotes', 'desc', 'rcmdcheck'))" - Rscript -e "remotes::install_github('mlverse/torchexport')" + Rscript -e "install.packages(c('remotes', 'desc', 'rcmdcheck', 'hms'))" + Rscript -e "remotes::install_github('mlverse/torchexport', force = TRUE)" - run: | cd csrc From 53c04bbe4eb7b391a65817e9168c28a7148ecb04 Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Wed, 5 Feb 2025 14:41:24 -0600 Subject: [PATCH 34/35] Use cpu macOS --- .github/workflows/R-CMD-check.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 8a6c909..4a10296 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -117,7 +117,7 @@ jobs: fail-fast: false matrix: config: - - {os: mac, runner: macOS-latest, r: 'release', artifact: '+cpu+x86_64-Darwin.zip'} + - {os: mac, runner: macOS-13, r: 'release', artifact: '+cpu+x86_64-Darwin.zip'} - {os: m1mac, runner: ['self-hosted', 'm1'], artifact: '+cpu+arm64-Darwin.zip'} - {os: windows, runner: windows-latest, r: 'release', rtools: '42', artifact: '+cpu-win64.zip'} - {os: windows, runner: windows-latest, r: '3.6', artifact: '+cpu-win64.zip'} From 4a75d9d9330d883ecc336d348f23f00a25aab6bd Mon Sep 17 00:00:00 2001 From: Daniel Falbel Date: Wed, 5 Feb 2025 16:36:24 -0600 Subject: [PATCH 35/35] Drop R 3.6 --- .github/workflows/R-CMD-check.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 4a10296..7cb81d7 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -120,7 +120,6 @@ jobs: - {os: mac, runner: macOS-13, r: 'release', artifact: '+cpu+x86_64-Darwin.zip'} - {os: m1mac, runner: ['self-hosted', 'm1'], artifact: '+cpu+arm64-Darwin.zip'} - {os: windows, runner: windows-latest, r: 'release', rtools: '42', artifact: '+cpu-win64.zip'} - - {os: windows, runner: windows-latest, r: '3.6', artifact: '+cpu-win64.zip'} - {os: ubuntu, runner: ubuntu-20.04, r: 'release', artifact: '+cpu-Linux.zip'} env: