Viskores 1.1.0 Release Notes
Table of Contents
- Core
- Support TypeTraits for reference types
- Enable more types for Clamp function
- Update to C++17
- Added CountAllCells and FindAllCells to Cell Locators
- Fixed memory_order constants for C++20
- Arrays
- Added ArrayHandleSOAStride
- Added template constructor to MaskSelect
- Extract Arrays to ArrayHandleSOAStride
- Bug Fixes
- Fixed MapperVolume blending
- Fixed Clip cellOffset increment
- Fixed CI Warnings
- Build
- Improve compilation of flow filters
- pkg-config files now install to libdir/pkgconfig
Core
Support TypeTraits for reference types
Viskores now supports passing reference types to viskores::TypeTraits.
Previously, if you used viskores::TypeTraits with a reference type (such as
viskores::TypeTraits<viskores::Id&>) you would get the "default"
implementation, which would state that the type was unknown.
Now when you use viskores::TypeTraits with a reference type, you get the
traits for the type without the reference. This feature is important when
implementing templated methods where a templated type can be a reference,
avoiding the need to remove references from templated types.
Enable more types for Clamp function
The Viskores Clamp function now works with any numeric type. Previously it
only worked with basic floating point types (i.e., viskores::Float32 and
viskores::Float64). It is now templated to work with any numeric type and can
operate on Vec and Vec-like types. Furthermore, it is possible to mix the
types of the arguments without ambiguous overloading.
Documentation for Clamp is now included in the user's guide.
Update to C++17
The minimum required version of Viskores has been bumped up to C++17. While
Viskores should work on newer C++ versions, this is not extensively tested.
Note that Kokkos has moved to requiring C++20, so compiling the Kokkos driver
will require that minimum compiler.
Added CountAllCells and FindAllCells to Cell Locators
Two new methods have been added to all cell locators:
CountAllCellsreturns the number of cells that contain a given pointFindAllCellsreturns the IDs and parametric coordinates of all cells that
contain a given point
These functions are intended for use with datasets where cells may overlap and
are not typically useful for standard non-overlapping meshes.
Fixed memory_order constants for C++20
C++20 changed the implementation of the std::memory_order enum to be scoped.
As part of that, the contents of the enum have different names. Instead, you
reference the identifiers as constants in the std namespace (which works the
same with the non-scoped version).
At any rate, the code now works for both C++17 and C++20.
Arrays
Added ArrayHandleSOAStride
Added a new array type named ArrayHandleSOAStride that holds each of its
components in a separate array. Unlike ArrayHandleSOA, it represents each
component as an ArrayHandleStride rather than a basic array, allowing it to
represent most arrays with values of a fixed vector length.
This new array type can be used similarly to ArrayHandleRecombineVec but
requires the Vec length to be determined at compile time. While this means it
cannot represent data with varying component numbers, it allows for simple
Vec representation when the number of components is fixed.
Added template constructor to MaskSelect
The viskores::worklet::MaskSelect constructor has been enhanced with a
MaskSelectTemplate class that provides a templated version of the
constructor. This allows for efficient construction of masks from selection
arrays with other types such as viskores::cont::ArrayHandleTransform.
Extract Arrays to ArrayHandleSOAStride
UnknownArrayHandle now includes a new method ExtractArrayWithValueType that
extracts an array with a given ValueType regardless of the storage. The
method extracts data to an ArrayHandleSOAStride by extracting each component
and collecting them in that array type.
Additionally, most arrays can now be pulled from an UnknownArrayHandle using
AsArrayHandle with an ArrayHandleSOAStride as long as the value types
match. StorageTagSOAStride has been added to the list of default storage
types to check.
Bug Fixes
Fixed MapperVolume blending
Fixed an issue where MapperVolume was writing incorrect depth values to the
buffer when rendering multiple partitions. This was resolved by adding an
option to the Canvas::WriteToCanvas method that prevents the depth buffer
from being updated.
Fixed Clip cellOffset increment
Resolved a bug in the redesigned Clip filter where cellOffset was not being
incremented correctly, causing output cells to be incorrectly placed.
Additional improvements include:
- Proper resource release
- Optimized ScanExclusive usage to operate only on needed batches of points/cells
Fixed CI Warnings
Addressed multiple compiler warnings identified by the new CI builds of
Viskores that were not present in previous builds.
Build
Improve compilation of flow filters
Several of the flow filters contain multiple flow paths through different
worklets. This can sometimes overwhelm device compilers. To improve compilation,
the compilation of worklets for the flow filters is separated into different
translation units using the Viskores instantiation compile feature. This reduces
the burden on any particular use of a compiler and helps leverage parallel
compiling.
pkg-config files now install to libdir/pkgconfig
Viskores now installs pkg-config files to ${Viskores_INSTALL_LIB_DIR}/pkgconfig instead of the
share directory. This is the default location where pkg-config searches for
.pc files, allowing pkg-config to find Viskores without additional configuration.
What's Changed
- Remove transitioning from readme by @kmorel in #63
- ci: use external gl-gh-sync/github-sync@latest by @vicentebolea in #65
- ci: fix cdash doxygen build name by @vicentebolea in #70
- Minor fixups by @mathstuf in #74
- ViskoresDetermineVersion: apply the
export-substattribute by @mathstuf in #73 - Backports changes from main to release by @vicentebolea in #76
- add transition script for VTK-m apps by @vicentebolea in #78
- Remove some CI warnings by @kmorel in #80
- ci: only use voltar for a100 jobs by @vicentebolea in #82
- Fix compiler warnings about constructor templates by @kmorel in #81
- Improve instructions for data submodule by @kmorel in #77
- Upate the reproduce_ci_env.py script by @kmorel in #84
- Suppress warning from loguru and snprintf by @kmorel in #83
- Correct assertion on bounds index by @kmorel in #85
- Suppress Macos warning by @kmorel in #92
- ci: address loguru warning by @vicentebolea in #90
- ViskoresCPUVectorization.cmake: fix condition for PowerPC optimizations by @barracuda156 in #96
- Change the README to reference an example by @kmorel in #95
- ci: correct now case-sensitive project id by @vicentebolea in #103
- Fix for Darwin when pthread_threadid_np is unavailable by @barracuda156 in #97
- Update Viskores to use C++17 by @kmorel in #89
- Clip: Fix cellOffset increment by @spyridon97 in #104
- Added a template constructor to MaskSelect by @kmorel in #100
- Do not make particle advection users import MPI by @kmorel in #99
- Fixed bug with
MapperVolumeblending by @kmorel in #102 - ci: fix clang-format check by @vicentebolea in #110
- Disable threaded flow algorithm by @kmorel in #112
- Ignore GCC 12 warning about use after free by @kmorel in #113
- build(deps): bump requests from 2.32.2 to 2.32.4 in /docs/users-guide in the pip group across 1 directory by @dependabot[bot] in #114
- Correct issue with CI config by @kmorel in #111
- Update widows CI to Windows Server 2022 by @kmorel in #116
- Update use of Actor rendering class by @kmorel in #101
- Backport "ci: correct now case-sensitive project id #103" by @vicentebolea in #120
- Ray Culling Bug with Z Extents by @nicolemarsaglia in #109
- ci: only use voltar for a100 jobs (backport) by @kmorel in #121
- build(deps): bump urllib3 from 2.2.2 to 2.5.0 in /docs/users-guide in the pip group across 1 directory by @dependabot[bot] in #123
- Update widows CI to Windows Server 2022 (backport) by @kmorel in #119
- Document scatter and mask in worklets by @kmorel in #107
- Add ArrayHandleSOAStride by @kmorel in #124
- Fix warning from UnitTestVecFromPortalPermute.cxx by @kmorel in #128
- Fix warnings from gcc14 by @kmorel in #133
- Include cstdint header for the intptr_t type by @lahwaacz in #129
- ci: set jobs to fail with any build warning by @vicentebolea in #134
- Extract to SOA Stride by @kmorel in #126
- Add testing for rendering data with alternate representations of coordinate systems by @kmorel in #127
- Add CountAllCells and FindAllCells. by @dpugmire in #136
- Use Project Name Instead of Viskores_BINARY_DIR to Detect Downstream Usage by @qbisi in #137
- Update document number for guide by @kmorel in #140
- Update document number for guide - backport by @kmorel in #143
- Disable bih findallcells by @dpugmire in #141
- Enable more types for Clamp function by @kmorel in #149
- ci: add no_testing cuda13 job by @vicentebolea in #148
- Support TypeTraits for reference types by @kmorel in #152
- Update to 1.1.0 by @vicentebolea in #154
- Add mailing list info to README by @kmorel in #168
- Update user's guide document number by @kmorel in #170
- Updated minimum CMake in configuration by @kmorel in #179
- Fix more compiler warnings about constructor templates by @aumuell in #175
- backport: #189 pkgconfig path by @vicentebolea in #192
- Fix memory_order constants for C++20 (backport 1.1) by @kmorel in #196
- Improve compilation of flow filters (backport) by @kmorel in #206
- Simplify code for ArrayHandleSOA portal (backport) by @kmorel in #205
- Fix CMake for Kokkos-thrust (Backport #209 to Release 1.1) by @kmorel in #212
- fix newlines by @vicentebolea in #214
- update to 1.1.0 rc2 by @vicentebolea in #217
New Contributors
- @barracuda156 made their first contribution in #96
- @spyridon97 made their first contribution in #104
- @nicolemarsaglia made their first contribution in #109
- @lahwaacz made their first contribution in #129
- @qbisi made their first contribution in #137
- @aumuell made their first contribution in #175
Full Changelog: v1.0.0...v1.1.0