From a44357a1fd43a5a53dcea53055beb5665d63e2f3 Mon Sep 17 00:00:00 2001 From: Nicolas Hug Date: Fri, 12 Dec 2025 10:26:19 +0000 Subject: [PATCH 1/4] [Release 2.10] Update version and test-infra refs (#4150) --- .github/workflows/build-wheels-m1.yml | 8 ++++---- .github/workflows/build_wheels_aarch64_linux.yml | 8 ++++---- .github/workflows/build_wheels_linux.yml | 8 ++++---- .github/workflows/build_wheels_windows.yml | 8 ++++---- .github/workflows/integration-test.yml | 2 +- .github/workflows/unittest-linux-cpu.yml | 2 +- .github/workflows/unittest-linux-gpu.yml | 2 +- .github/workflows/unittest-macos-cpu.yml | 2 +- .github/workflows/unittest-windows-cpu.yml | 2 +- .github/workflows/unittest-windows-gpu.yml | 2 +- version.txt | 2 +- 11 files changed, 23 insertions(+), 23 deletions(-) diff --git a/.github/workflows/build-wheels-m1.yml b/.github/workflows/build-wheels-m1.yml index 5b6dc8670a..83394f9914 100644 --- a/.github/workflows/build-wheels-m1.yml +++ b/.github/workflows/build-wheels-m1.yml @@ -23,12 +23,12 @@ permissions: jobs: generate-matrix: - uses: pytorch/test-infra/.github/workflows/generate_binary_build_matrix.yml@main + uses: pytorch/test-infra/.github/workflows/generate_binary_build_matrix.yml@release/2.10 with: package-type: wheel os: macos-arm64 test-infra-repository: pytorch/test-infra - test-infra-ref: main + test-infra-ref: release/2.10 build: needs: generate-matrix strategy: @@ -39,12 +39,12 @@ jobs: smoke-test-script: test/smoke_test/smoke_test_no_ffmpeg.py package-name: torchaudio name: ${{ matrix.repository }} - uses: pytorch/test-infra/.github/workflows/build_wheels_macos.yml@main + uses: pytorch/test-infra/.github/workflows/build_wheels_macos.yml@release/2.10 with: repository: ${{ matrix.repository }} ref: "" test-infra-repository: pytorch/test-infra - test-infra-ref: main + test-infra-ref: release/2.10 build-matrix: ${{ needs.generate-matrix.outputs.matrix }} smoke-test-script: ${{ matrix.smoke-test-script }} runner-type: macos-m1-stable diff --git a/.github/workflows/build_wheels_aarch64_linux.yml b/.github/workflows/build_wheels_aarch64_linux.yml index 23501c8125..7b5191125d 100644 --- a/.github/workflows/build_wheels_aarch64_linux.yml +++ b/.github/workflows/build_wheels_aarch64_linux.yml @@ -23,12 +23,12 @@ permissions: jobs: generate-matrix: - uses: pytorch/test-infra/.github/workflows/generate_binary_build_matrix.yml@main + uses: pytorch/test-infra/.github/workflows/generate_binary_build_matrix.yml@release/2.10 with: package-type: wheel os: linux-aarch64 test-infra-repository: pytorch/test-infra - test-infra-ref: main + test-infra-ref: release/2.10 with-cuda: enable build: needs: generate-matrix @@ -40,12 +40,12 @@ jobs: smoke-test-script: test/smoke_test/smoke_test.py package-name: torchaudio name: ${{ matrix.repository }} - uses: pytorch/test-infra/.github/workflows/build_wheels_linux.yml@main + uses: pytorch/test-infra/.github/workflows/build_wheels_linux.yml@release/2.10 with: repository: ${{ matrix.repository }} ref: "" test-infra-repository: pytorch/test-infra - test-infra-ref: main + test-infra-ref: release/2.10 build-matrix: ${{ needs.generate-matrix.outputs.matrix }} pre-script: ${{ matrix.pre-script }} post-script: ${{ matrix.post-script }} diff --git a/.github/workflows/build_wheels_linux.yml b/.github/workflows/build_wheels_linux.yml index 934b709bb3..e17b9c0305 100644 --- a/.github/workflows/build_wheels_linux.yml +++ b/.github/workflows/build_wheels_linux.yml @@ -23,12 +23,12 @@ permissions: jobs: generate-matrix: - uses: pytorch/test-infra/.github/workflows/generate_binary_build_matrix.yml@main + uses: pytorch/test-infra/.github/workflows/generate_binary_build_matrix.yml@release/2.10 with: package-type: wheel os: linux test-infra-repository: pytorch/test-infra - test-infra-ref: main + test-infra-ref: release/2.10 with-xpu: enable build: needs: generate-matrix @@ -40,12 +40,12 @@ jobs: smoke-test-script: test/smoke_test/smoke_test_no_ffmpeg.py package-name: torchaudio name: ${{ matrix.repository }} - uses: pytorch/test-infra/.github/workflows/build_wheels_linux.yml@main + uses: pytorch/test-infra/.github/workflows/build_wheels_linux.yml@release/2.10 with: repository: ${{ matrix.repository }} ref: "" test-infra-repository: pytorch/test-infra - test-infra-ref: main + test-infra-ref: release/2.10 build-matrix: ${{ needs.generate-matrix.outputs.matrix }} smoke-test-script: ${{ matrix.smoke-test-script }} package-name: ${{ matrix.package-name }} diff --git a/.github/workflows/build_wheels_windows.yml b/.github/workflows/build_wheels_windows.yml index 82d03ea639..e1894696f6 100644 --- a/.github/workflows/build_wheels_windows.yml +++ b/.github/workflows/build_wheels_windows.yml @@ -19,12 +19,12 @@ permissions: jobs: generate-matrix: - uses: pytorch/test-infra/.github/workflows/generate_binary_build_matrix.yml@main + uses: pytorch/test-infra/.github/workflows/generate_binary_build_matrix.yml@release/2.10 with: package-type: wheel os: windows test-infra-repository: pytorch/test-infra - test-infra-ref: main + test-infra-ref: release/2.10 with-xpu: enable build: needs: generate-matrix @@ -38,12 +38,12 @@ jobs: smoke-test-script: test/smoke_test/smoke_test_no_ffmpeg.py package-name: torchaudio name: ${{ matrix.repository }} - uses: pytorch/test-infra/.github/workflows/build_wheels_windows.yml@main + uses: pytorch/test-infra/.github/workflows/build_wheels_windows.yml@release/2.10 with: repository: ${{ matrix.repository }} ref: "" test-infra-repository: pytorch/test-infra - test-infra-ref: main + test-infra-ref: release/2.10 build-matrix: ${{ needs.generate-matrix.outputs.matrix }} env-script: ${{ matrix.env-script }} package-name: ${{ matrix.package-name }} diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml index 3f682d4eb6..8948958ef6 100644 --- a/.github/workflows/integration-test.yml +++ b/.github/workflows/integration-test.yml @@ -13,7 +13,7 @@ jobs: python-version: ["3.11"] ffmpeg-version: ["7"] fail-fast: false - uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@main + uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@release/2.10 permissions: id-token: write contents: read diff --git a/.github/workflows/unittest-linux-cpu.yml b/.github/workflows/unittest-linux-cpu.yml index a695e87a0c..f879e6b469 100644 --- a/.github/workflows/unittest-linux-cpu.yml +++ b/.github/workflows/unittest-linux-cpu.yml @@ -16,7 +16,7 @@ jobs: python-version: ["3.11"] ffmpeg-version: ["7"] fail-fast: false - uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@main + uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@release/2.10 permissions: id-token: write contents: read diff --git a/.github/workflows/unittest-linux-gpu.yml b/.github/workflows/unittest-linux-gpu.yml index 10a48e38ff..2c2126b075 100644 --- a/.github/workflows/unittest-linux-gpu.yml +++ b/.github/workflows/unittest-linux-gpu.yml @@ -17,7 +17,7 @@ jobs: cuda-version: ["12.8"] ffmpeg-version: ["7"] fail-fast: false - uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@main + uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@release/2.10 permissions: id-token: write contents: read diff --git a/.github/workflows/unittest-macos-cpu.yml b/.github/workflows/unittest-macos-cpu.yml index e6adb85238..4b9c014194 100644 --- a/.github/workflows/unittest-macos-cpu.yml +++ b/.github/workflows/unittest-macos-cpu.yml @@ -16,7 +16,7 @@ jobs: python-version: ["3.11"] ffmpeg-version: ["7"] fail-fast: false - uses: pytorch/test-infra/.github/workflows/macos_job.yml@main + uses: pytorch/test-infra/.github/workflows/macos_job.yml@release/2.10 permissions: id-token: write contents: read diff --git a/.github/workflows/unittest-windows-cpu.yml b/.github/workflows/unittest-windows-cpu.yml index 3b872a4715..f3931c15fb 100644 --- a/.github/workflows/unittest-windows-cpu.yml +++ b/.github/workflows/unittest-windows-cpu.yml @@ -11,7 +11,7 @@ on: jobs: build: - uses: pytorch/test-infra/.github/workflows/windows_job.yml@main + uses: pytorch/test-infra/.github/workflows/windows_job.yml@release/2.10 with: repository: pytorch/audio runner: windows.4xlarge diff --git a/.github/workflows/unittest-windows-gpu.yml b/.github/workflows/unittest-windows-gpu.yml index 2b0e66c171..64734bb278 100644 --- a/.github/workflows/unittest-windows-gpu.yml +++ b/.github/workflows/unittest-windows-gpu.yml @@ -11,7 +11,7 @@ on: jobs: build: - uses: pytorch/test-infra/.github/workflows/windows_job.yml@main + uses: pytorch/test-infra/.github/workflows/windows_job.yml@release/2.10 with: repository: pytorch/audio runner: windows.g5.4xlarge.nvidia.gpu diff --git a/version.txt b/version.txt index 1e8c33284d..10c2c0c3d6 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -2.10.0a0 +2.10.0 From 5047768f2447d963dffc250b64a5d6c01afc84fa Mon Sep 17 00:00:00 2001 From: Nicolas Hug Date: Fri, 12 Dec 2025 11:33:58 +0000 Subject: [PATCH 2/4] [Release 2.10] Cherry-picks (#4155) Co-authored-by: Pearu Peterson --- .github/scripts/unittest-linux/run_test.sh | 1 + .github/workflows/unittest-linux-cpu.yml | 2 ++ .github/workflows/unittest-linux-gpu.yml | 2 ++ .github/workflows/unittest-macos-cpu.yml | 1 + .github/workflows/unittest-windows-cpu.yml | 1 + .github/workflows/unittest-windows-gpu.yml | 1 + src/libtorchaudio/forced_align/gpu/compute.cu | 1 + src/libtorchaudio/lfilter.cpp | 8 ++--- src/libtorchaudio/rnnt/cpu/compute.cpp | 30 ++++++++----------- src/libtorchaudio/rnnt/gpu/compute.cu | 16 +++++----- .../common_utils/__init__.py | 2 ++ .../common_utils/case_utils.py | 9 ++++++ .../functional/functional_cuda_test.py | 8 ++++- 13 files changed, 51 insertions(+), 31 deletions(-) diff --git a/.github/scripts/unittest-linux/run_test.sh b/.github/scripts/unittest-linux/run_test.sh index 7740932530..06e77dc6ae 100755 --- a/.github/scripts/unittest-linux/run_test.sh +++ b/.github/scripts/unittest-linux/run_test.sh @@ -27,6 +27,7 @@ fi export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MOD_unidecode=true export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MOD_inflect=true export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MOD_pytorch_lightning=true + export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MULTIGPU_CUDA=true cd test pytest torchaudio_unittest -k "not torchscript and not fairseq and not demucs ${PYTEST_K_EXTRA}" ) diff --git a/.github/workflows/unittest-linux-cpu.yml b/.github/workflows/unittest-linux-cpu.yml index f879e6b469..d5761a6459 100644 --- a/.github/workflows/unittest-linux-cpu.yml +++ b/.github/workflows/unittest-linux-cpu.yml @@ -92,5 +92,7 @@ jobs: export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_SOX_DECODER=true export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_SOX_ENCODER=true export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_FFMPEG=true + export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MULTIGPU_CUDA=true + pytest test/torchaudio_unittest -k "not torchscript and not fairseq and not demucs" -x echo "::endgroup::" diff --git a/.github/workflows/unittest-linux-gpu.yml b/.github/workflows/unittest-linux-gpu.yml index 2c2126b075..6fe6b45773 100644 --- a/.github/workflows/unittest-linux-gpu.yml +++ b/.github/workflows/unittest-linux-gpu.yml @@ -44,6 +44,8 @@ jobs: export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_SOX_ENCODER=true export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_FFMPEG=true export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MOD_demucs=true + export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MULTIGPU_CUDA=true + export CUBLAS_WORKSPACE_CONFIG=:16:8 # Set UPLOAD_CHANNEL diff --git a/.github/workflows/unittest-macos-cpu.yml b/.github/workflows/unittest-macos-cpu.yml index 4b9c014194..57ca7e54cc 100644 --- a/.github/workflows/unittest-macos-cpu.yml +++ b/.github/workflows/unittest-macos-cpu.yml @@ -89,6 +89,7 @@ jobs: export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MOD_unidecode=true export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MOD_inflect=true export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MOD_pytorch_lightning=true + export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MULTIGPU_CUDA=true pytest test/torchaudio_unittest -k "not torchscript and not fairseq and not demucs and not librosa" -x echo "::endgroup::" diff --git a/.github/workflows/unittest-windows-cpu.yml b/.github/workflows/unittest-windows-cpu.yml index f3931c15fb..6dc9ba92df 100644 --- a/.github/workflows/unittest-windows-cpu.yml +++ b/.github/workflows/unittest-windows-cpu.yml @@ -54,6 +54,7 @@ jobs: export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MOD_inflect=true export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MOD_pytorch_lightning=true export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MOD_sentencepiece=true + export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MULTIGPU_CUDA=true .github/scripts/unittest-windows/setup_env.sh .github/scripts/unittest-windows/install.sh diff --git a/.github/workflows/unittest-windows-gpu.yml b/.github/workflows/unittest-windows-gpu.yml index 64734bb278..36affd186c 100644 --- a/.github/workflows/unittest-windows-gpu.yml +++ b/.github/workflows/unittest-windows-gpu.yml @@ -55,6 +55,7 @@ jobs: export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MOD_inflect=true export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MOD_pytorch_lightning=true export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MOD_sentencepiece=true + export TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_MULTIGPU_CUDA=true .github/scripts/unittest-windows/setup_env.sh .github/scripts/unittest-windows/install.sh diff --git a/src/libtorchaudio/forced_align/gpu/compute.cu b/src/libtorchaudio/forced_align/gpu/compute.cu index cb94bf5dee..6e064c4958 100644 --- a/src/libtorchaudio/forced_align/gpu/compute.cu +++ b/src/libtorchaudio/forced_align/gpu/compute.cu @@ -122,6 +122,7 @@ void forced_align_impl( const int64_t blank, Tensor& paths) { auto device_index = logProbs.get_device_index(); + const torch::stable::accelerator::DeviceGuard device_guard(device_index); auto defaultStream = libtorchaudio::cuda::getCurrentCUDAStream(device_index); auto cpuDataTranferStream = libtorchaudio::cuda::getStreamFromPool(false, device_index); const scalar_t kNegInfinity = -std::numeric_limits::infinity(); diff --git a/src/libtorchaudio/lfilter.cpp b/src/libtorchaudio/lfilter.cpp index b9e7241eff..1f42644ae8 100644 --- a/src/libtorchaudio/lfilter.cpp +++ b/src/libtorchaudio/lfilter.cpp @@ -24,12 +24,10 @@ void host_lfilter_core_loop( int64_t n_samples_input = input_signal_windows.size(2); int64_t n_samples_output = padded_output_waveform.size(2); int64_t n_order = a_coeff_flipped.size(1); - scalar_t* output_data = - reinterpret_cast(padded_output_waveform.data_ptr()); - const scalar_t* input_data = - reinterpret_cast(input_signal_windows.data_ptr()); + scalar_t* output_data = padded_output_waveform.mutable_data_ptr(); + const scalar_t* input_data = input_signal_windows.const_data_ptr(); const scalar_t* a_coeff_flipped_data = - reinterpret_cast(a_coeff_flipped.data_ptr()); + a_coeff_flipped.const_data_ptr(); torch::stable::parallel_for( 0, n_channel * n_batch, 1, [&](int64_t begin, int64_t end) { diff --git a/src/libtorchaudio/rnnt/cpu/compute.cpp b/src/libtorchaudio/rnnt/cpu/compute.cpp index d0f9e0e234..c8b0f473d7 100644 --- a/src/libtorchaudio/rnnt/cpu/compute.cpp +++ b/src/libtorchaudio/rnnt/cpu/compute.cpp @@ -1,4 +1,6 @@ #include +#include + #include #include #include @@ -73,15 +75,11 @@ std::tuple compute( STD_TORCH_CHECK( blank >= 0 && blank < logits.size(-1), "blank must be within [0, logits.shape[-1])"); - - auto max_ivalue = [](const Tensor& t) { - return reinterpret_cast(torch::stable::amax(t, {}).data_ptr())[0]; - }; - STD_TORCH_CHECK( - logits.size(1) == max_ivalue(logit_lengths), "input length mismatch"); + logits.size(1) == torchaudio::util::max(logit_lengths), + "input length mismatch"); STD_TORCH_CHECK( - logits.size(2) == max_ivalue(target_lengths) + 1, + logits.size(2) == torchaudio::util::max(target_lengths) + 1, "output length mismatch"); STD_TORCH_CHECK( targets.size(1) + 1 == logits.size(2), "target length mismatch"); @@ -110,14 +108,12 @@ std::tuple compute( {DtypeWorkspace::ComputeSizeFromOptions(options)}, ScalarType::Float); - // TODO: use t.mutable_data_ptr<..>() instead of reinterpret_cast - // when stable ABI Tensor supports mutable_data_ptr templates. Workspace workspace( /*options=*/options, /*dtype_data=*/ - reinterpret_cast(float_workspace.mutable_data_ptr()), + float_workspace.mutable_data_ptr(), /*dtype_size=*/float_workspace.numel(), - /*int_data=*/reinterpret_cast(int_workspace.mutable_data_ptr()), + /*int_data=*/int_workspace.mutable_data_ptr(), /*int_size=*/int_workspace.numel()); THO_DISPATCH_V2( @@ -126,12 +122,12 @@ std::tuple compute( AT_WRAP([&] { (Compute( /*workspace=*/workspace, - /*logits=*/reinterpret_cast(logits.data_ptr()), - /*targets=*/reinterpret_cast(targets.data_ptr()), - /*srcLengths=*/reinterpret_cast(logit_lengths.data_ptr()), - /*tgtLengths=*/reinterpret_cast(target_lengths.data_ptr()), - /*costs=*/reinterpret_cast(costs.data_ptr()), - /*gradients=*/reinterpret_cast(gradients.data_ptr()))); + /*logits=*/logits.const_data_ptr(), + /*targets=*/targets.const_data_ptr(), + /*srcLengths=*/logit_lengths.const_data_ptr(), + /*tgtLengths=*/target_lengths.const_data_ptr(), + /*costs=*/costs.mutable_data_ptr(), + /*gradients=*/gradients.mutable_data_ptr())); }), ScalarType::Float, ScalarType::Half); diff --git a/src/libtorchaudio/rnnt/gpu/compute.cu b/src/libtorchaudio/rnnt/gpu/compute.cu index ee5da3b137..03bad83b8e 100644 --- a/src/libtorchaudio/rnnt/gpu/compute.cu +++ b/src/libtorchaudio/rnnt/gpu/compute.cu @@ -106,9 +106,9 @@ std::tuple compute( Workspace workspace( /*options=*/options, - /*dtype_data=*/reinterpret_cast(float_workspace.data_ptr()), + /*dtype_data=*/float_workspace.mutable_data_ptr(), /*dtype_size=*/float_workspace.numel(), - /*int_data=*/reinterpret_cast(int_workspace.data_ptr()), + /*int_data=*/int_workspace.mutable_data_ptr(), /*int_size=*/int_workspace.numel()); THO_DISPATCH_V2( @@ -117,12 +117,12 @@ std::tuple compute( AT_WRAP([&] { (Compute( /*workspace=*/workspace, - /*logits=*/reinterpret_cast(logits.data_ptr()), - /*targets=*/reinterpret_cast(targets.data_ptr()), - /*srcLengths=*/reinterpret_cast(logit_lengths.data_ptr()), - /*tgtLengths=*/reinterpret_cast(target_lengths.data_ptr()), - /*costs=*/reinterpret_cast(costs.data_ptr()), - /*gradients=*/reinterpret_cast(gradients.data_ptr()))); + /*logits=*/logits.const_data_ptr(), + /*targets=*/targets.const_data_ptr(), + /*srcLengths=*/logit_lengths.const_data_ptr(), + /*tgtLengths=*/target_lengths.const_data_ptr(), + /*costs=*/costs.mutable_data_ptr(), + /*gradients=*/gradients.mutable_data_ptr())); }), ScalarType::Float, ScalarType::Half); diff --git a/test/torchaudio_unittest/common_utils/__init__.py b/test/torchaudio_unittest/common_utils/__init__.py index c464bede69..0fba71e451 100644 --- a/test/torchaudio_unittest/common_utils/__init__.py +++ b/test/torchaudio_unittest/common_utils/__init__.py @@ -18,6 +18,7 @@ skipIfNoQengine, skipIfPy310, skipIfRocm, + skipIfSingleCuda, TempDirMixin, TestBaseMixin, TorchaudioTestCase, @@ -65,6 +66,7 @@ def inject_request(self, request): "skipIfNoFFmpeg", "skipIfNoHWAccel", "skipIfPy310", + "skipIfSingleCuda", "disabledInCI", "get_wav_data", "normalize_wav", diff --git a/test/torchaudio_unittest/common_utils/case_utils.py b/test/torchaudio_unittest/common_utils/case_utils.py index e1af754b04..8aadece898 100644 --- a/test/torchaudio_unittest/common_utils/case_utils.py +++ b/test/torchaudio_unittest/common_utils/case_utils.py @@ -249,6 +249,15 @@ def skipIfNoModule(module, display_name=None): reason="Tests are failing on CI consistently. Disabled while investigating.", key="TEMPORARY_DISABLED", ) +skipIfSingleCuda = _skipIf( + not (torch.cuda.is_available() and torch.cuda.device_count() > 1), + reason=( + "CUDA is not available." + if not torch.cuda.is_available() + else f"Not a multi-GPU platform (device count is {torch.cuda.device_count()})." + ), + key="NO_MULTIGPU_CUDA", +) def skipIfNoHWAccel(name): diff --git a/test/torchaudio_unittest/functional/functional_cuda_test.py b/test/torchaudio_unittest/functional/functional_cuda_test.py index c4d7ab2975..037b053099 100644 --- a/test/torchaudio_unittest/functional/functional_cuda_test.py +++ b/test/torchaudio_unittest/functional/functional_cuda_test.py @@ -1,7 +1,7 @@ import unittest import torch -from torchaudio_unittest.common_utils import PytorchTestCase, skipIfNoCuda +from torchaudio_unittest.common_utils import PytorchTestCase, skipIfNoCuda, skipIfSingleCuda from .functional_impl import Functional, FunctionalCUDAOnly @@ -28,6 +28,12 @@ class TestFunctionalCUDAOnlyFloat32(FunctionalCUDAOnly, PytorchTestCase): device = torch.device("cuda") +@skipIfSingleCuda +class TestFunctionalMultiGPUCUDAOnlyFloat32(FunctionalCUDAOnly, PytorchTestCase): + dtype = torch.float32 + device = torch.device("cuda:1") + + @skipIfNoCuda class TestFunctionalCUDAOnlyFloat64(FunctionalCUDAOnly, PytorchTestCase): dtype = torch.float64 From 27b7ebdebd2d2e4d34a2f5c05b0fb26efbd1da63 Mon Sep 17 00:00:00 2001 From: Nicolas Hug Date: Tue, 6 Jan 2026 10:21:17 +0000 Subject: [PATCH 3/4] Fix CMUARCTIC text transcripts reader. (#4164) (#4166) Co-authored-by: Pearu Peterson --- src/torchaudio/datasets/cmuarctic.py | 6 ++---- test/torchaudio_unittest/datasets/cmuarctic_test.py | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/torchaudio/datasets/cmuarctic.py b/src/torchaudio/datasets/cmuarctic.py index 80ecb16cd9..2d124d2db3 100644 --- a/src/torchaudio/datasets/cmuarctic.py +++ b/src/torchaudio/datasets/cmuarctic.py @@ -1,4 +1,3 @@ -import csv import os from pathlib import Path from typing import Tuple, Union @@ -128,9 +127,8 @@ def __init__( ) self._text = os.path.join(self._path, self._folder_text, self._file_text) - with open(self._text, "r") as text: - walker = csv.reader(text) - self._walker = list(walker) + with open(self._text, "r", newline=None) as text: + self._walker = [[line.rstrip("\n")] for line in text.readlines()] def __getitem__(self, n: int) -> Tuple[Tensor, int, str, str]: """Load the n-th sample from the dataset. diff --git a/test/torchaudio_unittest/datasets/cmuarctic_test.py b/test/torchaudio_unittest/datasets/cmuarctic_test.py index f56b3aec57..422c7fe9c5 100644 --- a/test/torchaudio_unittest/datasets/cmuarctic_test.py +++ b/test/torchaudio_unittest/datasets/cmuarctic_test.py @@ -11,7 +11,7 @@ def get_mock_dataset(root_dir): """ mocked_data = [] sample_rate = 16000 - transcript = "This is a test transcript." + transcript = "This is a test transcript, with comma." base_dir = os.path.join(root_dir, "ARCTIC", "cmu_us_aew_arctic") txt_dir = os.path.join(base_dir, "etc") From 34497c6a33e4f336e3d4fd2ca46f0c600d9837e6 Mon Sep 17 00:00:00 2001 From: Nicolas Hug Date: Wed, 21 Jan 2026 14:01:10 +0000 Subject: [PATCH 4/4] Remove pinning against torch version --- setup.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/setup.py b/setup.py index 7a2fc74633..805873e561 100644 --- a/setup.py +++ b/setup.py @@ -86,8 +86,12 @@ def _main(): print("-- Git branch:", branch) print("-- Git SHA:", sha) print("-- Git tag:", tag) - pytorch_package_dep = _get_pytorch_version() - print("-- PyTorch dependency:", pytorch_package_dep) + # This used to be passed to install_requires + # which would cause pinning against a specific torch version in releases. + # I don't think we want to pin at all? + # TODO: revisit if needed. Maybe it's needed for nightlies. Unsure. + # pytorch_package_dep = _get_pytorch_version() + # print("-- PyTorch dependency:", pytorch_package_dep) version = _get_version(sha) print("-- Building version", version) @@ -135,7 +139,7 @@ def _main(): "build_ext": setup_helpers.CMakeBuild, "clean": clean, }, - install_requires=[pytorch_package_dep], + install_requires=[], zip_safe=False, )