From 79a258f4484f97fab954e699e5d2b5f2dae6548e Mon Sep 17 00:00:00 2001 From: Horace He Date: Wed, 19 May 2021 11:39:03 -0700 Subject: [PATCH] s/foward/forward/g (#58497) Summary: Annoying typo. Prompted by these profiling results: https://github.com/pytorch/pytorch/issues/56419#issuecomment-825787828 Pull Request resolved: https://github.com/pytorch/pytorch/pull/58497 Reviewed By: malfet Differential Revision: D28521081 Pulled By: Chillee fbshipit-source-id: ab91a2e167dd7d3387fd56106a6cff81f7a32f10 --- aten/src/ATen/native/mkl/SpectralOps.cpp | 2 +- .../parameter_server/trainers/TrainerBase.py | 2 +- benchmarks/tensorexpr/nnc.png | Bin 0 -> 54226 bytes docs/source/fx.rst | 2 +- test/jit/test_hooks.py | 4 ++-- test/jit/test_hooks_modules.py | 2 +- test/test_mobile_optimizer.py | 6 +++--- torch/csrc/jit/docs/serialization.md | 2 +- torch/csrc/jit/runtime/graph_executor.cpp | 4 ++-- .../distributed/nn/api/remote_module_test.py | 4 ++-- 10 files changed, 14 insertions(+), 14 deletions(-) create mode 100644 benchmarks/tensorexpr/nnc.png diff --git a/aten/src/ATen/native/mkl/SpectralOps.cpp b/aten/src/ATen/native/mkl/SpectralOps.cpp index a79c8a36752..896d3416b50 100644 --- a/aten/src/ATen/native/mkl/SpectralOps.cpp +++ b/aten/src/ATen/native/mkl/SpectralOps.cpp @@ -389,7 +389,7 @@ Tensor _fft_c2r_mkl(const Tensor& self, IntArrayRef dim, int64_t normalization, auto input = self; if (dim.size() > 1) { auto c2c_dims = dim.slice(0, dim.size() - 1); - input = _fft_c2c_mkl(self, c2c_dims, normalization, /*foward=*/false); + input = _fft_c2c_mkl(self, c2c_dims, normalization, /*forward=*/false); dim = dim.slice(dim.size() - 1); } diff --git a/benchmarks/distributed/rpc/parameter_server/trainers/TrainerBase.py b/benchmarks/distributed/rpc/parameter_server/trainers/TrainerBase.py index 5d17e6e84e0..d83b9874479 100644 --- a/benchmarks/distributed/rpc/parameter_server/trainers/TrainerBase.py +++ b/benchmarks/distributed/rpc/parameter_server/trainers/TrainerBase.py @@ -9,7 +9,7 @@ class TrainerBase(ABC): BATCH_LEVEL_METRIC = "batch_level_metric" BATCH_ALL = "batch_all" - FORWARD_METRIC = "foward_metric" + FORWARD_METRIC = "forward_metric" FORWARD_PASS = "forward_pass" BACKWARD_METRIC = "backward_metric" BACKWARD = "backward" diff --git a/benchmarks/tensorexpr/nnc.png b/benchmarks/tensorexpr/nnc.png new file mode 100644 index 0000000000000000000000000000000000000000..f2f33ccf0bee195d4fe86147b71f83b0eb50133d GIT binary patch literal 54226 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 I`1<|-0pFs32mk;8 literal 0 HcmV?d00001 diff --git a/docs/source/fx.rst b/docs/source/fx.rst index 33f33683411..60d2490100a 100644 --- a/docs/source/fx.rst +++ b/docs/source/fx.rst @@ -474,7 +474,7 @@ Debugging the Generated Code Because FX generates the ``forward()`` function on :class:`GraphModule`\s, using traditional debugging techniques like ``print`` statements or ``pdb`` is -not as straightfoward. Luckily, we have several techniques we can use +not as straightforward. Luckily, we have several techniques we can use for debugging the generated code. Use ``pdb`` diff --git a/test/jit/test_hooks.py b/test/jit/test_hooks.py index dd8b3e96f57..0c7cff56d5f 100644 --- a/test/jit/test_hooks.py +++ b/test/jit/test_hooks.py @@ -5,7 +5,7 @@ from typing import Tuple import torch from jit.test_hooks_modules import ( - ModuleDirectFowardSubmodCall, ModuleForwardSingleInput, + ModuleDirectforwardSubmodCall, ModuleForwardSingleInput, ModuleForwardTupleInput, create_forward_tuple_input, create_module_forward_multiple_inputs, create_module_forward_single_input, create_module_hook_return_nothing, @@ -184,7 +184,7 @@ class TestHooks(JitTestCase): self.assertNotEqual(m_scripted("a"), m_scripted.forward("a")) def test_submodule_direct_forward_invocation(self): - m_submod_forward_call = ModuleDirectFowardSubmodCall( + m_submod_forward_call = ModuleDirectforwardSubmodCall( "outer_mod_name", "inner_mod_name" ) m_submod_call = ModuleForwardSingleInput("outer_mod_name", "inner_mod_name") diff --git a/test/jit/test_hooks_modules.py b/test/jit/test_hooks_modules.py index c97890826ab..0297b34a448 100644 --- a/test/jit/test_hooks_modules.py +++ b/test/jit/test_hooks_modules.py @@ -46,7 +46,7 @@ class ModuleForwardSingleInput(torch.nn.Module): return self.submodule(input) -class ModuleDirectFowardSubmodCall(torch.nn.Module): +class ModuleDirectforwardSubmodCall(torch.nn.Module): def __init__(self, name: str, submodule_name: str): super().__init__() self.name = name diff --git a/test/test_mobile_optimizer.py b/test/test_mobile_optimizer.py index da439267263..78ebb550d02 100644 --- a/test/test_mobile_optimizer.py +++ b/test/test_mobile_optimizer.py @@ -254,12 +254,12 @@ class TestOptimizer(TestCase): FileCheck().check_count("prim::CallMethod[name=\"forward\"]", 2, exactly=True) \ .run(bn_no_forward_scripted_module.foo.graph) - bn_fold_no_foward_scripted_module = optimize_for_mobile(bn_no_forward_scripted_module, preserved_methods=['foo']) - self.assertEqual(len(torch.jit.export_opnames(bn_fold_no_foward_scripted_module)), 1) + bn_fold_no_forward_scripted_module = optimize_for_mobile(bn_no_forward_scripted_module, preserved_methods=['foo']) + self.assertEqual(len(torch.jit.export_opnames(bn_fold_no_forward_scripted_module)), 1) bn_input = torch.rand(1, 1, 6, 6) torch.testing.assert_allclose( bn_no_forward_scripted_module.foo(bn_input), - bn_fold_no_foward_scripted_module.foo(bn_input), + bn_fold_no_forward_scripted_module.foo(bn_input), rtol=1e-2, atol=1e-3) diff --git a/torch/csrc/jit/docs/serialization.md b/torch/csrc/jit/docs/serialization.md index b5187794e16..8c3461a9abe 100644 --- a/torch/csrc/jit/docs/serialization.md +++ b/torch/csrc/jit/docs/serialization.md @@ -374,7 +374,7 @@ object around in C++, all its code will stay around and methods will be invokable. **`Module`**: A view over a `ClassType` and the `Object` that holds its state. -Also responsible for turning unqualified names (e.g. `foward()`) into +Also responsible for turning unqualified names (e.g. `forward()`) into qualified ones for lookup in the owning `CompilationUnit` (e.g. `__torch__.MyModule.forward`). Owns the `Object`, which transitively owns the `CompilationUnit`. diff --git a/torch/csrc/jit/runtime/graph_executor.cpp b/torch/csrc/jit/runtime/graph_executor.cpp index 487efe20e3a..236e2712b82 100644 --- a/torch/csrc/jit/runtime/graph_executor.cpp +++ b/torch/csrc/jit/runtime/graph_executor.cpp @@ -370,8 +370,8 @@ struct DifferentiableGraphBackward : public autograd::Node { // to the output Variables if present. struct DifferentiableGraphOp { DifferentiableGraphOp(Gradient grad) - : f_ptr(std::make_shared(grad.f, "")), - legacy_f(grad.f, ""), + : f_ptr(std::make_shared(grad.f, "")), + legacy_f(grad.f, ""), grad(std::move(grad)), grad_executor(this->grad.df, ""), num_inputs(this->grad.f->inputs().size()), diff --git a/torch/testing/_internal/distributed/nn/api/remote_module_test.py b/torch/testing/_internal/distributed/nn/api/remote_module_test.py index 06e9c21ee59..b4236f3224c 100644 --- a/torch/testing/_internal/distributed/nn/api/remote_module_test.py +++ b/torch/testing/_internal/distributed/nn/api/remote_module_test.py @@ -496,7 +496,7 @@ class ThreeWorkersRemoteModuleTest(CommonRemoteModuleTest): self.assertFalse(attrs["is_scriptable"]) # Test the installed methods on worker1's can be initiated by worker2 over RPC layer. - # NOTE: In practice a remote module should be directly stored on the worker that runs ``forward``` or ``foward_async``, + # NOTE: In practice a remote module should be directly stored on the worker that runs ``forward``` or ``forward_async``, # not have another worker to initiate forward over the RPC layer. args = (torch.ones(1), 2, "3") ret1 = rpc.rpc_sync(dst_worker2_name, remote_forward, (remote_module, args)) @@ -537,7 +537,7 @@ class ThreeWorkersRemoteModuleTest(CommonRemoteModuleTest): self.assertFalse(attrs["is_scriptable"]) # Test the installed methods on worker1's can be initiated by worker2 over RPC layer. - # NOTE: In practice a remote module should be directly stored on the worker that runs ``forward``` or ``foward_async``, + # NOTE: In practice a remote module should be directly stored on the worker that runs ``forward``` or ``forward_async``, # not have another worker to initiate forward over the RPC layer. args = (torch.ones(1), 2, "3") ret1 = rpc.rpc_sync(dst_worker2_name, remote_forward, (remote_module, args))