diff --git a/.gitignore b/.gitignore
index d2c654528dbfbcf8065eaff49f07627902f20615..605cade94d773b32c3d3c79d2340e247aad51886 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,20 +1,3 @@
-*.o
-*.so
-*.dot
-<<<<<<< HEAD
-JITTests.exports
-llvm/include/llvm/Config/config.h
-llvm/include/llvm/Config/llvm-config.h
-llvm/include/llvm/Support/DataTypes.h
-llvm/test/VISC/parboil/benchmarks/*/run
-llvm/test/VISC/parboil/benchmarks/*/build
-llvm/build
-llvm/install
-build*/
-install/
-=======
-*.pyc
-
 hpvm/build/
 hpvm/install/
 hpvm/llvm/
@@ -22,4 +5,143 @@ hpvm/llvm-*.src.tar.xz
 hpvm/llvm-*.src/
 hpvm/llvm_patches/**/*.patch
 
->>>>>>> a9f09dd1d7c769b6e9bef9dca334a9c0761f2136
+# Below is taken from Python.gitignore: https://raw.githubusercontent.com/github/gitignore/master/Python.gitignore
+
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+share/python-wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+#  Usually these files are written by a python script from a template
+#  before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.nox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+*.py,cover
+.hypothesis/
+.pytest_cache/
+cover/
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+db.sqlite3-journal
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+.pybuilder/
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# IPython
+profile_default/
+ipython_config.py
+
+# pyenv
+#   For a library or package, you might want to ignore these files since the code is
+#   intended to run in multiple environments; otherwise, check them in:
+# .python-version
+
+# pipenv
+#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
+#   However, in case of collaboration, if having platform-specific dependencies or dependencies
+#   having no cross-platform support, pipenv may install dependencies that don't work, or not
+#   install all needed dependencies.
+#Pipfile.lock
+
+# PEP 582; used by e.g. github.com/David-OConnor/pyflow
+__pypackages__/
+
+# Celery stuff
+celerybeat-schedule
+celerybeat.pid
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+.dmypy.json
+dmypy.json
+
+# Pyre type checker
+.pyre/
+
+# pytype static type analyzer
+.pytype/
+
+# Cython debug symbols
+cython_debug/
diff --git a/README.md b/README.md
index c2e4f3be4e11856dc2bb2b35e61cfbf04ae626af..d1a28fae2ee717a765ab80ee9eef34b1cc0cb738 100644
--- a/README.md
+++ b/README.md
@@ -31,10 +31,18 @@ The following components are required to be installed on your machine to build H
   * In addition, each version of CUDA-nvcc requires GCC to be not newer than a certain version.
     See [here](https://gist.github.com/ax3l/9489132) for the support matrix.
 * CMake (>=3.17)
-* Python (>=3.7) with Pip
 * GNU Make (>=3.79)
 * OpenCL (>=1.0.0)
 * CUDA (>=9.1)
+* Python (==3.6) with pip (>=20)
+
+Python must be strictly 3.6 (any subversion between 3.6.0~3.6.13).
+Alternatively, if you use Anaconda for package management,
+we provide a conda environment file that covers all Python and Python package requirements:
+
+```bash
+conda env create -n hpvm -f hpvm/env.yaml
+```
 
 ## Supported Targets
 
diff --git a/hpvm/env.yaml b/hpvm/env.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..b64c42e3f193df2ca7ac965ebd3dc57e5a8858be
--- /dev/null
+++ b/hpvm/env.yaml
@@ -0,0 +1,25 @@
+name: hpvm
+channels:
+  - pytorch
+  - defaults
+dependencies:
+  - jinja2=2.11
+  - jsonpickle=2
+  - keras==2.1.6
+  - matplotlib=3.3
+  - networkx=2.5
+  - pandas=1.1
+  - python==3.6.13
+  - pip
+  - pytorch=1.7
+  - torchvision=0.8
+  - tqdm=4.59
+  - scipy==1.1.0
+  - pip:
+    - argparse==1.4
+    - onnx==1.8
+    - onnx-simplifier==0.3
+    - opentuner==0.8.3
+    - sqlalchemy==1.3.0
+    - tensorflow==1.14.0
+    - tensorflow-gpu==1.14.0
diff --git a/hpvm/projects/hpvm-tensor-rt/CMakeLists.txt b/hpvm/projects/hpvm-tensor-rt/CMakeLists.txt
index 33dce1737f502bf8a9628aade00fae3b63afd327..f2e2cd5afe4eb0a94bb963bf084f50ed3ca0d0cf 100644
--- a/hpvm/projects/hpvm-tensor-rt/CMakeLists.txt
+++ b/hpvm/projects/hpvm-tensor-rt/CMakeLists.txt
@@ -22,7 +22,6 @@ configure_file(
 )
 
 # -- Default include directories
-find_package(CUDNN 7 EXACT REQUIRED)  # Include CUDNN_INCLUDE_PATH, then link CUDNN_LIBRARY_PATH
 set(
   INCLUDES
   ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}