mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-08 13:23:51 +00:00
Merge remote-tracking branch 'origin/master' into update-to-2.1.0
* origin/master: (259 commits) Adding documentation for flow filter restructure Changes to address feedback from MR Correct export in class declaration Support any cell type in MIR filter Fixing linking issues for flow Analysis class Removing unnecessary file Fixing linking issues for flow Analysis class Fixing linking issues for flow Analysis class Adding test dependency of filter_flow on tests Separating Analysis into header and source Moving base class flow filters into CXX Fixing streamline output for no step Removing particle property num punctures Removing XGC Filter Fixing WarpXStreamlines compile problems Fixing issues after rebasing Removing cout from device code Changing solver type for WarpX to Euler Adding specialization for Particle/Field for XGC ci: disable UnitTestWorkletParticleAdvection in hip build ...
This commit is contained in:
commit
5cd85b3593
@ -1,3 +1,15 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
.docker_image: &docker_image
|
||||
variables:
|
||||
GIT_CLONE_PATH: $CI_BUILDS_DIR/gitlab-kitware-sciviz-ci
|
||||
@ -38,7 +50,7 @@
|
||||
- .docker_image
|
||||
|
||||
.ubuntu1804_cuda_kokkos: &ubuntu1804_cuda_kokkos
|
||||
image: "kitware/vtkm:ci-ubuntu1804_cuda11_kokkos-20220407"
|
||||
image: "kitware/vtkm:ci-ubuntu1804_cuda11_kokkos-20230125"
|
||||
extends:
|
||||
- .docker_image
|
||||
|
||||
@ -53,12 +65,17 @@
|
||||
- .docker_image
|
||||
|
||||
.ubuntu2004_kokkos: &ubuntu2004_kokkos
|
||||
image: "kitware/vtkm:ci-ubuntu2004_kokkos-20210916"
|
||||
image: "kitware/vtkm:ci-ubuntu2004_kokkos-20230705"
|
||||
extends:
|
||||
- .docker_image
|
||||
|
||||
.ubuntu2004_hip_kokkos: &ubuntu2004_hip_kokkos
|
||||
image: "kitware/vtkm:ci-ubuntu2004_hip_kokkos-20220620"
|
||||
image: "kitware/vtkm:ci-ubuntu2004_hip_kokkos-20230220"
|
||||
extends:
|
||||
- .docker_image
|
||||
|
||||
.opensuse: &opensuse
|
||||
image: "kitware/vtkm:ci-opensuse-20230619"
|
||||
extends:
|
||||
- .docker_image
|
||||
|
||||
@ -96,7 +113,7 @@
|
||||
when: on_success
|
||||
- when: never
|
||||
|
||||
.run_spock_ci: &run_spock_ci
|
||||
.run_crusher_ci: &run_crusher_ci
|
||||
rules:
|
||||
- if: '$CI_PROJECT_PATH == "ci/csc331_crusher/dev/vtk-m"'
|
||||
when: on_success
|
||||
@ -117,6 +134,10 @@ stages:
|
||||
variables:
|
||||
CMAKE_VERSION: "3.13.5"
|
||||
|
||||
.warning_policy:
|
||||
allow_failure:
|
||||
exit_codes: [ 47 ]
|
||||
|
||||
.install_cmake: &install_cmake |
|
||||
export PATH=$PWD/.gitlab/cmake/bin:$PATH
|
||||
.gitlab/ci/config/cmake.sh "$CMAKE_VERSION"
|
||||
@ -141,8 +162,10 @@ stages:
|
||||
script:
|
||||
- "ctest -VV -S .gitlab/ci/ctest_build.cmake"
|
||||
- sccache --show-stats
|
||||
- cmake -P .gitlab/ci/check_warnings.cmake || exit 47
|
||||
extends:
|
||||
- .cmake_build_artifacts
|
||||
- .warning_policy
|
||||
|
||||
.cmake_test_linux: &cmake_test_linux
|
||||
stage: test
|
||||
@ -192,6 +215,7 @@ stages:
|
||||
# CTest and CMake install files.
|
||||
# Note: this also captures our CIState.cmake file
|
||||
- build/CMakeCache.txt
|
||||
- build/compile_num_warnings.log
|
||||
- build/**/*.cmake
|
||||
- build/Testing/
|
||||
|
||||
@ -214,11 +238,12 @@ stages:
|
||||
|
||||
include:
|
||||
- local: '/.gitlab/ci/ascent.yml'
|
||||
- local: '/.gitlab/ci/spock.yml'
|
||||
- local: '/.gitlab/ci/crusher.yml'
|
||||
- local: '/.gitlab/ci/centos7.yml'
|
||||
- local: '/.gitlab/ci/centos8.yml'
|
||||
- local: '/.gitlab/ci/doxygen.yml'
|
||||
- local: '/.gitlab/ci/macos.yml'
|
||||
- local: '/.gitlab/ci/opensuse.yml'
|
||||
- local: '/.gitlab/ci/rhel8.yml'
|
||||
- local: '/.gitlab/ci/ubuntu1604.yml'
|
||||
- local: '/.gitlab/ci/ubuntu1804.yml'
|
||||
|
@ -1,8 +1,20 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
# Ad-hoc build that runs in the ECP Hardware, concretely in OLCF Ascent.
|
||||
.ascent_gcc_cuda:
|
||||
variables:
|
||||
CCACHE_BASEDIR: "/gpfs/wolf/"
|
||||
CCACHE_DIR: "/gpfs/wolf/proj-shared/csc331/vtk-m/ci/ccache/"
|
||||
CCACHE_DIR: "/gpfs/wolf/csc331/scratch/vbolea/ci/ccache"
|
||||
# -isystem= is not affected by CCACHE_BASEDIR, thus we must ignore it
|
||||
CCACHE_IGNOREOPTIONS: "-isystem=*"
|
||||
CCACHE_NOHASHDIR: "true"
|
||||
@ -12,7 +24,7 @@
|
||||
CMAKE_BUILD_TYPE: "RelWithDebInfo"
|
||||
CMAKE_GENERATOR: "Ninja"
|
||||
CUDAHOSTCXX: "g++"
|
||||
CUSTOM_CI_BUILDS_DIR: "/gpfs/wolf/proj-shared/csc331/vtk-m/ci/runtime"
|
||||
CUSTOM_CI_BUILDS_DIR: "/gpfs/wolf/csc331/scratch/vbolea/ci/vtk-m"
|
||||
|
||||
VTKM_SETTINGS: cuda+ascent+ccache
|
||||
JOB_MODULES: >-
|
||||
@ -30,14 +42,18 @@
|
||||
module purge
|
||||
module load ${JOB_MODULES}
|
||||
module list
|
||||
export PATH="/gpfs/wolf/proj-shared/csc331/vtk-m/ci/utils:$PATH"
|
||||
export PATH="/gpfs/wolf/csc331/scratch/vbolea/ci/utils:$PATH"
|
||||
|
||||
build:ascent_gcc_cuda:
|
||||
stage: build
|
||||
tags: [olcf, ascent, nobatch]
|
||||
tags: [olcf, ascent, batch]
|
||||
extends:
|
||||
- .ascent_gcc_cuda
|
||||
- .run_ascent_ci
|
||||
- .cmake_build_artifacts
|
||||
variables:
|
||||
SCHEDULER_PARAMETERS: -P CSC331 -W 2:00 -nnodes 1 -alloc_flags smt1
|
||||
timeout: 125 minutes
|
||||
before_script:
|
||||
- *setup_env_ecpci
|
||||
- ccache -z
|
||||
@ -46,14 +62,16 @@ build:ascent_gcc_cuda:
|
||||
- git-lfs install
|
||||
- git-lfs pull lfs
|
||||
script:
|
||||
- CTEST_MAX_PARALLELISM=32 cmake -V -P .gitlab/ci/config/gitlab_ci_setup.cmake
|
||||
# Each Ascent (Summit) node has 172 threads (43 cores). SMT1 is needed to
|
||||
# avoid L1 cache pollution among different processes. Thus, using 40 cores
|
||||
# seems a reasonable choice which leaves a couple of cores for system processes.
|
||||
- CTEST_MAX_PARALLELISM=40 cmake -V -P .gitlab/ci/config/gitlab_ci_setup.cmake
|
||||
- ctest -VV -S .gitlab/ci/ctest_configure.cmake
|
||||
artifacts:
|
||||
expire_in: 24 hours
|
||||
when: always
|
||||
paths:
|
||||
- build/
|
||||
timeout: 10 minutes
|
||||
- GITLAB_CI_EMULATION=1 jsrun -n1 -a1 -g1 -c40 -bpacked:40 ctest -VV -S .gitlab/ci/ctest_build.cmake
|
||||
after_script:
|
||||
- *setup_env_ecpci
|
||||
- ccache -s
|
||||
- ctest -VV -S .gitlab/ci/ctest_submit_build.cmake
|
||||
|
||||
test:ascent_gcc_cuda:
|
||||
stage: test
|
||||
@ -67,17 +85,18 @@ test:ascent_gcc_cuda:
|
||||
dependencies:
|
||||
- build:ascent_gcc_cuda
|
||||
variables:
|
||||
SCHEDULER_PARAMETERS: -P CSC331 -W 2:00 -nnodes 1 -alloc_flags gpudefault
|
||||
# For tests we want to use a small number of proccesses, for some reason
|
||||
# a higher parallelism number tend to results in test malfunctions.
|
||||
CTEST_MAX_PARALLELISM: 4
|
||||
# We need this to skip ctest_submit from being run inside a jsrun job
|
||||
GITLAB_CI_EMULATION: 1
|
||||
SCHEDULER_PARAMETERS: -P CSC331 -W 1:00 -nnodes 1 -alloc_flags gpudefault
|
||||
timeout: 65 minutes
|
||||
before_script:
|
||||
- *setup_env_ecpci
|
||||
script:
|
||||
- jsrun -n1 -a1 -g1 -c42 ctest -VV -S .gitlab/ci/ctest_build.cmake
|
||||
- CTEST_MAX_PARALLELISM=4 jsrun -n1 -a1 -g1 -c8 ctest -VV -S .gitlab/ci/ctest_test.cmake
|
||||
- cmake -V -P .gitlab/ci/config/gitlab_ci_setup.cmake
|
||||
- jsrun -n1 -a1 -g1 -c1 ctest -VV -S .gitlab/ci/ctest_test.cmake
|
||||
after_script:
|
||||
- *setup_env_ecpci
|
||||
- ccache -s
|
||||
- ctest -VV -S .gitlab/ci/ctest_submit_build.cmake
|
||||
- ctest -VV -S .gitlab/ci/ctest_submit_test.cmake
|
||||
timeout: 120 minutes
|
||||
|
@ -1,3 +1,14 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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 centos7 with CUDA and test on rhel8 and centos7
|
||||
# gcc 7.3.1
|
||||
|
@ -1,3 +1,14 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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 centos8 with serial and test on centos8
|
||||
# Uses gcc 8.2.1
|
||||
|
46
.gitlab/ci/check_warnings.cmake
Normal file
46
.gitlab/ci/check_warnings.cmake
Normal file
@ -0,0 +1,46 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
set(configure_warning_exceptions
|
||||
".*CMake Warning at CMake/VTKmDetermineVersion.cmake.*"
|
||||
)
|
||||
|
||||
# Find the path of the logs from the last configure
|
||||
set(cnf_log_path "${CMAKE_SOURCE_DIR}/build/Testing/Temporary/LastConfigure*.log")
|
||||
file(GLOB cnf_log_files ${cnf_log_path})
|
||||
|
||||
# Check for warnings during the configure phase
|
||||
foreach(file IN LISTS cnf_log_files)
|
||||
file(STRINGS ${file} lines)
|
||||
foreach(line IN LISTS lines)
|
||||
if ("${line}" MATCHES "Warning|WARNING|warning")
|
||||
set(exception_matches FALSE)
|
||||
foreach(exception IN LISTS configure_warning_exceptions)
|
||||
if (${line} MATCHES "${exception}")
|
||||
set(exception_matches TRUE)
|
||||
break()
|
||||
endif()
|
||||
endforeach()
|
||||
if (NOT exception_matches)
|
||||
message(FATAL_ERROR "Configure warnings detected, please check cdash-commit job: ${line}")
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
endforeach()
|
||||
|
||||
# `compile_num_warnings` contains a single integer symbolizing the number of
|
||||
# warnings of the last build.
|
||||
set(bld_log_path "${CMAKE_SOURCE_DIR}/build/compile_num_warnings.log")
|
||||
file(STRINGS "${bld_log_path}" output)
|
||||
if (NOT "${output}" STREQUAL "0")
|
||||
message(FATAL_ERROR "Build warnings detected, please check cdash-commit job")
|
||||
endif()
|
@ -1,3 +1,15 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
$erroractionpreference = "stop"
|
||||
|
||||
$version = "3.21.1"
|
||||
|
@ -1,6 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC2079
|
||||
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
set -ex
|
||||
|
||||
version="${1:-3.23.4}"
|
||||
|
@ -1,6 +1,18 @@
|
||||
#!/bin/bash -e
|
||||
# shellcheck disable=SC2155
|
||||
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
git rev-parse @ > ./ORIGINAL_COMMIT_SHA
|
||||
git add ./ORIGINAL_COMMIT_SHA
|
||||
|
||||
|
@ -1,5 +1,17 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
import json
|
||||
import ssl
|
||||
import sys
|
||||
|
@ -1,4 +1,15 @@
|
||||
#!/bin/bash -ex
|
||||
|
||||
git lfs uninstall
|
||||
git -c http.sslVerify=false push -f "$1" "HEAD:refs/heads/${2}"
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
git -c http.sslVerify=false push --no-verify -f "$1" "HEAD:refs/heads/${2}"
|
||||
|
@ -1,3 +1,15 @@
|
||||
#!/bin/bash -ex
|
||||
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
git -c http.sslVerify=false push --delete "$1" "$2"
|
||||
|
@ -1,6 +1,18 @@
|
||||
#!/bin/bash -e
|
||||
# shellcheck disable=SC2155
|
||||
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
declare -r POLL_INTERVAL_SECONDS="10"
|
||||
|
||||
function fetch_commit_status()
|
||||
|
@ -1,5 +1,17 @@
|
||||
#!/bin/bash
|
||||
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
set -xe
|
||||
|
||||
readonly version="v1.6.1"
|
||||
|
@ -91,25 +91,19 @@ foreach(option IN LISTS options)
|
||||
set(VTKm_ENABLE_HDF5_IO "ON" CACHE STRING "")
|
||||
|
||||
elseif(maxwell STREQUAL option)
|
||||
set(VTKm_CUDA_Architecture "maxwell" CACHE STRING "")
|
||||
set(vtkm_cuda_arch "maxwell")
|
||||
|
||||
elseif(pascal STREQUAL option)
|
||||
set(VTKm_CUDA_Architecture "pascal" CACHE STRING "")
|
||||
set(vtkm_cuda_arch "pascal")
|
||||
|
||||
elseif(volta STREQUAL option)
|
||||
set(VTKm_CUDA_Architecture "volta" CACHE STRING "")
|
||||
set(vtkm_cuda_arch "volta")
|
||||
|
||||
# From turing we set the architecture using the cannonical
|
||||
# CMAKE_CUDA_ARCHITECTURES
|
||||
elseif(turing STREQUAL option)
|
||||
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.18)
|
||||
set(CMAKE_CUDA_ARCHITECTURES "75" CACHE STRING "")
|
||||
else()
|
||||
set(VTKm_CUDA_Architecture "turing" CACHE STRING "")
|
||||
endif()
|
||||
set(vtkm_cuda_arch "turing")
|
||||
|
||||
elseif(ampere STREQUAL option)
|
||||
set(CMAKE_CUDA_ARCHITECTURES "80" CACHE STRING "")
|
||||
set(vtkm_cuda_arch "ampere")
|
||||
|
||||
elseif(hip STREQUAL option)
|
||||
if(CMAKE_VERSION VERSION_LESS_EQUAL 3.20)
|
||||
@ -162,6 +156,25 @@ foreach(option IN LISTS options)
|
||||
|
||||
endforeach()
|
||||
|
||||
# We need to use VTKm_CUDA_Architecture for older CMake versions
|
||||
if(vtkm_cuda_arch)
|
||||
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.18)
|
||||
if(vtkm_cuda_arch STREQUAL "maxwell")
|
||||
set(CMAKE_CUDA_ARCHITECTURES "50" CACHE STRING "")
|
||||
elseif(vtkm_cuda_arch STREQUAL "pascal")
|
||||
set(CMAKE_CUDA_ARCHITECTURES "60" CACHE STRING "")
|
||||
elseif(vtkm_cuda_arch STREQUAL "volta")
|
||||
set(CMAKE_CUDA_ARCHITECTURES "70" CACHE STRING "")
|
||||
elseif(vtkm_cuda_arch STREQUAL "turing")
|
||||
set(CMAKE_CUDA_ARCHITECTURES "75" CACHE STRING "")
|
||||
elseif(vtkm_cuda_arch STREQUAL "ampere")
|
||||
set(CMAKE_CUDA_ARCHITECTURES "80" CACHE STRING "")
|
||||
endif()
|
||||
else()
|
||||
set(VTKm_CUDA_Architecture "${vtkm_cuda_arch}" CACHE STRING "")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Compile tutorials on all builders. The code is small and basic. And since
|
||||
# it is the tutorial, it should work really well.
|
||||
set(VTKm_ENABLE_TUTORIALS "ON" CACHE STRING "")
|
||||
|
43
.gitlab/ci/config/kokkos.sh
Executable file
43
.gitlab/ci/config/kokkos.sh
Executable file
@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
set -x
|
||||
|
||||
WORKDIR="$1"
|
||||
VERSION="$2"
|
||||
|
||||
shift 2
|
||||
|
||||
if [ ! -d "$WORKDIR" ] || [ -z "$VERSION" ]
|
||||
then
|
||||
echo "[E] missing args: Invoke as .gitlab/ci/config/kokkos.sh <WORKDIR> <VERSION> [extra_args]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Build and install Kokkos
|
||||
curl -L "https://github.com/kokkos/kokkos/archive/refs/tags/$VERSION.tar.gz" \
|
||||
| tar -C "$WORKDIR" -xzf -
|
||||
|
||||
cmake -S "$WORKDIR/kokkos-$VERSION" -B "$WORKDIR/kokkos_build" \
|
||||
"-DCMAKE_BUILD_TYPE:STRING=release" \
|
||||
"-DCMAKE_CXX_COMPILER_LAUNCHER=ccache" \
|
||||
"-DCMAKE_CXX_STANDARD:STRING=17" \
|
||||
"-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON" \
|
||||
"-DKokkos_ENABLE_HIP:BOOL=ON" \
|
||||
"-DKokkos_ENABLE_HIP_RELOCATABLE_DEVICE_CODE:BOOL=OFF" \
|
||||
"-DKokkos_ENABLE_SERIAL:BOOL=ON" \
|
||||
$*
|
||||
|
||||
cmake --build "$WORKDIR/kokkos_build"
|
||||
cmake --install "$WORKDIR/kokkos_build"
|
@ -1,5 +1,17 @@
|
||||
#!/bin/sh
|
||||
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
set -e
|
||||
|
||||
readonly version="nvcc_v4"
|
||||
|
@ -1,3 +1,15 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
$erroractionpreference = "stop"
|
||||
|
||||
cmd /c "`"$env:VCVARSALL`" $VCVARSPLATFORM -vcvars_ver=$VCVARSVERSION & set" |
|
||||
|
@ -1,9 +1,21 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
# Ad-hoc build that runs in the ECP Hardware, concretely in OLCF Spock.
|
||||
.spock_gcc_hip:
|
||||
.crusher_gcc_hip:
|
||||
variables:
|
||||
CCACHE_BASEDIR: "/gpfs/alpine/world-shared/csc331/"
|
||||
CCACHE_DIR: "/gpfs/alpine/world-shared/csc331/vtk-m/ci/ccache"
|
||||
CUSTOM_CI_BUILDS_DIR: "/gpfs/alpine/world-shared/csc331/vtk-m/ci/runtime"
|
||||
CCACHE_BASEDIR: "/lustre/orion/csc331/scratch/"
|
||||
CCACHE_DIR: "/lustre/orion/csc331/scratch/vbolea/ci/vtk-m/ccache"
|
||||
CUSTOM_CI_BUILDS_DIR: "/lustre/orion/csc331/scratch/vbolea/ci/vtk-m/runtime"
|
||||
|
||||
# -isystem= is not affected by CCACHE_BASEDIR, thus we must ignore it
|
||||
CCACHE_IGNOREOPTIONS: "-isystem=*"
|
||||
@ -12,35 +24,28 @@
|
||||
|
||||
CMAKE_BUILD_TYPE: "RelWithDebInfo"
|
||||
CMAKE_GENERATOR: "Ninja"
|
||||
CMAKE_PREFIX_PATH: "$CI_BUILDS_DIR/kokkos_install"
|
||||
|
||||
# This is needed for the smoke_test, while we use rocm 5 to build VTK-m the
|
||||
# smoke_test needs 4.5 since Kokkos is built agains rocm 4.5
|
||||
LD_LIBRARY_PATH: "/opt/rocm-4.5.0/lib:${LD_LIBRARY_PATH}"
|
||||
LIBRARY_PATH: "/opt/rocm-4.5.0/lib:${LIBRARY_PATH}"
|
||||
# We do not want to use the user's ~/.gitconfig
|
||||
GIT_CONFIG_GLOBAL: "true"
|
||||
|
||||
# While Kokkos and VTK-m uses ROCm 4.5.0 runtime/sdk, we need to build
|
||||
# VTK-m with HIPCC from ROCM 5
|
||||
CMAKE_HIP_COMPILER: "/opt/rocm-default/llvm/bin/clang++"
|
||||
Kokkos_CXX_COMPILER: "/opt/rocm-default/llvm/bin/clang++"
|
||||
CMAKE_HIP_ARCHITECTURES: "gfx908"
|
||||
KOKKOS_OPTS: >-
|
||||
-DCMAKE_INSTALL_PREFIX:PATH=$CI_BUILDS_DIR/kokkos_install
|
||||
-DCMAKE_CXX_COMPILER:FILEPATH=/opt/rocm-5.4.3/hip/bin/hipcc
|
||||
-DKokkos_ARCH_VEGA90A:BOOL=ON
|
||||
|
||||
CC: gcc
|
||||
CXX: g++
|
||||
# DefApps/default;craype;rocm;gcc should be loaded first
|
||||
# The user default module list should not exist
|
||||
# craype;rocm;gcc should be loaded first
|
||||
JOB_MODULES: >-
|
||||
DefApps/default
|
||||
craype-accel-amd-gfx90a
|
||||
rocm/5
|
||||
gcc/10
|
||||
cmake/3.22
|
||||
gcc/12
|
||||
cmake
|
||||
rocm/5.4.3
|
||||
git
|
||||
git-lfs
|
||||
kokkos/3.5.00
|
||||
lsf-tools
|
||||
ninja
|
||||
spectrum-mpi
|
||||
zstd
|
||||
VTKM_SETTINGS: kokkos+hip+spock+ccache+no_rendering
|
||||
VTKM_SETTINGS: kokkos+hip+gfx90a+crusher+ccache+no_rendering
|
||||
interruptible: true
|
||||
|
||||
.setup_env_ecpci: &setup_env_ecpci |
|
||||
@ -49,12 +54,12 @@
|
||||
module list
|
||||
export PATH="${CCACHE_INSTALL_DIR}/ccache:$PATH"
|
||||
|
||||
build:spock_gcc_hip:
|
||||
build:crusher_gcc_hip:
|
||||
stage: build
|
||||
tags: [spock, shell]
|
||||
tags: [crusher, shell]
|
||||
extends:
|
||||
- .spock_gcc_hip
|
||||
- .run_spock_ci
|
||||
- .crusher_gcc_hip
|
||||
- .run_crusher_ci
|
||||
before_script:
|
||||
- *setup_env_ecpci
|
||||
- mkdir -p "$CCACHE_INSTALL_DIR"
|
||||
@ -62,6 +67,7 @@ build:spock_gcc_hip:
|
||||
- cmake -VV -P .gitlab/ci/config/ccache.cmake
|
||||
- ccache -z
|
||||
- ccache -s
|
||||
- .gitlab/ci/config/kokkos.sh "$CI_BUILDS_DIR" "3.7.01" $KOKKOS_OPTS
|
||||
|
||||
- git remote add lfs https://gitlab.kitware.com/vtk/vtk-m.git
|
||||
- git fetch lfs
|
||||
@ -77,18 +83,18 @@ build:spock_gcc_hip:
|
||||
- build/
|
||||
- .gitlab/ccache/ccache
|
||||
|
||||
test:spock_gcc_hip:
|
||||
test:crusher_gcc_hip:
|
||||
stage: test
|
||||
tags: [spock, slurm]
|
||||
tags: [crusher, slurm]
|
||||
extends:
|
||||
- .spock_gcc_hip
|
||||
- .run_spock_ci
|
||||
- .crusher_gcc_hip
|
||||
- .run_crusher_ci
|
||||
needs:
|
||||
- build:spock_gcc_hip
|
||||
- build:crusher_gcc_hip
|
||||
dependencies:
|
||||
- build:spock_gcc_hip
|
||||
- build:crusher_gcc_hip
|
||||
variables:
|
||||
SCHEDULER_PARAMETERS: "-ACSC331 -pecp -t120 --nice=0 -c32 --gpus=4 -N 1"
|
||||
SCHEDULER_PARAMETERS: "-ACSC331_crusher -pbatch -t120 --nice=0 -c32 --gpus=4 -N 1"
|
||||
# We need this to skip ctest_submit from being run inside a jsrun job
|
||||
GITLAB_CI_EMULATION: 1
|
||||
# Tests errors to address due to different env in Spock
|
@ -30,11 +30,10 @@ if(NOT DEFINED ENV{GITLAB_CI_EMULATION})
|
||||
else()
|
||||
ctest_submit(PARTS Build)
|
||||
endif()
|
||||
|
||||
|
||||
endif()
|
||||
|
||||
file(WRITE "${CTEST_BINARY_DIRECTORY}/compile_num_warnings.log" "${num_warnings}")
|
||||
|
||||
if (build_result)
|
||||
message(FATAL_ERROR
|
||||
"Failed to build")
|
||||
message(FATAL_ERROR "Failed to build")
|
||||
endif ()
|
||||
|
@ -1,3 +1,15 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
FROM nvidia/cuda:10.2-devel-centos7
|
||||
LABEL maintainer "Robert Maynard<robert.maynard@kitware.com>"
|
||||
|
||||
|
@ -1,3 +1,15 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
FROM centos:8
|
||||
LABEL maintainer "Robert Maynard<robert.maynard@kitware.com>"
|
||||
|
||||
|
36
.gitlab/ci/docker/opensuse/Dockerfile
Normal file
36
.gitlab/ci/docker/opensuse/Dockerfile
Normal file
@ -0,0 +1,36 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
FROM opensuse/tumbleweed
|
||||
LABEL maintainer "Vicente Adolfo Bolea Sanchez<vicente.bolea@kitware.com>"
|
||||
|
||||
# Base dependencies for building VTK-m projects
|
||||
RUN zypper refresh && \
|
||||
zypper update -y && \
|
||||
zypper install -y --no-recommends \
|
||||
cmake \
|
||||
curl \
|
||||
gcc13-c++ \
|
||||
git \
|
||||
git-lfs \
|
||||
hdf5-devel \
|
||||
libgomp1 \
|
||||
mpich \
|
||||
mpich-devel \
|
||||
ninja \
|
||||
python311 \
|
||||
python311-scipy \
|
||||
tbb-devel && \
|
||||
zypper clean --all
|
||||
|
||||
# Need to run git-lfs install manually on system packaged version
|
||||
RUN git-lfs install
|
@ -1,3 +1,15 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
FROM nvidia/cuda:10.2-devel-ubi8
|
||||
LABEL maintainer "Robert Maynard<robert.maynard@kitware.com>"
|
||||
|
||||
|
@ -1,3 +1,15 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
FROM ubuntu:16.04
|
||||
LABEL maintainer "Robert Maynard<robert.maynard@kitware.com>"
|
||||
|
||||
|
@ -1,3 +1,15 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
FROM nvidia/cuda:9.2-devel-ubuntu16.04
|
||||
LABEL maintainer "Robert Maynard<robert.maynard@kitware.com>"
|
||||
|
||||
|
@ -1,3 +1,15 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
FROM ubuntu:18.04
|
||||
LABEL maintainer "Robert Maynard<robert.maynard@kitware.com>"
|
||||
|
||||
|
@ -1,3 +1,15 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
FROM nvidia/cuda:11.7.1-devel-ubuntu18.04
|
||||
LABEL maintainer "Vicente Adolfo Bolea Sanchez <vicente.bolea@kitware.com>"
|
||||
|
||||
|
@ -1,3 +1,15 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
FROM nvidia/cuda:11.6.1-devel-ubuntu18.04
|
||||
LABEL maintainer "Vicente Adolfo Bolea Sanchez<vicente.bolea@kitware.com>"
|
||||
|
||||
@ -25,13 +37,14 @@ RUN mkdir /opt/cmake/ && \
|
||||
ENV PATH "/opt/cmake/bin:${PATH}"
|
||||
|
||||
# Build and install Kokkos
|
||||
ARG KOKKOS_VERSION=3.7.01
|
||||
RUN mkdir -p /opt/kokkos/build && \
|
||||
cd /opt/kokkos/build && \
|
||||
curl -L https://github.com/kokkos/kokkos/archive/refs/tags/3.4.01.tar.gz > kokkos-3.4.01.tar.gz && \
|
||||
tar -xf kokkos-3.4.01.tar.gz && \
|
||||
curl -L https://github.com/kokkos/kokkos/archive/refs/tags/$KOKKOS_VERSION.tar.gz > kokkos-$KOKKOS_VERSION.tar.gz && \
|
||||
tar -xf kokkos-$KOKKOS_VERSION.tar.gz && \
|
||||
mkdir bld && cd bld && \
|
||||
CXX=/opt/kokkos/build/kokkos-3.4.01/bin/nvcc_wrapper \
|
||||
cmake -B . -S ../kokkos-3.4.01 \
|
||||
CXX=/opt/kokkos/build/kokkos-$KOKKOS_VERSION/bin/nvcc_wrapper \
|
||||
cmake -B . -S ../kokkos-$KOKKOS_VERSION \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=/opt/kokkos \
|
||||
-DCMAKE_CXX_FLAGS=-fPIC \
|
||||
|
@ -1,3 +1,15 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
FROM ubuntu:20.04
|
||||
LABEL maintainer "Vicente Adolfo Bolea Sanchez<vicente.bolea@kitware.com>"
|
||||
|
||||
|
@ -1,3 +1,15 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
FROM ubuntu:20.04
|
||||
LABEL maintainer "Robert Maynard<robert.maynard@kitware.com>"
|
||||
|
||||
|
@ -1,3 +1,15 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
FROM rocm/dev-ubuntu-20.04
|
||||
LABEL maintainer "Vicente Adolfo Bolea Sanchez<vicente.bolea@kitware.com>"
|
||||
|
||||
@ -14,6 +26,7 @@ RUN apt update && \
|
||||
ninja-build \
|
||||
rsync \
|
||||
ssh \
|
||||
rocthrust-dev \
|
||||
&& \
|
||||
apt clean
|
||||
|
||||
@ -44,7 +57,7 @@ ENV CMAKE_PREFIX_PATH "/opt/rocm/lib/cmake:/opt/rocm/lib:${CMAKE_PREFIX_PATH}"
|
||||
ENV CMAKE_GENERATOR "Ninja"
|
||||
|
||||
# Build and install Kokkos
|
||||
ARG KOKKOS_VERSION=3.6.00
|
||||
ARG KOKKOS_VERSION=3.7.01
|
||||
COPY kokkos_cmake_config.cmake kokkos_cmake_config.cmake
|
||||
RUN curl -L https://github.com/kokkos/kokkos/archive/refs/tags/$KOKKOS_VERSION.tar.gz | tar -xzf - && \
|
||||
cmake -S kokkos-$KOKKOS_VERSION -B build -C kokkos_cmake_config.cmake && \
|
||||
|
@ -1,3 +1,15 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
FROM ubuntu:20.04
|
||||
LABEL maintainer "Sujin Philip<sujin.philip@kitware.com>"
|
||||
|
||||
@ -31,11 +43,12 @@ RUN mkdir /opt/cmake/ && \
|
||||
ENV PATH "${PATH}:/opt/cmake/bin"
|
||||
|
||||
# Build and install Kokkos
|
||||
ARG KOKKOS_VERSION=4.1.00
|
||||
RUN mkdir -p /opt/kokkos/build && \
|
||||
cd /opt/kokkos/build && \
|
||||
curl -L https://github.com/kokkos/kokkos/archive/refs/tags/3.4.01.tar.gz > kokkos-3.4.01.tar.gz && \
|
||||
tar -xf kokkos-3.4.01.tar.gz && \
|
||||
curl -L https://github.com/kokkos/kokkos/archive/refs/tags/$KOKKOS_VERSION.tar.gz > kokkos-$KOKKOS_VERSION.tar.gz && \
|
||||
tar -xf kokkos-$KOKKOS_VERSION.tar.gz && \
|
||||
mkdir bld && cd bld && \
|
||||
cmake -GNinja -DCMAKE_INSTALL_PREFIX=/opt/kokkos -DCMAKE_CXX_FLAGS=-fPIC -DKokkos_ENABLE_SERIAL=ON ../kokkos-3.4.01 &&\
|
||||
cmake -GNinja -DCMAKE_INSTALL_PREFIX=/opt/kokkos -DCMAKE_CXX_FLAGS=-fPIC -DKokkos_ENABLE_SERIAL=ON ../kokkos-$KOKKOS_VERSION &&\
|
||||
ninja all && \
|
||||
ninja install
|
||||
|
@ -1,5 +1,17 @@
|
||||
#!/bin/sh
|
||||
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
set -e
|
||||
set -x
|
||||
|
||||
|
@ -1,3 +1,15 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
.doxygen_submit: &doxygen_submit
|
||||
stage: build
|
||||
tags:
|
||||
|
@ -1,30 +1,43 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
# Ad-hoc build that runs in macos machines
|
||||
build:macos_xcode13:
|
||||
build:macos_xcode14:
|
||||
extends:
|
||||
- .macos_xcode13
|
||||
- .macos_xcode14
|
||||
- .macos_build_tags
|
||||
- .cmake_build_macos
|
||||
- .run_automatically
|
||||
|
||||
test:macos_xcode13:
|
||||
test:macos_xcode14:
|
||||
extends:
|
||||
- .macos_xcode13
|
||||
- .macos_xcode14
|
||||
- .macos_build_tags
|
||||
- .cmake_test_macos
|
||||
- .run_automatically
|
||||
needs:
|
||||
- build:macos_xcode13
|
||||
- build:macos_xcode14
|
||||
dependencies:
|
||||
- build:macos_xcode13
|
||||
- build:macos_xcode14
|
||||
|
||||
.macos_xcode13:
|
||||
.macos_xcode14:
|
||||
variables:
|
||||
CMAKE_BUILD_TYPE: RelWithDebInfo
|
||||
CMAKE_GENERATOR: Ninja
|
||||
|
||||
CC: gcc
|
||||
CXX: g++
|
||||
DEVELOPER_DIR: "/Applications/Xcode-13.3.app/Contents/Developer"
|
||||
DEVELOPER_DIR: "/Applications/Xcode-14.2.app/Contents/Developer"
|
||||
GIT_CLONE_PATH: "$CI_BUILDS_DIR/vtk-m-ci"
|
||||
VTKM_SETTINGS: "64bit_floats+shared+ccache"
|
||||
|
||||
.cmake_build_macos:
|
||||
@ -55,11 +68,13 @@ test:macos_xcode13:
|
||||
- "ctest -VV -S .gitlab/ci/ctest_configure.cmake"
|
||||
script:
|
||||
- "ctest -VV -S .gitlab/ci/ctest_build.cmake"
|
||||
- cmake -P .gitlab/ci/check_warnings.cmake || exit 47
|
||||
after_script:
|
||||
- ccache -v -s
|
||||
- ccache -z
|
||||
extends:
|
||||
- .cmake_build_artifacts
|
||||
- .warning_policy
|
||||
|
||||
.cmake_test_macos:
|
||||
stage: test
|
||||
@ -80,5 +95,5 @@ test:macos_xcode13:
|
||||
tags:
|
||||
- vtk-m
|
||||
- macos-x86_64
|
||||
- xcode-13.3
|
||||
- xcode-14.2
|
||||
- nonconcurrent
|
||||
|
44
.gitlab/ci/opensuse.yml
Normal file
44
.gitlab/ci/opensuse.yml
Normal file
@ -0,0 +1,44 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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:opensuse_gcc13:
|
||||
tags:
|
||||
- build
|
||||
- vtkm
|
||||
- docker
|
||||
- linux-x86_64
|
||||
extends:
|
||||
- .opensuse
|
||||
- .cmake_build_linux
|
||||
- .run_automatically
|
||||
variables:
|
||||
CMAKE_BUILD_TYPE: Debug
|
||||
VTKM_SETTINGS: "benchmarks+tbb+openmp+mpi+shared+hdf5+min_build"
|
||||
|
||||
test:opensuse_gcc13:
|
||||
tags:
|
||||
- test
|
||||
- vtkm
|
||||
- docker
|
||||
- linux-x86_64
|
||||
extends:
|
||||
- .opensuse
|
||||
- .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:opensuse_gcc13
|
||||
needs:
|
||||
- build:opensuse_gcc13
|
@ -1,3 +1,14 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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 rhel8 with serial and test on rhel8
|
||||
# Uses gcc 8.2.1
|
||||
|
@ -1,3 +1,14 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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 ubuntu1604 with CUDA 9.2 and test on ubuntu1604 and ubuntu1804
|
||||
# Uses gcc 5, and build for pascal as CUDA 9.2 doesn't support turing
|
||||
|
@ -1,3 +1,14 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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
|
||||
|
@ -1,35 +1,14 @@
|
||||
build:ubuntu2004_gcc9:
|
||||
tags:
|
||||
- build
|
||||
- vtkm
|
||||
- docker
|
||||
- linux-x86_64
|
||||
extends:
|
||||
- .ubuntu2004
|
||||
- .cmake_build_linux
|
||||
- .run_automatically
|
||||
variables:
|
||||
CMAKE_BUILD_TYPE: Debug
|
||||
VTKM_SETTINGS: "benchmarks+tbb+openmp+mpi+shared+hdf5+min_build"
|
||||
|
||||
test:ubuntu2004_gcc9:
|
||||
tags:
|
||||
- test
|
||||
- vtkm
|
||||
- docker
|
||||
- linux-x86_64
|
||||
extends:
|
||||
- .ubuntu2004
|
||||
- .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:ubuntu2004_gcc9
|
||||
needs:
|
||||
- build:ubuntu2004_gcc9
|
||||
##=============================================================================
|
||||
##
|
||||
## 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:ubuntu2004_kokkos:
|
||||
tags:
|
||||
@ -62,7 +41,6 @@ test:ubuntu2004_kokkos:
|
||||
|
||||
build:ubuntu2004_hip_kokkos:
|
||||
tags:
|
||||
- build
|
||||
- vtkm
|
||||
- docker
|
||||
- linux-x86_64
|
||||
@ -93,7 +71,6 @@ build:ubuntu2004_hip_kokkos:
|
||||
|
||||
test:ubuntu2004_hip_kokkos:
|
||||
tags:
|
||||
- build
|
||||
- vtkm
|
||||
- docker
|
||||
- linux-x86_64
|
||||
@ -104,6 +81,7 @@ test:ubuntu2004_hip_kokkos:
|
||||
- .run_upstream_branches
|
||||
variables:
|
||||
CTEST_MAX_PARALLELISM: 1
|
||||
TEST_EXCLUSIONS: "UnitTestWorkletParticleAdvection"
|
||||
dependencies:
|
||||
- build:ubuntu2004_hip_kokkos
|
||||
needs:
|
||||
|
@ -1,3 +1,15 @@
|
||||
##=============================================================================
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
##=============================================================================
|
||||
|
||||
.windows_build:
|
||||
variables:
|
||||
# Note that shell runners only support runners with a single
|
||||
@ -17,7 +29,7 @@
|
||||
variables:
|
||||
VCVARSALL: "${VS160COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
|
||||
VCVARSPLATFORM: "x64"
|
||||
VCVARSVERSION: "14.25"
|
||||
VCVARSVERSION: "14.28.29333"
|
||||
|
||||
.cmake_build_windows: &cmake_build_windows
|
||||
extends:
|
||||
@ -40,6 +52,8 @@
|
||||
- "ctest -VV -S .gitlab/ci/ctest_configure.cmake"
|
||||
script:
|
||||
- "ctest -VV -S .gitlab/ci/ctest_build.cmake"
|
||||
- "cmake -P .gitlab/ci/check_warnings.cmake"
|
||||
- if (!$?) { $host.SetShouldExit(47); exit 47 }
|
||||
after_script:
|
||||
# This is needed since sometimes this process hangs holding files
|
||||
# in the build directory. Blocking new builds
|
||||
@ -58,6 +72,7 @@
|
||||
# CTest and CMake install files.
|
||||
# Note: this also captures our CIState.cmake file
|
||||
- build/CMakeCache.txt
|
||||
- build/compile_num_warnings.log
|
||||
- build/**/*.cmake
|
||||
- build/Testing/
|
||||
|
||||
@ -98,6 +113,7 @@ build:windows_vs2019:
|
||||
extends:
|
||||
- .cmake_build_windows
|
||||
- .run_automatically
|
||||
- .warning_policy
|
||||
variables:
|
||||
CMAKE_GENERATOR: "Ninja"
|
||||
CMAKE_BUILD_TYPE: Release
|
||||
|
@ -22,8 +22,15 @@ set(FILES_TO_CHECK
|
||||
*.cmake
|
||||
*.h
|
||||
*.h.in
|
||||
*.hxx
|
||||
*.cxx
|
||||
*.cu
|
||||
*.py
|
||||
*.sh
|
||||
*.ps1
|
||||
Dockerfile
|
||||
*.yaml
|
||||
*.yml
|
||||
)
|
||||
|
||||
set(EXCEPTIONS
|
||||
@ -150,21 +157,19 @@ endfunction(missing_copyright)
|
||||
|
||||
# Get an appropriate beginning line comment for the given filename.
|
||||
function(get_comment_prefix var filename)
|
||||
get_filename_component(base "${filename}" NAME_WE)
|
||||
get_filename_component(extension "${filename}" EXT)
|
||||
if (extension STREQUAL ".cmake")
|
||||
get_filename_component(name "${filename}" NAME)
|
||||
if(name MATCHES "\\.(cmake|py|sh|ps1|yaml|yml)$"
|
||||
OR name STREQUAL "CMakeLists.txt"
|
||||
OR name STREQUAL "Dockerfile"
|
||||
)
|
||||
set(${var} "##" PARENT_SCOPE)
|
||||
elseif (base STREQUAL "CMakeLists" AND extension STREQUAL ".txt")
|
||||
set(${var} "##" PARENT_SCOPE)
|
||||
elseif (extension STREQUAL ".txt")
|
||||
elseif (name MATCHES "\\.(h|h\\.in|hxx|cxx|cu)$")
|
||||
set(${var} "//" PARENT_SCOPE)
|
||||
elseif (name MATCHES "\\.txt$")
|
||||
set(${var} "" PARENT_SCOPE)
|
||||
elseif (extension STREQUAL ".h" OR extension STREQUAL ".h.in" OR extension STREQUAL ".cxx" OR extension STREQUAL ".cu")
|
||||
set(${var} "//" PARENT_SCOPE)
|
||||
elseif (extension STREQUAL ".worklet")
|
||||
set(${var} "//" PARENT_SCOPE)
|
||||
else (extension STREQUAL ".cmake")
|
||||
message(SEND_ERROR "Could not identify file type of ${filename}.")
|
||||
endif (extension STREQUAL ".cmake")
|
||||
else ()
|
||||
message(FATAL_ERROR "Could not identify file type of `${name}`.")
|
||||
endif ()
|
||||
endfunction(get_comment_prefix)
|
||||
|
||||
# Check the given file for the appropriate copyright statement.
|
||||
|
@ -77,6 +77,7 @@ set(VTKm_ENABLE_OSMESA_CONTEXT "@VTKm_ENABLE_OSMESA_CONTEXT@")
|
||||
set(VTKm_ENABLE_EGL_CONTEXT "@VTKm_ENABLE_EGL_CONTEXT@")
|
||||
set(VTKm_ENABLE_MPI "@VTKm_ENABLE_MPI@")
|
||||
set(VTKm_ENABLE_TESTING_LIBRARY "@VTKm_ENABLE_TESTING_LIBRARY@")
|
||||
set(VTKm_USE_DEFAULT_TYPES_FOR_ASCENT "@VTKm_USE_DEFAULT_TYPES_FOR_ASCENT@")
|
||||
|
||||
# This is true when the package is still in the build directory (not installed)
|
||||
if(CMAKE_CURRENT_LIST_DIR STREQUAL "@VTKm_BUILD_CMAKE_BASE_DIR@/@VTKm_INSTALL_CONFIG_DIR@")
|
||||
|
@ -322,7 +322,7 @@ endfunction()
|
||||
if(VTKm_ENABLE_KOKKOS AND NOT TARGET vtkm_kokkos)
|
||||
cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
|
||||
|
||||
find_package(Kokkos REQUIRED)
|
||||
find_package(Kokkos 3.7 REQUIRED)
|
||||
|
||||
# We must empty this property for every kokkos backend device since it
|
||||
# contains a generator expresion which breaks some of our users builds.
|
||||
@ -357,6 +357,14 @@ if(VTKm_ENABLE_KOKKOS AND NOT TARGET vtkm_kokkos)
|
||||
add_library(vtkm_kokkos_hip INTERFACE)
|
||||
set_property(TARGET vtkm_kokkos_hip PROPERTY EXPORT_NAME kokkos_hip)
|
||||
install(TARGETS vtkm_kokkos_hip EXPORT ${VTKm_EXPORT_NAME})
|
||||
|
||||
# Make sure rocthrust is available if requested
|
||||
if(VTKm_ENABLE_KOKKOS_THRUST)
|
||||
find_package(rocthrust)
|
||||
if(NOT rocthrust_FOUND)
|
||||
message(FATAL_ERROR "rocthrust not found. Please set VTKm_ENABLE_KOKKOS_THRUST to OFF.")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
add_library(vtkm_kokkos INTERFACE IMPORTED GLOBAL)
|
||||
|
@ -658,6 +658,10 @@ function(vtkm_add_instantiations instantiations_list)
|
||||
set(file_template_source ${instantiations_file})
|
||||
endif()
|
||||
|
||||
set_property(DIRECTORY
|
||||
APPEND
|
||||
PROPERTY CMAKE_CONFIGURE_DEPENDS ${instantiations_file})
|
||||
|
||||
# Extract explicit instantiations
|
||||
_vtkm_extract_instantiations(instantiations ${instantiations_file})
|
||||
|
||||
|
@ -76,9 +76,28 @@ function(add_benchmark_test benchmark)
|
||||
set(VTKm_PERF_COMPARE_JSON "${CMAKE_BINARY_DIR}/$ENV{CI_COMMIT_SHA}_${VTKm_PERF_NAME}.json")
|
||||
endif()
|
||||
|
||||
# Only upload when we are inside a CI build and in master. We need to check
|
||||
# if VTKM_BENCH_RECORDS_TOKEN is either defined or non-empty, the reason is
|
||||
# that in Gitlab CI Variables for protected branches are also defined in MR
|
||||
# from forks, however, they are empty.
|
||||
if (DEFINED ENV{VTKM_BENCH_RECORDS_TOKEN} AND ENV{VTKM_BENCH_RECORDS_TOKEN})
|
||||
set(enable_upload TRUE)
|
||||
endif()
|
||||
|
||||
set(test_name "PerformanceTest${VTKm_PERF_NAME}")
|
||||
|
||||
###TEST INVOKATIONS##########################################################
|
||||
if (NOT TEST PerformanceTestFetch)
|
||||
add_test(NAME "PerformanceTestFetch"
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
"-DVTKm_PERF_REPO=${VTKm_PERF_REPO}"
|
||||
"-DVTKm_SOURCE_DIR=${VTKm_SOURCE_DIR}"
|
||||
"-DVTKm_PERF_REMOTE_URL=${VTKm_PERF_REMOTE_URL}"
|
||||
-P "${VTKm_SOURCE_DIR}/CMake/testing/VTKmPerformanceTestFetch.cmake"
|
||||
)
|
||||
set_property(TEST PerformanceTestFetch PROPERTY FIXTURES_SETUP "FixturePerformanceTestSetup")
|
||||
endif()
|
||||
|
||||
add_test(NAME "${test_name}Run"
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
"-DVTKm_PERF_BENCH_DEVICE=Any"
|
||||
@ -93,22 +112,6 @@ function(add_benchmark_test benchmark)
|
||||
-P "${VTKm_SOURCE_DIR}/CMake/testing/VTKmPerformanceTestRun.cmake"
|
||||
)
|
||||
|
||||
add_test(NAME "${test_name}Fetch"
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
"-DVTKm_PERF_REPO=${VTKm_PERF_REPO}"
|
||||
"-DVTKm_SOURCE_DIR=${VTKm_SOURCE_DIR}"
|
||||
"-DVTKm_PERF_REMOTE_URL=${VTKm_PERF_REMOTE_URL}"
|
||||
-P "${VTKm_SOURCE_DIR}/CMake/testing/VTKmPerformanceTestFetch.cmake"
|
||||
)
|
||||
|
||||
add_test(NAME "${test_name}Upload"
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
"-DVTKm_PERF_REPO=${VTKm_PERF_REPO}"
|
||||
"-DVTKm_PERF_COMPARE_JSON=${VTKm_PERF_COMPARE_JSON}"
|
||||
"-DVTKm_SOURCE_DIR=${VTKm_SOURCE_DIR}"
|
||||
-P "${VTKm_SOURCE_DIR}/CMake/testing/VTKmPerformanceTestUpload.cmake"
|
||||
)
|
||||
|
||||
add_test(NAME "${test_name}Report"
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
"-DVTKm_BINARY_DIR=${VTKm_BINARY_DIR}"
|
||||
@ -122,28 +125,34 @@ function(add_benchmark_test benchmark)
|
||||
-P "${VTKm_SOURCE_DIR}/CMake/testing/VTKmPerformanceTestReport.cmake"
|
||||
)
|
||||
|
||||
add_test(NAME "${test_name}CleanUp"
|
||||
COMMAND ${CMAKE_COMMAND} -E rm -rf "${VTKm_PERF_REPO}"
|
||||
)
|
||||
if (enable_upload)
|
||||
add_test(NAME "${test_name}Upload"
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
"-DVTKm_PERF_REPO=${VTKm_PERF_REPO}"
|
||||
"-DVTKm_PERF_COMPARE_JSON=${VTKm_PERF_COMPARE_JSON}"
|
||||
"-DVTKm_SOURCE_DIR=${VTKm_SOURCE_DIR}"
|
||||
-P "${VTKm_SOURCE_DIR}/CMake/testing/VTKmPerformanceTestUpload.cmake"
|
||||
)
|
||||
|
||||
set_tests_properties("${test_name}Upload" PROPERTIES
|
||||
DEPENDS ${test_name}Report
|
||||
FIXTURES_REQUIRED "FixturePerformanceTestCleanUp"
|
||||
REQUIRED_FILES "${VTKm_PERF_COMPARE_JSON}"
|
||||
RUN_SERIAL ON)
|
||||
endif()
|
||||
|
||||
###TEST PROPERTIES###########################################################
|
||||
set_tests_properties("${test_name}Report" "${test_name}Upload"
|
||||
set_property(TEST ${test_name}Report PROPERTY DEPENDS ${test_name}Run)
|
||||
set_property(TEST ${test_name}Report PROPERTY FIXTURES_REQUIRED "FixturePerformanceTestSetup")
|
||||
|
||||
set_tests_properties("${test_name}Report"
|
||||
PROPERTIES
|
||||
FIXTURE_REQUIRED "${test_name}Run;${test_name}Fetch"
|
||||
FIXTURE_CLEANUP "${test_name}CleanUp"
|
||||
REQUIRED_FILES "${VTKm_PERF_COMPARE_JSON}")
|
||||
|
||||
set_tests_properties("${test_name}Run"
|
||||
"${test_name}Report"
|
||||
"${test_name}Upload"
|
||||
"${test_name}Fetch"
|
||||
"${test_name}CleanUp"
|
||||
"PerformanceTestFetch"
|
||||
PROPERTIES RUN_SERIAL ON)
|
||||
|
||||
set_tests_properties(${test_name}Run PROPERTIES TIMEOUT 1800)
|
||||
|
||||
# Only upload when we are inside a CI build
|
||||
if (NOT DEFINED ENV{CI_COMMIT_SHA} OR NOT DEFINED ENV{VTKM_BENCH_RECORDS_TOKEN})
|
||||
set_tests_properties(${test_name}Upload PROPERTIES DISABLED TRUE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
@ -10,8 +10,17 @@
|
||||
|
||||
include(${VTKm_SOURCE_DIR}/CMake/testing/VTKmPerformanceTestLib.cmake)
|
||||
|
||||
REQUIRE_FLAG("VTKm_SOURCE_DIR")
|
||||
REQUIRE_FLAG_MUTABLE("VTKm_PERF_REPO")
|
||||
REQUIRE_FLAG_MUTABLE("VTKm_PERF_REMOTE_URL")
|
||||
|
||||
set(upstream_url "https://gitlab.kitware.com/vtk/vtk-m.git")
|
||||
|
||||
file(REMOVE_RECURSE vtk-m-benchmark-records)
|
||||
execute(COMMAND /usr/bin/git clone -b records ${VTKm_PERF_REMOTE_URL} ${VTKm_PERF_REPO})
|
||||
|
||||
# Fetch VTK-m main git repo objects, this is needed to ensure that when running the CI
|
||||
# from a fork project of VTK-m it will have access to the latest git commits in
|
||||
# the upstream vtk-m git repo.
|
||||
execute(COMMAND /usr/bin/git -C ${VTKm_SOURCE_DIR} remote add upstream ${upstream_url})
|
||||
execute(COMMAND /usr/bin/git -C ${VTKm_SOURCE_DIR} fetch upstream)
|
||||
|
@ -19,7 +19,7 @@ REQUIRE_FLAG_MUTABLE("VTKm_PERF_ALPHA")
|
||||
REQUIRE_FLAG_MUTABLE("VTKm_PERF_DIST")
|
||||
|
||||
###FIND MOST RECENT BASELINE####################################################
|
||||
execute(COMMAND /usr/bin/git -C "${VTKm_SOURCE_DIR}" merge-base origin/master @
|
||||
execute(COMMAND /usr/bin/git -C "${VTKm_SOURCE_DIR}" merge-base upstream/master @
|
||||
OUTPUT_VARIABLE GIT_BASE_COMMIT)
|
||||
|
||||
string(STRIP "${GIT_BASE_COMMIT}" GIT_BASE_COMMIT)
|
||||
|
@ -39,11 +39,24 @@ function(_vtkm_create_test_executable
|
||||
set(CMAKE_TESTDRIVER_BEFORE_TESTMAIN "")
|
||||
endif()
|
||||
|
||||
#the creation of the test source list needs to occur before the labeling as
|
||||
#The creation of the test source list needs to occur before the labeling as
|
||||
#cuda. This is so that we get the correctly named entry points generated
|
||||
create_test_sourcelist(test_sources ${prog}.cxx ${sources} ${device_sources} ${extraArgs})
|
||||
#Also, although we usually assume that each source file is a test, we need
|
||||
#to check for the `NOT_A_TEST` property for support code that should be
|
||||
#compiled with the executable but is not a test itself.
|
||||
set(test_sources)
|
||||
set(extra_sources)
|
||||
foreach(src IN LISTS sources device_sources)
|
||||
get_source_file_property(not_a_test ${src} NOT_A_TEST)
|
||||
if (not_a_test)
|
||||
list(APPEND extra_sources ${src})
|
||||
else()
|
||||
list(APPEND test_sources ${src})
|
||||
endif()
|
||||
endforeach()
|
||||
create_test_sourcelist(test_sources ${prog}.cxx ${test_sources} ${extraArgs})
|
||||
|
||||
add_executable(${prog} ${test_sources})
|
||||
add_executable(${prog} ${test_sources} ${extra_sources})
|
||||
vtkm_add_drop_unused_function_flags(${prog})
|
||||
target_compile_definitions(${prog} PRIVATE ${defines})
|
||||
|
||||
@ -91,6 +104,14 @@ endfunction()
|
||||
# function with the same name as the source file. For example, if SOURCES
|
||||
# contains `UnitTestFoo.cxx`, then `UnitTestFoo.cxx` should contain a
|
||||
# function named `UnitTestFoo`. A test with this name is also added to ctest.
|
||||
# If you want to add a source file that should not be treated as a test, then
|
||||
# you can attach the `NOT_A_TEST` property to those files (using
|
||||
# `set_source_files_properties`), and that file will be added to the test
|
||||
# executable without adding an associated test.
|
||||
#
|
||||
# DEVICE_SOURCES: The same as SOURCES except that each file will be compiled
|
||||
# with the device compiler. You can use both SOURCES and DEVICE_SOURCES
|
||||
# together to specify which compiler to use for each file.
|
||||
#
|
||||
# LIBRARIES: Extra libraries that this set of tests need to link to.
|
||||
#
|
||||
@ -289,7 +310,17 @@ vtkm_unit_tests but not in its test dependencies. Add test dependencies to \
|
||||
list(GET per_device_timeout ${index} timeout)
|
||||
list(GET per_device_serial ${index} run_serial)
|
||||
|
||||
# If set, remove the VTK-m specified timeouts for CTest
|
||||
set(extra_args)
|
||||
if (NOT VTKm_OVERRIDE_CTEST_TIMEOUT)
|
||||
list(APPEND extra_args TIMEOUT ${timeout})
|
||||
endif()
|
||||
|
||||
foreach (test ${VTKm_UT_SOURCES} ${VTKm_UT_DEVICE_SOURCES})
|
||||
get_source_file_property(not_a_test ${test} NOT_A_TEST)
|
||||
if (not_a_test)
|
||||
continue()
|
||||
endif()
|
||||
get_filename_component(tname ${test} NAME_WE)
|
||||
if(VTKm_UT_MPI)
|
||||
if (VTKm_ENABLE_MPI)
|
||||
@ -300,7 +331,7 @@ vtkm_unit_tests but not in its test dependencies. Add test dependencies to \
|
||||
)
|
||||
set_tests_properties("${tname}${upper_backend}_mpi" PROPERTIES
|
||||
LABELS "${upper_backend};${VTKm_UT_LABEL}"
|
||||
TIMEOUT ${timeout}
|
||||
${extra_args}
|
||||
RUN_SERIAL ${run_serial}
|
||||
FAIL_REGULAR_EXPRESSION "runtime error")
|
||||
endif() # VTKm_ENABLE_MPI
|
||||
@ -311,7 +342,7 @@ vtkm_unit_tests but not in its test dependencies. Add test dependencies to \
|
||||
)
|
||||
set_tests_properties("${tname}${upper_backend}_nompi" PROPERTIES
|
||||
LABELS "${upper_backend};${VTKm_UT_LABEL}"
|
||||
TIMEOUT ${timeout}
|
||||
${extra_args}
|
||||
RUN_SERIAL ${run_serial}
|
||||
FAIL_REGULAR_EXPRESSION "runtime error")
|
||||
|
||||
@ -323,11 +354,12 @@ vtkm_unit_tests but not in its test dependencies. Add test dependencies to \
|
||||
)
|
||||
set_tests_properties("${tname}${upper_backend}" PROPERTIES
|
||||
LABELS "${upper_backend};${VTKm_UT_LABEL}"
|
||||
TIMEOUT ${timeout}
|
||||
${extra_args}
|
||||
RUN_SERIAL ${run_serial}
|
||||
FAIL_REGULAR_EXPRESSION "runtime error")
|
||||
endif() # VTKm_UT_MPI
|
||||
endforeach()
|
||||
unset(extra_args)
|
||||
endforeach()
|
||||
|
||||
endfunction(vtkm_unit_tests)
|
||||
|
@ -181,6 +181,16 @@ vtkm_option(VTKm_NO_INSTALL_README_LICENSE "disable the installation of README a
|
||||
# Allow VTK to turn off these symlinks for its wheel distribution.
|
||||
vtkm_option(VTKm_SKIP_LIBRARY_VERSIONS "Skip versioning VTK-m libraries" OFF)
|
||||
|
||||
# During development, running unit tests with the default values can be too lengthy.
|
||||
# Allow for the developer to skip the majority of the default values and control them
|
||||
# through ctest's command-line. Doesn't affect CI unless enabled.
|
||||
vtkm_option(VTKm_OVERRIDE_CTEST_TIMEOUT "Disable default ctest timeout" OFF)
|
||||
|
||||
# VTKm_ENABLE_GPU_MPI makes VTK-m to use DIY routines that enables GPU aware
|
||||
# MPI. By default, this option is disabled. Also, this option is hidden unless
|
||||
# VTKm_ENABLE_MPI=ON.
|
||||
cmake_dependent_option(VTKm_ENABLE_GPU_MPI "Enable GPU AWARE MPI support" OFF "VTKm_ENABLE_MPI" OFF)
|
||||
|
||||
mark_as_advanced(
|
||||
VTKm_ENABLE_LOGGING
|
||||
VTKm_NO_ASSERT
|
||||
@ -191,6 +201,7 @@ mark_as_advanced(
|
||||
VTKm_ENABLE_DEVELOPER_FLAGS
|
||||
VTKm_NO_INSTALL_README_LICENSE
|
||||
VTKm_SKIP_LIBRARY_VERSIONS
|
||||
VTKm_OVERRIDE_CTEST_TIMEOUT
|
||||
)
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
@ -221,6 +232,11 @@ include(VTKmBuildType)
|
||||
# Include the vtk-m wrappers
|
||||
include(VTKmWrappers)
|
||||
|
||||
# By default: Set VTKm_ENABLE_KOKKOS_THRUST to ON if VTKm_ENABLE_KOKKOS is ON, otherwise
|
||||
# disable it (or if the user explicitly turns this option OFF)
|
||||
cmake_dependent_option(VTKm_ENABLE_KOKKOS_THRUST "Enable Kokkos thrust support (only valid with CUDA and HIP)"
|
||||
ON "VTKm_ENABLE_KOKKOS;Kokkos_ENABLE_CUDA OR Kokkos_ENABLE_HIP" OFF)
|
||||
|
||||
# Create vtkm_compiler_flags library. This is an interface library that
|
||||
# holds all the C++ compiler flags that are needed for consumers and
|
||||
# when building VTK-m.
|
||||
@ -449,11 +465,14 @@ if (VTKm_ENABLE_TESTING)
|
||||
add_test(NAME SystemInformation
|
||||
COMMAND ${CMAKE_COMMAND} "-DVTKm_SOURCE_DIR=${VTKm_SOURCE_DIR}" "-DVTKm_BINARY_DIR=${VTKm_BINARY_DIR}" -P "${VTKm_SOURCE_DIR}/CMake/testing/VTKmSystemInformation.cmake"
|
||||
)
|
||||
add_test(NAME CopyrightStatement
|
||||
COMMAND ${CMAKE_COMMAND} "-DVTKm_SOURCE_DIR=${VTKm_SOURCE_DIR}" -P "${VTKm_SOURCE_DIR}/CMake/VTKmCheckCopyright.cmake"
|
||||
)
|
||||
# increase timeout since on some machines CopyrightStatement test takes a long time.
|
||||
set_tests_properties(CopyrightStatement PROPERTIES TIMEOUT 300)
|
||||
if(NOT WIN32)
|
||||
# Test takes too long on windows
|
||||
add_test(NAME CopyrightStatement
|
||||
COMMAND ${CMAKE_COMMAND} "-DVTKm_SOURCE_DIR=${VTKm_SOURCE_DIR}" -P "${VTKm_SOURCE_DIR}/CMake/VTKmCheckCopyright.cmake"
|
||||
)
|
||||
# increase timeout since on some machines CopyrightStatement test takes a long time.
|
||||
set_tests_properties(CopyrightStatement PROPERTIES TIMEOUT 300)
|
||||
endif()
|
||||
|
||||
# Setup the infrastructure to allow VTK-m to run tests against a temporary
|
||||
# installed version of VTK-m.
|
||||
|
@ -19,7 +19,7 @@ Before you begin, perform initial setup:
|
||||
|
||||
3. Use Git to create a local clone of the main VTK repository:
|
||||
|
||||
$ git clone https://gitlab.kitware.com/vtk/vtk-m.git
|
||||
$ git clone git@gitlab.kitware.com:vtk/vtk-m.git
|
||||
$ cd vtk-m
|
||||
|
||||
The main repository will be configured as your `origin` remote.
|
||||
@ -32,14 +32,24 @@ Before you begin, perform initial setup:
|
||||
This will prompt for your GitLab user name and configure a remote
|
||||
called `gitlab` to refer to it.
|
||||
|
||||
5. (Optional but highly recommended.)
|
||||
5. (Required to use Git LFS.)
|
||||
[Using the SSH URL for the origin remote] is needed for Git LFS to work.
|
||||
Do not forget to run `$ ./Utilities/SetupForDevelopment.sh` after changing
|
||||
the remote URL.
|
||||
|
||||
6. (Optional but highly recommended.)
|
||||
[Disabling git-lfs in your fork] is needed to add/modify git-lfs files.
|
||||
Find the setting to disable git-lfs in your fork through your fork web UI:
|
||||
Settings/General/Project Features/Git LFS; set it to off; and _save changes_.
|
||||
|
||||
7. (Optional but highly recommended.)
|
||||
[Register with the VTK-m dashboard] on Kitware's CDash instance to
|
||||
better know how your code performs in regression tests. After
|
||||
registering and signing in, click on "All Dashboards" link in the upper
|
||||
left corner, scroll down and click "Subscribe to this project" on the
|
||||
right of VTK-m.
|
||||
|
||||
6. (Optional but highly recommended.)
|
||||
8. (Optional but highly recommended.)
|
||||
[Sign up for the VTK-m mailing list] to communicate with other
|
||||
developers and users.
|
||||
|
||||
|
@ -52,6 +52,7 @@ CMake/FindTBB.cmake
|
||||
Utilities
|
||||
vtkm/cont/tbb/internal/parallel_sort.h
|
||||
vtkm/cont/tbb/internal/parallel_radix_sort_tbb.h
|
||||
vtkm/cont/tbb/internal/ParallelSortTBB.hxx
|
||||
vtkm/cont/tbb/internal/kxsort.h
|
||||
vtkm/thirdparty
|
||||
version.txt
|
||||
|
@ -1,3 +1,6 @@
|
||||
![GitLab tag](https://img.shields.io/gitlab/v/tag/vtk/vtk-m?color=red&gitlab_url=https%3A%2F%2Fgitlab.kitware.com&include_prereleases&sort=semver)
|
||||
![Spack version](https://img.shields.io/spack/v/vtk-m.svg)
|
||||
|
||||
# VTK-m #
|
||||
|
||||
VTK-m is a toolkit of scientific visualization algorithms for emerging
|
||||
@ -64,7 +67,7 @@ effort.
|
||||
|
||||
VTK-m Requires:
|
||||
|
||||
+ C++11 Compiler. VTK-m has been confirmed to work with the following
|
||||
+ C++14 Compiler. VTK-m has been confirmed to work with the following
|
||||
+ GCC 5.4+
|
||||
+ Clang 5.0+
|
||||
+ XCode 5.0+
|
||||
@ -76,6 +79,8 @@ VTK-m Requires:
|
||||
|
||||
Optional dependencies are:
|
||||
|
||||
+ Kokkos Device Adapter
|
||||
+ [Kokkos](https://kokkos.github.io/) 3.7+
|
||||
+ CUDA Device Adapter
|
||||
+ [Cuda Toolkit 9.2, >= 10.2](https://developer.nvidia.com/cuda-toolkit)
|
||||
+ Note CUDA >= 10.2 is required on Windows
|
||||
|
@ -29,16 +29,18 @@ git config alias.gitlab-sync '!bash Utilities/GitSetup/git-gitlab-sync' &&
|
||||
echo "Set up git gitlab-sync" &&
|
||||
true
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
SetupForDevelopment=1
|
||||
git config hooks.SetupForDevelopment ${SetupForDevelopment_VERSION}
|
||||
# shellcheck disable=SC2154
|
||||
git config hooks.SetupForDevelopment "${SetupForDevelopment_VERSION}"
|
||||
|
||||
# Setup VTK-m-specifc LFS config
|
||||
#
|
||||
# Disable lfsurl if our origin points to the main repo
|
||||
OriginURL=$(git remote get-url origin)
|
||||
if [[ "$OriginURL" =~ ^(https://|git@)gitlab\.kitware\.com(/|:)vtk/vtk-m\.git$ ]]
|
||||
# Only set lfs.url to the ssh url
|
||||
OriginURL="$(git remote get-url origin)"
|
||||
if [[ "$OriginURL" =~ ^git@gitlab\.kitware\.com:vtk/vtk-m\.git$ ]]
|
||||
then
|
||||
# Disable this setting which overrides every remote/url lfs setting
|
||||
# This setting overrides every remote/url lfs setting
|
||||
git config --local lfs.url "${OriginURL}"
|
||||
|
||||
# Those settings are only available for newer git-lfs releases
|
||||
|
@ -438,8 +438,7 @@ void BenchContour(::benchmark::State& state)
|
||||
|
||||
filter.SetMergeDuplicatePoints(mergePoints);
|
||||
filter.SetGenerateNormals(normals);
|
||||
filter.SetComputeFastNormalsForStructured(fastNormals);
|
||||
filter.SetComputeFastNormalsForUnstructured(fastNormals);
|
||||
filter.SetComputeFastNormals(fastNormals);
|
||||
|
||||
vtkm::cont::Timer timer{ device };
|
||||
|
||||
@ -708,29 +707,6 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
// Get the number of components in a UnknownArrayHandle, ArrayHandle, or Field's
|
||||
// ValueType.
|
||||
struct NumberOfComponents
|
||||
{
|
||||
vtkm::IdComponent NumComponents;
|
||||
|
||||
template <typename ArrayHandleT>
|
||||
VTKM_CONT void operator()(const ArrayHandleT&)
|
||||
{
|
||||
using ValueType = typename ArrayHandleT::ValueType;
|
||||
using Traits = vtkm::VecTraits<ValueType>;
|
||||
this->NumComponents = Traits::NUM_COMPONENTS;
|
||||
}
|
||||
|
||||
template <typename DynamicType>
|
||||
VTKM_CONT static vtkm::IdComponent Check(const DynamicType& obj)
|
||||
{
|
||||
NumberOfComponents functor;
|
||||
vtkm::cont::CastAndCall(obj, functor);
|
||||
return functor.NumComponents;
|
||||
}
|
||||
};
|
||||
|
||||
void FindFields()
|
||||
{
|
||||
if (PointScalarsName.empty())
|
||||
@ -739,7 +715,7 @@ void FindFields()
|
||||
{
|
||||
auto field = GetInputDataSet().GetField(i);
|
||||
if (field.GetAssociation() == vtkm::cont::Field::Association::Points &&
|
||||
NumberOfComponents::Check(field) == 1)
|
||||
field.GetData().GetNumberOfComponentsFlat() == 1)
|
||||
{
|
||||
PointScalarsName = field.GetName();
|
||||
std::cerr << "[FindFields] Found PointScalars: " << PointScalarsName << "\n";
|
||||
@ -754,7 +730,7 @@ void FindFields()
|
||||
{
|
||||
auto field = GetInputDataSet().GetField(i);
|
||||
if (field.GetAssociation() == vtkm::cont::Field::Association::Cells &&
|
||||
NumberOfComponents::Check(field) == 1)
|
||||
field.GetData().GetNumberOfComponentsFlat() == 1)
|
||||
{
|
||||
CellScalarsName = field.GetName();
|
||||
std::cerr << "[FindFields] CellScalars: " << CellScalarsName << "\n";
|
||||
@ -769,7 +745,7 @@ void FindFields()
|
||||
{
|
||||
auto field = GetInputDataSet().GetField(i);
|
||||
if (field.GetAssociation() == vtkm::cont::Field::Association::Points &&
|
||||
NumberOfComponents::Check(field) == 3)
|
||||
field.GetData().GetNumberOfComponentsFlat() == 3)
|
||||
{
|
||||
PointVectorsName = field.GetName();
|
||||
std::cerr << "[FindFields] Found PointVectors: " << PointVectorsName << "\n";
|
||||
|
@ -340,8 +340,7 @@ void BenchContour(::benchmark::State& state)
|
||||
filter.SetActiveField(PointScalarsName, vtkm::cont::Field::Association::Points);
|
||||
filter.SetMergeDuplicatePoints(true);
|
||||
filter.SetGenerateNormals(true);
|
||||
filter.SetComputeFastNormalsForStructured(true);
|
||||
filter.SetComputeFastNormalsForUnstructured(true);
|
||||
filter.SetComputeFastNormals(true);
|
||||
state.ResumeTiming(); // And resume timers.
|
||||
|
||||
filterTimer.Start();
|
||||
|
@ -13,20 +13,17 @@
|
||||
#include <vtkm/TypeTraits.h>
|
||||
|
||||
#include <vtkm/cont/ArrayHandle.h>
|
||||
#include <vtkm/cont/DeviceAdapterAlgorithm.h>
|
||||
#include <vtkm/cont/Initialize.h>
|
||||
#include <vtkm/cont/Timer.h>
|
||||
|
||||
#include <vtkm/source/Tangle.h>
|
||||
|
||||
#include <vtkm/rendering/Camera.h>
|
||||
#include <vtkm/rendering/CanvasRayTracer.h>
|
||||
#include <vtkm/rendering/raytracing/Ray.h>
|
||||
#include <vtkm/rendering/raytracing/RayTracer.h>
|
||||
#include <vtkm/rendering/raytracing/SphereIntersector.h>
|
||||
#include <vtkm/rendering/raytracing/TriangleExtractor.h>
|
||||
|
||||
#include <vtkm/exec/FunctorBase.h>
|
||||
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
3
data/baseline/filter/moments.png
Normal file
3
data/baseline/filter/moments.png
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c077570d0acc5ee81707e1b763e5edbf285af840474d48ab5b051599cb809697
|
||||
size 81863
|
3
data/baseline/filter/moments0.png
Normal file
3
data/baseline/filter/moments0.png
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d4979a7c0e46943bd7a2c94581023c7db12a30ee12bda735b0041c64cff52196
|
||||
size 65438
|
3
data/baseline/filter/moments12.png
Normal file
3
data/baseline/filter/moments12.png
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:cbd7292ca4006866afc2339e39e14a3edf8c5983e04a5ceea80b5d698293fc86
|
||||
size 94505
|
3
data/baseline/rendering/volume/rectilinear3D_cell.png
Normal file
3
data/baseline/rendering/volume/rectilinear3D_cell.png
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f351663534f154eec2b09c1bb18f367a204a0665468655ad782281837b10c52b
|
||||
size 128759
|
3
data/baseline/rendering/volume/uniform.png
Normal file
3
data/baseline/rendering/volume/uniform.png
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9700359c5a3a562660dcf07126ffd1402296c08318efb51bbf660e05a4d9d7da
|
||||
size 126832
|
3
data/baseline/rendering/volume/uniform_cell.png
Normal file
3
data/baseline/rendering/volume/uniform_cell.png
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6ae8423ce77f432c01c7cce4df74b378e5c2d40ec8db1a791644de1ff205c85a
|
||||
size 147084
|
3
data/data/uniform/venn250.visit
Normal file
3
data/data/uniform/venn250.visit
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:62accba30cde47cac6980dbec18c6edc08e48f353da8f0817a810e66631cb89e
|
||||
size 38
|
@ -181,7 +181,7 @@ for (auto v : vector)
|
||||
avoided in class, method, and function scopes (fully qualified
|
||||
namespace references are preferred).
|
||||
|
||||
+ All code must be valid by the C++11 specifications. It must also
|
||||
+ All code must be valid by the C++14 specifications. It must also
|
||||
compile with Microsoft Visual Studio 2015.
|
||||
|
||||
+ New code must include regression tests that will run on the dashboards.
|
||||
|
@ -40,6 +40,8 @@ $endif\
|
||||
|
||||
## Create update branch
|
||||
|
||||
- [ ] Freeze the release branch (In Gitlab VTK-m page)
|
||||
- Settings/Repository/Protected Branches: Release; "allowed to push:No one"
|
||||
- [ ] Create update branch `git checkout -b update-to-$(VERSION)`
|
||||
$if(PATCH == 0 and RC == "-rc1")\
|
||||
- [ ] Bring as a second parent the history of master (Solve conflicts always
|
||||
@ -104,6 +106,8 @@ $endif\
|
||||
- [ ] `Do: merge`
|
||||
- Push tags
|
||||
- [ ] `git push origin v$(VERSION)$(RC)`
|
||||
- [ ] Unfreeze the release branch (In Gitlab VTK-m page)
|
||||
- Settings/Repository/Protected Branches: Release; "allowed to push: Maintainers"
|
||||
|
||||
## Update Spack
|
||||
- [ ] Update Spack package: https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/vtk-m/package.py
|
||||
|
@ -1,13 +1,13 @@
|
||||
# Minor Release Roadmap
|
||||
# Release Roadmap
|
||||
|
||||
| Version | Date | Delay (days) | Life-cycle (*planned) | End of Support |
|
||||
| --------- | ------------ | ------- | ----------- | ---------------- |
|
||||
| 1.7.0 | 2021-12-01 | +8 | Long Term | 2022-12-01 |
|
||||
| 1.8.0 | 2022-06-01 | +14 | Long Term | 2023-06-01 |
|
||||
| 1.9.0 | 2022-09-01 | +41 | Short Term | next release |
|
||||
| 2.0.0 | 2022-12-01 | | Long Term* | TBD |
|
||||
| 2.1.0 | 2023-03-01 | | Short Term* | TBD |
|
||||
| 2.2.0 | 2023-06-01 | | Long Term* | TBD |
|
||||
| 1.9.0 | 2022-09-01 | +41 | Short Term | 2023-06-01 |
|
||||
| 2.0.0 | 2022-12-01 | +52 | Long Term* | 2023-12-01 |
|
||||
| 2.1.0 | 2023-06-01 | | Short Term* | TBD |
|
||||
| 2.2.0 | 2023-09-01 | | Long Term* | TBD |
|
||||
|
||||
|
||||
## Legend
|
||||
|
3
docs/changelog/2.0/shrink-filter
Normal file
3
docs/changelog/2.0/shrink-filter
Normal file
@ -0,0 +1,3 @@
|
||||
# New Shrink filter
|
||||
|
||||
The Shrink filter shrinks the cells of a DataSet towards their centroid, computed as the average position of the cell points. This filter disconnects the cells, duplicating the points connected to multiple cells. The resulting CellSet is always an `ExplicitCellSet`.
|
21
docs/changelog/advanced-compute-range.md
Normal file
21
docs/changelog/advanced-compute-range.md
Normal file
@ -0,0 +1,21 @@
|
||||
# New features for computing array ranges
|
||||
|
||||
ArrayRangeCompute has been update to support more features that are present
|
||||
in VTK and ParaView.
|
||||
|
||||
New overloads for `ArrayRangeCompute` have been added:
|
||||
1. Takes a boolean parameter, `computeFiniteRange`, that specifies
|
||||
whether to compute only the finite range by ignoring any non-finite values (+/-inf)
|
||||
in the array.
|
||||
|
||||
2. Takes a `maskArray` parameter of type `vtkm::cont::ArrayHandle<vtkm::UInt8>`.
|
||||
The mask array must contain the same number of elements as the input array.
|
||||
A value in the input array is treated as masked off if the
|
||||
corresponding value in the mask array is non-zero. Masked off values are ignored
|
||||
in the range computation.
|
||||
|
||||
A new function `ArrayRangeComputeMagnitude` has been added. If the input array
|
||||
has multiple components, this function computes the range of the magnitude of
|
||||
the values of the array. Nested Vecs are treated as flat. A single `Range` object
|
||||
is returned containing the result. `ArrayRangeComputMagnitude` also has similar
|
||||
overloads as `ArrayRangeCompute`.
|
18
docs/changelog/array-range-fast-paths.md
Normal file
18
docs/changelog/array-range-fast-paths.md
Normal file
@ -0,0 +1,18 @@
|
||||
# Fast paths for `ArrayRangeCompute` fixed
|
||||
|
||||
The precompiled `ArrayRangeCompute` function was not following proper fast
|
||||
paths for special arrays. For example, when computing the range of an
|
||||
`ArrayHandleUniformPointCoordinates`, the ranges should be taken from the
|
||||
origin and spacing of the special array. However, the precompiled version
|
||||
was calling the generic range computation, which was doing an unnecessary
|
||||
reduction over the entire array. These fast paths have been fixed.
|
||||
|
||||
These mistakes in the code were caused by quirks in how templated method
|
||||
overloading works. To prevent this mistake from happening again in the
|
||||
precompiled `ArrayRangeCompute` function and elsewhere, all templated forms
|
||||
of `ArrayRangeCompute` have been deprecated. Most will call
|
||||
`ArrayRangeCompute` with no issues. For those that need the templated
|
||||
version, `ArrayRangeComputeTemplate` replaces the old templated
|
||||
`ArrayRangeCompute`. There is exactly one templated declaration of
|
||||
`ArrayRangeComputeTemplate` that uses a class, `ArrayRangeComputeImpl`,
|
||||
with partial specialization to ensure the correct form is used.
|
14
docs/changelog/array-range-instantiations.md
Normal file
14
docs/changelog/array-range-instantiations.md
Normal file
@ -0,0 +1,14 @@
|
||||
# Sped up compilation of ArrayRangeCompute.cxx
|
||||
|
||||
The file `ArrayRangeCompute.cxx` was taking a long time to compile with
|
||||
some device compilers. This is because it precompiles the range computation
|
||||
for many types of array structures. It thus compiled the same operation
|
||||
many times over.
|
||||
|
||||
The new implementation compiles just as many cases. However, the
|
||||
compilation is split into many different translation units using the
|
||||
instantiations feature of VTK-m's configuration. Although this rarely
|
||||
reduces the overall CPU time spent during compiling, it prevents parallel
|
||||
compiles from waiting for this one build to complete. It also avoids
|
||||
potential issues with compilers running out of resources as it tries to
|
||||
build a monolithic file.
|
12
docs/changelog/cast-and-call-variable-vec.md
Normal file
12
docs/changelog/cast-and-call-variable-vec.md
Normal file
@ -0,0 +1,12 @@
|
||||
# Added support for `CastAndCallVariableVecField` in `FilterField`
|
||||
|
||||
The `FilterField` class provides convenience functions for subclasses to
|
||||
determine the `ArrayHandle` type for scalar and vector fields. However, you
|
||||
needed to know the specific size of vectors. For filters that support an
|
||||
input field of any type, a new form, `CastAndCallVariableVecField` has been
|
||||
added. This calls the underlying functor with an `ArrayHandleRecombineVec`
|
||||
of the appropriate component type.
|
||||
|
||||
The `CastAndaCallVariableVecField` method also reduces the number of
|
||||
instances created by having a float fallback for any component type that
|
||||
does not satisfy the field types.
|
9
docs/changelog/clip-remove-unused-points.md
Normal file
9
docs/changelog/clip-remove-unused-points.md
Normal file
@ -0,0 +1,9 @@
|
||||
# Clip now doesn't copy unused points from the input to the output
|
||||
|
||||
Previously, clip would just copy all the points and point data from the input to the output,
|
||||
and only append the new points. This would affect the bounds computation of the result.
|
||||
If the caller wanted to remove the unused points, they had to run the CleanGrid filter
|
||||
on the result.
|
||||
|
||||
With this change, clip now keeps track of which inputs are actually part of the output
|
||||
and copies only those points.
|
3
docs/changelog/composite-vector-filter.md
Normal file
3
docs/changelog/composite-vector-filter.md
Normal file
@ -0,0 +1,3 @@
|
||||
# New Composite Vector filter
|
||||
|
||||
The composite vector filter combines multiple scalar fields into a single vector field. Scalar fields are selected as the active input fields, and the combined vector field is set at the output.
|
7
docs/changelog/compute-moments-any-vec-size.md
Normal file
7
docs/changelog/compute-moments-any-vec-size.md
Normal file
@ -0,0 +1,7 @@
|
||||
# ComputeMoments filter now operates on any scalar field
|
||||
|
||||
Previously, the `ComputeMoments` filter only operated on a finite set of
|
||||
array types as its input field. This included a prescribed list of `Vec`
|
||||
sizes for the input. The filter has been updated to use more generic
|
||||
interfaces to the field's array (and float fallback) to enable the
|
||||
computation of moments on any type of scalar field.
|
7
docs/changelog/continuous-scatterplot.md
Normal file
7
docs/changelog/continuous-scatterplot.md
Normal file
@ -0,0 +1,7 @@
|
||||
# Continuous Scatterplot filter
|
||||
|
||||
This new filter, designed for bi-variate analysis, computes the continuous scatter-plot of a 3D mesh for two given scalar point fields.
|
||||
|
||||
The continuous scatter-plot is an extension of the discrete scatter-plot for continuous bi-variate analysis. The output dataset consists of triangle-shaped cells, whose coordinates on the 2D plane represent respectively the values of both scalar fields. The point centered scalar field generated on the triangular mesh quantifies the density of values in the data domain.
|
||||
|
||||
This VTK-m implementation is based on the algorithm presented in the paper "Continuous Scatterplots" by S. Bachthaler and D. Weiskopf.
|
7
docs/changelog/convert-to-point-cloud.md
Normal file
7
docs/changelog/convert-to-point-cloud.md
Normal file
@ -0,0 +1,7 @@
|
||||
# Added a `ConvertToPointCloud` filter
|
||||
|
||||
This filter takes a `DataSet` and returns a point cloud representation that
|
||||
has a vertex cell associated with each point in it. This is useful for
|
||||
filling in a `CellSet` for data that has points but no cells. It is also
|
||||
useful for operations in which you want to throw away the cell geometry and
|
||||
operate on the data as a collection of disparate points.
|
5
docs/changelog/copy-from-disabled-device.md
Normal file
5
docs/changelog/copy-from-disabled-device.md
Normal file
@ -0,0 +1,5 @@
|
||||
# Fix an issue with copying array from a disabled device
|
||||
|
||||
The internal array copy has an optimization to use the device the array
|
||||
exists on to do the copy. However, if that device is disabled the copy
|
||||
would fail. This problem has been fixed.
|
8
docs/changelog/external-face-miss-pair.md
Normal file
8
docs/changelog/external-face-miss-pair.md
Normal file
@ -0,0 +1,8 @@
|
||||
# Fixed error in checking paired faces in ExternalFaces filter
|
||||
|
||||
The `ExternalFaces` filter uses hash codes to find duplicate (i.e.
|
||||
internal) faces. The issue with hash codes is that you have to deal with
|
||||
unique entries that have identical hashes. The worklet to count how many
|
||||
unique, unmatched faces were associated with each hash code was correct.
|
||||
However, the code to then grab the ith unique face in a hash was wrong.
|
||||
This has been fixed.
|
5
docs/changelog/fix-iterator-operator.md
Normal file
5
docs/changelog/fix-iterator-operator.md
Normal file
@ -0,0 +1,5 @@
|
||||
# Fixed operator for IteratorFromArrayPortal
|
||||
|
||||
There was an error in `operator-=` for `IteratorFromArrayPortal` that went
|
||||
by unnoticed. The operator is fixed and regression tests for the operators
|
||||
has been added.
|
70
docs/changelog/fix-nightly-gcc5-cuda.md
Normal file
70
docs/changelog/fix-nightly-gcc5-cuda.md
Normal file
@ -0,0 +1,70 @@
|
||||
# Fixed issue with trivial variant copies
|
||||
|
||||
A rare error occurred with trivial copies of variants. The problem is likely
|
||||
a compiler bug, and has so far only been observed when passing the variant
|
||||
to a CUDA kernel when compiling with GCC 5.
|
||||
|
||||
The problem was caused by structures with padding. `struct` objects in
|
||||
C/C++ are frequently padded with unused memory to align all entries
|
||||
properly. For example, consider the following simple `struct`.
|
||||
|
||||
``` cpp
|
||||
struct FooHasPadding
|
||||
{
|
||||
vtkm::Int32 A;
|
||||
// Padding here.
|
||||
vtkm::Int64 C;
|
||||
};
|
||||
```
|
||||
|
||||
Because the `C` member is a 64-bit integer, it needs to be aligned on
|
||||
8-byte (i.e., 64-bit) address locations. For this to work, the C++ compiler
|
||||
adds 4 bytes of padding between `A` and `C` so that an array of
|
||||
`FooHasPadding`s will have the `C` member always on an 8-byte boundary.
|
||||
|
||||
Now consider a second `struct` that is similar to the first but has a valid
|
||||
member where the padding would be.
|
||||
|
||||
``` cpp
|
||||
struct BarNoPadding
|
||||
{
|
||||
vtkm::Int32 A;
|
||||
vtkm::Int32 B;
|
||||
vtkm::Int64 C;
|
||||
};
|
||||
```
|
||||
|
||||
This structure does not need padding because the `A` and `B` members
|
||||
combine to fill the 8 bytes that `C` needs for the alignment. Both
|
||||
`FooHasPadding` and `BarNoPadding` fill 16 bytes of memory. The `A` and `C`
|
||||
members are at the same offsets, respectively, for the two structures. The
|
||||
`B` member happens to reside just where the padding is for `FooHasPadding`.
|
||||
|
||||
Now, let's say we create a `vtkm::exec::Variant<FooHasPadding, BarNoPadding>`.
|
||||
Internally, the `Variant` class holds a union that looks roughly like the
|
||||
following.
|
||||
|
||||
``` cpp
|
||||
union VariantUnion
|
||||
{
|
||||
FooHasPadding V0;
|
||||
BarNoPadding V1;
|
||||
};
|
||||
```
|
||||
|
||||
This is a perfectly valid use of a `union`. We just need to keep track of
|
||||
which type of object is in it (which the `Variant` object does for you).
|
||||
|
||||
The problem appeared to occur when `VariantUnion` contained a
|
||||
`BarNoPadding` and was passed from the host to the device via an argument
|
||||
to a global function. The compiler must notice that the first type
|
||||
(`FooHasPadding`) is the "biggest" and uses that for trivial copies (which
|
||||
just copy bytes like `memcpy`). Since it's using `FooHasPadding` as its
|
||||
prototype for the byte copy, and accidentally skips over padded regions that
|
||||
are valid when the `union` contains a `BarNoPadding`. This appears to be a
|
||||
compiler bug. (At least, I cannot find a reason why this is encroaching
|
||||
undefined behavior.)
|
||||
|
||||
The solution adds a new, unused type to the internal `union` for `Variant`
|
||||
that is an object as large as the largest entry in the union and contains
|
||||
no padding.
|
5
docs/changelog/flying-edges-structured.md
Normal file
5
docs/changelog/flying-edges-structured.md
Normal file
@ -0,0 +1,5 @@
|
||||
# Implement Flying Edges for structured cellsets with rectilinear and curvilinear coordinates
|
||||
|
||||
When Flying Edges was introduced to compute contours of a 3D structured cellset, it could only process uniform coordinates. This limitation is now lifted : an alternative interpolation function can be used in the fourth pass of the algorithm in order to support rectilinear and curvilinear coordinate systems.
|
||||
|
||||
Accordingly, the `Contour` filter now calls `ContourFlyingEdges` instead of `ContourMarchingCells` for these newly supported cases.
|
10
docs/changelog/ghost-cell-remove-interface.md
Normal file
10
docs/changelog/ghost-cell-remove-interface.md
Normal file
@ -0,0 +1,10 @@
|
||||
# Updated the interface and documentation of GhostCellRemove
|
||||
|
||||
The `GhostCellRemove` filter had some methods inconsistent with the naming
|
||||
convention elsewhere in VTK-m. The class itself was also in need of some
|
||||
updated documentation. Both of these issues have been fixed.
|
||||
|
||||
Additionally, there were some conditions that could lead to unexpected
|
||||
behavior. For example, if the filter was asked to remove only ghost cells
|
||||
and a cell was both a ghost cell and blank, it would not be removed. This
|
||||
has been updated to be more consistent with expectations.
|
4
docs/changelog/hist-sampling.md
Normal file
4
docs/changelog/hist-sampling.md
Normal file
@ -0,0 +1,4 @@
|
||||
|
||||
# Added a `HistSampling` filter
|
||||
|
||||
This filter assumes the field data are point clouds. It samples the field data according to its importance level. The importance level (sampling rate) is computed based on the histogram. The rarer values can provide more importance. More details can be found in the following paper. “In Situ Data-Driven Adaptive Sampling for Large-scale Simulation Data Summarization”, Ayan Biswas, Soumya Dutta, Jesus Pulido, and James Ahrens, In Situ Infrastructures for Enabling Extreme-scale Analysis and Visualization (ISAV 2018), co-located with Supercomputing 2018.
|
15
docs/changelog/index-from-boundary-state.md
Normal file
15
docs/changelog/index-from-boundary-state.md
Normal file
@ -0,0 +1,15 @@
|
||||
# Get the 3D index from a BoundaryState in WorkletPointNeighborhood
|
||||
|
||||
There are occasions when you need a worklet to opeate on 2D or 3D indices.
|
||||
Most worklets operate on 1D indices, which requires recomputing the 3D
|
||||
index in each worklet instance. A workaround is to use a worklet that does
|
||||
a 3D scheduling and pull the working index from that.
|
||||
|
||||
The problem was that there was no easy way to get this 3D index. To provide
|
||||
this option, a feature was added to the `BoundaryState` class that can be
|
||||
provided by `WorkletPointNeighborhood`.
|
||||
|
||||
Thus, to get a 3D index in a worklet, use the `WorkletPointNeighborhood`,
|
||||
add `Boundary` as an argument to the `ExecutionSignature`, and then call
|
||||
`GetCenterIndex` on the `BoundaryState` object passed to the worklet
|
||||
operator.
|
27
docs/changelog/interp-any-field.md
Normal file
27
docs/changelog/interp-any-field.md
Normal file
@ -0,0 +1,27 @@
|
||||
# Update filters' field map and execute to work on any field type
|
||||
|
||||
Several filters implemented their map field by checking for common field
|
||||
types and interpolated those. Although there was a float fallback to catch
|
||||
odd component types, there were still a couple of issues. First, it meant
|
||||
that several types got converted to `vtkm::FloatDefault`, which is often at
|
||||
odds with how VTK handles it. Second, it does not handle all `Vec` lengths,
|
||||
so it is still possible to drop fields.
|
||||
|
||||
The map field functions for these filters have been changed to support all
|
||||
possible types. This is done by using the extract component functionality
|
||||
to get data from any type of array. The following filters have been
|
||||
updated. In some circumstances where it makes sense, a simple float
|
||||
fallback is used.
|
||||
|
||||
* `CleanGrid`
|
||||
* `CellAverage`
|
||||
* `ClipWithField`
|
||||
* `ClipWithImplicitFunction`
|
||||
* `Contour`
|
||||
* `MIRFilter`
|
||||
* `NDHistogram`
|
||||
* `ParticleDensityCloudInCell`
|
||||
* `ParticleDensityNearestGridPoint`
|
||||
* `PointAverage`
|
||||
* `Probe`
|
||||
* `VectorMagnitude`
|
6
docs/changelog/kokkos-atomics-fix.md
Normal file
6
docs/changelog/kokkos-atomics-fix.md
Normal file
@ -0,0 +1,6 @@
|
||||
Kokkos atomic functions switched to use desul library
|
||||
|
||||
Kokkos 4 switches from their interal library based off of desul to using desul directly.
|
||||
This removes VTK-m's dependency on the Kokkos internal implementation (Kokkos::Impl) to
|
||||
using desul directly.
|
||||
|
@ -0,0 +1,48 @@
|
||||
## Make flow filters modular and extensible using traits
|
||||
|
||||
Many flow filters have common underpinnings in term of the components they use.
|
||||
E.g., the choice and handling for solvers, analysis, termination, vector field, etc.
|
||||
However, having these components baked hard in the infrastructure makes extensibility chanllenging,
|
||||
which leads to developers implementing bespoke solutions.
|
||||
This change establishes an infrastructure for easy specification and development of flow filter.
|
||||
|
||||
To that end, two new abstractions are introduced along with thier basic implementations : `Analysis` and `Termination`
|
||||
* `Analysis` defines how each step of the particle needs to be analyzed
|
||||
* `Termination` defines the termination criteria for every particle
|
||||
|
||||
The two, in addition to the existing abstractions for `Particle` and `Field` can be used to specify
|
||||
novel flow filters. This is accomplished by defining a new trait for the new filter using implementations
|
||||
for these abstractions.
|
||||
|
||||
E.g., for specifying the streamline filter for a general case the following trait can be used
|
||||
|
||||
```cpp
|
||||
template <>
|
||||
struct FlowTraits<Streamline>
|
||||
{
|
||||
using ParticleType = vtkm::Particle;
|
||||
using TerminationType = vtkm::worklet::flow::NormalTermination;
|
||||
using AnalysisType = vtkm::worklet::flow::StreamlineAnalysis<ParticleType>;
|
||||
using ArrayType = vtkm::cont::ArrayHandle<vtkm::Vec3f>;
|
||||
using FieldType = vtkm::worklet::flow::VelocityField<ArrayType>;
|
||||
};
|
||||
```
|
||||
Similarly, to produce a flow map, the following trait can be used
|
||||
|
||||
```cpp
|
||||
template <>
|
||||
struct FlowTraits<ParticleAdvection>
|
||||
{
|
||||
using ParticleType = vtkm::Particle;
|
||||
using TerminationType = vtkm::worklet::flow::NormalTermination;
|
||||
using AnalysisType = vtkm::worklet::flow::NoAnalysis<ParticleType>;
|
||||
using ArrayType = vtkm::cont::ArrayHandle<vtkm::Vec3f>;
|
||||
using FieldType = vtkm::worklet::flow::VelocityField<ArrayType>;
|
||||
};
|
||||
```
|
||||
These traits are enough for the infrastrucutre to use the correct code paths to produce the desired
|
||||
result.
|
||||
|
||||
Along with changing the existing filters to use this new way of specification of components,
|
||||
a new filter `WarpXStreamline` has been added to enable streamline analysis for charged particles for
|
||||
the WarpX simulation.
|
10
docs/changelog/mir-any-cell-type.md
Normal file
10
docs/changelog/mir-any-cell-type.md
Normal file
@ -0,0 +1,10 @@
|
||||
# Support any cell type in MIR filter
|
||||
|
||||
Previously, the MIR filter ran a check the dimensionality of the cells in
|
||||
its input data set to make sure they conformed to the algorithm. The only
|
||||
real reason this was necessary is because the `MeshQuality` filter can only
|
||||
check the size of either area or volume, and it has to know which one to
|
||||
check. However, the `CellMeasures` filter can compute the sizes of all
|
||||
types of cells simultaneously (as well as more cell types). By using this
|
||||
filter, the MIR filter can skip the cell type checks and support more mesh
|
||||
types.
|
36
docs/changelog/output-vec-like-fix.md
Normal file
36
docs/changelog/output-vec-like-fix.md
Normal file
@ -0,0 +1,36 @@
|
||||
# Support using arrays with dynamic Vec-likes as output arrays
|
||||
|
||||
When you use an `ArrayHandle` as an output array in a worklet (for example,
|
||||
as a `FieldOut`), the fetch operation does not read values from the array
|
||||
during the `Load`. Instead, it just constructs a new object. This makes
|
||||
sense as an output array is expected to have garbage in it anyway.
|
||||
|
||||
This is a problem for some special arrays that contain `Vec`-like objects
|
||||
that are sized dynamically. For example, if you use an
|
||||
`ArrayHandleGroupVecVariable`, each entry is a dynamically sized `Vec`. The
|
||||
array is referenced by creating a special version of `Vec` that holds a
|
||||
reference to the array portal and an index. Components are retrieved and
|
||||
set by accessing the memory in the array portal. This allows us to have a
|
||||
dynamically sized `Vec` in the execution environment without having to
|
||||
allocate within the worklet.
|
||||
|
||||
The problem comes when we want to use one of these arrays with `Vec`-like
|
||||
objects for an output. The typical fetch fails because you cannot construct
|
||||
one of these `Vec`-like objects without an array portal to bind it to. In
|
||||
these cases, we need the fetch to create the `Vec`-like object by reading
|
||||
it from the array. Even though the data will be garbage, you get the
|
||||
necessary buffer into the array (and nothing more).
|
||||
|
||||
Previously, the problem was fixed by creating partial specializations of
|
||||
the `Fetch` for these `ArrayHandle`s. This worked OK as long as you were
|
||||
using the array directly. However, the approach failed if the `ArrayHandle`
|
||||
was wrapped in another `ArrayHandle` (for example, if an `ArrayHandleView`
|
||||
was applied to an `ArrayHandleGroupVecVariable`).
|
||||
|
||||
To get around this problem and simplify things, the basic `Fetch` for
|
||||
direct output arrays is changed to handle all cases where the values in the
|
||||
`ArrayHandle` cannot be directly constructed. A compile-time check of the
|
||||
array's value type is checked with `std::is_default_constructible`. If it
|
||||
can be constructed, then the array is not accessed. If it cannot be
|
||||
constructed, then it grabs a value out of the array.
|
||||
|
7
docs/changelog/read-any-vec-size.md
Normal file
7
docs/changelog/read-any-vec-size.md
Normal file
@ -0,0 +1,7 @@
|
||||
# VTKDataSetReader handles any Vec size.
|
||||
|
||||
The legacy VTK file reader previously only supported a specific set of Vec
|
||||
lengths (i.e., 1, 2, 3, 4, 6, and 9). This is because a basic array handle
|
||||
has to have the vec length compiled in. However, the new
|
||||
`ArrayHandleRuntimeVec` feature is capable of reading in any vec-length and
|
||||
can be leveraged to read in arbitrarily sized vectors in field arrays.
|
4
docs/changelog/require-kokkos-3-7.md
Normal file
4
docs/changelog/require-kokkos-3-7.md
Normal file
@ -0,0 +1,4 @@
|
||||
# Require Kokkos 3.7
|
||||
|
||||
The minimum version of Kokkos supported is now set to Kokkos 3.7. This is
|
||||
to synchronize with the development of the Kokkos team.
|
18
docs/changelog/resize-extracted-component.md
Normal file
18
docs/changelog/resize-extracted-component.md
Normal file
@ -0,0 +1,18 @@
|
||||
# Added ability to resize strided arrays from ArrayExtractComponent
|
||||
|
||||
Previously, it was not possible to resize an `ArrayHandleStride` because
|
||||
the operation is a bit ambiguous. The actual array is likely to be padded
|
||||
by some amount, and there could be an unknown amount of space skipped at
|
||||
the beginning.
|
||||
|
||||
However, there is a good reason to want to resize `ArrayHandleStride`. This
|
||||
is the array used to implement the `ArrayExtractComponent` feature, and
|
||||
this in turn is used when extracting arrays from an `UnknownArrayHandle`
|
||||
whether independent or as an `ArrayHandleRecombineVec`.
|
||||
|
||||
The problem really happens when you create an array of an unknown type in
|
||||
an `UnknownArrayHandle` (such as with `NewInstance`) and then use that as
|
||||
an output to a worklet. Sure, you could use `ArrayHandle::Allocate` to
|
||||
resize before getting the array, but that is awkward for programers.
|
||||
Instead, allow the extracted arrays to be resized as normal output arrays
|
||||
would be.
|
23
docs/changelog/runtime-vec-array.md
Normal file
23
docs/changelog/runtime-vec-array.md
Normal file
@ -0,0 +1,23 @@
|
||||
# Added `ArrayHandleRuntimeVec` to specify vector sizes at runtime.
|
||||
|
||||
The new `ArrayHandleRuntimeVec` is a fancy `ArrayHandle` allows you to
|
||||
specify a basic array of `Vec`s where the number of components of the `Vec`
|
||||
are not known until runtime. (It can also optionally specify scalars.) The
|
||||
behavior is much like that of `ArrayHandleGroupVecVariable` except that its
|
||||
representation is much more constrained. This constrained representation
|
||||
allows it to be automatically converted to an `ArrayHandleBasic` with the
|
||||
proper `Vec` value type. This allows one part of code (such as a file
|
||||
reader) to create an array with any `Vec` size, and then that array can be
|
||||
fed to an algorithm that expects an `ArrayHandleBasic` of a certain value
|
||||
type.
|
||||
|
||||
The `UnknownArrayHandle` has also been updated to allow
|
||||
`ArrayHandleRuntimeVec` to work interchangeably with basic `ArrayHandle`.
|
||||
If an `ArrayHandleRuntimeVec` is put into an `UnknownArrayHandle`, it can
|
||||
be later retrieved as an `ArrayHandleBasic` as long as the base component
|
||||
type matches and it has the correct amount of components. This means that
|
||||
an array can be created as an `ArrayHandleRuntimeVec` and be used with any
|
||||
filters or most other features designed to operate on basic `ArrayHandle`s.
|
||||
Likewise, an array added as a basic `ArrayHandle` can be retrieved in an
|
||||
`ArrayHandleRuntimeVec`. This makes it easier to pull arrays from VTK-m and
|
||||
place them in external structures (such as `vtkDataArray`).
|
22
docs/changelog/serialize-dataset.md
Normal file
22
docs/changelog/serialize-dataset.md
Normal file
@ -0,0 +1,22 @@
|
||||
# Simplified serialization of DataSet objects
|
||||
|
||||
`vtkm::cont::DataSet` is a dynamic object that can hold cell sets and
|
||||
fields of many different types, none of which are known until runtime. This
|
||||
causes a problem with serialization, which has to know what type to compile
|
||||
the serialization for, particularly when unserializing the type at the
|
||||
receiving end. The original implementation "solved" the problem by creating
|
||||
a secondary wrapper object that was templated on types of field arrays and
|
||||
cell sets that might be serialized. This is not a great solution as it
|
||||
punts the problem to algorithm developers.
|
||||
|
||||
This problem has been completely solved for fields, as it is possible to
|
||||
serialize most types of arrays without knowing their type now. You still
|
||||
need to iterate over every possible `CellSet` type, but there are not that
|
||||
many `CellSet`s that are practically encountered. Thus, there is now a
|
||||
direct implementation of `Serialization` for `DataSet` that covers all the
|
||||
data types you are likely to encounter.
|
||||
|
||||
The old `SerializableDataSet` has been deprecated. In the unlikely event an
|
||||
algorithm needs to transfer a non-standard type of `CellSet` (such as a
|
||||
permuted cell set), it can use the replacement `DataSetWithCellSetTypes`,
|
||||
which just specifies the cell set types.
|
14
docs/changelog/split-contour-filters.md
Normal file
14
docs/changelog/split-contour-filters.md
Normal file
@ -0,0 +1,14 @@
|
||||
# Split flying edges and marching cells into separate filters
|
||||
|
||||
The contour filter contains 2 separate implementations, Marching Cells and Flying Edges, the latter only available if the input has a `CellSetStructured<3>` and `ArrayHandleUniformPointCoordinates` for point coordinates. The compilation of this filter was lenghty and resource-heavy, because both algorithms were part of the same translation unit.
|
||||
|
||||
Now, this filter is separated into two new filters, `ContourFlyingEdges` and `ContourMarchingCells`, compiling more efficiently into two translation units. The `Contour` API is left unchanged. All 3 filters `Contour`, `ContourFlyingEdges` and `ContourMarchingCells` rely on a new abstract class `AbstractContour` to provide configuration and common utility functions.
|
||||
|
||||
Although `Contour` is still the preferred option for most cases because it selects the best implementation according to the input, `ContourMarchingCells` is usable on any kind of 3D Dataset. For now, `ContourFlyingEdges` operates only on structured uniform datasets.
|
||||
|
||||
Deprecate functions `GetComputeFastNormalsForStructured`, `SetComputeFastNormalsForStructured`, `GetComputeFastNormalsForUnstructured` and `GetComputeFastNormalsForUnstructured`, to use the more general `GetComputeFastNormals` and `SetComputeFastNormals` instead.
|
||||
|
||||
By default, for the `Contour` filter, `GenerateNormals` is now `true`, and `ComputeFastNormals` is `false`.
|
||||
|
||||
The marching cubes version of contour still has several possible compile paths, so it can still take a bit to compile. To help manage the compile time further, the contour filter compilation is broken up even further using the instantiation build capabilities.
|
||||
|
4
docs/changelog/statistics-filter.md
Normal file
4
docs/changelog/statistics-filter.md
Normal file
@ -0,0 +1,4 @@
|
||||
# New Statistics filter
|
||||
|
||||
The statistics filter computes the descriptive statistics of the fields specified by users based on `DescriptiveStatistics`. Users can set `RequiredStatsList` to specify which statistics will be stored in the output data set. The statistics filter supports the distributed memory case based on the vtkmdiy, and the process with rank 0 will return the correct final reduced results.
|
||||
|
3
docs/changelog/tetrahedralize-triangulate-check.md
Normal file
3
docs/changelog/tetrahedralize-triangulate-check.md
Normal file
@ -0,0 +1,3 @@
|
||||
# Tetrahedralize and Triangulate filters now check if the input is already tetrahedral/triangular
|
||||
|
||||
Previously, tetrahedralize/triangulate would blindly convert all the cells to tetrahedra/triangles, even when they were already. Now, the dataset is directly returned if the CellSet is a CellSetSingleType of tetras/triangles, and no further processing is done in the worklets for CellSetExplicit when all shapes are tetras or triangles.
|
8
docs/changelog/unknown-runtime-vec-new-instance.md
Normal file
8
docs/changelog/unknown-runtime-vec-new-instance.md
Normal file
@ -0,0 +1,8 @@
|
||||
# Fix new instances of ArrayHandleRuntimeVec in UnknownArrayHandle
|
||||
|
||||
`UnknownArrayHandle` is supposed to treat `ArrayHandleRuntimeVec` the same
|
||||
as `ArrayHandleBasic`. However, the `NewInstance` methods were failing
|
||||
because they need custom handling of the vec size. Special cases in the
|
||||
`UnknownArrayHandle::NewInstance*()` methods have been added to fix this
|
||||
problem.
|
||||
|
18
docs/changelog/unknownarray-runtime-components.md
Normal file
18
docs/changelog/unknownarray-runtime-components.md
Normal file
@ -0,0 +1,18 @@
|
||||
# Added support for getting vec sizes of unknown arrays when runtime selected
|
||||
|
||||
The `GetNumberOfComponents` and `GetNumberOfComponentsFlat` methods in
|
||||
`UnknownArrayHandle` have been updated to correctly report the number of
|
||||
components in special `ArrayHandle`s where the `Vec` sizes of the values
|
||||
are not selected until runtime.
|
||||
|
||||
Previously, these methods always reported 0 because the value type could
|
||||
not report the size of the `Vec`. The lookup has been modified to query the
|
||||
`ArrayHandle`'s `Storage` for the number of components where supported.
|
||||
Note that this only works on `Storage` that provides a method to get the
|
||||
runtime `Vec` size. If that is not provided, as will be the case if the
|
||||
number of components can vary from one value to the next, it will still
|
||||
report 0.
|
||||
|
||||
This feature is implemented by looking for a method named
|
||||
`GetNumberOfComponents` is the `Storage` class for the `ArrayHandle`. If
|
||||
this method is found, it is used to query the size at runtime.
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user