Conduit Device Support - #1358
Conversation
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
| #if defined(_WIN32) && defined(CONDUIT_WINDOWS_DLL_EXPORTS) && \ | ||
| !defined(CONDUIT_EXPORTS_DEFINED) && \ | ||
| !defined(CONDUIT_TU_IS_CUDA) && !defined(CONDUIT_TU_IS_HIP) | ||
|
|
There was a problem hiding this comment.
- we should use special CONDUIT WINDOWS macro that exists somewhere
- This is a gaping wound for @JustinPrivitera to figure out. Can we move things back to the cpp?
There was a problem hiding this comment.
There was a problem hiding this comment.
This is related to the discussion about RDC
|
TODO update changelog |
|
TODO all transforms should provide a node/accessor to global execution options to get the right exec policy/output space. |
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
|
TODO address this concern: #1673 (comment) |
* Initial attempt at porting the new bm infra to device support branch * Avoid a segfault by restricting generate_* to host only * Initial commit * Update plots * Cleanup * Revert sync change, make tests better * More optimization * Differentiate backends when plotting * Make host_only a per-benchmark option * Don't include deallocation in timing * Rename take_data_ptr to assume_data_ptr * Fix timing leak * Don't copy into output buffers * Initial commit * Mirror changes in the pre-DE version of this PR * Address feedback * Make many improvements * Caliper tutorial tweaks * Initial commit * Greatly simplify the API * Add TODOs * Add another TODO * Make comments better * Cleanup * Add better comment * Exploratory notes * Remove resolved TODOs * Remove a case that didn't make sense * Finish porting * Support DataArrays * Polishing, better tests * Update src/libs/conduit/conduit_execution_dispatch.hpp Co-authored-by: Justin Privitera <35237779+JustinPrivitera@users.noreply.github.com> * Address feedback * Improve verbiage * More polishing * Use dispatches, some cleanup * Always dispatch the non-polyhedral case * Reorder things in anticipation of more overloads being added * Redo unique_mask * Polishing * Add info to docs * Remove TODOs * Cleanup duplicated TODOs * Remove LUTs * Shorten header * Update src/libs/blueprint/conduit_blueprint_mesh.cpp Co-authored-by: Justin Privitera <35237779+JustinPrivitera@users.noreply.github.com> * Remove maps * Exercise other meshes and shape types * Use correct policy querying * Remove what I can * Polish * Make centroids test stricter --------- Co-authored-by: Justin Privitera <35237779+JustinPrivitera@users.noreply.github.com>
|
MSVC was throwing this compilation error for C++17:
The code in question: const index_t max_stack_npts = 32;
conduit::execution::forall(policy, 0, topo_num_elems, [=] CONDUIT_EXEC(index_t ei)
{
...
index_t elem_coord_indices[max_stack_npts];It seems that declaring The simple (smallest diff) way to fix this was to make constexpr index_t max_stack_npts = 32;It should also work to just move |
|
constexpr did not save us, so I have moved |
Thanks for fixing this. We also don't have to lambda capture by value (I think???). Maybe we could try that as well. |
I looked into it very briefly at one point, and my takeaway was that foralls would need to capture by value if they would ever be executed on device (host-only kernels didn't have to worry). I don't actually know if that's true. But now that I have unified memory on the brain, I do wonder if 1) our kernels could capture by reference in unified memory and 2) if there's a kernel anywhere that would benefit from that. |
* Initial attempt at porting the new bm infra to device support branch * Avoid a segfault by restricting generate_* to host only * Initial commit * Update plots * Cleanup * Revert sync change, make tests better * More optimization * Differentiate backends when plotting * Make host_only a per-benchmark option * Don't include deallocation in timing * Rename take_data_ptr to assume_data_ptr * Fix timing leak * Don't copy into output buffers * Initial commit * Mirror changes in the pre-DE version of this PR * Address feedback * Make many improvements * Caliper tutorial tweaks * Greatly simplify the API * Add TODOs * Add another TODO * Make comments better * Cleanup * Add better comment * Initial commit * Better naming consistency * Remove resolved TODOs * Remove a case that didn't make sense * Support DataArrays * Polishing, better tests * Port DataArray and DataAccessor to execution model * Update src/libs/conduit/conduit_execution_dispatch.hpp Co-authored-by: Justin Privitera <35237779+JustinPrivitera@users.noreply.github.com> * Address feedback * Improve verbiage * More polishing * Reorder things in anticipation of more overloads being added * Polishing * Address feedback * Add info to docs * Lazily cache active space * Make set_value_helper private again * Cache the execution policy instead of the memory space * Support magic sets * Add test comments * Address feedback * Add temp buffer comment --------- Co-authored-by: Justin Privitera <35237779+JustinPrivitera@users.noreply.github.com>
|
Speaking of unified memory and whether we're handling it correctly, here's a link to my initial investigation on it: #1614 (comment) |
CI failed after 90 minutes exactly, I wonder if we exceeding a time limit? |
|
For context, the PR before this most recent one (which does increase compile times) finished in 1h 0m 2s. |
….com:LLNL/conduit into task/JustinPrivitera/05_01_24/device_support
|
Oh jeez, our in progress check was running for 14 hours... I have restarted CI. If it fails again at 90 min then I think this issue may be above my pay grade. |
|
This is really strange. |
|
Do you have a button to manually stop CI? I suspect that this in progress check will continue running in perpetuity. |
Since it happened almost exactly at 90 minutes again, this does feel like a timeout. |
|
Cyrus says we should be able to run >90 minutes without an issue. The running out of space theory is looking plausible:
#1691 should alleviate this problem. Alternatively, I don't know if it's possible to increase the amount of space for the static build containers specifically (without adding more GH actions cost)? Another thought: maybe |
|
Merged! |
…1692) * Initial commit * Whoops, forgot build_conduit.sh
Resolves #1151
See #1614 for ongoing development feature-tracking