pytorch/test
bobrenjc93 f649ee73ce Use source hashing to generate consistent symbolic ids (#149665)
This PR was inspired by internal models that were cache missing due to PGO. At a high level the problem looks as follows

Run 1, Invocation 1: We do static compile, save some example values in PGO/automatic dynamic

Run 1, Invocation 2: We detect varying inputs, do dynamic compile, get a dynamic graph and save to PGO. Crucially what we save to PGO is actually a superset of what is actually dynamic. If we notice an input was varying, we mark it as dynamic in PGO even if later on that value gets specialized. When a value gets specialized, we actually remove the symbol from the graph. This results in an interesting conundrum where although we are producing the same isomorphic graph, PGO makes the second run cache miss. Let's see how....

Run 2, Invocation 1: We fetch the PGO, over-mark things as dynamic, get a fx graph, look it up in the cache and... whoops! cache miss! This is because of the aforementioned behavior where the PGO profile will cause us to over-allocate symbols. In practice this means we end up saving a graph in cache with symbols x:s1, y:s3 and on second attempt we cache miss with x:s1, y:s6 where symbols s3,s4,s5 were all optimistically marked dynamic by PGO and subsequently specialized.

We solve this problem by hashing the source names. This ensures somewhat stable assignment. To prevent catastrophic symbol collisions, we use linear probing to ensure no collisions.

Pull Request resolved: https://github.com/pytorch/pytorch/pull/149665
Approved by: https://github.com/Mingming-Ding, https://github.com/laithsakka
2025-03-28 05:36:32 +00:00
..
ao/sparsity Skip ao_sparsity TestComposability for missing FBGEMM (#144146) 2025-03-11 13:02:18 +00:00
autograd Fix unused Python variables in test/[a-d]* (#134665) 2024-12-13 22:13:12 +00:00
backends/xeon
benchmark_utils PEP585 update - test (#145176) 2025-01-22 04:48:28 +00:00
bottleneck_test Fix unused Python variables in test/[a-d]* (#134665) 2024-12-13 22:13:12 +00:00
cpp [AOTInductor] Free folded constants that's managed by AOTInductor (#149825) 2025-03-27 06:05:50 +00:00
cpp_api_parity
cpp_extensions [MAIA] [Autocast] Enable autocast on MAIA device (#148511) 2025-03-18 03:46:22 +00:00
custom_backend
custom_operator [dynamo] make some more graph break messages readable in English [2/N] (#147385) 2025-02-26 09:20:28 +00:00
distributed Add one_shot_all_reduce_copy to allow non-symm-mem allocated tensors to be reduced (#150129) 2025-03-28 02:14:27 +00:00
distributions Temp disable MKL in DistributionKernels.cpp (#146174) 2025-02-01 18:53:11 +00:00
dynamo Use source hashing to generate consistent symbolic ids (#149665) 2025-03-28 05:36:32 +00:00
dynamo_expected_failures [dynamo] Fix handling of setattr with some tensor attributes (#149791) 2025-03-25 18:57:56 +00:00
dynamo_skips Introduce UserDefinedExceptionClassVariable (#146504) 2025-03-11 18:55:45 +00:00
edge Use std::string_view in tests (#146120) 2025-02-04 09:51:36 +00:00
error_messages
expect Remove aten.elu core ATen decomp because it is now core ATen (#149780) 2025-03-25 01:59:57 +00:00
export Use source hashing to generate consistent symbolic ids (#149665) 2025-03-28 05:36:32 +00:00
forward_backward_compatibility Revert "[PGNCCL] Launch kernel on current stream & remove record_stream entirely (#148590)" 2025-03-17 22:43:15 +00:00
functorch Use source hashing to generate consistent symbolic ids (#149665) 2025-03-28 05:36:32 +00:00
fx Make dynamism code robust to NotImplementedException (#148823) 2025-03-14 23:38:19 +00:00
higher_order_ops [dynamo][invoke_subgraph] Input aliasing and mutation check in Dynamo (#148953) 2025-03-28 03:50:07 +00:00
inductor Use source hashing to generate consistent symbolic ids (#149665) 2025-03-28 05:36:32 +00:00
inductor_expected_failures Set enable_faithful_generator_behavior flag to True (#142513) 2025-02-08 22:42:12 +00:00
inductor_skips [BE] Remove test_ops from FIXME_inductor_dont_reset_dynamo (#145307) 2025-01-27 18:12:39 +00:00
jit Consistently use load_torchbind_test_lib in tests (#148082) 2025-03-03 19:37:28 +00:00
jit_hooks
lazy [4/N] Apply py39 ruff and pyupgrade fixes (#143257) 2025-01-04 10:47:51 +00:00
mobile Typo Errors fixed in multiple files (#148262) 2025-03-09 12:21:40 +00:00
nn Fix broken LazyLinear init (#149693) 2025-03-25 23:49:49 +00:00
onnx [ONNX] Annotate None inputs in symbolic ops (#150038) 2025-03-27 00:01:09 +00:00
optim Remove deprecate method and attirbute in LRScheduler (#147301) 2025-03-05 05:30:19 +00:00
package Remove outdated test skipif conditions for Python3.9 (#146144) 2025-01-31 19:01:04 +00:00
profiler [Profiler/Easy] Pass Overload Names To Kineto (#149333) 2025-03-18 22:15:51 +00:00
quantization add torch.float4_e2m1fn_x2 to PyTorch (#148791) 2025-03-27 17:32:20 +00:00
scripts
strobelight/examples Enable strobelight profiling specific compile frame ids using COMPILE_STROBELIGHT_FRAME_FILTER (#147549) 2025-02-22 03:44:53 +00:00
test_img
torch_np [BE]: Enable ruff SLOT checks (#146276) 2025-02-04 19:18:23 +00:00
typing Revert "Fix non-bitwise type annotations for Tensor operators (see #145838) (#146845)" 2025-02-18 19:01:27 +00:00
xpu [Intel GPU] Enable fp64 GEMM (#140677) 2025-02-17 08:15:55 +00:00
_test_bazel.py
allowlist_for_publicAPI.json Introduce guard_or_true, guard_or_false (#148430) 2025-03-27 09:34:05 +00:00
bench_mps_ops.py [Test] Add simple MPS op benchmarks (#149914) 2025-03-25 11:31:27 +00:00
conftest.py Apply ruff fixes to tests (#146140) 2025-02-04 05:41:01 +00:00
create_dummy_torchscript_model.py
delete.py
hi.py
HowToWriteTestsUsingFileCheck.md
linear.py
load_torchscript_model.py
minioptest_failures_dict.json
mkl_verbose.py
mkldnn_verbose.py
pytest_shard_custom.py
run_doctests.sh
run_test.py Switch s390x tests to blocklist (#149507) 2025-03-26 12:11:41 +00:00
simulate_nccl_errors.py
slow_tests.json Update slow tests (#149844) 2025-03-24 12:12:56 +00:00
test_accelerator.py Generalize pin memory logic for accelerator when non blocking copy happened (#143783) 2025-01-23 03:43:05 +00:00
test_ao_sparsity.py
test_appending_byte_serializer.py Add AppendingByteSerializer class (#148226) 2025-03-02 08:20:58 +00:00
test_autocast.py Enable TemporaryFileName tests on Windows (#146311) 2025-02-07 06:06:18 +00:00
test_autograd_fallback.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_autograd.py Improve error message when view of intermediate is returned from autograd.Function and marked dirty (#149543) 2025-03-25 14:44:11 +00:00
test_autoload.py
test_binary_ufuncs.py Fix lerp weight type promotion (#141117) 2025-01-24 01:18:20 +00:00
test_bundled_images.py
test_bundled_inputs.py [4/N] Apply py39 ruff and pyupgrade fixes (#143257) 2025-01-04 10:47:51 +00:00
test_ci_sanity_check_fail.py
test_comparison_utils.py
test_compile_benchmark_util.py
test_complex.py
test_content_store.py torch.utils._content_store: fix error in hash_storage on XPU (#147785) 2025-02-26 23:57:59 +00:00
test_cpp_api_parity.py Enable C++ API parity tests on AArch64 (#145370) 2025-01-30 22:42:49 +00:00
test_cpp_extensions_aot.py [BE] simplify test_cpp_extensions_aot and .gitignore (#149231) 2025-03-20 18:17:19 +00:00
test_cpp_extensions_jit.py op should NOT be static in aoti_torch_call_dispatcher (#149208) 2025-03-15 01:47:11 +00:00
test_cpp_extensions_mtia_backend.py
test_cpp_extensions_open_device_registration.py Update pin memory related APIs to not pass 'device' argument (#131858) 2025-01-15 17:23:35 +00:00
test_cpp_extensions_stream_and_event.py
test_cuda_expandable_segments.py Revert "Use absolute path path.resolve() -> path.absolute() (#129409)" 2025-01-04 14:17:20 +00:00
test_cuda_multigpu.py [CUDA] try to abate some flakiness in test_stream_event_nogil (#148796) 2025-03-12 19:12:50 +00:00
test_cuda_nvml_based_avail.py
test_cuda_primary_ctx.py Remove outdated skipIfRocmVersionLessThan decorations (#148941) 2025-03-11 18:37:40 +00:00
test_cuda_sanitizer.py [4/N] Apply py39 ruff and pyupgrade fixes (#143257) 2025-01-04 10:47:51 +00:00
test_cuda_trace.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_cuda.py add some extra test oom skips for jetson due to lacking nvml support (#149587) 2025-03-25 20:39:10 +00:00
test_custom_ops.py Revert "[custom_ops][perf] Move expensive pytree traversals of tensors to C++ (#148555)" 2025-03-26 05:27:52 +00:00
test_dataloader.py Enable more nightly tests on s390x (#148452) 2025-03-18 16:09:39 +00:00
test_datapipe.py Remove unactivated test (#146233) 2025-02-04 05:26:04 +00:00
test_decomp.py Update ruff linter for PEP585 (#147540) 2025-02-22 04:45:17 +00:00
test_deploy.py
test_determination.py
test_dispatch.py [BE][CI] bump ruff to 0.9.0: string quote styles (#144569) 2025-02-24 19:56:09 +00:00
test_dlpack.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_dynamic_shapes.py Use source hashing to generate consistent symbolic ids (#149665) 2025-03-28 05:36:32 +00:00
test_expanded_weights.py No actual change, just remove variable contain Tensors from global scope (#143225) 2024-12-17 16:14:25 +00:00
test_extension_utils.py Move privateuse1 test out of test_utils and make them serial (#145380) 2025-01-23 00:31:39 +00:00
test_fake_tensor.py [invoke_subgraph][fake tensor cache] Add a finalizer for id hashed objects (#149667) 2025-03-27 00:01:39 +00:00
test_file_check.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_flop_counter.py Build RowwiseScaledMM.cu for SM89 (#145676) 2025-02-01 11:44:58 +00:00
test_foreach.py added fake tensor support for foreach_copy (#149127) 2025-03-27 09:26:23 +00:00
test_function_schema.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_functional_autograd_benchmark.py Enable Windows tests (#146666) 2025-02-08 00:55:20 +00:00
test_functional_optim.py [4/N] Apply py39 ruff and pyupgrade fixes (#143257) 2025-01-04 10:47:51 +00:00
test_functionalization_of_rng_ops.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_functionalization.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_futures.py
test_fx_experimental.py PEP585: Add noqa to necessary tests (#146391) 2025-02-12 15:29:50 +00:00
test_fx_passes.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_fx_reinplace_pass.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_fx.py [BE]: Apply ruff PERF403 to use dict comprehensions more often (#149257) 2025-03-18 00:46:07 +00:00
test_hop_infra.py Support torch.compile rng selective activation checkpointing with cudagraph (#146878) 2025-02-28 00:47:03 +00:00
test_hub.py
test_import_stats.py
test_indexing.py [ROCm] Improve backwards indexing when stride is not one (#147630) 2025-03-11 19:02:48 +00:00
test_itt.py
test_jit_autocast.py PEP585 update - test (#145176) 2025-01-22 04:48:28 +00:00
test_jit_disabled.py
test_jit_fuser_legacy.py
test_jit_fuser_te.py [BE][CI] bump ruff to 0.9.0: string quote styles (#144569) 2025-02-24 19:56:09 +00:00
test_jit_fuser.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_jit_legacy.py
test_jit_llga_fuser.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_jit_profiling.py
test_jit_simple.py
test_jit_string.py PEP585 update - test (#145176) 2025-01-22 04:48:28 +00:00
test_jit.py [BE]: Apply ruff PERF403 to use dict comprehensions more often (#149257) 2025-03-18 00:46:07 +00:00
test_jiterator.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_kernel_launch_checks.py
test_legacy_vmap.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_license.py
test_linalg.py [ROCm][TunableOp] TunableOp Context Manager for unit tests (#149930) 2025-03-26 02:59:58 +00:00
test_logging.py
test_masked.py [4/N] Apply py39 ruff and pyupgrade fixes (#143257) 2025-01-04 10:47:51 +00:00
test_maskedtensor.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_matmul_cuda.py wire torch._scaled_mm with fp4 operands to the cublas nvfp4 kernel (#148792) 2025-03-27 17:32:20 +00:00
test_meta.py [inductor] fix index.Tensor fallback (#144736) 2025-01-16 09:38:29 +00:00
test_metal.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_mkl_verbose.py
test_mkldnn_fusion.py [4/N] Apply py39 ruff and pyupgrade fixes (#143257) 2025-01-04 10:47:51 +00:00
test_mkldnn_verbose.py
test_mkldnn.py [BE][CI] bump ruff to 0.8.4 (#143753) 2024-12-24 12:24:10 +00:00
test_mobile_optimizer.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_model_exports_to_core_aten.py
test_module_tracker.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_modules.py Disable slow gradcheck for nn.Transformer ModuleInfo (#145531) 2025-01-25 00:58:03 +00:00
test_monitor.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_mps.py [BE] Suppress user_warnings while running opinfo tests (#150115) 2025-03-27 22:36:27 +00:00
test_multiprocessing_spawn.py Remove NO_MULTIPROCESSING_SPAWN checks (#146705) 2025-02-28 05:53:19 +00:00
test_multiprocessing.py Remove NO_MULTIPROCESSING_SPAWN checks (#146705) 2025-02-28 05:53:19 +00:00
test_namedtensor.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_namedtuple_return_api.py
test_native_functions.py [4/N] Apply py39 ruff and pyupgrade fixes (#143257) 2025-01-04 10:47:51 +00:00
test_native_mha.py [ROCm] Update to AOTriton 0.8b (#140172) 2024-12-06 21:45:18 +00:00
test_nestedtensor.py Introduce UserDefinedExceptionClassVariable (#146504) 2025-03-11 18:55:45 +00:00
test_nn.py [cuda] Add new faster gammabeta backward kernel (#148605) 2025-03-27 03:01:53 +00:00
test_nnapi.py [4/N] Apply py39 ruff and pyupgrade fixes (#143257) 2025-01-04 10:47:51 +00:00
test_numba_integration.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_numpy_interop.py [4/N] Apply py39 ruff and pyupgrade fixes (#143257) 2025-01-04 10:47:51 +00:00
test_openmp.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_ops_fwd_gradients.py
test_ops_gradients.py Enable more nightly tests on s390x (#148452) 2025-03-18 16:09:39 +00:00
test_ops_jit.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_ops.py [ARM] Fix bug in _ref_test_helper in test_ops and fix failing test on Aarch64 (#146597) 2025-02-25 14:15:10 +00:00
test_optim.py Enable more nightly tests on s390x (#148452) 2025-03-18 16:09:39 +00:00
test_out_dtype_op.py [Codemod][AddExplicitStrictExportArg] caffe2/test (#143688) 2024-12-27 07:58:44 +00:00
test_overrides.py Use std::string_view in tests (#146120) 2025-02-04 09:51:36 +00:00
test_package.py
test_per_overload_api.py
test_prims.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_proxy_tensor.py Use source hashing to generate consistent symbolic ids (#149665) 2025-03-28 05:36:32 +00:00
test_pruning_op.py
test_public_bindings.py Remove public_allowlist from TestPublicBindings.test_correct_module_names and ensure private_allowlist-ed things are actually private (#145620) 2025-01-27 17:30:02 +00:00
test_python_dispatch.py Delete torch._library.register_functional_op (#145110) 2025-01-18 00:58:25 +00:00
test_pytree.py Revert "[pytree] add APIs to determine a class is a namedtuple or PyStructSequence (#113257)" 2025-03-14 23:13:34 +00:00
test_quantization.py add torch.float4_e2m1fn_x2 to PyTorch (#148791) 2025-03-27 17:32:20 +00:00
test_reductions.py [4/N] Apply py39 ruff and pyupgrade fixes (#143257) 2025-01-04 10:47:51 +00:00
test_scatter_gather_ops.py
test_schema_check.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_segment_reductions.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_serialization.py Make torch.serialization.skip_data work with torch.load (#148018) 2025-03-06 12:04:46 +00:00
test_set_default_mobile_cpu_allocator.py
test_shape_ops.py [Quant] flip: throw runtime error for QUInt4x2 and QUInt2x4 input (#147430) 2025-02-25 03:47:40 +00:00
test_show_pickle.py
test_sort_and_select.py Fix linter F821 error (#146665) 2025-02-08 07:19:37 +00:00
test_sparse_csr.py [CUDA][SDPA] Compute reference in test_triton_scaled_dot_product_attention_block_size_16_cuda_float32 in float64 (#146461) 2025-02-06 23:28:56 +00:00
test_sparse_semi_structured.py [TEST][SPARSE] Simplify branching in test_cusparselt_backend (#148318) 2025-03-05 10:17:00 +00:00
test_sparse.py [4/N] Apply py39 ruff and pyupgrade fixes (#143257) 2025-01-04 10:47:51 +00:00
test_spectral_ops.py Re-add stft option to align window for center = false (#146379) 2025-02-06 14:07:13 +00:00
test_stateless.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_static_runtime.py [4/N] Apply py39 ruff and pyupgrade fixes (#143257) 2025-01-04 10:47:51 +00:00
test_subclass.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_sympy_utils.py [Inductor] Expand Identity ops prior to block pattern matching (#146000) 2025-02-08 18:11:53 +00:00
test_tensor_creation_ops.py [Inductor] Add input value checking to randint meta function (#147191) 2025-02-25 02:18:16 +00:00
test_tensorboard.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_tensorexpr_pybind.py
test_tensorexpr.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_testing.py Enable some tests on Windows (#146243) 2025-02-05 03:54:28 +00:00
test_throughput_benchmark.py Fix Throughputbenchmark issue (#144669) 2025-01-26 03:37:20 +00:00
test_torch.py Revert "Refactor test/test_torch.py by moving testcase to test_indexing.py (#148875)" 2025-03-11 15:27:25 +00:00
test_transformers_privateuse1.py Split test_transformers.py (#147441) 2025-02-26 11:54:24 +00:00
test_transformers.py [cuDNN][SDPA] cuDNN SDPA supports head_dim <= 256 on sm90 and sm100 as of 9.5.1+ (#149904) 2025-03-25 23:10:16 +00:00
test_type_hints.py Revert "Use absolute path path.resolve() -> path.absolute() (#129409)" 2025-01-04 14:17:20 +00:00
test_type_info.py
test_type_promotion.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_typing.py [4/N] Apply py39 ruff and pyupgrade fixes (#143257) 2025-01-04 10:47:51 +00:00
test_unary_ufuncs.py Enable some tests on Windows (#146243) 2025-02-05 03:54:28 +00:00
test_utils_config_module.py Add check that envvar configs are boolean (#145454) 2025-02-05 19:40:10 +00:00
test_utils_filelock.py filelock: Make waitcounter variant to use (#139816) 2024-12-12 01:18:34 +00:00
test_utils.py [utils] add try_import method for importing optional modules (#145528) 2025-01-25 00:14:07 +00:00
test_view_ops.py Fix overflow in checkInBoundsForStorage (#147352) 2025-02-27 15:48:50 +00:00
test_vulkan.py Fix unused Python variables in test/[e-z]* (#136964) 2024-12-18 23:02:30 +00:00
test_weak.py Consistently use load_torchbind_test_lib in tests (#148082) 2025-03-03 19:37:28 +00:00
test_xnnpack_integration.py [BE][Ez]: ISC001 Auto concatenate implicit one line strings (#146408) 2025-02-04 19:07:04 +00:00
test_xpu.py Fix test_device_memory_allocated (#147311) 2025-02-17 19:00:53 +00:00