Skip to content

Conduit Device Support#1358

Draft
JustinPrivitera wants to merge 199 commits into
developfrom
task/JustinPrivitera/05_01_24/device_support
Draft

Conduit Device Support#1358
JustinPrivitera wants to merge 199 commits into
developfrom
task/JustinPrivitera/05_01_24/device_support

Conversation

@JustinPrivitera

@JustinPrivitera JustinPrivitera commented Jan 24, 2025

Copy link
Copy Markdown
Member

Resolves #1151

See #1614 for ongoing development feature-tracking

TODO fix CI

}
else
{
CONDUIT_ERROR("Cannot call forall with an empty policy.");

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

explore if we want to fall back to serial in this case

JustinPrivitera and others added 6 commits June 10, 2026 16:38
* Reorganize execution macros to make clangd happy

* Move the error checking macro back, as it depends on conduit_execution.hpp itself

* Move macro back to where it was previously
@JustinPrivitera

Copy link
Copy Markdown
Member Author
/usr/WS2/justin/conduit_builds/develop_06_10_26_CUDA/conduit/src/tests/conduit/execution_test_utils.hpp(336): error: An extended __host__ __device__ lambda cannot be defined inside a generic lambda expression("operator()").
                                                                   (index_t idx)
                                                                   ^

/usr/WS2/justin/conduit_builds/develop_06_10_26_CUDA/conduit/src/tests/conduit/execution_test_utils.hpp(391): error: An extended __host__ __device__ lambda cannot be defined inside a generic lambda expression("operator()").
                                                                   (index_t idx)
                                                                   ^

/usr/WS2/justin/conduit_builds/develop_06_10_26_CUDA/conduit/src/tests/conduit/t_conduit_execution.cpp(118): error: The enclosing parent function ("TestBody") for an extended __host__ __device__ lambda cannot have private or protected access within its class
                                                                     (index_t i)
                                                                     ^

JustinPrivitera and others added 11 commits June 16, 2026 17:14
* Add initial sort implementation

* Add openmp sort + tests

* Add comments

* Revert test array size

* Auto convert predicates to use RAJA equivalents when possible

* Fix RAJA for serial and openmp

* Address feedback

* Add todos

* Address feedback

* Cleanup

* Add more comments
#1629)

* Initial implementation

* Add missing comments

* Remove node-backed tests

* Add TODOs to address feedback
@JustinPrivitera

Copy link
Copy Markdown
Member Author

AI says about Windows CI:

So the diagnosis is: the Windows CI is failing at compile time due to clang-cl 19.1.7 being too old for the current MSVC STL on that runner. Upgrading the workflow to Clang 20+ or switching that job
to MSVC cl.exe should address the root cause.

@JustinPrivitera

Copy link
Copy Markdown
Member Author

@cyrush how does MPI play into our work this summer?

* Initial implementation of node-back tests

* Minor tweaks

* Address feedback

* More fixes
@siramok

siramok commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

The device execution model doesn't currently expose a way for the user to globally override the execution policies determined at compile-time (as far as I know anyways).

It's unclear to me whether this would be useful beyond benchmarking (maybe for debugging?), but for example, at any level of abstraction above executing our fundamental operations directly (atomics, reducers, etc.) it's currently only possible to ask for host vs device execution. However, the underlying host/device execution policies are automatically set to the best available policy at compile-time. This means that it's currently not possible to benchmark the serial execution policy if conduit was built with RAJA + openmp, since asking for host execution will always use openmp.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

use cases + strawman interface to raja based host device exec interface

3 participants