##=============================================================================
##
##  Copyright (c) Kitware, Inc.
##  All rights reserved.
##  See LICENSE.txt for details.
##
##  This software is distributed WITHOUT ANY WARRANTY; without even
##  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
##  PURPOSE.  See the above copyright notice for more information.
##
##=============================================================================

# Build on ubuntu1804 with TBB and OpenMP and test on ubuntu1804
# Uses gcc 9
# Uses MPICH2
build:ubuntu1804_gcc9:
  tags:
    - build
    - vtkm
    - docker
    - linux-x86_64
  extends:
    - .ubuntu1804
    - .cmake_build_linux
    - .run_automatically
  variables:
    CC: "gcc-9"
    CXX: "g++-9"
    CMAKE_BUILD_TYPE: Debug
    VTKM_SETTINGS: "benchmarks+tbb+openmp+mpi+shared+hdf5"

test:ubuntu1804_gcc9:
  tags:
    - test
    - vtkm
    - docker
    - linux-x86_64
  extends:
    - .ubuntu1804
    - .cmake_test_linux
    - .run_automatically
  variables:
    #Restrict OpenMP number of threads since multiple test stages
    #execute on the same hardware concurrently
    OMP_NUM_THREADS: 4
  dependencies:
    - build:ubuntu1804_gcc9
  needs:
    - build:ubuntu1804_gcc9

# Build on ubuntu1804 with CUDA + MPI and test on ubuntu1804
# Uses gcc 7
# Uses MPICH2
build:ubuntu1804_gcc7:
  tags:
    - build
    - vtkm
    - docker
    - linux-x86_64
    - large-memory
  extends:
    - .ubuntu1804_cuda
    - .cmake_build_linux
    - .run_automatically
  variables:
    CC: "gcc-7"
    CXX: "g++-7"
    CUDAHOSTCXX: "g++-7"
    VTKM_SETTINGS: "benchmarks+cuda+turing+mpi+64bit_floats+shared"

test:ubuntu1804_gcc7:
  tags:
    - test
    - vtkm
    - docker
    - linux-x86_64
    - cuda-rt
    - turing
  extends:
    - .ubuntu1804_cuda
    - .cmake_test_linux
    - .run_automatically
  dependencies:
    - build:ubuntu1804_gcc7
  needs:
    - build:ubuntu1804_gcc7


# Build on ubuntu1804 with CUDA+TBB and test on ubuntu1804
# Uses clang as CUDA host compiler
# Runs only on nightlies
build:ubuntu1804_clang_cuda:
  tags:
    - build
    - vtkm
    - docker
    - linux-x86_64
    - large-memory
  extends:
    - .ubuntu1804_cuda
    - .cmake_build_linux
    - .run_automatically
    # - .run_upstream_branches
  variables:
    CC: "clang-8"
    CXX: "clang++-8"
    CUDAHOSTCXX: "clang++-8"
    VTKM_SETTINGS: "cuda+pascal+tbb+examples+shared"

test:ubuntu1804_clang_cuda:
  tags:
    - test
    - vtkm
    - docker
    - linux-x86_64
    - cuda-rt
    - pascal
  extends:
    - .ubuntu1804_cuda
    - .cmake_test_linux
    - .run_automatically
    # - .run_upstream_branches
  dependencies:
    - build:ubuntu1804_clang_cuda
  needs:
    - build:ubuntu1804_clang_cuda

# Build on ubuntu1804 with OpenMP and test on ubuntu1804
# Uses gcc 6.5
build:ubuntu1804_gcc6:
  tags:
    - build
    - vtkm
    - docker
    - linux-x86_64
  extends:
    - .ubuntu1804
    - .cmake_build_linux
    - .run_automatically
  variables:
    CC: "gcc-6"
    CXX: "g++-6"
    VTKM_SETTINGS: "openmp+shared+examples"

test:ubuntu1804_gcc6:
  tags:
    - test
    - vtkm
    - docker
    - linux-x86_64
  extends:
    - .ubuntu1804
    - .cmake_test_linux
    - .run_automatically
  variables:
    #Restrict OpenMP number of threads since multiple test stages
    #execute on the same hardware concurrently
    OMP_NUM_THREADS: 3
  dependencies:
    - build:ubuntu1804_gcc6
  needs:
    - build:ubuntu1804_gcc6

# Build on ubuntu1804 with TBB and test on ubuntu1804
# Uses clang 8
build:ubuntu1804_clang8:
  tags:
    - build
    - vtkm
    - docker
    - linux-x86_64
  extends:
    - .ubuntu1804
    - .cmake_build_linux
    - .run_automatically
  variables:
    CC: "clang-8"
    CXX: "clang++-8"
    CMAKE_BUILD_TYPE: Debug
    VTKM_SETTINGS: "tbb+shared+examples"

test:ubuntu1804_clang8:
  tags:
    - test
    - vtkm
    - docker
    - linux-x86_64
  extends:
    - .ubuntu1804
    - .cmake_test_linux
    - .run_automatically
  dependencies:
    - build:ubuntu1804_clang8
  needs:
    - build:ubuntu1804_clang8

# Build on ubuntu1804 with kokkos and test on ubuntu1804
# Uses CUDA 11
build:ubuntu1804_kokkos:
  tags:
    - build
    - vtkm
    - docker
    - linux-x86_64
    - large-memory
  extends:
    - .ubuntu1804_cuda_kokkos
    - .cmake_build_linux
    - .run_automatically
  variables:
    CMAKE_GENERATOR: "Ninja"
    CMAKE_BUILD_TYPE: Release
    VTKM_SETTINGS: "benchmarks+kokkos+turing+64bit_floats+shared"

test:ubuntu1804_kokkos:
  tags:
    - test
    - vtkm
    - docker
    - linux-x86_64
    - cuda-rt
    - turing
  extends:
    - .ubuntu1804_cuda_kokkos
    - .cmake_test_linux
    - .run_automatically
  dependencies:
    - build:ubuntu1804_kokkos
  needs:
    - build:ubuntu1804_kokkos

build:ubuntu1804_cuda_perftest:
  tags:
    - build
    - vtkm
    - docker
    - linux-x86_64
  extends:
    - .ubuntu1804_cuda
    - .cmake_build_linux
    - .run_automatically
  variables:
    CMAKE_BUILD_TYPE: Release
    VTKM_SETTINGS: "benchmarks+ampere+perftest+cuda+mpi+shared"

test:ubuntu1804_cuda_perftest:
  tags:
    - benchmark
    - vtkm
    - docker
    - cuda-rt
    - linux-x86_64
  extends:
    - .ubuntu1804_cuda
    - .cmake_test_linux
    - .run_automatically
  dependencies:
    - build:ubuntu1804_cuda_perftest
  needs:
    - build:ubuntu1804_cuda_perftest
  variables:
    TEST_INCLUSIONS: "PerformanceTest"
    VTKm_PERF_REMOTE_URL: "https://vbolea:$VTKM_BENCH_RECORDS_TOKEN@gitlab.kitware.com/vbolea/vtk-m-benchmark-records.git"
    VTKm_PERF_ALPHA: "0.05"
    VTKm_PERF_REPETITIONS: "10"
    VTKm_PERF_DIST: "t"
