[Fix] Fix some typos (#11503)

Fix some typos in src/.

Co-authored-by: driazati <driazati@users.noreply.github.com>
diff --git a/NEWS.md b/NEWS.md
index 90bcfbf..85dc0fb 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1262,7 +1262,7 @@
 * Fixed div by zero core dump. Fixed rounding intrinsics on int crash #5026
 * Test case modified for int type #5012
 * Bug Fix for ARM CPUs. Lower strict assumption. #5063
-* Triage the testcases to fit the the new namespaces #5071
+* Triage the testcases to fit the new namespaces #5071
 * Add colors to `compute_at` edges and thread/block indices. #5111
 * Temporary fix to the stack overflow issue in autotvm task extraction #5019
 * Fix compilation of If-Elses #5040
@@ -2223,7 +2223,7 @@
 ### Bug Fixes
 * [RELAY] Fix `get_int_tuple`. (#2691)
 * [ARITH] Select support for integer set analysis. (#2687)
-* [Relay] Fix error in ANF (too agressively inline atomic expression and create free variable). (#2665)
+* [Relay] Fix error in ANF (too aggressively inline atomic expression and create free variable). (#2665)
 * [Hybrid Script] Fix name conflict and attached scope problem. (#2649)
 * [Relay] Fix ANF for reference and pattern matching. (#2637)
 * [Relay] Fix fusion bug when call symbol that is not an operator. (#2630)
diff --git a/apps/ios_rpc/tvmrpc/TVMRuntime.mm b/apps/ios_rpc/tvmrpc/TVMRuntime.mm
index 19c629f..3225b85 100644
--- a/apps/ios_rpc/tvmrpc/TVMRuntime.mm
+++ b/apps/ios_rpc/tvmrpc/TVMRuntime.mm
@@ -31,7 +31,7 @@
 #include <../../../src/runtime/file_utils.h>
 
 #if defined(USE_CUSTOM_DSO_LOADER) && USE_CUSTOM_DSO_LOADER == 1
-// internal TVM header to achive Library class
+// internal TVM header to achieve Library class
 #include <../../../src/runtime/library_module.h>
 #include <custom_dlfcn.h>
 #endif
diff --git a/apps/topi_recipe/README.md b/apps/topi_recipe/README.md
index 06c52c6..e0c61dd 100644
--- a/apps/topi_recipe/README.md
+++ b/apps/topi_recipe/README.md
@@ -26,7 +26,7 @@
 
 ## Guidelines
 - Use numpy-style naming convention for known ops
-- Seperate operator declaration from schedule when possible.
+- Separate operator declaration from schedule when possible.
   - This can be inconvenient but enables more general scheduling across ops.
   - We can always recover the tensors from its outputs by traversing the tree.
 - Deliberately assert the requirements
diff --git a/cmake/modules/HexagonSDK.cmake b/cmake/modules/HexagonSDK.cmake
index f984e9d..173f0f3 100644
--- a/cmake/modules/HexagonSDK.cmake
+++ b/cmake/modules/HexagonSDK.cmake
@@ -44,7 +44,7 @@
     if(_out_path)
       list(APPEND _out_paths "${_out_path}")
     else()
-      set_parent(${_ouput_variable} "${_path}-NOTFOUND")
+      set_parent(${_output_variable} "${_path}-NOTFOUND")
       return()
     endif()
   endforeach()
diff --git a/docs/arch/pass_infra.rst b/docs/arch/pass_infra.rst
index 9e76251..1e320dc 100644
--- a/docs/arch/pass_infra.rst
+++ b/docs/arch/pass_infra.rst
@@ -51,7 +51,7 @@
 these modern frameworks are able to conveniently add modules/layers to their
 containers and build up neural networks easily.
 
-The design of the Relay pass infra is largely inspired by the the hierarchical
+The design of the Relay pass infra is largely inspired by the hierarchical
 pass manager used in LLVM and the block-style containers used in the popular
 deep learning frameworks. The major goals of the pass infra include:
 
diff --git a/docs/arch/security.rst b/docs/arch/security.rst
index 22dbfc3..c2603dd 100644
--- a/docs/arch/security.rst
+++ b/docs/arch/security.rst
@@ -28,7 +28,7 @@
 
 Please note that the security mailing list should only be used for reporting undisclosed security vulnerabilities and managing the process of fixing such vulnerabilities. We cannot accept regular bug reports or other queries at this address. All mail sent to this address that does not relate to an undisclosed security problem in our source code will be ignored.
 Questions about: if a vulnerability applies to your particular application obtaining further information on a published vulnerability availability of patches
-and/or new releases should be addressed to to the user discuss forum.
+and/or new releases should be addressed to the user Discuss forum.
 
 The private security mailing address is: `security@apache.org <security@apache.org>`_.
 Feel free to consult the `Apache Security guide <https://www.apache.org/security/>`_.
diff --git a/docs/how_to/deploy/index.rst b/docs/how_to/deploy/index.rst
index 73269e8..f288834 100644
--- a/docs/how_to/deploy/index.rst
+++ b/docs/how_to/deploy/index.rst
@@ -70,7 +70,7 @@
 
 A model (optimized or not by TVM) can be cross compiled by TVM for
 different architectures such as ``aarch64`` on a ``x64_64`` host. Once the model
-is cross compiled it is neccessary to have a runtime compatible with the target
+is cross compiled it is necessary to have a runtime compatible with the target
 architecture to be able to run the cross compiled model.
 
 
diff --git a/docs/index.rst b/docs/index.rst
index a264c9b..95b1937 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -18,7 +18,7 @@
 Apache TVM Documentation
 ========================
 
-Welcome to the the documentation for Apache TVM, a deep learning compiler that
+Welcome to the documentation for Apache TVM, a deep learning compiler that
 enables access to high-performance machine learning anywhere for everyone.
 TVM's diverse community of hardware vendors, compiler engineers and ML
 researchers work together to build a unified, programmable software stack, that
diff --git a/docs/reference/langref/hybrid_script.rst b/docs/reference/langref/hybrid_script.rst
index 1def162..eeed07a 100644
--- a/docs/reference/langref/hybrid_script.rst
+++ b/docs/reference/langref/hybrid_script.rst
@@ -110,7 +110,7 @@
 
 Here we use ``range`` aka ``serial``, ``unroll``, ``parallel``, and ``vectorize``,
 these **4** keywords to annotate the corresponding types of for loops.
-The the usage is roughly the same as Python standard ``range``.
+The usage is roughly the same as Python standard ``range``.
 
 Besides all the loop types supported in Halide, ``const_range`` is supported for some specific conditions.
 Sometimes, ``tvm.container.Array`` is desired to pass as an argument, but in TVM-HalideIR, there is no
diff --git a/gallery/how_to/optimize_operators/opt_gemm.py b/gallery/how_to/optimize_operators/opt_gemm.py
index d2ec711..249a4e2 100644
--- a/gallery/how_to/optimize_operators/opt_gemm.py
+++ b/gallery/how_to/optimize_operators/opt_gemm.py
@@ -346,7 +346,7 @@
 ###################################################################################################
 # Parallel
 # --------
-# Futhermore, we can also utilize multi-core processors to do the thread-level parallelization.
+# Furthermore, we can also utilize multi-core processors to do the thread-level parallelization.
 
 s = te.create_schedule(C.op)
 
diff --git a/include/tvm/ir/type.h b/include/tvm/ir/type.h
index 5f2c4de..579061e 100644
--- a/include/tvm/ir/type.h
+++ b/include/tvm/ir/type.h
@@ -425,7 +425,7 @@
   Array<TypeVar> type_params;
   /*!
    * \brief potential constraint the type need to obey
-   * \note this field is reserved for futher purposes.
+   * \note this field is reserved for further purposes.
    */
   Array<TypeConstraint> type_constraints;
 
diff --git a/include/tvm/meta_schedule/cost_model.h b/include/tvm/meta_schedule/cost_model.h
index 91d19c4..db0f896 100644
--- a/include/tvm/meta_schedule/cost_model.h
+++ b/include/tvm/meta_schedule/cost_model.h
@@ -105,7 +105,7 @@
    * \brief Predict the running results of given measure candidates.
    * \param context The tuning context.
    * \param candidates The measure candidates.
-   * \param p_addr The address to save the the estimated running results.
+   * \param p_addr The address to save the estimated running results.
    */
   using FPredict = runtime::TypedPackedFunc<void(const TuneContext&, const Array<MeasureCandidate>&,
                                                  void* p_addr)>;
diff --git a/include/tvm/relay/transform.h b/include/tvm/relay/transform.h
index b37d0f8..cdea8e8 100644
--- a/include/tvm/relay/transform.h
+++ b/include/tvm/relay/transform.h
@@ -125,7 +125,7 @@
 TVM_DLL Pass SplitArgs(int max_function_args);
 
 /*!
- * \brief Fuse operations into expr into seperate functions.
+ * \brief Fuse operations into expr into separate functions.
  *
  * \param fuse_opt_level Optimization level. If it is -1 it will be inferred from pass context.
  *
diff --git a/include/tvm/runtime/c_backend_api.h b/include/tvm/runtime/c_backend_api.h
index bb6ff1d..8fde594 100644
--- a/include/tvm/runtime/c_backend_api.h
+++ b/include/tvm/runtime/c_backend_api.h
@@ -40,7 +40,7 @@
  * \param args The arguments
  * \param type_codes The type codes of the arguments
  * \param num_args Number of arguments.
- * \param out_ret_value The output value of the the return value.
+ * \param out_ret_value The output value of the return value.
  * \param out_ret_tcode The output type code of the return value.
  * \param resource_handle Pointer to associated resource.
  *
diff --git a/include/tvm/runtime/crt/module.h b/include/tvm/runtime/crt/module.h
index bcbae32..2527667 100644
--- a/include/tvm/runtime/crt/module.h
+++ b/include/tvm/runtime/crt/module.h
@@ -42,7 +42,7 @@
 /*!
  * \brief Create a new module handle from the given TVMModule instance.
  * \param mod The module instance to register.
- * \param out_handle Pointer to recieve the newly-minted handle for this module.
+ * \param out_handle Pointer to receive the newly-minted handle for this module.
  * \return 0 on success, non-zero on error.
  */
 int TVMModCreateFromCModule(const TVMModule* mod, TVMModuleHandle* out_handle);
diff --git a/include/tvm/runtime/vm/vm.h b/include/tvm/runtime/vm/vm.h
index f58df7d..5a72a99 100644
--- a/include/tvm/runtime/vm/vm.h
+++ b/include/tvm/runtime/vm/vm.h
@@ -334,7 +334,7 @@
   /*!
    * \brief Set one input tensor with given index to set of input tensors if need copy to given
    * device. \param tensors the input tensors set (destination) \param tensor some tensor (not
-   * neccessary DLTensor). \param index The input tensor index. \param dev device to copy if need.
+   * necessary DLTensor). \param index The input tensor index. \param dev device to copy if need.
    */
   void SetInputTensorWithIndex(std::vector<ObjectRef>& tensors,  // NOLINT(*)
                                const TVMArgValue& tensor, int index, Device dev);
diff --git a/include/tvm/target/target.h b/include/tvm/target/target.h
index fca2839..6ad213f 100644
--- a/include/tvm/target/target.h
+++ b/include/tvm/target/target.h
@@ -49,7 +49,7 @@
   TargetKind kind;
   /*! \brief Target host information, must be Target type */
   Optional<ObjectRef> host;
-  /*! \brief Tag of the the target, can be empty */
+  /*! \brief Tag of the target, can be empty */
   String tag;
   /*! \brief Keys for this target */
   Array<String> keys;
diff --git a/include/tvm/te/schedule.h b/include/tvm/te/schedule.h
index 8e637b4..5d88793 100644
--- a/include/tvm/te/schedule.h
+++ b/include/tvm/te/schedule.h
@@ -364,7 +364,7 @@
                             const Array<Operation>& readers);
   /*!
    * \brief Create a cache write tensor for producing tensor.
-   *  The the tensor will take over body of original tensor op.
+   *  The tensor will take over body of original tensor op.
    *
    *  This function can be used to do data layout transformation.
    *  If there is a split/fuse/reorder on the data parallel axis of tensor
@@ -381,7 +381,7 @@
   TVM_DLL Array<Tensor> cache_write(const Array<Tensor>& tensor, const std::string& scope);
   /*!
    * \brief Create a cache write tensor for producing tensor.
-   *  The the tensor will take over body of original tensor op.
+   *  The tensor will take over body of original tensor op.
    *
    *  This function can be used to do data layout transformation.
    *  If there is a split/fuse/reorder on the data parallel axis of tensor
diff --git a/include/tvm/te/schedule_pass.h b/include/tvm/te/schedule_pass.h
index 0ba7421..3f9da5f 100644
--- a/include/tvm/te/schedule_pass.h
+++ b/include/tvm/te/schedule_pass.h
@@ -95,7 +95,7 @@
  *  Perform this translation before running any TIR optimizations.
  *
  *  List of actions taken by the function:
- *  - Remove occurences of te::Tensor, te::Operation in the IR
+ *  - Remove occurrences of te::Tensor, te::Operation in the IR
  *    and replace them by corresponding IR nodes via tir::Buffer.
  *  - Add annotation of extern buffers using the buffer_map field
  *    in the PrimFunc type.
diff --git a/include/tvm/tir/op.h b/include/tvm/tir/op.h
index 9460330..b4c5d45 100644
--- a/include/tvm/tir/op.h
+++ b/include/tvm/tir/op.h
@@ -537,7 +537,7 @@
 TVM_DLL PrimExpr isinf(PrimExpr x, Span span = Span());
 
 /*!
- * \brief sum of of source expression over axis
+ * \brief sum of source expression over axis
  * \param source The source expression.
  * \param axis List of iteration variables that will be used for reduction.
  * \param init The value with which to initialize the output.
@@ -548,7 +548,7 @@
                      Span span = Span());
 
 /*!
- * \brief logical And of of source expression over axis
+ * \brief logical And of source expression over axis
  * \param source The source expression.
  * \param axis List of iteration variables that will be used for reduction.
  * \param init The value with which to initialize the output.
@@ -558,7 +558,7 @@
                      Span span = Span());
 
 /*!
- * \brief logical Or of of source expression over axis
+ * \brief logical Or of source expression over axis
  * \param source The source expression.
  * \param axis List of iteration variables that will be used for reduction.
  * \param init The value with which to initialize the output.
@@ -569,7 +569,7 @@
                      Span span = Span());
 
 /*!
- * \brief max of of source expression over axis
+ * \brief max of source expression over axis
  * \param source The source expression.
  * \param axis List of iteration variables that will be used for reduction.
  * \param init The value with which to initialize the output.
@@ -580,7 +580,7 @@
                      Span span = Span());
 
 /*!
- * \brief max of of source expression over axis
+ * \brief max of source expression over axis
  * \param source The source expression.
  * \param axis List of iteration variables that will be used for reduction.
  * \param init The value with which to initialize the output.
@@ -591,7 +591,7 @@
                      Span span = Span());
 
 /*!
- * \brief product of of source expression over axis
+ * \brief product of source expression over axis
  * \param source The source expression.
  * \param axis List of iteration variables that will be used for reduction.
  * \param init The value with which to initialize the output.
diff --git a/include/tvm/topi/transform.h b/include/tvm/topi/transform.h
index 86a8856..81935dd 100644
--- a/include/tvm/topi/transform.h
+++ b/include/tvm/topi/transform.h
@@ -641,7 +641,7 @@
  *
  * \param x The input tensor
  * \param begin The indices to begin with in the slicing
- * \param end Indicies indicating end of the slice
+ * \param end Indices indicating end of the slice
  * \param strides Specifies the stride values, it can be negative
  * in that case, the input tensor will be reversed in that particular axis
  * \param name The name of the operation
@@ -698,7 +698,7 @@
  *
  * \param x The input tensor
  * \param begin The indices to begin with in the slicing
- * \param end Indicies indicating end of the slice
+ * \param end Indices indicating end of the slice
  * \param strides Specifies the stride values, it can be negative
  * in that case, the input tensor will be reversed in that particular axis
  * \param name The name of the operation
@@ -729,7 +729,7 @@
  *
  * \param ishape The input tensor shape
  * \param begin The indices to begin with in the slicing
- * \param end Indicies indicating end of the slice
+ * \param end Indices indicating end of the slice
  * \param strides Specifies the stride values, it can be negative
  * in that case, the input tensor will be reversed in that particular axis
  * \param axes Axes along which slicing is applied. When it is specified, the length of begin, end,
@@ -755,7 +755,7 @@
  *
  * \param x The input tensor
  * \param begin The indices to begin with in the slicing
- * \param end Indicies indicating end of the slice
+ * \param end Indices indicating end of the slice
  * \param strides Specifies the stride values, it can be negative
  * in that case, the input tensor will be reversed in that particular axis
  * \param axes Axes along which slicing is applied. When it is specified, the length of begin, end,
@@ -803,7 +803,7 @@
  *
  * \param x The input tensor
  * \param begin The indices to begin with in the slicing
- * \param end Indicies indicating end of the slice
+ * \param end Indices indicating end of the slice
  * \param strides Specifies the stride values, it can be negative
  * in that case, the input tensor will be reversed in that particular axis
  * \param slice_mode Specifies the slice mode
diff --git a/python/tvm/_ffi/_ctypes/packed_func.py b/python/tvm/_ffi/_ctypes/packed_func.py
index bf763a1..ee6ed05 100644
--- a/python/tvm/_ffi/_ctypes/packed_func.py
+++ b/python/tvm/_ffi/_ctypes/packed_func.py
@@ -39,7 +39,7 @@
 
 
 def _ctypes_free_resource(rhandle):
-    """callback to free resources when it it not needed."""
+    """callback to free resources when it is not needed."""
     pyobj = ctypes.cast(rhandle, ctypes.py_object)
     ctypes.pythonapi.Py_DecRef(pyobj)
 
diff --git a/python/tvm/_ffi/runtime_ctypes.py b/python/tvm/_ffi/runtime_ctypes.py
index 0b14c80..d871fff 100644
--- a/python/tvm/_ffi/runtime_ctypes.py
+++ b/python/tvm/_ffi/runtime_ctypes.py
@@ -283,7 +283,7 @@
     def warp_size(self):
         """Number of threads that execute concurrently.
 
-        Returns device value for for cuda, rocm, and vulkan.  Returns
+        Returns device value for cuda, rocm, and vulkan.  Returns
         1 for metal and opencl devices, regardless of the physical
         device.  Returns remote device value for RPC devices.  Returns
         None for all other devices.
diff --git a/python/tvm/contrib/cutlass/build.py b/python/tvm/contrib/cutlass/build.py
index 838c0bd..68d8fe7 100644
--- a/python/tvm/contrib/cutlass/build.py
+++ b/python/tvm/contrib/cutlass/build.py
@@ -324,7 +324,7 @@
 
     split_k_slices : list of int
         Split factor candidates for split-K GEMM. If split-K > 1, the GEMM K-loop is computed in
-        parallel accross split-K blocks, and a seperate global reduction kernel is launched to
+        parallel across split-K blocks, and a separate global reduction kernel is launched to
         accumulate partial reductions. The profiler will pick the best split-k factor from the
         given candidate list. Note that the larger split-K factor requires a larger workspace.
         Currently, parallel split-k has been tested only for wgrad. For GEMM and other conv2d
diff --git a/python/tvm/contrib/ethosu/cascader/device_config.py b/python/tvm/contrib/ethosu/cascader/device_config.py
index f654a25..7c38c4a 100644
--- a/python/tvm/contrib/ethosu/cascader/device_config.py
+++ b/python/tvm/contrib/ethosu/cascader/device_config.py
@@ -155,7 +155,7 @@
         ifm_dtype: str
             Datatype of the Input Feature Map tensor (IFM)
         ofm_dtype: str
-            Datatype of the Ouput Feature Map tensor (OFM)
+            Datatype of the Output Feature Map tensor (OFM)
         activation : str
             The activation function to use.
                 "NONE" - no activation function.
diff --git a/python/tvm/contrib/pipeline_executor_build.py b/python/tvm/contrib/pipeline_executor_build.py
index 324383a..37565f0 100644
--- a/python/tvm/contrib/pipeline_executor_build.py
+++ b/python/tvm/contrib/pipeline_executor_build.py
@@ -586,7 +586,7 @@
                             dep_item["input_name"] = dname
                         dep_conf.append(dep_item)
 
-                # The value of ouput_idx start from 0.
+                # The value of output_idx start from 0.
                 output["output_idx"] = int(binding.name)
                 output["dependencies"] = dep_conf
                 output_conf.append(output)
diff --git a/python/tvm/driver/tvmc/micro.py b/python/tvm/driver/tvmc/micro.py
index fdaffac..b558075 100644
--- a/python/tvm/driver/tvmc/micro.py
+++ b/python/tvm/driver/tvmc/micro.py
@@ -266,7 +266,7 @@
     try:
         project.generate_project_from_mlf(template_dir, project_dir, mlf_path, options)
     except ServerError as error:
-        print("The following error occured on the Project API server side: \n", error)
+        print("The following error occurred on the Project API server side: \n", error)
         sys.exit(1)
 
 
@@ -292,7 +292,7 @@
         prj = project.GeneratedProject.from_directory(project_dir, options=options)
         prj.build()
     except ServerError as error:
-        print("The following error occured on the Project API server side: ", error)
+        print("The following error occurred on the Project API server side: ", error)
         sys.exit(1)
 
 
@@ -310,5 +310,5 @@
         prj = project.GeneratedProject.from_directory(project_dir, options=options)
         prj.flash()
     except ServerError as error:
-        print("The following error occured on the Project API server side: ", error)
+        print("The following error occurred on the Project API server side: ", error)
         sys.exit(1)
diff --git a/python/tvm/error.py b/python/tvm/error.py
index 9755270..f3f8b71 100644
--- a/python/tvm/error.py
+++ b/python/tvm/error.py
@@ -17,7 +17,7 @@
 """Structured error classes in TVM.
 
 Each error class takes an error message as its input.
-See the example sections for for suggested message conventions.
+See the example sections for suggested message conventions.
 To make the code more readable, we recommended developers to
 copy the examples and raise errors with the same message convention.
 
diff --git a/python/tvm/ir/base.py b/python/tvm/ir/base.py
index 5b26d5e..c6b30d3 100644
--- a/python/tvm/ir/base.py
+++ b/python/tvm/ir/base.py
@@ -294,7 +294,7 @@
 
     map_free_vars : bool
         If map_free_vars is set to true, we will hash free variables
-        by the order of their occurences. Otherwise, we will hash by
+        by the order of their occurrences. Otherwise, we will hash by
         their in-memory pointer address.
 
     Return
diff --git a/python/tvm/ir/diagnostics/__init__.py b/python/tvm/ir/diagnostics/__init__.py
index 3a6402c..c4d4fcc 100644
--- a/python/tvm/ir/diagnostics/__init__.py
+++ b/python/tvm/ir/diagnostics/__init__.py
@@ -29,7 +29,7 @@
 
 def get_renderer():
     """
-    Get the the diagnostic renderer.
+    Get the diagnostic renderer.
 
     Returns
     -------
diff --git a/python/tvm/relay/backend/contrib/ethosu/legalize.py b/python/tvm/relay/backend/contrib/ethosu/legalize.py
index 77ef51e..e261f12 100644
--- a/python/tvm/relay/backend/contrib/ethosu/legalize.py
+++ b/python/tvm/relay/backend/contrib/ethosu/legalize.py
@@ -974,7 +974,7 @@
 
 
 class MeanRewriter(DFPatternCallback):
-    """Convert ethosu.mean composite functions to to an equivalent legalization:
+    """Convert ethosu.mean composite functions to an equivalent legalization:
     - Case 1 (axis == [1, 2] and keepsdims == True):
         ethosu_depthwise_conv2d + ethosu_binary_elementwise
     - Case 2 (ifm qparams == ofm qparams): ethosu_pooling
diff --git a/python/tvm/relay/frontend/caffe.py b/python/tvm/relay/frontend/caffe.py
index 2d9f44e..571e07c 100644
--- a/python/tvm/relay/frontend/caffe.py
+++ b/python/tvm/relay/frontend/caffe.py
@@ -885,7 +885,7 @@
 
 
 def _rebuild_layers(predict_layer):
-    """Rebuild caffe layer. If the the caffe net include in-place layers, repalce its top
+    """Rebuild caffe layer. If the caffe net include in-place layers, repalce its top
     with its name and update the bottom of other layer that is related to it.
     """
     # dict of input name that will be changed to new name
diff --git a/python/tvm/relay/frontend/onnx.py b/python/tvm/relay/frontend/onnx.py
index daa629e..84a5fc3 100644
--- a/python/tvm/relay/frontend/onnx.py
+++ b/python/tvm/relay/frontend/onnx.py
@@ -2018,7 +2018,7 @@
 
 
 def normalize_gather_indices(data, indices, axis):
-    """Make sure gather indicies aren't negative"""
+    """Make sure gather indices aren't negative"""
     ind_dtype = infer_type(indices).checked_type.dtype
     # Normalize the indices to a positive range
     s = _op.take(_op.shape_of(data, dtype=ind_dtype), _op.const(axis, dtype="int64"))
diff --git a/python/tvm/relay/frontend/qnn_torch.py b/python/tvm/relay/frontend/qnn_torch.py
index 74d5e2e..c2e233d 100644
--- a/python/tvm/relay/frontend/qnn_torch.py
+++ b/python/tvm/relay/frontend/qnn_torch.py
@@ -108,7 +108,7 @@
 
 
 def get_weight_quant_params(script_module, packed_param_names):
-    """Retrive and unpack weight parameters from quantized modules"""
+    """Retrieve and unpack weight parameters from quantized modules"""
     import torch
 
     param_name = "_packed_params"
diff --git a/python/tvm/relay/op/_transform.py b/python/tvm/relay/op/_transform.py
index 951de06..5b7e342 100644
--- a/python/tvm/relay/op/_transform.py
+++ b/python/tvm/relay/op/_transform.py
@@ -568,12 +568,12 @@
     batch_dims = get_const_int(attrs.batch_dims)
     data_ndim = int(inputs[0].shape[0])
     if inputs[1].shape:
-        indicies_ndim = int(inputs[1].shape[0])
+        indices_ndim = int(inputs[1].shape[0])
     if axis < 0:
         axis += data_ndim
     assert 0 <= axis < data_ndim
     if batch_dims < 0:
-        batch_dims += indicies_ndim
+        batch_dims += indices_ndim
     return [_take_with_axis_shape_func(*inputs, convert(axis), convert(batch_dims), out_ndims[0])]
 
 
diff --git a/python/tvm/relay/op/algorithm.py b/python/tvm/relay/op/algorithm.py
index 809a906..9be6215 100644
--- a/python/tvm/relay/op/algorithm.py
+++ b/python/tvm/relay/op/algorithm.py
@@ -45,7 +45,7 @@
 
 
 def argsort(data, axis=-1, is_ascend=1, dtype="int32"):
-    """Performs sorting along the given axis and returns an array of indicies
+    """Performs sorting along the given axis and returns an array of indices
     having same shape as an input array that index data in sorted order.
 
     Parameters
diff --git a/python/tvm/rpc/minrpc.py b/python/tvm/rpc/minrpc.py
index c86e77b..32c1fdc 100644
--- a/python/tvm/rpc/minrpc.py
+++ b/python/tvm/rpc/minrpc.py
@@ -70,7 +70,7 @@
     options = ["-std=c++17"]
     # Make sure the rpath to the libtvm is set so we can do local tests.
     # Note that however, this approach won't work on remote.
-    # Always recommend to to link statically.
+    # Always recommend to link statically.
     options += ["-Wl,-rpath=" + runtime_dir]
     options += ["-I" + path for path in libinfo.find_include_path()]
     options += ["-I" + minrpc_dir]
diff --git a/python/tvm/rpc/proxy.py b/python/tvm/rpc/proxy.py
index c3b0056..50aa5a7 100644
--- a/python/tvm/rpc/proxy.py
+++ b/python/tvm/rpc/proxy.py
@@ -568,7 +568,7 @@
 
 
 class Proxy(object):
-    """Start RPC proxy server on a seperate process.
+    """Start RPC proxy server on a separate process.
 
     Python implementation based on PopenWorker.
 
diff --git a/python/tvm/script/parser.py b/python/tvm/script/parser.py
index 908af08..e9b4286 100644
--- a/python/tvm/script/parser.py
+++ b/python/tvm/script/parser.py
@@ -604,7 +604,7 @@
                     out = func(*args)
                 except Exception as e:
                     self.report_error(
-                        "Error occured when invoking the function "
+                        "Error occurred when invoking the function "
                         + func.__name__
                         + ": \n"
                         + str(e),
diff --git a/python/tvm/target/tag.py b/python/tvm/target/tag.py
index 97cbf1e..db3ed41 100644
--- a/python/tvm/target/tag.py
+++ b/python/tvm/target/tag.py
@@ -26,7 +26,7 @@
     Returns
     -------
     tag_dict : Optional[Dict[str, Target]]
-        The dict of tags mapping each tag name to to its corresponding target.
+        The dict of tags mapping each tag name to its corresponding target.
         None if TVM is built in runtime-only mode.
     """
     if hasattr(_ffi_api, "TargetTagListTags"):
diff --git a/python/tvm/te/operation.py b/python/tvm/te/operation.py
index b8e43c0..8da78a5 100644
--- a/python/tvm/te/operation.py
+++ b/python/tvm/te/operation.py
@@ -187,7 +187,7 @@
     Returns
     -------
     tensor: Tensor or list of Tensors
-        The created tensor or tuple of tensors it it contains multiple outputs.
+        The created tensor or tuple of tensors contains multiple outputs.
 
     Example
     -------
@@ -282,7 +282,7 @@
     Returns
     -------
     tensor: Tensor or list of Tensors
-        The created tensor or tuple of tensors it it contains multiple outputs.
+        The created tensor or tuple of tensors contains multiple outputs.
 
     Example
     -------
diff --git a/python/tvm/tir/op.py b/python/tvm/tir/op.py
index 19ce4f4..7ab1f3a 100644
--- a/python/tvm/tir/op.py
+++ b/python/tvm/tir/op.py
@@ -105,7 +105,7 @@
     The argument is the corresponding POD type when Expr is presented.
 
     When the argument is Buffer, the corresponding PackedFunc
-    will recieve an TVMArrayHandle whose content is valid during the callback period.
+    will receive an TVMArrayHandle whose content is valid during the callback period.
     If the PackedFunc is a python callback, then the corresponding argument is NDArray.
 
     Parameters
diff --git a/python/tvm/tir/usmp/utils.py b/python/tvm/tir/usmp/utils.py
index 024922e..8347834 100644
--- a/python/tvm/tir/usmp/utils.py
+++ b/python/tvm/tir/usmp/utils.py
@@ -78,7 +78,7 @@
         )
 
     def set_conflicts(self, conflicts: list):
-        """Sets the the conflicting array of buffer info objects"""
+        """Sets the conflicting array of buffer info objects"""
         _ffi_api.BufferInfoSetConflicts(self, conflicts)
 
 
diff --git a/python/tvm/topi/arm_cpu/conv2d_alter_op.py b/python/tvm/topi/arm_cpu/conv2d_alter_op.py
index 728e0db..90461f0 100644
--- a/python/tvm/topi/arm_cpu/conv2d_alter_op.py
+++ b/python/tvm/topi/arm_cpu/conv2d_alter_op.py
@@ -211,7 +211,7 @@
         new_attrs["channels"] = CO
 
         # pre-compute winograd_nnpack transform
-        # for winograd_nnpack_fp16, the the precompute prune pass must run on device,
+        # for winograd_nnpack_fp16, the precompute prune pass must run on device,
         # where float16 is supported
         weight_dtype = "float32"
         weight_expr = inputs[1]
diff --git a/python/tvm/topi/arm_cpu/tensor_intrin.py b/python/tvm/topi/arm_cpu/tensor_intrin.py
index e27d00f..700639c 100644
--- a/python/tvm/topi/arm_cpu/tensor_intrin.py
+++ b/python/tvm/topi/arm_cpu/tensor_intrin.py
@@ -860,7 +860,7 @@
     dtype : str, {"uint8", "int8"}
         Whether it works on unsigned int or signed int
     rows : int
-        Number of of the output rows "n"
+        Number of the output rows "n"
 
     Returns
     -------
diff --git a/python/tvm/topi/cuda/sort.py b/python/tvm/topi/cuda/sort.py
index b23c3db..24b46f9 100644
--- a/python/tvm/topi/cuda/sort.py
+++ b/python/tvm/topi/cuda/sort.py
@@ -736,7 +736,7 @@
 
 
 def argsort(data, axis=-1, is_ascend=1, dtype="float32", ret_type="indices"):
-    """Performs sorting along the given axis and returns an array of indicies
+    """Performs sorting along the given axis and returns an array of indices
     having same shape as an input array that index data in sorted order.
 
     Parameters
@@ -803,7 +803,7 @@
 
 
 def argsort_thrust(data, axis=-1, is_ascend=1, dtype="float32", ret_type="indices"):
-    """Performs sorting along the given axis and returns an array of indicies
+    """Performs sorting along the given axis and returns an array of indices
     having same shape as an input array that index data in sorted order.
 
     Parameters
diff --git a/python/tvm/topi/cuda/sparse.py b/python/tvm/topi/cuda/sparse.py
index 8bfc803..6ee4f47 100644
--- a/python/tvm/topi/cuda/sparse.py
+++ b/python/tvm/topi/cuda/sparse.py
@@ -131,8 +131,8 @@
         # pylint: disable=invalid-name, simplifiable-if-statement
         # TODO(tkonolige): use tensorcores for block multiply
         # TODO(tkonolige): use vectorize on loads
-        # TODO(tkonolige): seperate implementation if M is small
-        # TODO(tkonolige): seperate implementation for large block sizes
+        # TODO(tkonolige): separate implementation if M is small
+        # TODO(tkonolige): separate implementation for large block sizes
         ib = tvm.tir.ir_builder.create()
 
         if tvm.target.Target.current(allow_none=False).kind.name == "cuda":
diff --git a/python/tvm/topi/cuda/unique.py b/python/tvm/topi/cuda/unique.py
index 8f78cc5..9b16bd6 100644
--- a/python/tvm/topi/cuda/unique.py
+++ b/python/tvm/topi/cuda/unique.py
@@ -144,7 +144,7 @@
         A buffer that stores the unique elements.
 
     inverse_indices : Buffer
-        A buffer that stores the the index of each input data element in the unique element array.
+        A buffer that stores the index of each input data element in the unique element array.
 
     counts (optional) : Buffer
         A buffer that stores the count of each unique element.
diff --git a/python/tvm/topi/transform.py b/python/tvm/topi/transform.py
index e12f80e..44263e1 100644
--- a/python/tvm/topi/transform.py
+++ b/python/tvm/topi/transform.py
@@ -183,7 +183,7 @@
         The indices to begin with in the slicing.
 
     end : list of int
-        Indicies indicating end of the slice.
+        Indices indicating end of the slice.
 
     strides : list of int, optional
         Specifies the stride values, it can be negative
@@ -243,7 +243,7 @@
         The indices to begin with in the slicing.
 
     end: tvm.te.Tensor
-        Indicies indicating end of the slice.
+        Indices indicating end of the slice.
 
     strides: tvm.te.Tensor, optional
         Specifies the stride values, it can be negative
diff --git a/python/tvm/topi/unique.py b/python/tvm/topi/unique.py
index b168bf0..983c486 100644
--- a/python/tvm/topi/unique.py
+++ b/python/tvm/topi/unique.py
@@ -118,7 +118,7 @@
         A buffer that stores the unique elements.
 
     inverse_indices : Buffer
-        A buffer that stores the the index of each input data element in the unique element array.
+        A buffer that stores the index of each input data element in the unique element array.
 
     counts (optional) : Buffer
         A buffer that stores the count of each unique element.
diff --git a/src/parser/parser.cc b/src/parser/parser.cc
index cd208ee..548b5e9 100644
--- a/src/parser/parser.cc
+++ b/src/parser/parser.cc
@@ -633,7 +633,7 @@
       return ObjectRef();
     }
   }
-  /*! \brief Parses a sequence beginning with a start token, seperated by a seperator token, and
+  /*! \brief Parses a sequence beginning with a start token, separated by a seperator token, and
    * ending with a stop token.
    *
    * The simple form being <start> (<parse()> <seperator>)* <stop>.
diff --git a/src/printer/meta_data.h b/src/printer/meta_data.h
index b2e245b..b076ad0 100644
--- a/src/printer/meta_data.h
+++ b/src/printer/meta_data.h
@@ -81,7 +81,7 @@
  * The text parser can recover this object by loading from the corresponding
  * location in the meta data section.
  *
- * This is is a design trade-off.
+ * This is a design trade-off.
  * It allows us to embedded any meta data in the text format,
  * while still being able to tweak the text part of the printed IR easily.
  */
diff --git a/src/relay/op/nn/pooling.cc b/src/relay/op/nn/pooling.cc
index c56039f..2a8c244 100644
--- a/src/relay/op/nn/pooling.cc
+++ b/src/relay/op/nn/pooling.cc
@@ -916,7 +916,7 @@
 
 - **out_grad**: This depends on the `layout` parameter. Output gradient is 4D array of
                 shape (batch_size, channels, out_height, out_width) if `layout` is `NCHW`.
-                out_height and out_width are are the output size of the pooling operation,
+                out_height and out_width are the output size of the pooling operation,
                 which are calculated as::
                     out_height = floor((height+padding[0]+padding[2]-pool_size[0])/strides[0])+1
                     out_width = floor((width+padding[1]+padding[3]-pool_size[1])/strides[1])+1
@@ -966,7 +966,7 @@
 
 - **out_grad**: This depends on the `layout` parameter. Output gradient is 4D array of
                 shape (batch_size, channels, out_height, out_width) if `layout` is `NCHW`.
-                out_height and out_width are are the output size of the pooling operation,
+                out_height and out_width are the output size of the pooling operation,
                 which are calculated as::
                     out_height = floor((height+padding[0]+padding[2]-pool_size[0])/strides[0])+1
                     out_width = floor((width+padding[1]+padding[3]-pool_size[1])/strides[1])+1
diff --git a/src/relay/op/tensor/transform.cc b/src/relay/op/tensor/transform.cc
index f90cd91..deb05e8 100644
--- a/src/relay/op/tensor/transform.cc
+++ b/src/relay/op/tensor/transform.cc
@@ -2617,9 +2617,9 @@
     return false;
   }
 
-  ICHECK(param->begin) << "strided_slice recieved invalid begin " << param->begin;
-  ICHECK(param->end) << "strided_slice recieved invalid end " << param->end;
-  ICHECK(param->strides) << "strided_slice recieved invalid strides " << param->strides;
+  ICHECK(param->begin) << "strided_slice received invalid begin " << param->begin;
+  ICHECK(param->end) << "strided_slice received invalid end " << param->end;
+  ICHECK(param->strides) << "strided_slice received invalid strides " << param->strides;
 
   auto begin = param->begin.value();
   auto end = param->end.value();
diff --git a/src/relay/qnn/op/add.cc b/src/relay/qnn/op/add.cc
index 56e9767..d087d9f 100644
--- a/src/relay/qnn/op/add.cc
+++ b/src/relay/qnn/op/add.cc
@@ -58,7 +58,7 @@
 
   // Since the input qnn params can be different than output qnn params, we first requantize the
   // input tensors to the output qnn params. Then we call relay.add on the requantized inputs. This
-  // addition results in extra addition of the output zero point. We futher subtract the zero
+  // addition results in extra addition of the output zero point. We further subtract the zero
   // point. The whole process can be represented using following equations
   //
   //          scale_c * (Q_c - zp_c) = scale_a * (Q_a - zp_a) + scale_b * (Q_b - zp_b)
@@ -94,7 +94,7 @@
 
 // QNN Addition operator.
 QNN_REGISTER_BINARY_OP("add")
-    .describe("Elementwise add with with broadcasting for quantized tensors.")
+    .describe("Elementwise add with broadcasting for quantized tensors.")
     .set_support_level(11)
     .set_attr<FTVMLegalize>("FTVMQnnCanonicalize", QnnAddCanonicalize);
 
diff --git a/src/relay/qnn/op/mul.cc b/src/relay/qnn/op/mul.cc
index 87ee7d2..6dde613 100644
--- a/src/relay/qnn/op/mul.cc
+++ b/src/relay/qnn/op/mul.cc
@@ -160,7 +160,7 @@
 
 // QNN Multiplication operator.
 QNN_REGISTER_BINARY_OP("mul")
-    .describe("Elementwise mul with with broadcasting for quantized tensors.")
+    .describe("Elementwise mul with broadcasting for quantized tensors.")
     .set_support_level(11)
     .set_attr<FTVMLegalize>("FTVMQnnCanonicalize", QnnMulCanonicalize);
 
diff --git a/src/relay/qnn/op/subtract.cc b/src/relay/qnn/op/subtract.cc
index 1ec3c7a..1815019 100644
--- a/src/relay/qnn/op/subtract.cc
+++ b/src/relay/qnn/op/subtract.cc
@@ -95,7 +95,7 @@
 
 // QNN Subtraction operator.
 QNN_REGISTER_BINARY_OP("subtract")
-    .describe("Elementwise subtract with with broadcasting for quantized tensors.")
+    .describe("Elementwise subtract with broadcasting for quantized tensors.")
     .set_support_level(11)
     .set_attr<FTVMLegalize>("FTVMQnnCanonicalize", QnnSubtractCanonicalize);
 
diff --git a/src/relay/transforms/convert_sparse_conv2d.cc b/src/relay/transforms/convert_sparse_conv2d.cc
index f2af290..0c6a6bd 100644
--- a/src/relay/transforms/convert_sparse_conv2d.cc
+++ b/src/relay/transforms/convert_sparse_conv2d.cc
@@ -283,7 +283,7 @@
 
 namespace transform {
 
-// Convert a model with seperate weight info (already sparsified).
+// Convert a model with separate weight info (already sparsified).
 Pass Conv2dToSparse(const Array<ObjectRef>& weight_name, const Array<Array<PrimExpr>>& weight_shape,
                     const String& layout, int kernel_size) {
   runtime::TypedPackedFunc<Function(Function, IRModule, PassContext)> pass_func =
diff --git a/src/relay/transforms/dead_code.cc b/src/relay/transforms/dead_code.cc
index 18d2de1..a83e757 100644
--- a/src/relay/transforms/dead_code.cc
+++ b/src/relay/transforms/dead_code.cc
@@ -51,7 +51,7 @@
   bool pure_eval;
   /*!
    * \brief If the sub-expression is first-order then always true. Otherwise true only if evaling
-   * a call to the the sub-expression is pure. See [RULE A] below.
+   * a call to the sub-expression is pure. See [RULE A] below.
    */
   bool pure_call;
 };
diff --git a/src/relay/transforms/fake_quantization_to_integer.cc b/src/relay/transforms/fake_quantization_to_integer.cc
index 4fd034e..0b9daed 100644
--- a/src/relay/transforms/fake_quantization_to_integer.cc
+++ b/src/relay/transforms/fake_quantization_to_integer.cc
@@ -300,7 +300,7 @@
 /* Checks if the operation to convert QAT pass is enabled.
  * The following conditions must be satisfied:
  * 1. operations registered for FTVMFakeQuantizationToInteger;
- * 2. Unary operators or operators with with the TensorAffineType calculated during
+ * 2. Unary operators or operators with the TensorAffineType calculated during
  * FTVMFakeQuantizationToInteger conversion;
  * 3. Not one of the "key" operations: requantize,quantize and dequantize(they are at the boundaries
  * of regions defined to be quantized).
diff --git a/src/relay/transforms/fold_scale_axis.cc b/src/relay/transforms/fold_scale_axis.cc
index 7cc15a8..435c1ff 100644
--- a/src/relay/transforms/fold_scale_axis.cc
+++ b/src/relay/transforms/fold_scale_axis.cc
@@ -666,7 +666,7 @@
 class BackwardTransformer;
 
 /*!
- * \brief Preparation function for for pass scale backward.
+ * \brief Preparation function for pass scale backward.
  * \param call The call node.
  * \param in_messages Messages from the input containing allowed input scaling and whether
  *        positive scale is required.
diff --git a/src/relay/transforms/to_cps.cc b/src/relay/transforms/to_cps.cc
index 6d8fe67..7c90d10 100644
--- a/src/relay/transforms/to_cps.cc
+++ b/src/relay/transforms/to_cps.cc
@@ -36,7 +36,7 @@
  *
  * In relay, as tensor operation is the bottleneck,
  * CPS is currently intended to transform the program before partial eval (PE),
- * as it reify the control flow and enable PE to handle control flow join more agressively.
+ * as it reify the control flow and enable PE to handle control flow join more aggressively.
  *
  * For example, given 'let a = if b then c else d in e', it will transform the code into
  * 'let f a = e in if b then f c else f d'.
diff --git a/src/runtime/c_runtime_api.cc b/src/runtime/c_runtime_api.cc
index 2c4e476..744cc79 100644
--- a/src/runtime/c_runtime_api.cc
+++ b/src/runtime/c_runtime_api.cc
@@ -308,7 +308,7 @@
       error_type = "TVMError";
     }
   }
-  // Seperate out stack trace.
+  // Separate out stack trace.
   std::ostringstream os;
   os << error_type << ": " << check_msg << line << '\n';
 
diff --git a/src/runtime/hexagon/hexagon_user_dma.cc b/src/runtime/hexagon/hexagon_user_dma.cc
index 7f4d0e7..0e3fbd2 100644
--- a/src/runtime/hexagon/hexagon_user_dma.cc
+++ b/src/runtime/hexagon/hexagon_user_dma.cc
@@ -104,7 +104,7 @@
 }
 
 int hexagon_user_dma_1d_sync(void* dst, void* src, uint32_t length) {
-  // One DMA transfer can copy atmost DESC_LENGTH_MASK bytes.
+  // One DMA transfer can copy at most DESC_LENGTH_MASK bytes.
   // Make the common case quick.
   if (length <= DESC_LENGTH_MASK) return hexagon_user_dma_1d_sync_helper(dst, src, length);
 
diff --git a/src/runtime/hexagon/rpc/simulator/rpc_server.cc b/src/runtime/hexagon/rpc/simulator/rpc_server.cc
index 9b4ce3f..119e999 100644
--- a/src/runtime/hexagon/rpc/simulator/rpc_server.cc
+++ b/src/runtime/hexagon/rpc/simulator/rpc_server.cc
@@ -77,7 +77,7 @@
       remaining--;
     } while (remaining > 0);
 
-    // This will return 0 on success, non-zero if underflow occured.
+    // This will return 0 on success, non-zero if underflow occurred.
     return size - remaining;
   }
 };
diff --git a/src/runtime/thread_pool.cc b/src/runtime/thread_pool.cc
index 58b81f0..7744174 100644
--- a/src/runtime/thread_pool.cc
+++ b/src/runtime/thread_pool.cc
@@ -70,7 +70,7 @@
  */
 class ParallelLauncher {
  public:
-  // Reset the the task request.
+  // Reset the task request.
   void Init(FTVMParallelLambda flambda, void* cdata, int num_task, bool need_sync) {
     num_pending_.store(num_task);
     this->cdata = cdata;
diff --git a/src/runtime/thread_storage_scope.h b/src/runtime/thread_storage_scope.h
index bc9e2fa..d0cca1c 100644
--- a/src/runtime/thread_storage_scope.h
+++ b/src/runtime/thread_storage_scope.h
@@ -235,7 +235,7 @@
     ThreadWorkLoad w;
     std::fill(w.work_size, w.work_size + 6, 1);
     for (size_t i = 0; i < arg_index_map_.size(); ++i) {
-      // Dynamic shapes can result in 0 dim size. Guard to ensure that the dim size is atleast 1.
+      // Dynamic shapes can result in 0 dim size. Guard to ensure that the dim size is at least 1.
       size_t size = static_cast<size_t>(x.values[base_ + i].v_int64);
       if (size > 0) {
         w.work_size[arg_index_map_[i]] = size;
diff --git a/src/support/generic_arena.h b/src/support/generic_arena.h
index 4691543..ca4d14d 100644
--- a/src/support/generic_arena.h
+++ b/src/support/generic_arena.h
@@ -125,7 +125,7 @@
  private:
   /*! \brief internal page allocator. */
   PageAllocator alloc_;
-  /* \brief The the head of the allocated list. */
+  /* \brief The head of the allocated list. */
   ArenaPageHeader* head_{nullptr};
   /*! \brief The tail of the allocated list. */
   ArenaPageHeader* tail_{nullptr};
diff --git a/src/target/source/codegen_c.cc b/src/target/source/codegen_c.cc
index 6b1ca81..b69f769 100644
--- a/src/target/source/codegen_c.cc
+++ b/src/target/source/codegen_c.cc
@@ -754,7 +754,7 @@
       // be reused across multiple expression, thus a new scope is needed
       int vec_scope = BeginScope();
 
-      // store elements seperately
+      // store elements separately
       std::string index = SSAGetID(PrintExpr(index_expr), index_expr.dtype());
       std::string value = SSAGetID(PrintExpr(op->value), op->value.dtype());
       std::string vid = GetVarID(buffer_var.get());
diff --git a/src/te/operation/cross_thread_reduction.cc b/src/te/operation/cross_thread_reduction.cc
index e419377..2ad995c 100644
--- a/src/te/operation/cross_thread_reduction.cc
+++ b/src/te/operation/cross_thread_reduction.cc
@@ -62,7 +62,7 @@
 // The last step is to write the final reduction variable,
 // which should be predicated by the existing input_pred if any
 // The consequence is that input_pred should be independent of
-// the reduction axis. Otherwise, we need to seperate it into
+// the reduction axis. Otherwise, we need to separate it into
 // dependent part and independent one.
 //
 // (3) write back
diff --git a/src/te/schedule/schedule_postproc_to_primfunc.cc b/src/te/schedule/schedule_postproc_to_primfunc.cc
index 7204ee0..fc32af2 100644
--- a/src/te/schedule/schedule_postproc_to_primfunc.cc
+++ b/src/te/schedule/schedule_postproc_to_primfunc.cc
@@ -31,7 +31,7 @@
  *  This function canonicalize that body and creates a formal PrimFunc.
  *
  *  List of actions taken by the function:
- *  - Remove occurences of te::Tensor, te::Operation in the IR
+ *  - Remove occurrences of te::Tensor, te::Operation in the IR
  *    and replace them by corresponding IR nodes via tir::Buffer.
  *  - Add annotation of extern buffers using the buffer_map field
  *    in the PrimFunc type.
diff --git a/src/tir/transforms/common_subexpr_elim.cc b/src/tir/transforms/common_subexpr_elim.cc
index 290f920..447d853 100644
--- a/src/tir/transforms/common_subexpr_elim.cc
+++ b/src/tir/transforms/common_subexpr_elim.cc
@@ -213,7 +213,7 @@
 
 /*!
  * \brief Protected constructor of CommonSubexpressionEliminator.
- * \param context_init The context at the begining of the CSE pass. It should contain the
+ * \param context_init The context at the beginning of the CSE pass. It should contain the
                         formal parameters of the function that will be analyzed
  */
 CommonSubexpressionEliminator::CommonSubexpressionEliminator(const Stmt& stmt,
@@ -278,7 +278,7 @@
     // Case where we have a perfectly equivalent computation already available in a variable
     // introduced (i.e, present in context_).
     // Note that this case is needed when the user has written something like
-    // [let x = A in ....A...A...] : we need to be able to replace all the occurences of A by
+    // [let x = A in ....A...A...] : we need to be able to replace all the occurrences of A by
     // an already existing variable holding A, when such a variable happens to exist.
     if (it_on_var != context_.end()) {
       // Replace in the current `result` everything that is selected by the selector with
@@ -458,7 +458,7 @@
     // Case where we have a perfectly equivalent computation already available in a variable
     // introduced (i.e, present in context_).
     // Note that this case is needed when the user has written something like
-    // [let x = A in ....A...A...] : we need to be able to replace all the occurences of A by
+    // [let x = A in ....A...A...] : we need to be able to replace all the occurrences of A by
     // an already existing variable holding A, when such a variable happens to exist.
     if (it_on_var != context_.end()) {
       // Replace in the current `result` everything that is selected by the selector with
diff --git a/src/tir/transforms/common_subexpr_elim_tools.cc b/src/tir/transforms/common_subexpr_elim_tools.cc
index b5b1bfc..39d7a75 100644
--- a/src/tir/transforms/common_subexpr_elim_tools.cc
+++ b/src/tir/transforms/common_subexpr_elim_tools.cc
@@ -866,7 +866,7 @@
 bool PredicateIntroVarForComputation(const PrimExpr& computation, size_t nb_times_seen) {
   // This predicate could later implement something more fine grained that would take in account
   // the size of the expression too, as for instance a very large computation could be introduced
-  // as soon as two occurences are seen, but a smaller one could need three or more occurences
+  // as soon as two occurrences are seen, but a smaller one could need three or more occurrences
   // for being introduced in a variable.
 
   // But for now, we factorize any eligible item that we see at least twice, regardless of its size
diff --git a/src/tir/transforms/inject_software_pipeline.cc b/src/tir/transforms/inject_software_pipeline.cc
index 227935b..d25f5c9 100644
--- a/src/tir/transforms/inject_software_pipeline.cc
+++ b/src/tir/transforms/inject_software_pipeline.cc
@@ -202,7 +202,7 @@
    * \param buffer_remap The map from original buffer to the buffer with updated shape for
    *        multi-versioning in the software pipeline.
    * \param pipeline_loop The original loop to be software pipelined.
-   * \param access_all_versions Whether all versions the the buffers in the software pipeline are
+   * \param access_all_versions Whether all versions the buffers in the software pipeline are
    *        accessed. This will be used to update block access region. In the prologue and epilogue
    *        of a two-stage software pipeline, only one version of these buffers are accessed.
    * \param fragment_info Information about tensor core fragment
diff --git a/src/tir/transforms/storage_flatten.cc b/src/tir/transforms/storage_flatten.cc
index dd23653..ab1b062 100644
--- a/src/tir/transforms/storage_flatten.cc
+++ b/src/tir/transforms/storage_flatten.cc
@@ -770,7 +770,7 @@
 
  private:
   // If the rewritten buffers are part of a buffer_bind_scope, either
-  // as the buffer view or as the the buffer being viewed, then the
+  // as the buffer view or as the buffer being viewed, then the
   // buffer_bind_scope must be rewritten to refer to the updated
   // buffers.
   Stmt HandleBufferBindScope(const AttrStmtNode* op) {
diff --git a/tests/python/contrib/test_arm_compute_lib/infrastructure.py b/tests/python/contrib/test_arm_compute_lib/infrastructure.py
index 314da97..74170d3 100644
--- a/tests/python/contrib/test_arm_compute_lib/infrastructure.py
+++ b/tests/python/contrib/test_arm_compute_lib/infrastructure.py
@@ -41,7 +41,7 @@
 
     Notes
     -----
-        The test configuration will be loaded once when the the class is created. If the configuration
+        The test configuration will be loaded once when the class is created. If the configuration
         changes between tests, any changes will not be picked up.
 
     Parameters
diff --git a/tests/python/contrib/test_bnns/infrastructure.py b/tests/python/contrib/test_bnns/infrastructure.py
index 2f887aa..066829d 100644
--- a/tests/python/contrib/test_bnns/infrastructure.py
+++ b/tests/python/contrib/test_bnns/infrastructure.py
@@ -43,7 +43,7 @@
 
     Notes
     -----
-        The test configuration will be loaded once when the the class is created. If the configuration
+        The test configuration will be loaded once when the class is created. If the configuration
         changes between tests, any changes will not be picked up.
 
 
diff --git a/tests/python/contrib/test_hexagon/conv2d/test_conv2d_conv2d.md b/tests/python/contrib/test_hexagon/conv2d/test_conv2d_conv2d.md
index e42deb6..f7e3061 100644
--- a/tests/python/contrib/test_hexagon/conv2d/test_conv2d_conv2d.md
+++ b/tests/python/contrib/test_hexagon/conv2d/test_conv2d_conv2d.md
@@ -727,7 +727,7 @@
 
 There are two major changes here:
 
-1) The first change is the farily obvious presence of the the kernel height `rh` and width `rw` iterators, for example:
+1) The first change is the farily obvious presence of the kernel height `rh` and width `rw` iterators, for example:
 
 ```
                   for (rh_1: int32, 0, 3) {
diff --git a/tests/python/contrib/test_tensorrt_int8_exp.py b/tests/python/contrib/test_tensorrt_int8_exp.py
index 304d9a0..8e0664d 100644
--- a/tests/python/contrib/test_tensorrt_int8_exp.py
+++ b/tests/python/contrib/test_tensorrt_int8_exp.py
@@ -58,7 +58,7 @@
 def test_trt_int8():
     """
     This Function is used to use tensorrt int8 to compile a resnet34 model,
-    and compare cosine distance between the output of the original model and trt int8 tvm ouput
+    and compare cosine distance between the output of the original model and trt int8 tvm output
 
     """
     if skip_codegen_test() or skip_runtime_test():
diff --git a/tests/python/frontend/onnx/test_forward.py b/tests/python/frontend/onnx/test_forward.py
index 6d2277f..930f617 100644
--- a/tests/python/frontend/onnx/test_forward.py
+++ b/tests/python/frontend/onnx/test_forward.py
@@ -4415,9 +4415,7 @@
         output_dims = list(input_dims)
         output_dims[axis] = k
 
-        node = helper.make_node(
-            "TopK", inputs=["X", "K"], outputs=["Values", "Indicies"], axis=axis
-        )
+        node = helper.make_node("TopK", inputs=["X", "K"], outputs=["Values", "Indices"], axis=axis)
 
         graph = helper.make_graph(
             [node],
@@ -4434,7 +4432,7 @@
             ],
             outputs=[
                 helper.make_tensor_value_info("Values", TensorProto.FLOAT, output_dims),
-                helper.make_tensor_value_info("Indicies", TensorProto.INT64, output_dims),
+                helper.make_tensor_value_info("Indices", TensorProto.INT64, output_dims),
             ],
         )
 
@@ -4472,7 +4470,7 @@
 
         node = helper.make_node(
             "RoiAlign",
-            inputs=["X", "rois", "batch_indicies"],
+            inputs=["X", "rois", "batch_indices"],
             outputs=["Y"],
             mode=mode,
             output_height=output_height,
@@ -4488,7 +4486,7 @@
                 helper.make_tensor_value_info("X", TensorProto.FLOAT, list(input_dims)),
                 helper.make_tensor_value_info("rois", TensorProto.FLOAT, [num_roi, 4]),
                 helper.make_tensor_value_info(
-                    "batch_indicies",
+                    "batch_indices",
                     TensorProto.INT64,
                     [
                         num_roi,
@@ -4502,11 +4500,11 @@
 
         np_data = np.random.uniform(size=input_dims).astype("float32")
         np_rois = np.random.uniform(size=[num_roi, 4]).astype("float32") * input_dims[2]
-        np_batch_indicies = np.random.randint(low=0, high=input_dims[0], size=num_roi)
+        np_batch_indices = np.random.randint(low=0, high=input_dims[0], size=num_roi)
 
         verify_with_ort_with_inputs(
             model,
-            [np_data, np_rois, np_batch_indicies],
+            [np_data, np_rois, np_batch_indices],
             out_shape=[output_dims],
             target=target,
             dev=dev,
diff --git a/tests/python/unittest/test_tvmscript_syntax_sugar.py b/tests/python/unittest/test_tvmscript_syntax_sugar.py
index 7248a3a..329a397 100644
--- a/tests/python/unittest/test_tvmscript_syntax_sugar.py
+++ b/tests/python/unittest/test_tvmscript_syntax_sugar.py
@@ -341,7 +341,7 @@
 
     # The following is an example of an error message from calling an invalid function
 
-    # error: Error occured when invoking the function sqrt:
+    # error: Error occurred when invoking the function sqrt:
     # loop of ufunc does not support argument 0 of type Var which has no callable sqrt method
     #  --> test_tvmscript_syntax_sugar.py:334:19
     #      |
diff --git a/version.py b/version.py
index b739d82..c9bf76c 100644
--- a/version.py
+++ b/version.py
@@ -79,7 +79,7 @@
     - pub_ver = '0.7.0', local_ver = '0.7.0':
       We are at the 0.7.0 release.
     - pub_ver =  '0.8.dev94', local_ver = '0.8.dev94+g0d07a329e':
-      We are at the the 0.8 development cycle.
+      We are at the 0.8 development cycle.
       The current source contains 94 additional commits
       after the most recent tag(v0.7.0),
       the git short hash tag of the current commit is 0d07a329e.
diff --git a/vta/python/vta/top/graphpack.py b/vta/python/vta/top/graphpack.py
index f15e492..e991a1b 100644
--- a/vta/python/vta/top/graphpack.py
+++ b/vta/python/vta/top/graphpack.py
@@ -65,7 +65,7 @@
 
 
 def _channel_const_match(channel_length, cfactor_out):
-    """Round the chanel const variant if the value not divisible by cfactor_out"""
+    """Round the channel const variant if the value not divisible by cfactor_out"""
     diff = int(channel_length) % cfactor_out
     if diff != 0:
         diff = cfactor_out - diff
diff --git a/vta/tutorials/frontend/deploy_detection.py b/vta/tutorials/frontend/deploy_detection.py
index 2d9ddb4..0c430e8 100644
--- a/vta/tutorials/frontend/deploy_detection.py
+++ b/vta/tutorials/frontend/deploy_detection.py
@@ -130,7 +130,7 @@
 # The ``start_pack`` and ``stop_pack`` labels indicate where
 # to start and end the graph packing relay pass: in other words
 # where to start and finish offloading to VTA.
-# the number 4 indicate the the ``start_pack`` index is 4, the
+# the number 4 indicate the ``start_pack`` index is 4, the
 # number 186 indicate the ``stop_pack index`` is 186, by using
 # name and index number, here we can located to correct place
 # where to start/end when there are multiple ``nn.max_pool2d``