arrayfire 3.8.0

ArrayFire is a high performance software library for parallel computing with an easy-to-use API. Its array based function set makes parallel programming simple. ArrayFire's multiple backends (CUDA, OpenCL and native CPU) make it platform independent and highly portable. A few lines of code in ArrayFire can replace dozens of lines of parallel computing code, saving you valuable time and lowering development costs. This crate provides Rust bindings for ArrayFire library.
Documentation
on:
  push:
    branches:
    - master
  pull_request:
    branches:
    - master

name: ci

jobs:
    build_test:
        name: Build and Test Wrapper
        runs-on: ubuntu-18.04
        env:
            AF_VER: 3.8.0
        steps:
            - name: Checkout Repository
              uses: actions/checkout@master

            - name: Setup Rust Toolchain
              uses: actions-rs/toolchain@v1
              with:
                  toolchain: stable
                  override: true

            - name: Cache ArrayFire
              uses: actions/cache@v1
              id: arrayfire
              with:
                  path: afbin
                  key: ${{ runner.os }}-af-${{ env.AF_VER }}

            - name: Download ArrayFire
              # Only download and cache arrayfire if already not found
              if: steps.arrayfire.outputs.cache-hit != 'true'
              run: |
                  wget --quiet http://arrayfire.s3.amazonaws.com/${AF_VER}/ArrayFire-v${AF_VER}_Linux_x86_64.sh
                  chmod +x ./ArrayFire-v${AF_VER}_Linux_x86_64.sh
                  mkdir afbin
                  ./ArrayFire-v${AF_VER}_Linux_x86_64.sh --skip-license --exclude-subdir --prefix=./afbin
                  rm ./afbin/lib64/libcu*.so*
                  rm ./afbin/lib64/libafcuda*.so*
                  rm ./ArrayFire-v${AF_VER}_Linux_x86_64.sh

            - name: Build and Run Tests
              run: |
                  export AF_PATH=${GITHUB_WORKSPACE}/afbin
                  export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${AF_PATH}/lib64
                  echo "Using cargo version: $(cargo --version)"
                  cargo build --all --all-features
                  cargo test --no-fail-fast --all-features

    format:
        name: Format Check
        runs-on: ubuntu-18.04
        steps:
            - name: Checkout Repository
              uses: actions/checkout@master

            - name: Setup Rust Toolchain
              uses: actions-rs/toolchain@v1
              with:
                  toolchain: stable
                  override: true
                  components: rustfmt
            - name: Run rust fmt tool
              uses: actions-rs/cargo@v1
              with:
                  command: fmt
                  args: --all -- --check