1 of 24

Viskores Project Proposal

HPSF TAC Meeting

November 14, 2024

ORNL IS MANAGED BY UT-BATTELLE LLC �FOR THE US DEPARTMENT OF ENERGY

1

2 of 24

Note about Viskores transition

The software referred to as Viskores is in the process of being transformed from VTK-m to Viskores. This process is ongoing.

Much of the technology I talk about today was part of the VTK-m development.

When I say something is part of Viskores, I mean it is a part of VTK-m that becomes Viskores.

2

3 of 24

Viskores: Visualization on Accelerators

Contouring and features

Particle Density

Rendering

Advection

and flow

And much more…

3

4 of 24

Distributed

Parallelism

Viskores

4

5 of 24

Viskores Forms the Backbone of HPC Visualization

Viskores

5

6 of 24

Viskores Integrated into Essential SciVis Tools Like ParaView and VisIt

  1. Turn on Viskores in Preferences

  • Use Viskores-enabled filters as normal
  1. Turn on Viskores in Preferences

  • Use Viskores-enabled plots as normal

Using Viskores in ParaView

Using Viskores in VisIt

6

7 of 24

Contour

Streams

Clip

Render

CUDA

Xeon Phi

CPU

AMD ROCm

Intel GPU

Surface

Normals

Ghost Cells

Warp

Viskores

7

8 of 24

8

9 of 24

Alignment between HPSF’s and Viskores’ Missions

GPUs and other processors that support many threads are an important component of modern HPC systems. Such accelerator processors are installed on about 1/3 of all machines listed in the TOP500 list. As such, efficient visualization and analysis algorithms are critical for in situ and large-scale analysis.

Viskores provides the scientific visualization algorithms needed on modern HPC systems. Viskores is designed to be integrated into other software and currently integrates with AscentParaViewVisIt, and ADIOS. As such, Viskores plays an important role in the HPC software ecosystem.

Viskores, by its nature, is hidden from end users behind a GUI and software stack. Thus, it can be hard to connect Viskores to potential customers that need updated functionality. One of our goals of joining the HPSF is to form connections between Viskores and potential customers that have visualization needs.

9

10 of 24

Code of Conduct

10

11 of 24

Governance Practices + Decision Making Process

https://github.com/Viskores/viskores/blob/main/CONTRIBUTING.md#governance-of-viskores

  • Technical Steering Committee (TSC) responsible for technical oversite
    • “Big decisions” made by discussion and vote
    • TSC members added by majority vote
    • TSC members removed by 2/3 vote, self removal, or lack of activity
  • Committers have ability to modify (commit) source code
    • Manage contributing guidelines
    • Expected to bring large decisions to the TSC

11

12 of 24

Misc

Two Sponsers from HPSF TAC

Todd Gamblin and Damien Lebrun-Grandie

Solution for source control

GitHub

Solution for issue tracking

GitHub Issues

12

13 of 24

Required External Dependencies

  • C++14 compiler
    • Works with GCC, Clang, XCode, MSVC, Intel
  • CMake 3.24+

13

14 of 24

Required External Dependencies

  • C++14 compiler
    • Works with GCC, Clang, XCode, MSVC, Intel
  • CMake 3.24+

Viskores source contains snapshots of the following:

  • DIY
  • Lightweight Cell Library
  • LodePNG
  • Loguru
  • The Lean Mean C++ Option Parser

14

15 of 24

Optional External Dependencies

  • Kokkos 3.7+
    • Can include sub-dependencies of HIP, SYCL, Cuda, etc.
  • Cuda Toolkit 10.2+
  • TBB
  • OpenMP 4.0+

15

16 of 24

Release methodology and mechanics

Viskores is released on a roughly 6-month cadence although this is often adjusted as needed by customers.

We create a branch for each release, and each release is preceded by one or more release candidates. Each release candidate gets tagged and packaged like any other release. These release candidates are open for community testing, and when no problems are found for a particular release candidate, the same code is�provided as the next release.

Branches to several past releases are maintained to allow patching multiple releases that are in active use.

The full release process is documented in the Release Process guide.

16

17 of 24

Software quality efforts

All contributions to Viskores must be submitted as a pull request through GitHub. Before any pull request can be merged into the development or any release branch, it must be reviewed by an independent developer, and it must pass regression testing.

Code reviews are performed via the GitHub PR interface. Reviewers help check for correctness as well as verify the code satisfies Viskores testing, documentation, and style guidelines. Code reviews also help ensure against bad-faith contributions.

Regression testing is built into the CI infrastructure of pull requests. The pull request automatically launches jobs that in turn execute build and/or run phases in container images. Regression tests are automatically run on a variety of architectures including Windows, Mac OS, and multiple distributions of Linux. Builds include multiple compiler versions including GCC and Clang versions. Viskores is also tested specifically on Cuda and HIP architectures. In addition to the standard set of regression tests, a special job runs a select set of benchmarks to help ensure major performance regressions do not happen.

Note: In the transition from VTK-m, the Viskores CI infrastructure is being rebuilt, in part to take advantage of the gitlab.spack.io testing services.

17

18 of 24

Software quality efforts

18

19 of 24

Team

Kenneth Moreland, ORNL (@kmorel) -- Chair

Jefferson Amstutz, Nvidia (@jeffamstutz)

Mark Bolstad, SNL (@renderdude)

Hank Childs, U Oregon (@hankchilds)

Berk Geveci, Kitware (@berkgeveci)

Nicole Marsaglia, LLNL (@nicolemarsaglia)

Li-Ta "Ollie" Lo, LANL (@ollielo)

David Pugmire, ORNL (@dpugmire)

Silvio Rizzi, ANL (@srizzi88)

Gunther Weber, LBL (@ghweber)

Jefferson Amstutz (@jeffamstutz)

Vicente Bolea (@vicentebolea)

Mark Bolstad (@renderdude)

Hank Childs (@hankchilds)

Berk Geveci (@berkgeveci)

Nicole Marsaglia (@nicolemarsaglia)

Kenneth Moreland (@kmorel)

Li-Ta "Ollie" Lo (@ollielo)

David Pugmire (@dpugmire)

Silvio Rizzi (@srizzi88)

Gunther Weber (@ghweber)

Technical Steering Committee

Committers

19

20 of 24

Maturity level

We aim to join the HPSF as a Sandbox stage project while in the transition from VTK-m to Viskores. Although we have a mature process for continuous integration, software contributions, and release management, we will revisit these processes as part of the transition.

We hope to transition to an Established stage project shortly after the transition to the new name. Viskores has over 70 contributors spread across 20 organizations.

20

21 of 24

Communication channels

Bi-weekly public meetings

Email mailing list (to be transitioned from VTK-m)

GitLab issues and MRs (to be transitioned from VTK-m)

21

22 of 24

Existing financial sponsorships

Contributors are primarily paid by their own institution to work on Viskores. Most of the support funding comes from DOE/SC Software Sustainability funds informally known as OASIS. This and other application-facing support comes from the RAPIDS2 SciDAC project.

22

23 of 24

Infrastructure needs / requests

Viskores is interested in support for its CI system, particularly with regard to testing on various compute devices. (Much of this support will likely come from the University of Oregon testing platform currently used�for Spack. Thus, this might not be an expense on HPSF directly but would unlikely be made available without the HPSF.) We would also ask for support if Viskores outgrows GitHub free plans.

Viskores is also interested in HPSF support for communication materials such as the maintenance of web pages and videoconferencing accounts. We are also interested in regular hackathon meetings for code sprints.

23

24 of 24

Full form

24