-
Notifications
You must be signed in to change notification settings - Fork 54
Add PaNOSC Research Software Stories - alpaka and PiConGPU #584
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
sparkslabs
merged 51 commits into
EVERSE-ResearchSoftware:main
from
srghosh56:add-panosc-research-software-stories
Feb 24, 2026
+399
−420
Merged
Changes from 38 commits
Commits
Show all changes
51 commits
Select commit
Hold shift + click to select a range
87f561b
Automated update of RSQKit data files
github-actions[bot] a0dca31
Automated update of RSQKit data files
github-actions[bot] b176cac
Automated update of RSQKit data files
github-actions[bot] a5d08d5
Automated update of RSQKit data files
github-actions[bot] e2da104
Automated update of RSQKit data files
github-actions[bot] 144f074
Automated update of RSQKit data files
github-actions[bot] a637ad0
Automated update of RSQKit data files
github-actions[bot] fcd2aff
Automated update of RSQKit data files
github-actions[bot] d7110f4
Automated update of RSQKit data files
github-actions[bot] 246d802
Automated update of RSQKit data files
github-actions[bot] 00033af
Automated update of RSQKit data files
github-actions[bot] 1b2612e
Automated update of RSQKit data files
github-actions[bot] 42011bd
Automated update of RSQKit data files
github-actions[bot] 3c91050
Automated update of RSQKit data files
github-actions[bot] 2f4a975
Automated update of RSQKit data files
github-actions[bot] bdc6796
Automated update of RSQKit data files
github-actions[bot] 8a73378
Automated update of RSQKit data files
github-actions[bot] b9c8f70
Automated update of RSQKit data files
github-actions[bot] 2c05b0f
Automated update of RSQKit data files
github-actions[bot] bb3196b
Merge branch 'EVERSE-ResearchSoftware:main' into main
srghosh56 69a8c5a
Automated update of RSQKit data files
github-actions[bot] 7abe7ee
Automated update of RSQKit data files
github-actions[bot] 0b1c7de
Automated update of RSQKit data files
github-actions[bot] 48ab8eb
Automated update of RSQKit data files
github-actions[bot] 3a3ca2b
Automated update of RSQKit data files
github-actions[bot] c5897f6
Automated update of RSQKit data files
github-actions[bot] d69dff3
Automated update of RSQKit data files
github-actions[bot] 3acfb5e
Merge branch 'EVERSE-ResearchSoftware:main' into main
srghosh56 4f31b6b
Automated update of RSQKit data files
github-actions[bot] d58965f
Add PaNOSC Research Software Stories
srghosh56 d672d5f
Merge branch 'EVERSE-ResearchSoftware:main' into main
srghosh56 f535f36
Address review feedback
srghosh56 fb5612a
Address invalid tool id error for hip
srghosh56 4f54269
Address invalid tool id error for hip for other instances
srghosh56 a5f5900
Address invalid tool id error for hip for other instances
srghosh56 f6571e4
Address invalid tool id error for openmp
srghosh56 e2d068d
Address invalid tool id errors
srghosh56 36c520b
Address invalid tool id error for boost
srghosh56 53715a1
Fix all invalid tool id errors
srghosh56 bb5c96f
Add PaNOSC Research Software Stories
srghosh56 c19d87c
Address review feedback
srghosh56 cb3f6c3
Address invalid tool id error for hip
srghosh56 10a6936
Address invalid tool id error for hip for other instances
srghosh56 a5b550c
Address invalid tool id error for hip for other instances
srghosh56 4ec1f99
Address invalid tool id error for openmp
srghosh56 90033b5
Address invalid tool id errors
srghosh56 690076a
Address invalid tool id error for boost
srghosh56 701bb74
Fix all invalid tool id errors
srghosh56 37d8f06
Add contributors info and links for online resources
srghosh56 fd1ba75
Fix links for the online videos for alpaka
srghosh56 547dac0
Resolve merge conflicts - keep online video links
srghosh56 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
208 changes: 208 additions & 0 deletions
208
pages/research_software_stories/alpaka_research_software_story.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,208 @@ | ||
| --- | ||
| title: "Research Software Story - alpaka" | ||
| search_exclude: false | ||
| description: "alpaka is a header-only C++ template library that enables writing platform and performance portable applications. It can use CPUs with sequential and thread parallel code, GPUs via multiple programming paradigms and also FPGAs." | ||
| contributors: ["Guido Juckeland", "Srobona Ghosh"] | ||
| page_id: alpaka | ||
| type: research_software_story | ||
| --- | ||
|
|
||
| ## The Problem | ||
| ### Achieving performance portability in an increasingly heterogeneous HPC landscape | ||
|
|
||
| alpaka is a header-only C++ template library that enables writing [platform and performance portable applications][ALPAKA_GITHUB]. | ||
| It can use CPUs with sequential and thread parallel code, GPUs via multiple programming paradigms. | ||
| The library addresses the fundamental challenge facing HPC developers: how to write high-performance code once and run it efficiently across diverse hardware platforms without maintaining separate implementations for each architecture. | ||
|
|
||
| Traditional approaches required separate code paths, within the user application, for NVIDIA GPUs ([CUDA][CUDA]), [AMD GPUs][HIP] ([HIP/ROCm][HIP]), [Intel GPUs][SYCL] ([oneAPI/SYCL][SYCL]), and multicore x86/ARM/RISCV CPUs ([OpenMP][OPENMP]). | ||
| This multiplication of code creates enormous maintenance burdens and makes verification difficult. | ||
| alpaka solves this by providing a single abstraction layer where developers write algorithms once using portable interfaces, then compile to native code for different hardware backends. | ||
|
|
||
| ## User Community | ||
| ### Joint development between HZDR and CERN serving the HPC community | ||
|
|
||
| alpaka is jointly developed at the [Helmholtz-Zentrum Dresden-Rossendorf (HZDR)][HZDR] and [CERN][CERN] (CMS experiment). | ||
| The development team combines computer scientists and physicists, with work mainly driven through PhD and master's thesis projects alongside requirements from CERN's experimental collaborations. | ||
|
|
||
| **Development team composition:** | ||
| - HZDR and CMS are focused on core library architecture and performance optimization | ||
| - CMS collaboration developers at CERN driving requirements for high-energy physics data processing | ||
| - HZDR taking care of plasma physics simulation requirements | ||
| - HZDR is developing features based on external user requirements from [DLR][DLR] and [HZB][HZB] | ||
| - HZDR is developing the testing strategies and infrastructure to guarantee the code quality | ||
| - PhD and master's students contributing focused improvements and new features | ||
|
|
||
| **User base characteristics:** | ||
| - Advanced [C++][LANGUAGE_CPP] programmers working in HPC environments | ||
| - Researchers needing codes to work across different computing centers with varying hardware | ||
| - CMS experiment and other scientific collaborations requiring performance portability | ||
| - Users comfortable with parallel programming concepts and template-heavy C++ code | ||
|
|
||
| The community maintains connection through [online videos and onboarding documents][ALPAKA_DOCS], a [Mattermost][TOOL_MATTERMOST] team with core users, and personnel exchange visits between institutions. | ||
|
|
||
| ## Technical Aspects | ||
| ### Header-only C++ template library for compile-time code generation | ||
|
|
||
| alpaka is classified as Tier 3 Research Software Infrastructure (Services included), reflecting its critical enabling role for other scientific applications. | ||
|
|
||
| **Technical specifications:** | ||
| - **Language:** Modern [C++20][LANGUAGE_CPP20] for expressive template metaprogramming | ||
| - **Codebase size:** Approximately 45k lines of code (30k in core library headers) and 10k lines of comments | ||
| - **Architecture:** Header-only library that doesn't "run" but translates at compile time | ||
| - **Compilation approach:** Compiler processes templates to generate hardware-specific code ({% tool "cuda" %}, [HIP][HIP]/[ROCm][ROCm], [OpenMP][OPENMP], etc.) | ||
| - **Performance:** Zero runtime overhead compared to hand-written platform-specific code | ||
|
|
||
| When developers write alpaka-based algorithms and compile with a specific backend selected, the compiler produces native code for that platform. | ||
| Compiling the same source with different backends produces different optimized implementations from a single codebase. | ||
|
|
||
| ### Libraries and Systems | ||
|
|
||
| alpaka's dependencies vary based on the selected compilation backend: | ||
|
|
||
| - **{% tool "cuda" %}:** Required when compiling for NVIDIA GPUs | ||
| - **[HIP][HIP]/[ROCm][ROCm]:** Required when targeting AMD GPUs | ||
| - **[OneAPI SYCL][SYCL]:** Required for Intel GPUs or optionally CPUs | ||
| - **[OpenMP][OPENMP]:** Used for thread-parallel CPU execution | ||
| - **[TBB (Threading Building Blocks)][TBB]:** Alternative for task-based CPU parallelism | ||
|
|
||
| This backend architecture means deploying alpaka-based code requires only the specific toolchain relevant to the target hardware, keeping deployment practical despite broad platform support. | ||
|
|
||
| ## Software Quality Practices | ||
| ### Comprehensive testing across thousands of hardware configurations | ||
|
|
||
| alpaka follows disciplined development practices essential for a library supporting such diverse platforms: | ||
|
|
||
| - **Version control:** {% tool "git" %} with the main repository on [GitHub][ALPAKA_GITHUB] | ||
| - **Contribution guidelines:** Detailed guidelines in [CONTRIBUTING.md][ALPAKA_CONTRIBUTING] maintain consistency across contributors | ||
| - **Code review:** Mandatory peer review before merging changes | ||
| - **Coding standards:** Comprehensive [guidelines documented][ALPAKA_STYLE] for maintaining code quality | ||
|
|
||
| The most remarkable quality practice is the extensive continuous integration infrastructure testing every change across thousands of configurations. | ||
| The CI system routes code from {% tool "github" %} through [GitLab.com][GITLAB] to HZDR's local GitLab CI infrastructure with access to diverse hardware accelerators. | ||
| Each change triggers: | ||
|
|
||
| - Static code quality checks through linting | ||
| - Compilation testing across all supported C++ compilers, hardware backends, and configurations | ||
| - Test suite execution verifying correctness on each platform | ||
|
|
||
| Results push back to GitHub pull requests, providing immediate feedback about cross-platform compatibility. | ||
| The code also integrates into multiple HPC compiler vendor and hardware manufacturer CI/CD test environments. | ||
|
|
||
| ## Developer Community | ||
| ### Individualized onboarding for template metaprogramming expertise | ||
|
|
||
| Onboarding new alpaka developers requires attention to the specialized C++ template metaprogramming knowledge needed to work effectively with the library. | ||
| The process is highly individualized, tailored to each contributor's background and the specific areas where they'll work. | ||
|
|
||
| **Resources for developers:** | ||
| - Online videos introducing alpaka's architecture and design philosophy | ||
srghosh56 marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - [Written documentation][ALPAKA_DOCS] explaining the template machinery | ||
| - [Mattermost][TOOL_MATTERMOST] team for real-time support from experienced developers | ||
| - Personnel exchange visits for intensive knowledge transfer through pair programming | ||
|
|
||
| **Typical user journey:** | ||
| New users typically start by adapting existing code from one platform (e.g., {% tool "cuda" %}) to use alpaka's portable interfaces. | ||
| They begin by compiling only for familiar backends to verify correctness, then experiment with other platforms while comparing performance and debugging platform-specific issues. | ||
|
|
||
| ## Tools | ||
| ### Performance profiling across diverse accelerator platforms | ||
|
|
||
| alpaka works well with standard profiling tools for various platforms: | ||
|
|
||
| - **[NVIDIA Nsight][NVIDIA_NSIGHT]** for NVIDIA GPU performance analysis | ||
| - **[AMD Omniperf][AMD_OMNIPERF]** for AMD GPU optimization | ||
| - **[Score-P][SCOREP]** for general parallel performance analysis | ||
|
|
||
| Profiling can be challenging due to the highly asynchronous nature of GPU execution and complex control flow from template-based abstractions. | ||
| The development team uses these tools to verify memory access patterns are efficient and that kernel launches don't introduce unnecessary overhead. | ||
|
|
||
| Like PIConGPU, alpaka has been incorporated into compiler vendor and hardware manufacturer testing environments, where it serves as a stress test for C++ template implementations and optimization capabilities. | ||
|
|
||
| ## FAIR & Open | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. See comment about the formatting of this section. |
||
| ### Open development supporting collaborative cross-institution research | ||
|
|
||
| alpaka adheres to the [FAIR principles for research software][FAIR_PRINCIPLES]: | ||
|
|
||
| * **Findable**: The code is openly available on [GitHub][ALPAKA_GITHUB] with clear versioning, and releases are archived with assigned DOIs for academic referencing. | ||
|
|
||
| * **Accessible**: Core licensed under [MPLv2 (Mozilla Public License v2.0)][LICENSE_MPL2], examples under [ISC (Internet Systems Consortium)][LICENSE_ISC] allowing incorporation into projects with different licensing requirements; documentation under [CC-BY 4.0][LICENSE_CCBY]. | ||
|
|
||
| * **Interoperable**: Designed to work seamlessly with standard HPC frameworks and supports multiple hardware backends ({% tool "cuda" %}, [HIP][HIP], [OpenMP][OPENMP], [SYCL][SYCL]), enabling integration across diverse computing environments. | ||
|
|
||
| * **Reusable**: alpaka provides well-documented, tested components with comprehensive [coding guidelines][ALPAKA_STYLE] and clear [contribution process][ALPAKA_CONTRIBUTING], enabling reuse and easy adaptation across multiple research projects. | ||
|
|
||
| Development happens openly with features, architectural decisions, and bug reports discussed in public [GitHub Issues][ALPAKA_ISSUES]. | ||
| The MPLv2 licensing ensures the library remains free and open while accommodating use by large experimental collaborations with complex software licensing requirements. | ||
|
|
||
| ## Documentation | ||
| ### Multi-level resources for diverse technical audiences | ||
|
|
||
| alpaka documentation is organized to serve different user groups: | ||
|
|
||
| - **Conceptual overviews:** Explaining the programming model and abstraction design | ||
| - **Installation guides:** Configuration for different backends and integration into projects | ||
| - **Tutorials:** Demonstrating common usage patterns through concrete examples | ||
| - **Developer documentation:** Architecture explanations and contribution guidance | ||
| - **API reference:** Technical specifications for library interfaces | ||
|
|
||
| The primary documentation lives at <https://alpaka.readthedocs.io> using [Read the Docs][READTHEDOCS] for versioned access. | ||
| Documentation is mainly written and maintained by the core development team, with contributions often arriving as part of pull requests introducing new features. | ||
|
|
||
| ## Sustainability | ||
| ### Institutional funding and community governance ensure long-term evolution | ||
|
|
||
| alpaka's sustainability model supports evolution over multi-decade timescales: | ||
|
|
||
| **Funding and staffing:** | ||
| - Part of Helmholtz base-funded research activities at HZDR | ||
| - Permanently funded RSE as maintainer, ensuring continuity | ||
| - Coordination between HZDR and CERN ensures alignment with both general HPC and experimental collaboration needs | ||
|
|
||
| **Governance:** | ||
| - Project builds on well-established FOSS community practices | ||
| - Guidance from experienced researchers and RSEs maintains coherent architecture | ||
| - Thesis-driven development provides fresh contributions while experienced maintainers preserve long-term vision | ||
|
|
||
| **Recognition:** | ||
| - Author and contributor lists maintained in the software repository | ||
| - Software authors for specific scientific applications listed as co-authors on academic publications | ||
| - Citeable DOI enables proper acknowledgment in publications | ||
|
|
||
| The combination of institutional support, dual-institution governance, and established community practices positions alpaka well for continued evolution as hardware platforms and programming models advance. | ||
|
|
||
| ## References | ||
|
|
||
| - alpaka GitHub Repository: <https://github.com/alpaka-group/alpaka> | ||
| - Main publication: Matthes, A., et al. (2016). Tuning and optimization for a variety of many-core architectures without changing a single line of implementation code using the alpaka library. <https://doi.org/10.1109/IPDPSW.2016.50> | ||
| - alpaka Documentation: <https://alpaka.readthedocs.io> | ||
| - Coding Guidelines: <https://alpaka.readthedocs.io/en/latest/dev/style.html> | ||
| - Software Citation: [DOI 10.5281/zenodo.595380](https://doi.org/10.5281/zenodo.595380) | ||
|
|
||
| <!-- External link definitions --> | ||
| [HZDR]: https://www.hzdr.de/ | ||
| [CERN]: https://home.cern/ | ||
| [DLR]: https://www.dlr.de/ | ||
| [HZB]: https://www.helmholtz-berlin.de/ | ||
| [LANGUAGE_CPP]: https://en.cppreference.com/w/cpp | ||
| [LANGUAGE_CPP20]: https://en.cppreference.com/w/cpp/20 | ||
| [TOOL_MATTERMOST]: https://mattermost.com/ | ||
| [CUDA]: https://developer.nvidia.com/cuda-toolkit | ||
| [HIP]: https://rocm.docs.amd.com/projects/HIP/en/latest/ | ||
| [SYCL]: https://www.khronos.org/sycl/ | ||
| [OPENMP]: https://www.openmp.org/ | ||
| [TBB]: https://www.intel.com/content/www/us/en/developer/tools/oneapi/onetbb.html | ||
| [ALPAKA_GITHUB]: https://github.com/alpaka-group/alpaka | ||
| [ALPAKA_CONTRIBUTING]: https://github.com/alpaka-group/alpaka/blob/develop/CONTRIBUTING.md | ||
| [ALPAKA_STYLE]: https://alpaka.readthedocs.io/en/latest/dev/style.html | ||
| [ALPAKA_ISSUES]: https://github.com/alpaka-group/alpaka/issues | ||
| [ALPAKA_DOCS]: https://alpaka.readthedocs.io | ||
| [GITLAB]: https://gitlab.com | ||
| [NVIDIA_NSIGHT]: https://developer.nvidia.com/nsight-systems | ||
| [AMD_OMNIPERF]: https://rocm.docs.amd.com/projects/omniperf/en/latest/ | ||
| [SCOREP]: https://www.vi-hps.org/projects/score-p/ | ||
| [FAIR_PRINCIPLES]: https://www.nature.com/articles/s41597-022-01710-x | ||
| [LICENSE_MPL2]: https://www.mozilla.org/en-US/MPL/2.0/ | ||
| [LICENSE_ISC]: https://opensource.org/license/isc-license-txt | ||
| [LICENSE_CCBY]: https://creativecommons.org/licenses/by/4.0/ | ||
| [READTHEDOCS]: https://readthedocs.org/ | ||
| [ROCm]: https://rocm.docs.amd.com/en/latest/ | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.