kokkos / kokkos-comm Goto Github PK
View Code? Open in Web Editor NEWUnofficial MPI Wrapper for Kokkos
Home Page: https://kokkos.org/kokkos-comm/
License: Other
Unofficial MPI Wrapper for Kokkos
Home Page: https://kokkos.org/kokkos-comm/
License: Other
See proposal in kokkos/kokkos#6933 and clangd documentation https://clangd.llvm.org/guides/include-cleaner#iwyu-pragmas.
This project may be the right time to depart from KokkosCore's clang-format-8 requirement and upgrade it to something newer.
I don't know if there are particular (legal?) constraints for such a change, but I suggest we move to at least clang-format-11 (LLVM began supporting -std=c++20
with clang-11). We could go even newer, e.g. with clang-format-14.
Another (personal) suggestion: we should increase the column limit from 80 to 100 (some might even want 120). With current monitor sizes/resolutions, there's no real reason to keep such a narrow width. Moreover, modern C++ can be quite verbose and the 80-column limit causes lots of unnecessary line breaks.
Updating our clang-format while we still have a relatively small codebase is judicious.
PR #30 skips tests for ready-mode send operations as we lack irecv
to correctly test the ready-mode send
and isend
functions.
Unit tests should look something like the following:
if (rank == 0) {
// Ensure `irecv` has started when we exit the following barrier
KokkosComm::Impl::barrier(Kokkos::DefaultExecutionSpace(), MPI_COMM_WORLD);
// Send the view
KokkosComm::send<KokkosComm::CommMode::Ready>(
Kokkos::DefaultExecutionSpace(),
view,
dst,
tag,
MPI_COMM_WORLD
);
} else {
// Start reception
auto req = KokkosComm::irecv(
Kokkos::DefaultExecutionSpace(),
view,
src,
tag,
MPI_COMM_WORLD
);
// Barrier guaranteeing to the sender (rank 0) that the recipient (rank 1) is ready
KokkosComm::Impl::barrier(Kokkos::DefaultExecutionSpace(), MPI_COMM_WORLD);
// Wait until receive completion
req.wait();
}
These tests should not be skipped anymore once #32 is merged.
In no particular order:
slug | namespace | Name | champions |
---|---|---|---|
kokkos-comm |
KokkosComm |
??? | |
kokkos-mpi |
KokkosMPI |
Kokkos MPI | Carl |
kokkos-messagepassing |
??? | ??? | |
kokkos-mpi-connector |
??? | ??? | |
your | suggestion | here |
If Kokkos has been installed with mdspan support, i.e. Kokkos_ENABLE_IMPL_MDSPAN=ON
, none of the configuration works.
Adding a new mdspan
results in duplicated symbols given mdspan
headers are protected with #pragma once
and the header can be found twice.
Disabling the FetchContent
for mdspan
does not work either.
Hi there!
After a quick look at the code, it seems like the current implementation requires a C++20 compiler. I was wondering if this is a deliberate choice (to deviate from the general KokkosCore policy I mean) or just the result of the current experimental status of the project. As some GPU compilers do not support C++20, it would be nice to require only a C++17 compiler for now IMHO.
Working on a daily basis with MPI and Kokkos for a few years now, I have developed similar wrappers for our new CFD solver and I'd be very happy to discuss and help develop this project!
Best regards,
Alex
kokkos-comm/.github/workflows/docs-deploy.yml
Lines 8 to 11 in 2b3756d
In cmake/KokkosComm_version.hpp.in
I think
install
target to do somethinginstall
target doesn't breakHi! I notice that the CommMode
enum does not include the buffered mode. Is this intentional or just an oversight?
Best regards,
Alex
Some thoughts I had while browsing through the code:
mpi_assert_allow_overtaking
option in MPI 4.0 (disabling ordering of same-tag messages). Either way, the semantics should be well-defined.A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.