Statistics test: check if distributions match torch (#769) #3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Unit Tests | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
jobs: | |
# OMG THIS TEST IS DISABLED, PLZ MAKE TINYGRAD TINY AGAIN | |
lines: | |
name: Less than 1000 lines | |
runs-on: ubuntu-latest | |
if: ${{ false }} | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
- name: Install SLOCCount | |
run: sudo apt-get install sloccount | |
- name: Check <1000 lines | |
run: sloccount tinygrad test examples extra; if [ $(sloccount tinygrad | sed -n 's/.*Total Physical Source Lines of Code (SLOC)[ ]*= \([^ ]*\).*/\1/p' | tr -d ',') -gt 1000 ]; then exit 1; fi | |
linter: | |
name: Linters | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- name: Install dependencies | |
run: pip install -e '.[linting,testing]' --extra-index-url https://download.pytorch.org/whl/cpu | |
- name: Lint with pylint | |
run: python -m pylint --disable=all -e W0311 --jobs=0 --indent-string=' ' **/*.py | |
- name: Lint with flake8 | |
run: flake8 tinygrad/ --indent-size=2 --select=F,E112,E113,E203,E304,E502,E702,E703,E71,E72,E731,W191,W6 --statistics -j4 | |
- name: Lint tinygrad with pylint | |
run: pylint tinygrad/ | |
- name: Run mypy | |
run: mypy tinygrad/ --ignore-missing-imports --check-untyped-defs --explicit-package-bases --warn-unreachable | |
testcpu: | |
name: CPU Tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- name: Install Dependencies | |
run: pip install -e '.[testing]' --extra-index-url https://download.pytorch.org/whl/cpu | |
- name: Run Pytest | |
run: python -m pytest -s -v -n=auto | |
testimagenet: | |
name: ImageNet to C Compile Test | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- name: Install Dependencies | |
run: pip install -e . | |
- name: Compile EfficientNet to C | |
run: PYTHONPATH="." CLANG=1 python3 examples/compile_efficientnet.py > recognize.c | |
- name: Compile C to native | |
run: clang -O2 recognize.c -lm -o recognize | |
- name: Test EfficientNet | |
run: curl https://media.istockphoto.com/photos/hen-picture-id831791190 | ./recognize | grep hen | |
testllvm: | |
name: LLVM Tests (w method cache) | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- name: Install Dependencies | |
run: pip install -e '.[llvm,testing]' --extra-index-url https://download.pytorch.org/whl/cpu | |
- name: Run Pytest | |
run: ENABLE_METHOD_CACHE=1 LLVM=1 python -m pytest -s -v -n=auto | |
testtorch: | |
name: Torch Tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- name: Install Dependencies | |
run: pip install -e '.[testing]' --extra-index-url https://download.pytorch.org/whl/cpu | |
- name: Run Pytest | |
run: TORCH=1 python -m pytest -s -v -n=auto | |
testgpu: | |
name: GPU Tests | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
- name: Update packages | |
run: | | |
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null | |
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list | |
sudo apt-get update | |
- name: Install OpenCL | |
#run: sudo apt-get install -y pocl-opencl-icd | |
run: sudo apt-get install -y intel-oneapi-runtime-compilers intel-oneapi-runtime-opencl | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- name: Install Dependencies | |
run: pip install -e '.[gpu,testing]' --extra-index-url https://download.pytorch.org/whl/cpu | |
- name: Run Optimizer Test (OPT 2 and 3) | |
run: | | |
PYTHONPATH="." OPT=2 GPU=1 python test/external/external_test_opt.py | |
PYTHONPATH="." OPT=3 GPU=1 python test/external/external_test_opt.py | |
- name: Run Pytest (default) | |
run: GPU=1 python -m pytest -s -v -n=auto | |
testopencl: | |
name: openpilot (OpenCL) Test | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
- name: Update packages | |
run: | | |
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null | |
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list | |
sudo apt-get update | |
- name: Install OpenCL | |
#run: sudo apt-get install -y pocl-opencl-icd | |
run: sudo apt-get install -y intel-oneapi-runtime-compilers intel-oneapi-runtime-opencl | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- name: Install Dependencies | |
run: pip install -e '.[gpu,testing]' --extra-index-url https://download.pytorch.org/whl/cpu | |
- name: Test GPU IMAGE ops | |
run: | | |
GPU=1 IMAGE=1 python3 test/test_ops.py | |
FORWARD_ONLY=1 GPU=1 IMAGE=2 python3 test/test_ops.py | |
- name: Test openpilot model | |
run: | | |
ALLOWED_KERNEL_COUNT=199 FLOAT16=1 VALIDHACKS=1 DEBUGCL=1 GPU=1 IMAGE=2 python3 openpilot/compile.py | |
python3 -c 'import os; assert os.path.getsize("/tmp/output.thneed") < 100_000_000' | |
DEBUGCL=1 GPU=1 IMAGE=2 python3 openpilot/compile.py | |
VALIDHACKS=1 DEBUGCL=1 GPU=1 IMAGE=2 python3 openpilot/compile.py | |
# disabled, this test is flaky | |
testdocker: | |
name: Docker Test | |
runs-on: ubuntu-latest | |
if: ${{ false }} | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
- name: Build Docker | |
run: docker build -t tinygrad -f test/Dockerfile . | |
- name: Test Docker | |
run: docker run --rm tinygrad /usr/bin/env python3 -c "from tinygrad.tensor import Tensor; print(Tensor.eye(3).numpy())" |