From f55ad6b6da78015b9df911228f6c09bd65f096a9 Mon Sep 17 00:00:00 2001 From: Justin Privitera Date: Wed, 28 Aug 2024 17:14:04 -0700 Subject: [PATCH 01/15] added silo and overlink to extract --- .../ascent_runtime_relay_filters.cpp | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp b/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp index 9e8194471..543107097 100644 --- a/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp +++ b/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp @@ -610,6 +610,27 @@ void mesh_blueprint_save(const Node &data, } #endif + + if (file_protocol == "silo") + { + if (file_protocol == "overlink") + { + opts["file_style"] = "overlink"; + } +#ifdef ASCENT_MPI_ENABLED + MPI_Comm mpi_comm = MPI_Comm_f2c(Workspace::default_mpi_comm()); + conduit::relay::io::silo::save_mesh(data, + path, + opts, + mpi_comm); +#else + conduit::relay::io::silo::save_mesh(data, + path, + opts); +#endif + } + else + { #ifdef ASCENT_MPI_ENABLED MPI_Comm mpi_comm = MPI_Comm_f2c(Workspace::default_mpi_comm()); conduit::relay::mpi::io::blueprint::save_mesh(data, @@ -623,6 +644,8 @@ void mesh_blueprint_save(const Node &data, file_protocol, opts); #endif + } + #ifdef ASCENT_HDF5_ENABLED if(using_hdf5_opts) @@ -870,6 +893,17 @@ RelayIOSave::execute() extra_opts, result_path); + } + else if( protocol == "silo" || + protocol == "overlink") + { + mesh_blueprint_save(selected, + path, + protocol, + num_files, + extra_opts, + result_path); + } else { From a6b0c8dafacc0ca33af126f0264976722a0179d3 Mon Sep 17 00:00:00 2001 From: Justin Privitera Date: Wed, 28 Aug 2024 17:14:33 -0700 Subject: [PATCH 02/15] note --- .../runtimes/flow_filters/ascent_runtime_relay_filters.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp b/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp index 543107097..dfe6eb8dd 100644 --- a/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp +++ b/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp @@ -897,6 +897,7 @@ RelayIOSave::execute() else if( protocol == "silo" || protocol == "overlink") { + // TODO do we need to worry about overlink only taking a single topo? mesh_blueprint_save(selected, path, protocol, From 93405ce5c54f07cacab2f34035c4d9fcaef92a1a Mon Sep 17 00:00:00 2001 From: Justin Privitera Date: Fri, 30 Aug 2024 16:47:24 -0700 Subject: [PATCH 03/15] some mpi tests and finished --- .../ascent_runtime_relay_filters.cpp | 124 ++++++- .../ascent/t_ascent_mpi_relay_extract.cpp | 335 ++++++++++++++++++ src/tests/ascent/t_ascent_relay.cpp | 68 ++++ 3 files changed, 520 insertions(+), 7 deletions(-) diff --git a/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp b/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp index dfe6eb8dd..76a8d347a 100644 --- a/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp +++ b/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #if defined(ASCENT_HDF5_ENABLED) #include #endif @@ -53,6 +54,7 @@ #include #include #include +#include #endif // std includes @@ -188,7 +190,7 @@ filter_topos(const conduit::Node &input, } } - // check for any matsets defined on this topo + // check for any nestsets defined on this topo if(dom.has_path("nestsets")) { NodeConstIterator itr = dom["nestsets"].children(); @@ -611,7 +613,7 @@ void mesh_blueprint_save(const Node &data, #endif - if (file_protocol == "silo") + if (file_protocol == "silo" || file_protocol == "overlink") { if (file_protocol == "overlink") { @@ -619,10 +621,10 @@ void mesh_blueprint_save(const Node &data, } #ifdef ASCENT_MPI_ENABLED MPI_Comm mpi_comm = MPI_Comm_f2c(Workspace::default_mpi_comm()); - conduit::relay::io::silo::save_mesh(data, - path, - opts, - mpi_comm); + conduit::relay::mpi::io::silo::save_mesh(data, + path, + opts, + mpi_comm); #else conduit::relay::io::silo::save_mesh(data, path, @@ -753,6 +755,112 @@ RelayIOSave::execute() Node *in = n_input.get(); + // if we are doing overlink, we must enforce the 1-topo rule + if (protocol == "overlink") + { + // either users have specified a topology they want to use + if (params().has_path("topologies")) + { + const conduit::Node &tlist = params()["topologies"]; + const int num_topos = tlist.number_of_children(); + if (num_topos != 1) + { + ASCENT_ERROR("relay_io_save Overlink save requires a single topology; " << + num_topos << " topologies were requested."); + } + } + // or we must check there is only a single topo in their mesh + else + { + Node local_unique_topos; + const int num_doms = in->number_of_children(); + for (int domain_id = 0; domain_id < num_doms; domain_id ++) + { + const conduit::Node &dom = in->child(domain_id); + if (dom.has_child("topologies")) + { + for (const auto & topo_name : dom["topologies"].child_names()) + { + if (!local_unique_topos.has_child(topo_name)) + { + local_unique_topos[topo_name]; + } + } + } + } + Node global_topo_names; + + int rank = 0; + int root = 0; + +#ifdef ASCENT_MPI_ENABLED + MPI_Comm mpi_comm = MPI_Comm_f2c(Workspace::default_mpi_comm()); + MPI_Comm_rank(mpi_comm, &rank); + + relay::mpi::gather_using_schema(local_unique_topos, + global_topo_names, + root, + mpi_comm); +#else + global_topo_names.append().set_external(local_unique_topos); +#endif + int error = 0; + std::ostringstream error_oss; + + Node unique_topos; + if (rank == root) + { + const int num_ranks = global_topo_names.number_of_children(); + for (int rank_id = 0; rank_id < num_ranks; rank_id ++) + { + const conduit::Node &rank_topo_names = global_topo_names.child(rank_id); + for (const auto & topo_name : rank_topo_names.child_names()) + { + if (!unique_topos.has_child(topo_name)) + { + unique_topos[topo_name]; + } + } + } + const int num_topos = unique_topos.number_of_children(); + if (num_topos != 1) + { + error = 1; + error_oss << "relay_io_save Overlink save requires a single topology; " + "there are " << num_topos << " topologies in the input mesh."; + } + } + +#ifdef ASCENT_MPI_ENABLED + Node n_local, n_global; + n_local.set((int)error); + relay::mpi::sum_all_reduce(n_local, + n_global, + mpi_comm); + + error = n_global.as_int(); + + if (error == 1) + { + // we have a problem, broadcast string message + // from rank 0 all ranks can throw an error + n_global.set(error_oss.str()); + conduit::relay::mpi::broadcast_using_schema(n_global, + 0, + mpi_comm); + + ASCENT_ERROR(n_global.as_string()); + } +#else + // non MPI case, throw error + if (error == 1) + { + ASCENT_ERROR(error_oss.str()); + } +#endif + } + } + Node selected; if(!params().has_path("fields") && !params().has_path("topologies")) @@ -809,6 +917,9 @@ RelayIOSave::execute() detail::post_filter_check_for_data(selected); } + // TODO count unique topo names across ranks + // if more than one and overlink then we error + Node meta = Metadata::n_metadata; // Get the cycle and add it so filters don't have to @@ -897,7 +1008,6 @@ RelayIOSave::execute() else if( protocol == "silo" || protocol == "overlink") { - // TODO do we need to worry about overlink only taking a single topo? mesh_blueprint_save(selected, path, protocol, diff --git a/src/tests/ascent/t_ascent_mpi_relay_extract.cpp b/src/tests/ascent/t_ascent_mpi_relay_extract.cpp index 56d3d751a..3cbf0b69d 100644 --- a/src/tests/ascent/t_ascent_mpi_relay_extract.cpp +++ b/src/tests/ascent/t_ascent_mpi_relay_extract.cpp @@ -28,6 +28,44 @@ using namespace std; using namespace conduit; using ascent::Ascent; +//----------------------------------------------------------------------------- +void +add_matset_to_spiral(Node &n_mesh, const int ndomains) +{ + // Add a matset to each domain + for (index_t domain_id = 0; domain_id < n_mesh.number_of_children(); domain_id ++) + { + Node &domain = n_mesh[domain_id]; + const auto num_elements = blueprint::mesh::topology::length(domain["topologies/topo"]); + Node &matset = domain["matsets/matset"]; + // add a matset to it + matset["topology"].set("topo"); + + // Uni buffer requires material map + for(index_t i = 0; i < ndomains; i ++) + { + const std::string mat_name("mat" + std::to_string(i)); + matset["material_map"][mat_name].set((int32) i); + } + + Node &mat_ids = matset["material_ids"]; + mat_ids.set_dtype(DataType::index_t(num_elements)); + index_t_array ids = mat_ids.value(); + for (index_t i = 0; i < ids.number_of_elements(); i++) + { + ids[i] = domain_id; + } + + Node &mat_vfs = matset["volume_fractions"]; + mat_vfs.set_dtype(DataType::c_float(num_elements)); + float_array data = mat_vfs.value(); + for (index_t i = 0; i < data.number_of_elements(); i++) + { + data[i] = 1.f; + } + } +} + //----------------------------------------------------------------------------- TEST(ascent_mpi_runtime, test_relay_extract_iso) { @@ -966,6 +1004,303 @@ TEST(ascent_relay, test_relay_mpi_sparse_topos_2) } +//----------------------------------------------------------------------------- +TEST(ascent_relay, silo_spiral_multi_file) +{ + // + // Set Up MPI + // + int par_rank; + int par_size; + MPI_Comm comm = MPI_COMM_WORLD; + MPI_Comm_rank(comm, &par_rank); + MPI_Comm_size(comm, &par_size); + + CONDUIT_INFO("Rank " + << par_rank + << " of " + << par_size + << " reporting"); + + Node n; + ascent::about(n); + + // + // Create an example mesh. + // + Node data, verify_info; + + // use spiral , with 7 domains + conduit::blueprint::mesh::examples::spiral(7,data); + add_matset_to_spiral(data, 7); + + // rank 0 gets first 4 domains, rank 1 gets the rest + if(par_rank == 0) + { + data.remove(4); + data.remove(4); + data.remove(4); + } + else if(par_rank == 1) + { + data.remove(0); + data.remove(0); + data.remove(0); + data.remove(0); + } + else + { + // cyrus was wrong about 2 mpi ranks. + EXPECT_TRUE(false); + } + + EXPECT_TRUE(conduit::blueprint::mesh::verify(data,verify_info)); + + ASCENT_INFO("Testing relay extract silo num_files option with mpi"); + + string output_path = prepare_output_dir(); + std::ostringstream oss; + + // lets try with -1 to 8 files. + + // nfiles less than 1 should trigger default case + // (n output files = n domains) + for(int nfiles=-1; nfiles < 9; nfiles++) + { + std::cout << "[" << par_rank << "] test nfiles = " << nfiles << std::endl; + MPI_Barrier(comm); + oss.str(""); + oss << "tout_relay_mpi_silo_extract_nfiles_" << nfiles; + + std::string output_base = conduit::utils::join_file_path(output_path, + oss.str()); + + std::string output_dir = output_base + ".cycle_000000"; + std::string output_root = output_base + ".cycle_000000.root"; + + if(par_rank == 0) + { + // remove existing directory + utils::remove_directory(output_dir); + utils::remove_directory(output_root); + } + + MPI_Barrier(comm); + + conduit::Node actions; + // add the extracts + conduit::Node &add_extracts = actions.append(); + add_extracts["action"] = "add_extracts"; + conduit::Node &extracts = add_extracts["extracts"]; + + extracts["e1/type"] = "relay"; + extracts["e1/params/path"] = output_base; + extracts["e1/params/protocol"] = "silo"; + extracts["e1/params/num_files"] = nfiles; + + // + // Run Ascent + // + + Ascent ascent; + + Node ascent_opts; + // we use the mpi handle provided by the fortran interface + // since it is simply an integer + ascent_opts["runtime"] = "ascent"; + ascent_opts["mpi_comm"] = MPI_Comm_c2f(comm); + ascent.open(ascent_opts); + ascent.publish(data); + ascent.execute(actions); + ascent.close(); + + MPI_Barrier(comm); + + // count the files + // file_%06llu.{protocol}:/domain_%06llu/... + int nfiles_to_check = nfiles; + if(nfiles <=0 || nfiles == 8) // expect 7 files (one per domain) + { + nfiles_to_check = 7; + } + + EXPECT_TRUE(conduit::utils::is_directory(output_dir)); + EXPECT_TRUE(conduit::utils::is_file(output_root)); + + char fmt_buff[64] = {0}; + for(int i=0;i Date: Fri, 30 Aug 2024 16:55:11 -0700 Subject: [PATCH 04/15] tests done --- .../ascent/t_ascent_mpi_relay_extract.cpp | 40 ---- src/tests/ascent/t_ascent_relay.cpp | 207 ++++++++++++++---- src/tests/t_utils.hpp | 38 ++++ 3 files changed, 206 insertions(+), 79 deletions(-) diff --git a/src/tests/ascent/t_ascent_mpi_relay_extract.cpp b/src/tests/ascent/t_ascent_mpi_relay_extract.cpp index 3cbf0b69d..7cc39cfb8 100644 --- a/src/tests/ascent/t_ascent_mpi_relay_extract.cpp +++ b/src/tests/ascent/t_ascent_mpi_relay_extract.cpp @@ -28,44 +28,6 @@ using namespace std; using namespace conduit; using ascent::Ascent; -//----------------------------------------------------------------------------- -void -add_matset_to_spiral(Node &n_mesh, const int ndomains) -{ - // Add a matset to each domain - for (index_t domain_id = 0; domain_id < n_mesh.number_of_children(); domain_id ++) - { - Node &domain = n_mesh[domain_id]; - const auto num_elements = blueprint::mesh::topology::length(domain["topologies/topo"]); - Node &matset = domain["matsets/matset"]; - // add a matset to it - matset["topology"].set("topo"); - - // Uni buffer requires material map - for(index_t i = 0; i < ndomains; i ++) - { - const std::string mat_name("mat" + std::to_string(i)); - matset["material_map"][mat_name].set((int32) i); - } - - Node &mat_ids = matset["material_ids"]; - mat_ids.set_dtype(DataType::index_t(num_elements)); - index_t_array ids = mat_ids.value(); - for (index_t i = 0; i < ids.number_of_elements(); i++) - { - ids[i] = domain_id; - } - - Node &mat_vfs = matset["volume_fractions"]; - mat_vfs.set_dtype(DataType::c_float(num_elements)); - float_array data = mat_vfs.value(); - for (index_t i = 0; i < data.number_of_elements(); i++) - { - data[i] = 1.f; - } - } -} - //----------------------------------------------------------------------------- TEST(ascent_mpi_runtime, test_relay_extract_iso) { @@ -1130,7 +1092,6 @@ TEST(ascent_relay, silo_spiral_multi_file) char fmt_buff[64] = {0}; for(int i=0;i Date: Fri, 30 Aug 2024 16:55:46 -0700 Subject: [PATCH 05/15] remove todo --- .../runtimes/flow_filters/ascent_runtime_relay_filters.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp b/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp index 76a8d347a..e92796b76 100644 --- a/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp +++ b/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp @@ -917,9 +917,6 @@ RelayIOSave::execute() detail::post_filter_check_for_data(selected); } - // TODO count unique topo names across ranks - // if more than one and overlink then we error - Node meta = Metadata::n_metadata; // Get the cycle and add it so filters don't have to From 963c4726f7a7ecc2cc4a8f8d0d961aa075de09de Mon Sep 17 00:00:00 2001 From: Justin Privitera Date: Fri, 30 Aug 2024 16:57:06 -0700 Subject: [PATCH 06/15] alignment --- .../ascent_runtime_relay_filters.cpp | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp b/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp index e92796b76..9d76589eb 100644 --- a/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp +++ b/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp @@ -634,17 +634,17 @@ void mesh_blueprint_save(const Node &data, else { #ifdef ASCENT_MPI_ENABLED - MPI_Comm mpi_comm = MPI_Comm_f2c(Workspace::default_mpi_comm()); - conduit::relay::mpi::io::blueprint::save_mesh(data, - path, - file_protocol, - opts, - mpi_comm); + MPI_Comm mpi_comm = MPI_Comm_f2c(Workspace::default_mpi_comm()); + conduit::relay::mpi::io::blueprint::save_mesh(data, + path, + file_protocol, + opts, + mpi_comm); #else - conduit::relay::io::blueprint::save_mesh(data, - path, - file_protocol, - opts); + conduit::relay::io::blueprint::save_mesh(data, + path, + file_protocol, + opts); #endif } From e45a9c8a82617b09e7e57009a19ba910ab7f9c81 Mon Sep 17 00:00:00 2001 From: Justin Privitera Date: Tue, 3 Sep 2024 13:49:41 -0700 Subject: [PATCH 07/15] conduit fmt --- .../ascent/t_ascent_mpi_relay_extract.cpp | 19 +++++++------------ src/tests/ascent/t_ascent_relay.cpp | 19 +++++++------------ 2 files changed, 14 insertions(+), 24 deletions(-) diff --git a/src/tests/ascent/t_ascent_mpi_relay_extract.cpp b/src/tests/ascent/t_ascent_mpi_relay_extract.cpp index 7cc39cfb8..025be7998 100644 --- a/src/tests/ascent/t_ascent_mpi_relay_extract.cpp +++ b/src/tests/ascent/t_ascent_mpi_relay_extract.cpp @@ -20,6 +20,7 @@ #include #include +#include "conduit_fmt/conduit_fmt.h" #include "t_config.hpp" #include "t_utils.hpp" @@ -1089,21 +1090,18 @@ TEST(ascent_relay, silo_spiral_multi_file) EXPECT_TRUE(conduit::utils::is_directory(output_dir)); EXPECT_TRUE(conduit::utils::is_file(output_root)); - char fmt_buff[64] = {0}; for(int i=0;i #include +#include "conduit_fmt/conduit_fmt.h" #include "t_config.hpp" #include "t_utils.hpp" @@ -1193,21 +1194,18 @@ TEST(ascent_relay, silo_spiral_multi_file) EXPECT_TRUE(conduit::utils::is_directory(output_dir)); EXPECT_TRUE(conduit::utils::is_file(output_root)); - char fmt_buff[64] = {0}; for(int i=0;i Date: Tue, 3 Sep 2024 14:39:50 -0700 Subject: [PATCH 08/15] std::accumulate go brrrrr --- .../flow_filters/ascent_runtime_relay_filters.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp b/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp index 9d76589eb..d3fc33fa9 100644 --- a/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp +++ b/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp @@ -60,6 +60,7 @@ // std includes #include #include +#include using namespace std; using namespace conduit; @@ -826,8 +827,19 @@ RelayIOSave::execute() if (num_topos != 1) { error = 1; + std::vector unique_topo_names = unique_topos.child_names(); error_oss << "relay_io_save Overlink save requires a single topology; " - "there are " << num_topos << " topologies in the input mesh."; + "there are " << num_topos << " topologies in the input mesh. " + "The current topologies are " << + std::accumulate( + unique_topo_names.begin(), + unique_topo_names.end(), + std::string(""), + [](std::string a, std::string b) + { return std::move(a) + "\n - " + std::move(b); }) << + "\nYou can select which topologies to save using the " + "\"topologies\" parameter like in the following example:\n" + "extracts[\"/params/topologies\"].append() = \"\""; } } From 1ffaab9b66a207edb68eadfa3bcf165f1cf94efb Mon Sep 17 00:00:00 2001 From: Justin Privitera Date: Wed, 4 Sep 2024 11:45:38 -0700 Subject: [PATCH 09/15] guards --- .../ascent_runtime_relay_filters.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp b/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp index d3fc33fa9..3e700a93b 100644 --- a/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp +++ b/src/libs/ascent/runtimes/flow_filters/ascent_runtime_relay_filters.cpp @@ -28,7 +28,9 @@ #include #include #include -#include +#ifdef CONDUIT_RELAY_IO_SILO_ENABLED +#include "conduit_relay_io_silo.hpp" +#endif #if defined(ASCENT_HDF5_ENABLED) #include #endif @@ -54,8 +56,10 @@ #include #include #include +#ifdef CONDUIT_RELAY_IO_SILO_ENABLED #include #endif +#endif // std includes #include @@ -616,20 +620,24 @@ void mesh_blueprint_save(const Node &data, if (file_protocol == "silo" || file_protocol == "overlink") { +#ifdef CONDUIT_RELAY_IO_SILO_ENABLED if (file_protocol == "overlink") { opts["file_style"] = "overlink"; } -#ifdef ASCENT_MPI_ENABLED + #ifdef ASCENT_MPI_ENABLED MPI_Comm mpi_comm = MPI_Comm_f2c(Workspace::default_mpi_comm()); conduit::relay::mpi::io::silo::save_mesh(data, path, opts, mpi_comm); -#else + #else conduit::relay::io::silo::save_mesh(data, path, opts); + #endif +#else + ASCENT_ERROR("Ascent's Conduit was not built with Silo support."); #endif } else @@ -1017,13 +1025,16 @@ RelayIOSave::execute() else if( protocol == "silo" || protocol == "overlink") { +#ifdef CONDUIT_RELAY_IO_SILO_ENABLED mesh_blueprint_save(selected, path, protocol, num_files, extra_opts, result_path); - +#else + ASCENT_ERROR("Ascent's Conduit was not built with Silo support."); +#endif } else { From 0d891d6580390e24f24d83167ea00b0014db311b Mon Sep 17 00:00:00 2001 From: Justin Privitera Date: Wed, 4 Sep 2024 13:56:39 -0700 Subject: [PATCH 10/15] more ifdef guards --- src/tests/ascent/t_ascent_mpi_relay_extract.cpp | 4 ++++ src/tests/ascent/t_ascent_relay.cpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/tests/ascent/t_ascent_mpi_relay_extract.cpp b/src/tests/ascent/t_ascent_mpi_relay_extract.cpp index 025be7998..672566b12 100644 --- a/src/tests/ascent/t_ascent_mpi_relay_extract.cpp +++ b/src/tests/ascent/t_ascent_mpi_relay_extract.cpp @@ -967,6 +967,7 @@ TEST(ascent_relay, test_relay_mpi_sparse_topos_2) } +#ifdef CONDUIT_RELAY_IO_SILO_ENABLED //----------------------------------------------------------------------------- TEST(ascent_relay, silo_spiral_multi_file) { @@ -1110,7 +1111,9 @@ TEST(ascent_relay, silo_spiral_multi_file) MPI_Barrier(comm); } } +#endif +#ifdef CONDUIT_RELAY_IO_SILO_ENABLED //----------------------------------------------------------------------------- TEST(ascent_relay, overlink_spiral_multi_file) { @@ -1255,6 +1258,7 @@ TEST(ascent_relay, overlink_spiral_multi_file) MPI_Barrier(comm); } } +#endif // //----------------------------------------------------------------------------- diff --git a/src/tests/ascent/t_ascent_relay.cpp b/src/tests/ascent/t_ascent_relay.cpp index 72f7bb8ea..172579d90 100644 --- a/src/tests/ascent/t_ascent_relay.cpp +++ b/src/tests/ascent/t_ascent_relay.cpp @@ -1118,6 +1118,7 @@ TEST(ascent_relay, test_relay_lor_extract) ASCENT_ACTIONS_DUMP(actions2,output_file,msg); } +#ifdef CONDUIT_RELAY_IO_SILO_ENABLED //----------------------------------------------------------------------------- TEST(ascent_relay, silo_spiral_multi_file) { @@ -1212,7 +1213,9 @@ TEST(ascent_relay, silo_spiral_multi_file) } } } +#endif +#ifdef CONDUIT_RELAY_IO_SILO_ENABLED //----------------------------------------------------------------------------- TEST(ascent_relay, overlink_spiral_multi_file) { @@ -1308,6 +1311,7 @@ TEST(ascent_relay, overlink_spiral_multi_file) } } } +#endif //----------------------------------------------------------------------------- From 91a7faf4c960bbddf08219ed4983a3a7f5deb9fe Mon Sep 17 00:00:00 2001 From: Cyrus Harrison Date: Mon, 9 Sep 2024 14:40:04 -0700 Subject: [PATCH 11/15] add data on device test and example (#1370) * add data on device test and example with rendering and extract --- scripts/build_ascent/build_ascent.sh | 5 +- src/cmake/thirdparty/SetupCaliper.cmake | 1 - src/libs/ascent/CMakeLists.txt | 1 + src/libs/ascent/ascent_config.h.in | 2 +- .../tout_render_gpu_source_data_1_100.png | Bin 0 -> 533510 bytes .../tout_render_gpu_source_data_2_100.png | Bin 0 -> 533510 bytes src/tests/ascent/CMakeLists.txt | 12 +- src/tests/ascent/t_ascent_gpu_data_source.cpp | 316 ++++++++++++++++++ 8 files changed, 332 insertions(+), 5 deletions(-) create mode 100644 src/tests/_baseline_images/tout_render_gpu_source_data_1_100.png create mode 100644 src/tests/_baseline_images/tout_render_gpu_source_data_2_100.png create mode 100644 src/tests/ascent/t_ascent_gpu_data_source.cpp diff --git a/scripts/build_ascent/build_ascent.sh b/scripts/build_ascent/build_ascent.sh index 49559c324..d07480d07 100755 --- a/scripts/build_ascent/build_ascent.sh +++ b/scripts/build_ascent/build_ascent.sh @@ -395,7 +395,10 @@ if [[ "$build_windows" == "ON" ]]; then fi if [[ "$enable_hip" == "ON" ]]; then - caliper_extra_cmake_args="${caliper_extra_cmake_args} -DWITH_ROCTRACER=ON -DWITH_ROCTX=ON -DROCM_PREFIX=${ROCM_PATH}" + caliper_extra_cmake_args="${caliper_extra_cmake_args} -DWITH_ROCTRACER=ON" + caliper_extra_cmake_args="${caliper_extra_cmake_args} -DWITH_ROCTX=ON" + caliper_extra_cmake_args="${caliper_extra_cmake_args} -DROCM_PREFIX:PATH=${ROCM_PATH}" + caliper_extra_cmake_args="${caliper_extra_cmake_args} -DROCM_ROOT_DIR:PATH=${ROCM_PATH}" fi echo "**** Configuring Caliper ${caliper_version}" diff --git a/src/cmake/thirdparty/SetupCaliper.cmake b/src/cmake/thirdparty/SetupCaliper.cmake index 94fbbdb94..25ec76fcf 100644 --- a/src/cmake/thirdparty/SetupCaliper.cmake +++ b/src/cmake/thirdparty/SetupCaliper.cmake @@ -59,4 +59,3 @@ find_package(caliper REQUIRED set(CALIPER_FOUND TRUE) -set(CONDUIT_USE_CALIPER TRUE) diff --git a/src/libs/ascent/CMakeLists.txt b/src/libs/ascent/CMakeLists.txt index 651435468..7c41d157a 100644 --- a/src/libs/ascent/CMakeLists.txt +++ b/src/libs/ascent/CMakeLists.txt @@ -31,6 +31,7 @@ set(ASCENT_PYTHON_ENABLED ${PYTHON_FOUND}) set(ASCENT_PYTHON_EXECUTABLE ${PYTHON_FOUND}) set(ASCENT_LOGGING_ENABLED ${ENABLE_LOGGING}) +set(ASCENT_CALIPER_ENABLED ${CALIPER_FOUND}) set(ASCENT_SOURCE_WEB_CLIENT_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/web_clients) diff --git a/src/libs/ascent/ascent_config.h.in b/src/libs/ascent/ascent_config.h.in index bf54f0b95..7a29d2b39 100644 --- a/src/libs/ascent/ascent_config.h.in +++ b/src/libs/ascent/ascent_config.h.in @@ -33,7 +33,7 @@ #cmakedefine ASCENT_PYTHON_EXECUTABLE "@PYTHON_EXECUTABLE@" #cmakedefine ASCENT_LOGGING_ENABLED "@ENABLE_LOGGING@" -#cmakedefine ASCENT_CALIPER_ENABLED "@ASCENT_CALIPER_ENABLED@" +#cmakedefine ASCENT_CALIPER_ENABLED "@CALIPER_FOUND@" // this path points to the web client js code tree #cmakedefine ASCENT_SOURCE_WEB_CLIENT_ROOT "@ASCENT_SOURCE_WEB_CLIENT_ROOT@" diff --git a/src/tests/_baseline_images/tout_render_gpu_source_data_1_100.png b/src/tests/_baseline_images/tout_render_gpu_source_data_1_100.png new file mode 100644 index 0000000000000000000000000000000000000000..3d879b4aede187452f9ec76894ee658d29dd656a GIT binary patch literal 533510 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 z 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
    n45XBm$mr7wvnN1aFE9mmJ|fc8 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
  1. V$`h5@K5f2LTue8q*NTsgYGP66vvjuspD+jAw=avs zr~Dc+|JQd`hP?pPoAKY;j|Q%xcNq9t0BI-3Xz=<$F3;1089S|=C$^X_lf{^KvpgPO zw-6BlOI%b$L?kFG8>8GnNW{WEN%r##;|OoNKR8NbTlSz0vG>ef$>C4*OYUE|$pO0~ z;KYnBwg$!SDV~@$sxE5OvpuIp*fkL|k6ro;yRxs#lBay5<8l7zpwBBoXm{51KP;bP z!N7fwrtLy>$X?>GD1-4x#fQ=vfkr`RWM7FmBI9|H54uLepfeW9Ky@=G02NMS-=7{W z9}7Ak9c5;?Q`wV1qfE;FCV)5Zek8y{fV`a4nDk_{nd_ORx?((d%<9R zg%NCoP7I2q}Qr8@az z!WaGVc>7br80p1T7}w;)%I4Sgq^EE7;o%r6qBL;!7(Q^7@Y?YQMq@0HkdUR+MToV% zZXT5J$mP~|CjH1GO^dWKRO}rC$fIhpDLu4~d6>Wz+qMa{$1XvYLyBP0{;J7SBDR+N zGS;>~nHJ0(N?TMV06AFTH4J~BAjKe?U1(6BtwLqn-BKPfS0H#p^NW~xMDmCfcz#fA z!Y)s^O8-0%noN_8ciEPJK$75yZzw*8m|XD<;+g?7ZOgK+6ay6T_u1A<;RANO1|;CaReX;bZ)?*9n>$Fq=`leXJ0Mg_{?*gsCoEIOd6+n4rXpjce%I8Dni* zI*phd+7r&N8_hM8k?@C(l{UNs*Uzz3SbW}p&_3rvVR{dXdAwvp>PE0sV8B4cE@bLa zVs_BpfJgorm-T2mW4WyNhe6JZU&fM`2W*B+^LZx0iCdjs#m=VCLZ5UOz>^T=iGmtM z34#tXoC08UX+5SfcLE1|g!0*I)2_maC`QVm=N=sqt45z8|hAisI702+0yK=6Ne7rKtR4w!DE2; zNR3Ce&W9}pPl4?wQAeRq96~L#qP9TR|4ubt66UB9MZShxvdMRQ#n-V|y%jcYLE75k z`?E$=RKDB{Sl|*LOao*Z^b1TAV6_(q-|=Y6Qj}+5$#Q|+vhJ%70LyP_|JMTq-=8Bk1g!4sp3${E*dRq#G>sNQDMb?}S^pp3W-3RQa=Q8gQLZ%L|hM z^MuJjFkTe$yv-n!F*IF}12Pycvwcm%*iKLlp)n~YMB5Ta!Cst(kq+b0@w(9@yRMX? zyzh;jy4jHgBX9;cc5-*x;IuO8JAm(hYa@bwc$WjX$%MnfJ#Up;HLmOWM$QM1(>enVJ_#KwiLkU5vwdB+goM zb}!NSSh`1RmBrIp)iFP6C&LM{g&usAMqUx=2StJF?qmt;iSb5DnXT2vX_&PUiy_RE zeZ8pIlhG8A6ZN#hFGZ5?t?kCpSu?dW=DUNIN2AZm0H(uD9&CXTER#S=JyPv^Kah>X zF_JZ-4KrWp&hbN}#`!hjkQ#pJ!WfuEh3Pk#>6Wh*+qsL&bi9tB9!csWlLdjChY#Yi zS_&Ph*$VXmJOB}oew_^>FSPCeWh*mio|RJ7UBPs;wOEj(e@@vSJ6mzggFT~Q3d`y4 z2g7)f$tGQ;c?dYI%8vw!1F9tdSV+Q^2k_(QxhWs@@L}~{!U?Uo<=i2A;J<|}jN