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``
