-
Notifications
You must be signed in to change notification settings - Fork 739
Description
This is a tracking issue for porting torchaudio extension modules to use torch stable ABI.
Must have:
-
AT_DISPATCH_FLOATING_TYPES_AND_HALF,AT_DISPATCH_FLOATING_TYPES. Prototypes of these macros are implemented in [STABLE ABI] Port forced_align #4079 (see dispatch.h) and moved to upstream, see [STABLE ABI] Add STABLE_DISPATCH_... CPP macros pytorch#163973. The plan is to move these macros to headeronly, see ghstack starting from Move AT_FORALL_... macros and ScalarTypeToCPPTypeT to headeronly pytorch#164350 and Refactor AT_DISPATCH_CASE_... macros to headeronly pytorch#165695UPDATE: when Move AT_DISPATCH_V2 helper macros to headeronly and add THO_DISPATCH_V2_TMPL pytorch#165856 lands, we'll use AT_DISPATCH V2 macros.
-
mutable/const_data_ptrmethods and templates. Prototypes are implemented in [STABLE ABI] Port forced_align #4079 (see ops.h) and moved to upstream, see [STABLE ABI] Add mutable_data_ptr() and const_data_ptr() methods to torch::stable::Tensor. pytorch#161891- Why we need this: dependency of accessors
-
tensor accessors for both CPU and CUDA. Prototypes of these templates are implemented in [STABLE ABI] Port forced_align #4079 (see TensorAccessor.h) and moved to upstream, see [STABLE ABI] Add tensor accessors. pytorch#164123, landing requires ArrayRef
- Why we need this: The codebase currently relies on accessors [with up to 3 dimensions] (). We technically could work around this by relying on raw pointers and enforcing contiguity, but that would obfuscate what would otherwise be simple indexing calls.
audio/src/libtorchaudio/forced_align/cpu/compute.cpp
Lines 40 to 42 in 87ff22e
auto logProbs_a = logProbs.accessor<scalar_t, 3>(); auto targets_a = targets.accessor<target_t, 2>(); auto paths_a = paths.accessor<target_t, 2>();
UPDATE: Refactor TensorAccessor for headeronly. pytorch#166855 refactors TensorAccessor to headeronly
- Why we need this: The codebase currently relies on accessors [with up to 3 dimensions] (
-
parallel_for, in-progress by torch stable ABI team: Add stable parallel_for pytorch#161320- Alternative is to not use
parallel_for, for decreased performance. Acceptable, but not ideal.
- Alternative is to not use
Nice to have:
We think we can reasonably work around these without incurring too much debt in TorchAudio, so we can treat them as nice-to-have for now.
- Tensor operations as stable ABI operations:
-
item<T>()template, prototype available in [STABLE ABI] Port forced_align #4079 (see ops.h) -
tofunction (to cuda, to cpu, as an alternative tocpuandcudafunctions below) -
cpufunction, prototype available in [STABLE ABI] Port forced_align #4079 (see ops.h), moved to upstream, see [STABLE ABI] Add cpu operation. pytorch#161911 -
cudafunction, prototype available in [STABLE ABI] Port forced_align #4079 (see ops.h) -
copy_function, done in [STABLE ABI] Add clone method to torch::stable::Tensor pytorch#161896 -
clonefunction, done in [STABLE ABI] Add copy_ operation. pytorch#161895 -
indexfunction, requiresSlice, workaround using other aten methods -
new_zerosfunction, prototype available in [STABLE ABI] Port forced_align #4079 (see ops.h) -
new_emptywith device support, prototypes in [STABLE ABI] Port forced_align #4079 and [STABLE ABI] Add device_type and device_index optional arguments to new_empty. pytorch#161894 -
tensorfunction -
maxfunction -
selectfunction -
unsqueezefunction -
squeezefunction
-