From f0ffe617654ab87f475f03fddafe7f41714d8e71 Mon Sep 17 00:00:00 2001 From: "yan.yan" Date: Mon, 9 Dec 2024 10:47:35 +0800 Subject: [PATCH] add new prebuilts for 3.13 and cu126 --- .github/workflows/build.yaml | 20 +++++------ .github/workflows/stale.yaml | 30 ---------------- CHANGELOG.md | 4 +++ pyproject.toml | 4 +-- setup.py | 12 +++---- spconv/core_cc/csrc/hash/core.pyi | 2 +- spconv/core_cc/csrc/sparse/all/__init__.pyi | 2 +- spconv/core_cc/csrc/sparse/all/ops1d.pyi | 2 +- spconv/core_cc/csrc/sparse/all/ops2d.pyi | 2 +- spconv/core_cc/csrc/sparse/all/ops3d.pyi | 2 +- spconv/core_cc/csrc/sparse/all/ops4d.pyi | 2 +- spconv/core_cc/csrc/sparse/all/ops_cpu1d.pyi | 2 +- spconv/core_cc/csrc/sparse/all/ops_cpu2d.pyi | 2 +- spconv/core_cc/csrc/sparse/all/ops_cpu3d.pyi | 2 +- spconv/core_cc/csrc/sparse/all/ops_cpu4d.pyi | 2 +- spconv/core_cc/csrc/sparse/alloc.pyi | 2 +- .../core_cc/csrc/sparse/convops/__init__.pyi | 2 +- .../core_cc/csrc/sparse/convops/convops.pyi | 2 +- .../core_cc/csrc/sparse/convops/gemmops.pyi | 2 +- spconv/core_cc/csrc/sparse/convops/spops.pyi | 2 +- spconv/core_cc/csrc/sparse/inference.pyi | 2 +- spconv/core_cc/csrc/utils/boxops.pyi | 2 +- spconv/core_cc/csrc/utils/pcc.pyi | 8 ++--- spconv/core_cc/cumm/common.pyi | 2 +- spconv/core_cc/cumm/conv/main.pyi | 2 +- spconv/core_cc/cumm/gemm/main.pyi | 2 +- spconv/csrc/utils/pcc.py | 3 +- spconv/pytorch/functional.py | 6 +++- tools/build-wheels-dev.sh | 14 ++------ tools/build-wheels.sh | 12 ++----- tools/install_windows_cuda.ps1 | 35 ++++++------------- tools/linux_test_build.sh | 1 + version.txt | 2 +- 33 files changed, 71 insertions(+), 120 deletions(-) delete mode 100644 .github/workflows/stale.yaml create mode 100644 tools/linux_test_build.sh diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 333cfcc..88932a8 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -15,8 +15,8 @@ jobs: runs-on: windows-2019 strategy: matrix: - python-version: ['3.7', '3.8', '3.9', '3.10', '3.11'] - cuda-version: ['10.2', '11.3', '11.4', '11.6', '11.7', '11.8', '12.0'] + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] + cuda-version: ['11.4', '11.8', '12.1', '12.4', '12.6'] steps: - uses: actions/checkout@master - uses: dorny/paths-filter@v2 @@ -41,7 +41,7 @@ jobs: (github.event_name == 'push' && (startsWith(github.ref, 'refs/tags')) ) || ( (steps.changes.outputs.needbuild == 'true') && - (env.PYTHON_VERSION == '3.10') + (env.PYTHON_VERSION == '3.12') ) ) shell: powershell @@ -60,7 +60,7 @@ jobs: (github.event_name == 'push' && (startsWith(github.ref, 'refs/tags')) ) || ( (steps.changes.outputs.needbuild == 'true') && - (env.PYTHON_VERSION == '3.10') + (env.PYTHON_VERSION == '3.12') ) ) shell: powershell @@ -89,7 +89,7 @@ jobs: (github.event_name == 'push' && (startsWith(github.ref, 'refs/tags')) ) || ( (steps.changes.outputs.needbuild == 'true') && - (env.PYTHON_VERSION == '3.10') + (env.PYTHON_VERSION == '3.12') ) ) run: | @@ -115,8 +115,8 @@ jobs: runs-on: ubuntu-20.04 strategy: matrix: - python-version: ['3.7', '3.8', '3.9', '3.10', '3.11'] # this version is only used for upload. - cuda-version: ['102', '113', '114', '116', '117', '118', '120', ''] + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] # this version is only used for upload. + cuda-version: ['114', '118', '121', '124', '126', ''] steps: - uses: actions/checkout@master @@ -160,7 +160,7 @@ jobs: (github.event_name == 'push' && (startsWith(github.ref, 'refs/tags')) ) || ( (steps.changes.outputs.needbuild == 'true') && - (env.PYTHON_VERSION == '3.10') + (env.PYTHON_VERSION == '3.12') ) ) run: | @@ -174,7 +174,7 @@ jobs: env: CUDA_VERSION: ${{ matrix.cuda-version }} PYTHON_VERSION: ${{ matrix.python-version }} - DOCKER_IMAGE: scrin/manylinux2014-cuda:cu120-devel-1.0.0 + DOCKER_IMAGE: scrin/manylinux2014-cuda:cu126-devel-1.0.0 PLAT: manylinux2014_x86_64 BOOST_VERSION: boost_1_77_0 if: | @@ -182,7 +182,7 @@ jobs: (github.event_name == 'push' && (startsWith(github.ref, 'refs/tags')) ) || ( (steps.changes.outputs.needbuild == 'true') && - (env.PYTHON_VERSION == '3.10') + (env.PYTHON_VERSION == '3.12') ) ) run: | diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml deleted file mode 100644 index 58a354c..0000000 --- a/.github/workflows/stale.yaml +++ /dev/null @@ -1,30 +0,0 @@ -name: 'Close stale issues and PRs' - -on: - schedule: - - cron: '30 1 1 1 *' - workflow_dispatch: - inputs: - logLevel: - description: 'Log level' - required: true - default: 'warning' - tags: - description: 'trigger issue autoclose manually' - -permissions: - issues: write - pull-requests: write - -jobs: - stale: - runs-on: ubuntu-latest - steps: - - uses: actions/stale@v4 - with: - stale-issue-message: '' - stale-pr-message: '' - operations-per-run: 30 - days-before-close: 0 - days-before-stale: 60 - diff --git a/CHANGELOG.md b/CHANGELOG.md index e064dee..e0c3448 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,8 @@ # Changelog +## [2.3.7] - 2024-12-08 +### Changed +- add python 3.13 and cuda 12.1/12.4/12.6 prebuilts, drop python 3.7/3.8 prebuilts, change manylinux glibc from 2_17 to 2_28 if cuda >= 12.4, which requires recent OS such as ubuntu 18.10+. + ## [2.3.6] - 2023-04-19 ### Fixed - Fix a CI bug that cpu cumm and spconv use different gcc compiler, must be same. diff --git a/pyproject.toml b/pyproject.toml index ac7160d..ca1af4e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["setuptools>=41.0", "wheel", "pccm>=0.4.0", "cumm>=0.4.8"] +requires = ["setuptools>=41.0", "wheel", "pccm>=0.4.16", "cumm>=0.7.5"] # requires = ["setuptools>=41.0", "wheel", "pccm>=0.4.0", "cumm @ file:///io/dist/cumm_cu120-0.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"] -# requires = ["setuptools>=41.0", "wheel", "pccm>=0.4.0", "cumm @ file:///io/dist/cumm_cu117-0.4.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"] +# requires = ["setuptools>=41.0", "wheel", "pccm>=0.4.0", "cumm-cu126 @ file:///io/dist/cumm_cu126-0.7.3-cp313-cp313-manylinux_2_28_x86_64.whl"] build-backend = "setuptools.build_meta" diff --git a/setup.py b/setup.py index 2bed731..e758c62 100644 --- a/setup.py +++ b/setup.py @@ -39,9 +39,9 @@ cuda_ver_str = cuda_ver.replace(".", "") # 10.2 to 102 RELEASE_NAME += "-cu{}".format(cuda_ver_str) - deps = ["cumm-cu{}>=0.4.5, <0.5.0".format(cuda_ver_str)] + deps = ["cumm-cu{}>=0.7.5, <0.8.0".format(cuda_ver_str)] else: - deps = ["cumm>=0.4.5, <0.5.0"] + deps = ["cumm>=0.7.5, <0.8.0"] @@ -49,11 +49,11 @@ URL = 'https://github.com/traveller59/spconv' EMAIL = 'yanyan.sub@outlook.com' AUTHOR = 'Yan Yan' -REQUIRES_PYTHON = '>=3.7' +REQUIRES_PYTHON = '>=3.9' VERSION = None # What packages are required for this module to be executed? -REQUIRED = ["pccm>=0.4.0", "ccimport>=0.4.0", "pybind11>=2.6.0", "fire", "numpy", *deps] +REQUIRED = ["pccm>=0.4.16", "ccimport>=0.4.4", "pybind11>=2.6.0", "fire", "numpy", *deps] # What packages are optional? EXTRAS = { @@ -249,11 +249,11 @@ def run(self): 'License :: OSI Approved :: Apache Software License', 'Programming Language :: Python', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', + 'Programming Language :: Python :: 3.13', 'Programming Language :: Python :: Implementation :: CPython', ], # $ setup.py publish support. diff --git a/spconv/core_cc/csrc/hash/core.pyi b/spconv/core_cc/csrc/hash/core.pyi index c105085..1953b57 100644 --- a/spconv/core_cc/csrc/hash/core.pyi +++ b/spconv/core_cc/csrc/hash/core.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum from cumm.tensorview import Tensor class HashTable: key_itemsize: int diff --git a/spconv/core_cc/csrc/sparse/all/__init__.pyi b/spconv/core_cc/csrc/sparse/all/__init__.pyi index b3987a5..ab971e9 100644 --- a/spconv/core_cc/csrc/sparse/all/__init__.pyi +++ b/spconv/core_cc/csrc/sparse/all/__init__.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum from cumm.tensorview import Tensor from cumm.tensorview import CUDAKernelTimer class ThrustCustomAllocatorV2: diff --git a/spconv/core_cc/csrc/sparse/all/ops1d.pyi b/spconv/core_cc/csrc/sparse/all/ops1d.pyi index 7d9535a..7650871 100644 --- a/spconv/core_cc/csrc/sparse/all/ops1d.pyi +++ b/spconv/core_cc/csrc/sparse/all/ops1d.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum from cumm.tensorview import Tensor class Point2Voxel: hashdata: Tensor diff --git a/spconv/core_cc/csrc/sparse/all/ops2d.pyi b/spconv/core_cc/csrc/sparse/all/ops2d.pyi index 7d9535a..7650871 100644 --- a/spconv/core_cc/csrc/sparse/all/ops2d.pyi +++ b/spconv/core_cc/csrc/sparse/all/ops2d.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum from cumm.tensorview import Tensor class Point2Voxel: hashdata: Tensor diff --git a/spconv/core_cc/csrc/sparse/all/ops3d.pyi b/spconv/core_cc/csrc/sparse/all/ops3d.pyi index 7d9535a..7650871 100644 --- a/spconv/core_cc/csrc/sparse/all/ops3d.pyi +++ b/spconv/core_cc/csrc/sparse/all/ops3d.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum from cumm.tensorview import Tensor class Point2Voxel: hashdata: Tensor diff --git a/spconv/core_cc/csrc/sparse/all/ops4d.pyi b/spconv/core_cc/csrc/sparse/all/ops4d.pyi index 7d9535a..7650871 100644 --- a/spconv/core_cc/csrc/sparse/all/ops4d.pyi +++ b/spconv/core_cc/csrc/sparse/all/ops4d.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum from cumm.tensorview import Tensor class Point2Voxel: hashdata: Tensor diff --git a/spconv/core_cc/csrc/sparse/all/ops_cpu1d.pyi b/spconv/core_cc/csrc/sparse/all/ops_cpu1d.pyi index 2c57e2e..8db657f 100644 --- a/spconv/core_cc/csrc/sparse/all/ops_cpu1d.pyi +++ b/spconv/core_cc/csrc/sparse/all/ops_cpu1d.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum from cumm.tensorview import Tensor class Point2VoxelCPU: densehashdata: Tensor diff --git a/spconv/core_cc/csrc/sparse/all/ops_cpu2d.pyi b/spconv/core_cc/csrc/sparse/all/ops_cpu2d.pyi index 2c57e2e..8db657f 100644 --- a/spconv/core_cc/csrc/sparse/all/ops_cpu2d.pyi +++ b/spconv/core_cc/csrc/sparse/all/ops_cpu2d.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum from cumm.tensorview import Tensor class Point2VoxelCPU: densehashdata: Tensor diff --git a/spconv/core_cc/csrc/sparse/all/ops_cpu3d.pyi b/spconv/core_cc/csrc/sparse/all/ops_cpu3d.pyi index 2c57e2e..8db657f 100644 --- a/spconv/core_cc/csrc/sparse/all/ops_cpu3d.pyi +++ b/spconv/core_cc/csrc/sparse/all/ops_cpu3d.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum from cumm.tensorview import Tensor class Point2VoxelCPU: densehashdata: Tensor diff --git a/spconv/core_cc/csrc/sparse/all/ops_cpu4d.pyi b/spconv/core_cc/csrc/sparse/all/ops_cpu4d.pyi index 2c57e2e..8db657f 100644 --- a/spconv/core_cc/csrc/sparse/all/ops_cpu4d.pyi +++ b/spconv/core_cc/csrc/sparse/all/ops_cpu4d.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum from cumm.tensorview import Tensor class Point2VoxelCPU: densehashdata: Tensor diff --git a/spconv/core_cc/csrc/sparse/alloc.pyi b/spconv/core_cc/csrc/sparse/alloc.pyi index 5b84d72..9fe5840 100644 --- a/spconv/core_cc/csrc/sparse/alloc.pyi +++ b/spconv/core_cc/csrc/sparse/alloc.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum from cumm.tensorview import Tensor class ExternalAllocator: def zeros(self, name: str, shape: List[int], dtype: int, device: int, stream: int = 0, is_temp_memory: bool = False, scale: float = 1.0) -> Tensor: diff --git a/spconv/core_cc/csrc/sparse/convops/__init__.pyi b/spconv/core_cc/csrc/sparse/convops/__init__.pyi index 9f9a7df..a6ea570 100644 --- a/spconv/core_cc/csrc/sparse/convops/__init__.pyi +++ b/spconv/core_cc/csrc/sparse/convops/__init__.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum from cumm.tensorview.gemm import GemmAlgoDesp from cumm.tensorview.gemm import ConvAlgoDesp from cumm.tensorview import Tensor diff --git a/spconv/core_cc/csrc/sparse/convops/convops.pyi b/spconv/core_cc/csrc/sparse/convops/convops.pyi index 2233598..518178d 100644 --- a/spconv/core_cc/csrc/sparse/convops/convops.pyi +++ b/spconv/core_cc/csrc/sparse/convops/convops.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum from cumm.tensorview.gemm import ConvAlgoDesp from cumm.tensorview import Tensor from cumm.tensorview.gemm import NVRTCParams diff --git a/spconv/core_cc/csrc/sparse/convops/gemmops.pyi b/spconv/core_cc/csrc/sparse/convops/gemmops.pyi index c7c5b4b..1923b12 100644 --- a/spconv/core_cc/csrc/sparse/convops/gemmops.pyi +++ b/spconv/core_cc/csrc/sparse/convops/gemmops.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum from cumm.tensorview.gemm import GemmAlgoDesp from cumm.tensorview import Tensor from cumm.tensorview.gemm import NVRTCParams diff --git a/spconv/core_cc/csrc/sparse/convops/spops.pyi b/spconv/core_cc/csrc/sparse/convops/spops.pyi index d311a1b..c0100d1 100644 --- a/spconv/core_cc/csrc/sparse/convops/spops.pyi +++ b/spconv/core_cc/csrc/sparse/convops/spops.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum from cumm.tensorview import Tensor from cumm.tensorview.gemm import Activation from cumm.tensorview import CUDAKernelTimer diff --git a/spconv/core_cc/csrc/sparse/inference.pyi b/spconv/core_cc/csrc/sparse/inference.pyi index c231b00..9c22d3b 100644 --- a/spconv/core_cc/csrc/sparse/inference.pyi +++ b/spconv/core_cc/csrc/sparse/inference.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum from cumm.tensorview import Tensor from cumm.tensorview.gemm import Activation class InferenceOps: diff --git a/spconv/core_cc/csrc/utils/boxops.pyi b/spconv/core_cc/csrc/utils/boxops.pyi index 23c4758..693c170 100644 --- a/spconv/core_cc/csrc/utils/boxops.pyi +++ b/spconv/core_cc/csrc/utils/boxops.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum from cumm.tensorview import Tensor class BoxOps: @staticmethod diff --git a/spconv/core_cc/csrc/utils/pcc.pyi b/spconv/core_cc/csrc/utils/pcc.pyi index c7eac41..ed51d4b 100644 --- a/spconv/core_cc/csrc/utils/pcc.pyi +++ b/spconv/core_cc/csrc/utils/pcc.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum from cumm.tensorview import Tensor class PointCloudCompress: @staticmethod @@ -43,8 +43,8 @@ class PointCloudCompress: data: """ ... - class EncodeType: - XYZ_8 = EnumClassValue(0) # type: EnumClassValue - XYZI_8 = EnumClassValue(1) # type: EnumClassValue + class EncodeType(enum.Enum): + XYZ_8 = 0 + XYZI_8 = 1 @staticmethod def __members__() -> Dict[str, EnumClassValue]: ... diff --git a/spconv/core_cc/cumm/common.pyi b/spconv/core_cc/cumm/common.pyi index 4045225..42df547 100644 --- a/spconv/core_cc/cumm/common.pyi +++ b/spconv/core_cc/cumm/common.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum class CompileInfo: @staticmethod def get_compiled_cuda_version() -> Tuple[int, int]: ... diff --git a/spconv/core_cc/cumm/conv/main.pyi b/spconv/core_cc/cumm/conv/main.pyi index 905c1e1..97d38c1 100644 --- a/spconv/core_cc/cumm/conv/main.pyi +++ b/spconv/core_cc/cumm/conv/main.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum from cumm.tensorview.gemm import ConvParams class ConvMainUnitTest: @staticmethod diff --git a/spconv/core_cc/cumm/gemm/main.pyi b/spconv/core_cc/cumm/gemm/main.pyi index d0f4c6d..87ed488 100644 --- a/spconv/core_cc/cumm/gemm/main.pyi +++ b/spconv/core_cc/cumm/gemm/main.pyi @@ -1,5 +1,5 @@ from typing import overload, Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union -from pccm.stubs import EnumValue, EnumClassValue +from pccm.stubs import EnumValue, EnumClassValue, enum from cumm.tensorview.gemm import GemmAlgoDesp from cumm.tensorview.gemm import GemmParams class GemmMainUnitTest: diff --git a/spconv/csrc/utils/pcc.py b/spconv/csrc/utils/pcc.py index a95080f..3644c7d 100644 --- a/spconv/csrc/utils/pcc.py +++ b/spconv/csrc/utils/pcc.py @@ -95,7 +95,7 @@ def encode_with_order(self): enc[3] = uint8_t(inten); }} auto pos_uint = pos_int + hash_t::direct_hash_offset(); - uint64_t scalar = hash_t::encode(pos_int[0], pos_int[1], pos_int[2]); + uint64_t scalar = hash_t::encode(pos_uint[0], pos_uint[1], pos_uint[2]); auto iter = hash.find(scalar); if (iter == hash.end()){{ auto pos_offset = pos_int.cast() * vsize; @@ -116,6 +116,7 @@ def encode_with_order(self): }} }} points_data += point_stride; + intensity_data += inten_stride; }} res = tv::empty({{final_size}}, tv::uint8, -1); diff --git a/spconv/pytorch/functional.py b/spconv/pytorch/functional.py index ad20d81..ba5e12a 100644 --- a/spconv/pytorch/functional.py +++ b/spconv/pytorch/functional.py @@ -41,8 +41,12 @@ def identity_decorator(func: _T) -> _T: return func +if PYTORCH_VERSION >= [2, 5, 0]: + import torch.amp as amp + _TORCH_CUSTOM_FWD = amp.custom_fwd(cast_inputs=torch.float16, device_type="cuda") + _TORCH_CUSTOM_BWD = amp.custom_bwd(device_type="cuda") -if PYTORCH_VERSION >= [1, 6, 0]: +elif PYTORCH_VERSION >= [1, 6, 0]: import torch.cuda.amp as amp _TORCH_CUSTOM_FWD = amp.custom_fwd(cast_inputs=torch.float16) _TORCH_CUSTOM_BWD = amp.custom_bwd diff --git a/tools/build-wheels-dev.sh b/tools/build-wheels-dev.sh index 6917095..a125993 100755 --- a/tools/build-wheels-dev.sh +++ b/tools/build-wheels-dev.sh @@ -27,24 +27,16 @@ function repair_wheel { gcc -v export SPCONV_DISABLE_JIT="1" export CUMM_CUDA_ARCH_LIST="8.6" -# export SPCONV_PYTHON_LIST="3.7;3.8;3.9;3.10" +export SPCONV_PYTHON_LIST="3.13" # Compile wheels, we only support 3.6-3.10. # "/opt/python/cp36-cp36m/bin/pip" wheel /io/ --no-deps -w /io/wheelhouse_tmp for PYVER in ${SPCONV_PYTHON_LIST//;/ } do PYVER2=`echo "$PYVER" | sed 's/\.//'` - PYVER_CP="cp$PYVER2-cp$PYVER2" - if [ "$PYVER2" = "36" ]; then - PYVER_CP="cp$PYVER2-cp${PYVER2}m" - fi - if [ "$PYVER2" = "37" ]; then - PYVER_CP="cp$PYVER2-cp${PYVER2}m" - fi - if [[ $PYVER2 == *"311"* ]]; then - PYVER_CP="cp311-cp311" - fi + PYVER_T=`echo "$PYVER2" | sed 's/t//'` + PYVER_CP="cp$PYVER_T-cp$PYVER2" "/opt/python/$PYVER_CP/bin/pip" wheel /io/ -v --no-deps -w /io/wheelhouse_tmp done diff --git a/tools/build-wheels.sh b/tools/build-wheels.sh index dad61bd..debebbc 100755 --- a/tools/build-wheels.sh +++ b/tools/build-wheels.sh @@ -34,17 +34,9 @@ export CUMM_CUDA_ARCH_LIST="all" for PYVER in ${SPCONV_PYTHON_LIST//;/ } do PYVER2=`echo "$PYVER" | sed 's/\.//'` - PYVER_CP="cp$PYVER2-cp$PYVER2" - if [ "$PYVER2" = "36" ]; then - PYVER_CP="cp$PYVER2-cp${PYVER2}m" - fi - if [ "$PYVER2" = "37" ]; then - PYVER_CP="cp$PYVER2-cp${PYVER2}m" - fi - if [[ $PYVER2 == *"311"* ]]; then - PYVER_CP="cp311-cp311" - fi + PYVER_T=`echo "$PYVER2" | sed 's/\t//'` + PYVER_CP="cp$PYVER_T-cp$PYVER2" "/opt/python/$PYVER_CP/bin/pip" wheel /io/ -v --no-deps -w /io/wheelhouse_tmp done diff --git a/tools/install_windows_cuda.ps1 b/tools/install_windows_cuda.ps1 index c11336a..d67a482 100644 --- a/tools/install_windows_cuda.ps1 +++ b/tools/install_windows_cuda.ps1 @@ -13,7 +13,13 @@ $CUDA_KNOWN_URLS = @{ "11.6" = "https://developer.download.nvidia.com/compute/cuda/11.6.2/network_installers/cuda_11.6.2_windows_network.exe"; "11.7" = "https://developer.download.nvidia.com/compute/cuda/11.7.1/network_installers/cuda_11.7.1_windows_network.exe"; "11.8" = "https://developer.download.nvidia.com/compute/cuda/11.8.0/network_installers/cuda_11.8.0_windows_network.exe"; - "12.0" = "https://developer.download.nvidia.com/compute/cuda/12.0.0/network_installers/cuda_12.0.0_windows_network.exe"; + "12.0" = "https://developer.download.nvidia.com/compute/cuda/12.0.1/network_installers/cuda_12.0.1_windows_network.exe"; + "12.1" = "https://developer.download.nvidia.com/compute/cuda/12.1.1/network_installers/cuda_12.1.1_windows_network.exe"; + "12.2" = "https://developer.download.nvidia.com/compute/cuda/12.2.2/network_installers/cuda_12.2.2_windows_network.exe"; + "12.3" = "https://developer.download.nvidia.com/compute/cuda/12.3.2/network_installers/cuda_12.3.2_windows_network.exe"; + "12.4" = "https://developer.download.nvidia.com/compute/cuda/12.4.1/network_installers/cuda_12.4.1_windows_network.exe"; + "12.5" = "https://developer.download.nvidia.com/compute/cuda/12.5.1/network_installers/cuda_12.5.1_windows_network.exe"; + "12.6" = "https://developer.download.nvidia.com/compute/cuda/12.6.1/network_installers/cuda_12.6.1_windows_network.exe"; } # cuda_runtime.h is in nvcc <= 10.2, but cudart >= 11.0 @@ -34,46 +40,28 @@ $CUDA_KNOWN_URLS = @{ $CUDA_VERSION_FULL = $env:cuda # Make sure CUDA_VERSION_FULL is set and valid, otherwise error. - -if (($CUDA_VERSION_FULL -eq "10.2") -or ($CUDA_VERSION_FULL -eq "11.0") -or ($CUDA_VERSION_FULL -eq "11.1") -or ($CUDA_VERSION_FULL -eq "11.2")){ +if (($CUDA_VERSION_FULL -eq "10.2") -or ($CUDA_VERSION_FULL -eq "11.0") -or ($CUDA_VERSION_FULL -eq "11.1") -or ($CUDA_VERSION_FULL -eq "11.2") -or ($CUDA_VERSION_FULL -eq "11.3")){ $CUDA_PACKAGES_IN = @( "nvcc"; "visual_studio_integration"; - "nvrtc_dev"; - "cudart"; "curand_dev"; - # before 11.3, thrust are included by default and no explicit package exists - ) -} elseif ($CUDA_VERSION_FULL -eq "11.3"){ - $CUDA_PACKAGES_IN = @( - "nvcc"; - "visual_studio_integration"; "nvrtc_dev"; "cudart"; - "thrust"; - "curand_dev"; ) } else { # after cuda 11.4 $CUDA_PACKAGES_IN = @( "nvcc"; "visual_studio_integration"; + "curand_dev"; "nvrtc_dev"; "cudart"; - "thrust"; - "curand_dev"; "cuxxfilt"; + # we need this to get libcu++ headers in cuda 12.0. + "thrust"; ) } - -## ------------------- -## Select CUDA version -## ------------------- - -# Get the cuda version from the environment as env:cuda. -# Make sure CUDA_VERSION_FULL is set and valid, otherwise error. - # Validate CUDA version, extracting components via regex $cuda_ver_matched = $CUDA_VERSION_FULL -match "^(?[1-9][0-9]*)\.(?[0-9]+)$" if(-not $cuda_ver_matched){ @@ -83,7 +71,6 @@ if(-not $cuda_ver_matched){ $CUDA_MAJOR=$Matches.major $CUDA_MINOR=$Matches.minor - ## ------------------------------------------------ ## Select CUDA packages to install from environment ## ------------------------------------------------ diff --git a/tools/linux_test_build.sh b/tools/linux_test_build.sh new file mode 100644 index 0000000..f0fff79 --- /dev/null +++ b/tools/linux_test_build.sh @@ -0,0 +1 @@ +sudo docker run --rm -it -e CUMM_CUDA_VERSION=126 -e PLAT=manylinux_2_28_x86_64 -v `pwd`:/io -v $HOME:/myhome manylinux2014-cuda:cu126-devel bash -c "source /etc/bashrc && /io/tools/build-wheels-dev.sh" \ No newline at end of file diff --git a/version.txt b/version.txt index e75da3e..00355e2 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -2.3.6 +2.3.7