Skip to content
Draft
Show file tree
Hide file tree
Changes from 132 commits
Commits
Show all changes
165 commits
Select commit Hold shift + click to select a range
864e52f
I'm really thinking about GPUs this time
JustinPrivitera May 1, 2024
ab961e3
oops
JustinPrivitera May 3, 2024
cede461
start
JustinPrivitera May 7, 2024
b3b5246
I know what I'm doing
JustinPrivitera May 14, 2024
8343fdc
adasdas
JustinPrivitera May 16, 2024
1950d8a
thanks cyrus
JustinPrivitera May 21, 2024
28bed36
trying to get it to build
JustinPrivitera May 22, 2024
c2c37c5
COMPILE!
JustinPrivitera May 22, 2024
921695e
maybe we allow non raja open mp
JustinPrivitera May 22, 2024
2a6c51b
these changes are from 2 weeks ago
JustinPrivitera Jun 10, 2024
56e72a7
have more mystery changes
JustinPrivitera Jun 18, 2024
c86066a
Merge branch 'develop' into task/JustinPrivitera/05_01_24/device_support
JustinPrivitera Jul 1, 2024
ca41133
myth busted
JustinPrivitera Jul 1, 2024
ea27d0d
help what do i do next
JustinPrivitera Jul 1, 2024
08eb646
sigh
JustinPrivitera Jul 2, 2024
a0c64f7
new source files
JustinPrivitera Jul 10, 2024
a7b2191
exec array src
JustinPrivitera Jul 10, 2024
e6d04c0
I did it I made GPUs work
JustinPrivitera Jul 10, 2024
df1e13d
It works, it just needs to compile
JustinPrivitera Jul 11, 2024
d8fd62c
correction to sync and replace
JustinPrivitera Jul 15, 2024
02d74a1
im really dong it
JustinPrivitera Aug 7, 2024
44572a3
Merge branch 'develop' into task/JustinPrivitera/05_01_24/device_support
JustinPrivitera Aug 7, 2024
50b591d
starting to add the screte sauce
JustinPrivitera Aug 7, 2024
3325854
thx cyrus
JustinPrivitera Aug 7, 2024
4757552
replace goes away
JustinPrivitera Aug 7, 2024
1b00fd3
new world of node linked accessor
JustinPrivitera Aug 12, 2024
73f3283
working through use with cases
JustinPrivitera Aug 13, 2024
0c5aef2
use with
JustinPrivitera Aug 14, 2024
1190e41
im doing data array
JustinPrivitera Aug 15, 2024
2c81fd1
have a header
JustinPrivitera Aug 15, 2024
4ff36e0
exec array done besides special methods
JustinPrivitera Aug 15, 2024
6cf6a0a
data array special sauce
JustinPrivitera Aug 15, 2024
837048c
have more setters
JustinPrivitera Aug 16, 2024
eb47dd4
intense compiler battles
JustinPrivitera Aug 21, 2024
428ac39
get python out of here
JustinPrivitera Aug 22, 2024
553c4c4
solved the dependency issue
JustinPrivitera Aug 22, 2024
28ec695
battle for the soul of this nation
JustinPrivitera Aug 22, 2024
9922a7c
fixed horrible dependency issue
JustinPrivitera Aug 28, 2024
4028f18
this is for cyrus
JustinPrivitera Aug 29, 2024
e14613f
im in jail
JustinPrivitera Aug 29, 2024
47e6f62
world hunger - solved
JustinPrivitera Aug 31, 2024
f0bb334
world peace - done
JustinPrivitera Aug 31, 2024
e48b995
Merge branch 'develop' into task/JustinPrivitera/05_01_24/device_support
JustinPrivitera Jan 14, 2025
fc7bbd7
restore node note
JustinPrivitera Jan 14, 2025
eea3e9a
notes fgrom meeting
JustinPrivitera Jan 15, 2025
3705428
exec policy rewrite
JustinPrivitera Jan 15, 2025
a51da75
memory manager
JustinPrivitera Jan 16, 2025
6e12f87
clean up execution
JustinPrivitera Jan 16, 2025
675db88
compiler jail
JustinPrivitera Jan 16, 2025
dfa6c1c
commented out things so now we compile
JustinPrivitera Jan 16, 2025
ac41a1f
maybe the answer
JustinPrivitera Jan 16, 2025
ddaf819
bringing more things back online
JustinPrivitera Jan 16, 2025
92d67f2
our problems may be solvesd
JustinPrivitera Jan 16, 2025
df52f73
compiler? I barely know her!
JustinPrivitera Jan 16, 2025
425169e
they call me mr compiler
JustinPrivitera Jan 17, 2025
2011e38
let em play ref
JustinPrivitera Jan 17, 2025
3a5447a
defualt policy
JustinPrivitera Jan 17, 2025
edeba86
Merge branch 'develop' into task/JustinPrivitera/05_01_24/device_support
JustinPrivitera Jan 17, 2025
7bc4a38
clean up policies
JustinPrivitera Jan 17, 2025
e689e74
fix foralls in topo md
JustinPrivitera Jan 17, 2025
64ce7e3
big moves
JustinPrivitera Jan 18, 2025
6d76471
I don'
JustinPrivitera Jan 18, 2025
fb40758
finished rewrite of topo md
JustinPrivitera Jan 18, 2025
08794e6
nice
JustinPrivitera Jan 18, 2025
7bc61c8
the end of an era
JustinPrivitera Jan 22, 2025
48ce5af
oh yeah cmake
JustinPrivitera Jan 22, 2025
a42f91b
compiles
JustinPrivitera Jan 22, 2025
2ce692a
all the old tests pass
JustinPrivitera Jan 22, 2025
aafbaff
cpp magic tests + openmp
JustinPrivitera Jan 22, 2025
8f58145
woohoo
JustinPrivitera Jan 22, 2025
9f4565a
compile
JustinPrivitera Jan 23, 2025
658a967
note
JustinPrivitera Jan 23, 2025
2d21363
gimme set methods
JustinPrivitera Jan 23, 2025
0c78216
livchat couldn't save me
JustinPrivitera Jan 24, 2025
0505b3a
todo
JustinPrivitera Jan 24, 2025
0484304
back online
JustinPrivitera Jan 24, 2025
ec0019e
add some comments
JustinPrivitera Jan 24, 2025
e5ffe26
eliminating todos
JustinPrivitera Jan 24, 2025
06c9bde
Merge branch 'develop' into task/JustinPrivitera/05_01_24/device_support
JustinPrivitera Jan 27, 2025
72513b6
I eat const nodes for breakfast
JustinPrivitera Jan 27, 2025
8f47fa0
life is better with const_cast
JustinPrivitera Jan 27, 2025
d0ccdf8
sorry for my node sins
JustinPrivitera Jan 27, 2025
396adee
it will be time consuming to bring all the tests online
JustinPrivitera Jan 27, 2025
ef058d1
another day another test
JustinPrivitera Jan 27, 2025
f2f83e2
test for set_using_exec_array
JustinPrivitera Jan 27, 2025
f396712
you can now ask the exec environment what is supported
JustinPrivitera Jan 28, 2025
d3647fd
rewrote test using new exec enviornment checks
JustinPrivitera Jan 28, 2025
2d9a193
more tests
JustinPrivitera Jan 29, 2025
4a6838b
fix compile errors and tests pass
JustinPrivitera Jan 29, 2025
457798f
summary stats test
JustinPrivitera Jan 29, 2025
61bd505
all the tests are online
JustinPrivitera Jan 29, 2025
d03d2a8
fix typo
JustinPrivitera Jan 29, 2025
850d002
test going from data array to exec array
JustinPrivitera Jan 29, 2025
f16dd28
data accessor to exec array test
JustinPrivitera Jan 29, 2025
0754148
tests for data array to be constructed from exec array and exec accessor
JustinPrivitera Jan 29, 2025
0973268
exec accessor tests
JustinPrivitera Jan 29, 2025
75f7527
tests for everything to data accessor
JustinPrivitera Jan 29, 2025
836d092
we have tests for all sets between data/exec arrays/accessors
JustinPrivitera Jan 29, 2025
925c0ba
strawman
JustinPrivitera Jan 29, 2025
c94d508
conduit device check macro
JustinPrivitera Jan 30, 2025
c9ac3d4
we're not ready for the strawman
JustinPrivitera Jan 30, 2025
1db647e
tag dispatching approach to avoid partial specialization error
JustinPrivitera Feb 4, 2025
fc917ed
fix device error macro
JustinPrivitera Feb 4, 2025
e316b2d
works now just need it to compile
JustinPrivitera Feb 5, 2025
bd90c8e
add active space method
JustinPrivitera Feb 18, 2025
8ce35a7
fix compile error
JustinPrivitera Feb 18, 2025
856e27d
deleting the strawman helps us compile
JustinPrivitera Feb 18, 2025
8387d13
as_whatever_exec_array methods
JustinPrivitera Mar 6, 2025
fb8229f
more as_whatever_array methods
JustinPrivitera Mar 6, 2025
f465abc
hooking things up in Value class
JustinPrivitera Mar 6, 2025
a1140f3
hooking things up in ConstValue class
JustinPrivitera Mar 6, 2025
63cd5ee
update exec accessor tests
JustinPrivitera Mar 6, 2025
d1fdfb7
update exec array tests
JustinPrivitera Mar 6, 2025
41bc3b6
SFINAE
JustinPrivitera Mar 12, 2025
b054c5a
OWIE
JustinPrivitera Mar 12, 2025
c2a6082
Merge branch 'develop' into task/JustinPrivitera/05_01_24/device_support
JustinPrivitera Nov 3, 2025
8447dfd
Merge ExecutionArray/Accessor with DataArray/Accessor (#1473)
JustinPrivitera Dec 24, 2025
e8681e8
merge develop
JustinPrivitera Dec 29, 2025
c419d2c
replace old for_all with forall
JustinPrivitera Dec 29, 2025
5697007
attempt to fix MSVC compilation errors
JustinPrivitera Dec 29, 2025
03f7080
merge develop
JustinPrivitera Apr 2, 2026
2be1395
fix merge damage
JustinPrivitera Apr 2, 2026
b853f3a
necessary cmake steps
JustinPrivitera Apr 7, 2026
ae7f890
codex helps with HIP 2 (#1564)
JustinPrivitera Apr 8, 2026
b6902c3
Codex cleans up device support (#1565)
JustinPrivitera Apr 10, 2026
db26262
rename ExecutionPolicy when it is a typename and add some style comments
JustinPrivitera Apr 10, 2026
bf8b572
codex add reducers and atomics (#1569)
JustinPrivitera Apr 10, 2026
e5c3997
Device Support: codex implements the strawman (#1570)
JustinPrivitera Apr 13, 2026
eee9601
comments
JustinPrivitera Apr 14, 2026
e4fe170
cmake for cyrus
JustinPrivitera Apr 16, 2026
a35d444
add note
JustinPrivitera Apr 16, 2026
459a744
codex versus cyrus
JustinPrivitera Apr 16, 2026
7d9c0a9
sorry cyrus
JustinPrivitera Apr 16, 2026
c255e8c
blt enables languages for us
JustinPrivitera Apr 16, 2026
fcb7fcc
cyrus wins
JustinPrivitera Apr 16, 2026
c7eb6cd
remove redundant set target line
JustinPrivitera Apr 16, 2026
ffa88a7
cmake helper
JustinPrivitera Apr 16, 2026
03ff245
fixes for cyrus
JustinPrivitera Apr 16, 2026
dbd8112
add decorators
JustinPrivitera Apr 16, 2026
ce0a3b0
Apply suggestion from @JustinPrivitera
JustinPrivitera Apr 16, 2026
f70b33c
fight codex to remove the decorator header
JustinPrivitera Apr 16, 2026
3ba8fad
Merge branch 'task/JustinPrivitera/05_01_24/device_support' of github…
JustinPrivitera Apr 16, 2026
458c327
Apply suggestion from @JustinPrivitera
JustinPrivitera Apr 16, 2026
f86da9b
Apply suggestion from @JustinPrivitera
JustinPrivitera Apr 16, 2026
1fa25ad
Apply suggestion from @JustinPrivitera
JustinPrivitera Apr 16, 2026
1be83ee
Apply suggestion from @JustinPrivitera
JustinPrivitera Apr 16, 2026
a6f9e03
Apply suggestions from code review
JustinPrivitera Apr 16, 2026
9a04bd5
make cmake function take an argument
JustinPrivitera Apr 16, 2026
966160c
merge
JustinPrivitera Apr 16, 2026
a142b5d
make cmakedefines more like openmp
JustinPrivitera Apr 16, 2026
484a4fb
remove undefs
JustinPrivitera Apr 16, 2026
fb05f75
Apply suggestion from @JustinPrivitera
JustinPrivitera Apr 16, 2026
2e7082e
we don't need memory manager
JustinPrivitera Apr 16, 2026
091a891
parallel policy added
JustinPrivitera Apr 17, 2026
59aa4a5
Device Support: Caliper Annotations + Actually Run On Device (#1581)
JustinPrivitera Apr 20, 2026
c752079
fix warnings from smoke test
JustinPrivitera Apr 20, 2026
2de500a
fix conflicts
JustinPrivitera Apr 22, 2026
d704a8c
argument to control array sizes to influence timings
JustinPrivitera Apr 22, 2026
6c74a2e
comments and changes
JustinPrivitera Apr 22, 2026
ba2840f
Device Support PR feedback (#1589)
JustinPrivitera Apr 27, 2026
805d9f2
Apply suggestion from @JustinPrivitera
JustinPrivitera Apr 28, 2026
ffe5e78
comment
JustinPrivitera Apr 28, 2026
41863a8
Merge branch 'task/JustinPrivitera/05_01_24/device_support' of github…
JustinPrivitera Apr 28, 2026
fbb9473
Device Support PR Feedback: Fix atomics and reducers (#1592)
JustinPrivitera Apr 29, 2026
8b13210
clean up macro story
JustinPrivitera Apr 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions src/cmake/CMakeBasics.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ endif()
# Device Support
################################
set(CONDUIT_USE_CUDA FALSE)
set(CONDUIT_USE_CUDA FALSE)
set(CONDUIT_USE_HIP FALSE)

if(ENABLE_CUDA)
set(CONDUIT_USE_CUDA TRUE)
Expand Down Expand Up @@ -319,5 +319,3 @@ macro(convert_to_native_escaped_file_path path output)
file(TO_NATIVE_PATH ${path} ${output})
string(REPLACE "\\" "\\\\" ${output} "${${output}}")
endmacro()
Comment thread
JustinPrivitera marked this conversation as resolved.


2 changes: 0 additions & 2 deletions src/config/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -86,5 +86,3 @@ install(FILES
conduit_setup_deps.cmake
conduit_setup_targets.cmake
DESTINATION ${CONDUIT_INSTALL_CMAKE_MODULE_DIR}/conduit/)
Comment thread
JustinPrivitera marked this conversation as resolved.


4 changes: 4 additions & 0 deletions src/config/ConduitConfig.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,12 @@ set(CONDUIT_USE_CXX11 "@CONDUIT_USE_CXX11@")
set(CONDUIT_USE_CXX14 "@CONDUIT_USE_CXX14@")
set(CONDUIT_USE_FMT "@CONDUIT_USE_FMT@")
set(CONDUIT_USE_CALIPER "@CONDUIT_USE_CALIPER@")
set(CONDUIT_USE_RAJA "@RAJA_FOUND@")
set(CONDUIT_USE_UMPIRE "@UMPIRE_FOUND@")
set(CONDUIT_USE_MPI "@ENABLE_MPI@")
set(CONDUIT_USE_OPENMP "@ENABLE_OPENMP@")
set(CONDUIT_USE_CUDA "@ENABLE_CUDA@")
set(CONDUIT_USE_HIP "@ENABLE_HIP@")
set(CONDUIT_INSTALL_PREFIX "@CONDUIT_INSTALL_PREFIX@")
set(CONDUIT_ZLIB_DIR "@ZLIB_DIR@")
set(CONDUIT_HDF5_DIR "@HDF5_DIR@")
Expand Down
12 changes: 8 additions & 4 deletions src/config/conduit_setup_targets.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,11 @@ set_property(TARGET conduit::conduit
PROPERTY INTERFACE_LINK_LIBRARIES
conduit conduit_relay conduit_blueprint)

add_library(conduit::conduit_execution INTERFACE IMPORTED)
set_property(TARGET conduit::conduit_execution
PROPERTY INTERFACE_LINK_LIBRARIES
conduit_execution)

Comment thread
JustinPrivitera marked this conversation as resolved.
Outdated

if(CONDUIT_PYTHON_ENABLED)
# create convenience target that exposes the header file for the
Expand Down Expand Up @@ -118,8 +123,8 @@ if(NOT Conduit_FIND_QUIETLY)
message(STATUS "CONDUIT_USE_FMT = ${CONDUIT_USE_FMT}")
message(STATUS "CONDUIT_USE_CALIPER = ${CONDUIT_USE_CALIPER}")
message(STATUS "CONDUIT_USE_OPENMP = ${CONDUIT_USE_OPENMP}")
message(STATUS "CONDUIT_CUDA_ENABLED = ${CONDUIT_CUDA_ENABLED}")
message(STATUS "CONDUIT_HIP_ENABLED = ${CONDUIT_HIP_ENABLED}")
message(STATUS "CONDUIT_USE_CUDA = ${CONDUIT_USE_CUDA}")
message(STATUS "CONDUIT_USE_HIP = ${CONDUIT_USE_HIP}")
message(STATUS "CONDUIT_INCLUDE_DIRS = ${CONDUIT_INCLUDE_DIRS}")
message(STATUS "CONDUIT_FORTRAN_ENABLED = ${CONDUIT_FORTRAN_ENABLED}")
message(STATUS "CONDUIT_PYTHON_ENABLED = ${CONDUIT_PYTHON_ENABLED}")
Expand All @@ -137,7 +142,7 @@ if(NOT Conduit_FIND_QUIETLY)
message(STATUS " CONDUIT_RELAY_MPI_ENABLED = ${CONDUIT_RELAY_MPI_ENABLED}")
message(STATUS " CONDUIT_USE_CMAKE_MPI_TARGETS = ${CONDUIT_USE_CMAKE_MPI_TARGETS}")

set(_print_targets "conduit::conduit")
set(_print_targets "conduit::conduit conduit::conduit_execution")
Comment thread
JustinPrivitera marked this conversation as resolved.
Outdated

if(CONDUIT_PYTHON_ENABLED)
set(_print_targets "${_print_targets} conduit::conduit_python")
Expand All @@ -151,4 +156,3 @@ if(NOT Conduit_FIND_QUIETLY)
unset(_print_targets)
endif()
Comment thread
JustinPrivitera marked this conversation as resolved.


2 changes: 0 additions & 2 deletions src/libs/blueprint/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -247,5 +247,3 @@ blt_add_target_compile_flags(TO conduit_blueprint_mpi FLAGS "-DCONDUIT_BLUEPRINT
target_compile_definitions(conduit_blueprint_mpi PUBLIC ${CONDUIT_MPI_SKIP_MPICXX_DEFINES} )

endif() # end if MPI_FOUND
Comment thread
JustinPrivitera marked this conversation as resolved.

Comment thread
JustinPrivitera marked this conversation as resolved.

6 changes: 3 additions & 3 deletions src/libs/blueprint/conduit_blueprint_mesh.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8340,7 +8340,7 @@ void polyhedral_face_centers_normals(const IndexAccessor subelements_connectivit
Vector *allFaceNormalsPtr = allFaceNormals.data();

// Compute face centers and normals.
conduit::execution::for_all<ExecPolicy>(0, totalNumFaces, [=](conduit::index_t f) {
conduit::execution::forall<ExecPolicy>(0, totalNumFaces, [=](conduit::index_t f) {
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.

I am confused by this

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.

wherever this method is called, we want to take a look at the template and consider switching to a policy object choice.

const int NUM_VERTS = 4;
const auto size = subelements_sizes[f];
const auto offset = subelements_offsets[f];
Expand Down Expand Up @@ -8457,7 +8457,7 @@ void polyhedral_elem_centers(const IndexAccessor elements_connectivity,
allElemCenters.resize(totalNumElems);
Vector *allElemCentersPtr = allElemCenters.data();
const Vector *allFaceCentersPtr = allFaceCenters.data();
conduit::execution::for_all<ExecPolicy>(0, totalNumElems, [=](conduit::index_t i) {
conduit::execution::forall<ExecPolicy>(0, totalNumElems, [=](conduit::index_t i) {
const auto size = elements_sizes[i];
const auto offset = elements_offsets[i];
Vector center {};
Expand Down Expand Up @@ -8580,7 +8580,7 @@ static void polyhedral_to_hexes(const conduit::Node &n_topo, conduit::Node &n_ou
const Vector *allFaceCentersPtr = allFaceCenters.data();
const Vector *allFaceNormalsPtr = allFaceNormals.data();
const Vector *allElemCentersPtr = allElemCenters.data();
conduit::execution::for_all<ExecPolicy>(0, nElem, [=](conduit::index_t i) {
conduit::execution::forall<ExecPolicy>(0, nElem, [=](conduit::index_t i) {
constexpr int FORWARD = 1;
constexpr int BACKWARD = -1;
// Determine face orientations with respect to this element.
Expand Down
43 changes: 20 additions & 23 deletions src/libs/blueprint/conduit_blueprint_mesh_topology_metadata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,6 @@ namespace mesh
namespace utils
{

// We may tag certain algorithms as ParallelExec if it is safe to do so.
using SerialExec = conduit::execution::SerialExec;
#if defined(CONDUIT_USE_OPENMP)
using ParallelExec = conduit::execution::OpenMPExec;
#else
using ParallelExec = conduit::execution::SerialExec;
#endif

//---------------------------------------------------------------------------
void
yaml_print(std::ostream &os, const conduit::Node &node)
Expand Down Expand Up @@ -925,7 +917,8 @@ class TopologyMetadata::Implementation : public TopologyMetadataBase
CONDUIT_ANNOTATE_MARK_BEGIN("Labeling");
std::vector<std::pair<uint64, uint64>> faceid_to_ef(nelem_faces);

conduit::execution::for_all<ParallelExec>(0, nelem, [&](index_t elem)
conduit::execution::ExecutionPolicy policy = conduit::execution::ExecutionPolicy::host();
conduit::execution::forall(policy, 0, nelem, [&](index_t elem)
{
// Get the element faces, storing them all in face_pts.
index_t elemstart = elem * points_per_elem;
Expand Down Expand Up @@ -963,7 +956,7 @@ class TopologyMetadata::Implementation : public TopologyMetadataBase
// general faceid, then by their elemface "ef", which should keep the
// elements in order.
CONDUIT_ANNOTATE_MARK_BEGIN("Sort labels");
conduit::execution::sort<ParallelExec>(faceid_to_ef.begin(), faceid_to_ef.end());
conduit::execution::sort(policy, faceid_to_ef.begin(), faceid_to_ef.end());
CONDUIT_ANNOTATE_MARK_END("Sort labels");
#ifdef DEBUG_PRINT
std::cout << "faceid_to_ef.sorted = " << faceid_to_ef << std::endl;
Expand All @@ -982,8 +975,8 @@ class TopologyMetadata::Implementation : public TopologyMetadataBase
#endif

// Sort on ef to get back to a ef->unique mapping.
conduit::execution::sort<ParallelExec>(
ef_to_unique.begin(), ef_to_unique.end(),
conduit::execution::sort(
policy, ef_to_unique.begin(), ef_to_unique.end(),
[&](const std::pair<uint64, uint64> &lhs, const std::pair<uint64, uint64> &rhs)
{
// Only sort using the ef value.
Expand Down Expand Up @@ -1135,7 +1128,8 @@ class TopologyMetadata::Implementation : public TopologyMetadataBase
std::vector<std::pair<uint64, uint64>> edgeid_to_ee(nelem_edges);
std::vector<std::pair<index_t, index_t>> ee_to_edge(nelem_edges);

conduit::execution::for_all<ParallelExec>(0, nelem, [&](index_t elem)
conduit::execution::ExecutionPolicy policy = conduit::execution::ExecutionPolicy::host();
conduit::execution::forall(policy, 0, nelem, [&](index_t elem)
{
constexpr size_t MAX_VERTS = 32;

Expand Down Expand Up @@ -1173,7 +1167,7 @@ class TopologyMetadata::Implementation : public TopologyMetadataBase

// Sort edgeid_to_ee so any like edges will be sorted.
CONDUIT_ANNOTATE_MARK_BEGIN("Sort labels");
conduit::execution::sort<ParallelExec>(edgeid_to_ee.begin(), edgeid_to_ee.end());
conduit::execution::sort(policy, edgeid_to_ee.begin(), edgeid_to_ee.end());
CONDUIT_ANNOTATE_MARK_END("Sort labels");
#ifdef DEBUG_PRINT
std::cout << "edgeid_to_ee.sorted = " << edgeid_to_ee << std::endl;
Expand All @@ -1189,8 +1183,8 @@ class TopologyMetadata::Implementation : public TopologyMetadataBase
#endif

// Sort on ef to get back to a ef->unique mapping.
conduit::execution::sort<ParallelExec>(
ee_to_unique.begin(), ee_to_unique.end(),
conduit::execution::sort(
policy, ee_to_unique.begin(), ee_to_unique.end(),
[&](const std::pair<uint64, uint64> &lhs, const std::pair<uint64, uint64> &rhs)
{
// Only sort using the ee value.
Expand Down Expand Up @@ -2167,11 +2161,11 @@ TopologyMetadata::Implementation::build_edge_key_to_id(
#ifdef DEBUG_PRINT
std::cout << "edges_key_to_id = {" << std::endl;
// Because of the printing.
using Exec = SerialExec;
conduit::execution::ExecutionPolicy policy = conduit::execution::ExecutionPolicy::serial();
#else
using Exec = ParallelExec;
conduit::execution::ExecutionPolicy policy = conduit::execution::ExecutionPolicy::host();
#endif
conduit::execution::for_all<Exec>(0, nedges, [&](index_t edge_index)
conduit::execution::forall(policy, 0, nedges, [&](index_t edge_index)
{
// Make a key for this edge.
index_t edge[2];
Expand All @@ -2193,8 +2187,9 @@ TopologyMetadata::Implementation::build_edge_key_to_id(
#endif

// Sort the edges by the ids.
conduit::execution::sort<ParallelExec>(
edge_key_to_id.begin(), edge_key_to_id.end(),
conduit::execution::ExecutionPolicy sort_policy = conduit::execution::ExecutionPolicy::host();
conduit::execution::sort(
sort_policy, edge_key_to_id.begin(), edge_key_to_id.end(),
[&](const std::pair<uint64, index_t> &lhs,
const std::pair<uint64, index_t> &rhs)
{
Expand Down Expand Up @@ -2288,7 +2283,8 @@ TopologyMetadata::Implementation::build_association_3_1_and_3_0_nonph()
// Iterate over the elements, applying the edge template to make unique
// edges for the element. We look up the edge in edge_key_to_id to get
// its id.
conduit::execution::for_all<ParallelExec>(0, nelem, [&](index_t ei)
conduit::execution::ExecutionPolicy policy = conduit::execution::ExecutionPolicy::host();
conduit::execution::forall(policy, 0, nelem, [&](index_t ei)
{
index_t elem_offset = ei * points_per_elem;

Expand Down Expand Up @@ -2487,7 +2483,8 @@ TopologyMetadata::Implementation::build_child_to_parent_association(int e, int a
std::cout << "p2c=" << p2c << std::endl;
#endif
// Sort p2c by child.
conduit::execution::sort<ParallelExec>(p2c.begin(), p2c.end(),
conduit::execution::ExecutionPolicy policy = conduit::execution::ExecutionPolicy::host();
conduit::execution::sort(policy, p2c.begin(), p2c.end(),
[&](const std::pair<index_t, index_t> &lhs,
const std::pair<index_t, index_t> &rhs)
{
Expand Down
33 changes: 14 additions & 19 deletions src/libs/blueprint/conduit_blueprint_mesh_utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4576,12 +4576,6 @@ PointQuery::acceleratedSearch(int ndims,
int *result_ptr = &result[0];
conduit::index_t numCoordsetPts = coords[0]->dtype().number_of_elements();

#if defined(CONDUIT_USE_OPENMP)
using policy = conduit::execution::OpenMPExec;
#else
using policy = conduit::execution::SerialExec;
#endif

// Special case a few large searches where the types are the same.
if(ndims == 3 &&
sameTypes &&
Expand All @@ -4596,7 +4590,8 @@ PointQuery::acceleratedSearch(int ndims,
conduit::blueprint::mesh::utils::kdtree<float64_array, float64, 3> search;
search.initialize(typedCoords, numCoordsetPts);
search.setPointTolerance(m_pointTolerance);
conduit::execution::for_all<policy>(0, numInputPts, [&](conduit::index_t i)
conduit::execution::ExecutionPolicy policy = conduit::execution::ExecutionPolicy::host();
conduit::execution::forall(policy, 0, numInputPts, [&](conduit::index_t i)
{
float64 searchPt[3] = {static_cast<float64>(input_ptr[i * 3 + 0]),
static_cast<float64>(input_ptr[i * 3 + 1]),
Expand All @@ -4619,7 +4614,8 @@ PointQuery::acceleratedSearch(int ndims,
conduit::blueprint::mesh::utils::kdtree<float32_array, float32, 3> search;
search.initialize(typedCoords, numCoordsetPts);
search.setPointTolerance(static_cast<float32>(m_pointTolerance));
conduit::execution::for_all<policy>(0, numInputPts, [&](conduit::index_t i)
conduit::execution::ExecutionPolicy policy = conduit::execution::ExecutionPolicy::host();
conduit::execution::forall(policy, 0, numInputPts, [&](conduit::index_t i)
{
float32 searchPt[3] = {static_cast<float32>(input_ptr[i * 3 + 0]),
static_cast<float32>(input_ptr[i * 3 + 1]),
Expand All @@ -4642,7 +4638,8 @@ PointQuery::acceleratedSearch(int ndims,
conduit::blueprint::mesh::utils::kdtree<float64_array, float64, 2> search;
search.initialize(typedCoords, numCoordsetPts);
search.setPointTolerance(m_pointTolerance);
conduit::execution::for_all<policy>(0, numInputPts, [&](conduit::index_t i)
conduit::execution::ExecutionPolicy policy = conduit::execution::ExecutionPolicy::host();
conduit::execution::forall(policy, 0, numInputPts, [&](conduit::index_t i)
{
float64 searchPt[2] = {static_cast<float64>(input_ptr[i * 3 + 0]),
static_cast<float64>(input_ptr[i * 3 + 1])};
Expand All @@ -4663,7 +4660,8 @@ PointQuery::acceleratedSearch(int ndims,
conduit::blueprint::mesh::utils::kdtree<float32_array, float32, 2> search;
search.initialize(typedCoords, numCoordsetPts);
search.setPointTolerance(static_cast<float32>(m_pointTolerance));
conduit::execution::for_all<policy>(0, numInputPts, [&](conduit::index_t i)
conduit::execution::ExecutionPolicy policy = conduit::execution::ExecutionPolicy::host();
conduit::execution::forall(policy, 0, numInputPts, [&](conduit::index_t i)
{
float32 searchPt[2] = {static_cast<float32>(input_ptr[i * 3 + 0]),
static_cast<float32>(input_ptr[i * 3 + 1])};
Expand Down Expand Up @@ -4693,16 +4691,11 @@ PointQuery::normalSearch(int ndims,
conduit::index_t numCoordsetPts = coords[0]->dtype().number_of_elements();
double EPS_SQ = m_pointTolerance * m_pointTolerance;

#if defined(CONDUIT_USE_OPENMP)
using policy = conduit::execution::OpenMPExec;
#else
using policy = conduit::execution::SerialExec;
#endif

// Back up to a brute force search
if(ndims == 3)
{
conduit::execution::for_all<policy>(0, numInputPts, [&](conduit::index_t i)
conduit::execution::ExecutionPolicy policy = conduit::execution::ExecutionPolicy::host();
conduit::execution::forall(policy, 0, numInputPts, [&](conduit::index_t i)
{
const double *searchPt = &input_ptr[i * 3];
int found = NotFound;
Expand All @@ -4727,7 +4720,8 @@ PointQuery::normalSearch(int ndims,
}
else if(ndims == 2)
{
conduit::execution::for_all<policy>(0, numInputPts, [&](conduit::index_t i)
conduit::execution::ExecutionPolicy policy = conduit::execution::ExecutionPolicy::host();
conduit::execution::forall(policy, 0, numInputPts, [&](conduit::index_t i)
{
const double *searchPt = &input_ptr[i * 3];
int found = NotFound;
Expand All @@ -4750,7 +4744,8 @@ PointQuery::normalSearch(int ndims,
}
else if(ndims == 1)
{
conduit::execution::for_all<policy>(0, numInputPts, [&](conduit::index_t i)
conduit::execution::ExecutionPolicy policy = conduit::execution::ExecutionPolicy::host();
conduit::execution::forall(policy, 0, numInputPts, [&](conduit::index_t i)
{
const double *searchPt = &input_ptr[i * 3];
int found = NotFound;
Expand Down
28 changes: 25 additions & 3 deletions src/libs/conduit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,12 @@ set(conduit_headers
conduit_data_type.hpp
conduit_endianness.hpp
conduit_execution.hpp
conduit_execution_omp.hpp
conduit_execution_serial.hpp
conduit_execution_policy.hpp
conduit_execution_core.hpp
conduit_memory_manager.hpp
conduit_data_array.hpp
conduit_data_accessor.hpp
conduit_data_type.hpp
conduit_fixed_size_map.hpp
conduit_fixed_size_vector.hpp
conduit_geometry_vector.hpp
Expand Down Expand Up @@ -89,6 +93,8 @@ set(conduit_sources
conduit_core.cpp
conduit_error.cpp
conduit_endianness.cpp
conduit_execution.cpp
conduit_memory_manager.cpp
conduit_data_type.cpp
conduit_data_array.cpp
conduit_data_accessor.cpp
Expand Down Expand Up @@ -158,6 +164,18 @@ if(CALIPER_FOUND)
list(APPEND conduit_thirdparty_libs caliper)
endif()

if(RAJA_FOUND)
list(APPEND conduit_thirdparty_libs RAJA)
endif()

if(UMPIRE_FOUND)
list(APPEND conduit_thirdparty_libs umpire)
endif()

if(HIP_FOUND)
list(APPEND conduit_thirdparty_libs blt::hip_runtime)
endif()

if(OPENMP_FOUND)
list(APPEND conduit_thirdparty_libs ${conduit_blt_openmp_deps})
endif()
Expand Down Expand Up @@ -185,6 +203,11 @@ target_include_directories(conduit
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
$<$<BOOL:TOTALVIEW_FOUND>:${TOTALVIEW_INCLUDE_DIRECTORIES}>)

add_library(conduit_execution INTERFACE)
add_library(conduit::conduit_execution ALIAS conduit_execution)
target_link_libraries(conduit_execution INTERFACE conduit)
install(TARGETS conduit_execution EXPORT conduit)


#################################
# Fortran related target options
Expand Down Expand Up @@ -218,4 +241,3 @@ if(FORTRAN_FOUND)
${CMAKE_Fortran_MODULE_DIRECTORY}/
DESTINATION include/conduit)
endif()
Comment thread
JustinPrivitera marked this conversation as resolved.
Comment thread
JustinPrivitera marked this conversation as resolved.

2 changes: 1 addition & 1 deletion src/libs/conduit/conduit.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,6 @@
#include "conduit_generator.hpp"
#include "conduit_utils.hpp"
#include "conduit_data_accessor.hpp"
#include "conduit_memory_manager.hpp"

#endif
Comment thread
JustinPrivitera marked this conversation as resolved.

Loading
Loading