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@v2 - 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: Linter runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v2 - name: Set up Python 3.8 uses: actions/setup-python@v2 with: python-version: 3.8 - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install pylint flake8 pip install -e . - 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,E304,E502,E701,E702,E703,E71,E72,E731,W191,W6 --statistics -j4 - name: Lint tinygrad with pylint run: pylint tinygrad/ testcpu: name: CPU Tests runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v2 - name: Update packages run: sudo apt-get update - name: Set up Python 3.8 uses: actions/setup-python@v2 with: python-version: 3.8 - name: Install Dependencies run: pip install -e '.[testing]' - name: Run Pytest run: LAZY=0 python -m pytest -s -v - name: Run Pytest (lazy) run: LAZY=1 python -m pytest -s -v testtorch: name: Torch Tests runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v2 - name: Update packages run: sudo apt-get update - name: Set up Python 3.8 uses: actions/setup-python@v2 with: python-version: 3.8 - name: Install Dependencies run: pip install -e '.[testing]' - name: Run Pytest run: LAZY=0 TORCH=1 python -m pytest -s -v - name: Run Pytest (lazy) run: LAZY=1 TORCH=1 python -m pytest -s -v testgpu: name: GPU Tests runs-on: ubuntu-20.04 steps: - name: Checkout Code uses: actions/checkout@v2 - 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@v2 with: python-version: 3.8 - name: Install Dependencies run: pip install -e '.[gpu,testing]' - name: Run Optimizer Test run: OPT=2 GPU=1 python test/external_test_opt.py - name: Run Pytest (default) run: OPT=1 GPU=1 python -m pytest -s -v testopencl: name: openpilot (OpenCL) Test runs-on: ubuntu-20.04 steps: - name: Checkout Code uses: actions/checkout@v2 - 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@v2 with: python-version: 3.8 - name: Install Dependencies run: pip install -e '.[gpu,testing]' - name: Test OPENCL ops run: OPT=2 OPENCL=1 python3 test/test_ops.py - name: Test openpilot model run: | FLOAT16=1 UNSAFE_FLOAT4=1 DEBUGCL=1 python3 openpilot/compile.py UNSAFE_FLOAT4=1 DEBUGCL=1 python3 openpilot/compile.py PYTHONPATH="." python3 openpilot/run_thneed.py /tmp/output.thneed https://github.com/commaai/openpilot/raw/6c5693e965b9c63f8678f52b9e9b5abe35f23feb/selfdrive/modeld/models/supercombo.onnx testmypy: name: Mypy Tests runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v2 - name: Update packages run: sudo apt-get update - name: Set up Python 3.8 uses: actions/setup-python@v2 with: python-version: 3.8 - name: Install Dependencies run: pip install -e '.[testing]' - name: Run mypy run: mypy tinygrad/