Skip to content

Commit 1effe84

Browse files
authored
Cleanup in preparation of the v0.1.2 release. (#765)
* Use namespace consistently in README and docs (fixes #756). * Bump version to `v0.1.2`. * Update preferred citation to SC paper.
1 parent 686a2d7 commit 1effe84

File tree

4 files changed

+45
-35
lines changed

4 files changed

+45
-35
lines changed

CITATION.cff

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
cff-version: 1.2.0
2-
message: "If you use KaMPIng in an academic context, please cite our technial report."
2+
message: "If you use KaMPIng in an academic context, please cite our SC'24 paper."
33
authors:
44
- family-names: Hespe
55
given-names: Demian
@@ -13,33 +13,34 @@ authors:
1313
given-names: Daniel
1414
- family-names: Uhl
1515
given-names: Tim Niklas
16-
title: "KaMPIng"
17-
version: 0.1.0
18-
date-released: 2024-04-09
16+
title: "KaMPIng: (Near) zero-overhead MPI wrapper for modern C++"
17+
version: 0.1.2
18+
date-released: 2025-03-13
1919
url: "https://github.com/kamping-site/kamping"
20+
doi: 10.5281/zenodo.10949643
2021
preferred-citation:
21-
type: report
22-
title: "KaMPIng: Flexible and (Near) Zero-overhead C++ Bindings for MPI"
22+
type: conference-paper
23+
title: "KaMPIng: Flexible and (Near) Zero-Overhead C++ Bindings for MPI"
2324
authors:
24-
- family-names: Hespe
25-
given-names: Demian
25+
- family-names: Uhl
26+
given-names: Tim Niklas
27+
- family-names: Schimek
28+
given-names: Matthias
2629
- family-names: Hübner
2730
given-names: Lukas
31+
- family-names: Hespe
32+
given-names: Demian
2833
- family-names: Kurpicz
2934
given-names: Florian
30-
- family-names: Sanders
31-
given-names: Peter
32-
- family-names: Schimek
33-
given-names: Matthias
3435
- family-names: Seemaier
3536
given-names: Daniel
3637
- family-names: Stelz
3738
given-names: Christoph
38-
- family-names: Uhl
39-
given-names: Tim Niklas
40-
journal: "arXiv"
41-
publisher:
42-
name: "arXiv"
43-
doi: "https://doi.org/10.48550/arXiv.2404.05610"
44-
url: "https://arxiv.org/abs/2404.05610"
39+
- family-names: Sanders
40+
given-names: Peter
41+
collection-title: "SC24: International Conference for High Performance Computing, Networking, Storage and Analysis"
42+
doi: "10.1109/SC41406.2024.00050"
43+
start: 1
44+
end: 21
45+
pages: 21
4546
year: 2024

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ project(
77
KaMPIng
88
DESCRIPTION "Flexible and (near) zero-overhead C++ bindings for MPI"
99
LANGUAGES CXX
10-
VERSION 0.1.1
10+
VERSION 0.1.2
1111
)
1212
include(FetchContent)
1313

README.md

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[![C/C++ CI](https://github.com/kamping-site/kamping/actions/workflows/build.yml/badge.svg)](https://github.com/kamping-site/kamping/actions/workflows/build.yml)
22
![GitHub](https://img.shields.io/github/license/kamping-site/kamping)
3-
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.10949647.svg)](https://doi.org/10.5281/zenodo.10949647)
3+
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.10949643.svg)](https://doi.org/10.5281/zenodo.10949643)
44

55
# KaMPIng: Karlsruhe MPI next generation :rocket:
66

@@ -38,7 +38,7 @@ It is fully compatible with your existing MPI code and you can start using it ri
3838

3939
#include <kamping/communicator.hpp>
4040
#include <kamping/collectives/allgather.hpp>
41-
41+
4242
kamping::Communicator comm;
4343

4444
std::vector<int> input(comm.rank(), comm.rank_signed());
@@ -51,19 +51,26 @@ KaMPIng is developed at the [Algorithm Engineering
5151
Group](https://ae.iti.kit.edu/english/index.php) at Karlsruhe Institute of
5252
Technology.
5353
54-
If you use KaMPIng in the context of an academic publication, we kindly ask you to cite [our technical report](https://arxiv.org/abs/2404.05610):
54+
If you use KaMPIng in the context of an academic publication, we kindly ask you to cite our [SC'24 paper](https://doi.org/10.1109/SC41406.2024.00050):
5555
5656
``` bibtex
57-
@misc{kamping2024,
58-
title={KaMPIng: Flexible and (Near) Zero-overhead C++ Bindings for MPI},
59-
author={Demian Hespe and Lukas Hübner and Florian Kurpicz and Peter Sanders and Matthias Schimek and Daniel Seemaier and Christoph Stelz and Tim Niklas Uhl},
60-
year={2024},
61-
eprint={2404.05610},
62-
archivePrefix={arXiv},
63-
primaryClass={cs.DC}
57+
@inproceedings{kamping2024,
58+
author = {Uhl, Tim Niklas and Schimek, Matthias and Hübner,
59+
Lukas and Hespe, Demian and Kurpicz, Florian and
60+
Seemaier, Daniel and Stelz, Christoph and Sanders,
61+
Peter},
62+
booktitle = {SC24: International Conference for High Performance
63+
Computing, Networking, Storage and Analysis},
64+
title = {KaMPIng: Flexible and (Near) Zero-Overhead C++
65+
Bindings for MPI},
66+
year = {2024},
67+
pages = {1-21},
68+
doi = {10.1109/SC41406.2024.00050}
6469
}
6570
```
6671

72+
You can also find a [freely accessibly post-print in the arXiv.](https://arxiv.org/abs/2404.05610)
73+
6774
## Features :sparkles:
6875
### Named Parameters :speech_balloon:
6976
Using plain MPI, operations like `MPI_Allgatherv` often lead to verbose and error-prone boilerplate code:
@@ -86,7 +93,7 @@ In contrast, KaMPIng introduces a streamlined syntax inspired by Python's named
8693
8794
```c++
8895
std::vector<T> v = ...; // Fill with data
89-
std::vector<T> v_glob = comm.allgatherv(send_buf(v));
96+
std::vector<T> v_glob = comm.allgatherv(kamping::send_buf(v));
9097
```
9198

9299
Empowered by named parameters, KaMPIng allows users to name and pass parameters in arbitrary order, computing default values only for the missing ones. This not only improves readability but also streamlines the code, providing a user-friendly and efficient way of writing MPI applications.
@@ -103,13 +110,13 @@ KaMPIng's *resize policies* allow for fine-grained control over when allocation
103110

104111
``` c++
105112
// easy to use with sane defaults
106-
std::vector<int> v = comm.recv<int>(source(kamping::rank::any));
113+
std::vector<int> v = comm.recv<int>(kamping::source(kamping::rank::any));
107114

108115
// flexible memory control
109116
std::vector<int> v_out;
110117
v_out.resize(enough_memory_to_fit);
111118
// already_known_counts are the recv_counts that may have been computed already earlier and thus do not need to be computed again
112-
comm.recv<int>(recv_buf<kamping::no_resize>(v_out), recv_count(i_know_already_know_that), source(kamping::rank::any));
119+
comm.recv<int>(kamping::recv_buf<kamping::no_resize>(v_out), kamping::recv_count(i_know_already_know_that), kamping::source(kamping::rank::any));
113120
```
114121

115122
### STL support :books:
@@ -140,7 +147,7 @@ void sort(MPI_Comm comm_, std::vector<T>& data, size_t seed) {
140147
size_t const oversampling_ratio = 16 * static_cast<size_t>(std::log2(comm.size())) + 1;
141148
std::vector<T> local_samples(oversampling_ratio);
142149
std::sample(data.begin(), data.end(), local_samples.begin(), oversampling_ratio, std::mt19937{seed});
143-
auto global_samples = comm.allgather(send_buf(local_samples)).extract_recv_buffer();
150+
auto global_samples = comm.allgather(kamping::send_buf(local_samples));
144151
std::sort(global_samples.begin(), global_samples.end());
145152
for (size_t i = 0; i < comm.size() - 1; i++) {
146153
global_samples[i] = global_samples[oversampling_ratio * (i + 1)];
@@ -157,7 +164,7 @@ void sort(MPI_Comm comm_, std::vector<T>& data, size_t seed) {
157164
data.insert(data.end(), bucket.begin(), bucket.end());
158165
scounts.push_back(static_cast<int>(bucket.size()));
159166
}
160-
data = comm.alltoallv(send_buf(data), send_counts(scounts)).extract_recv_buffer();
167+
data = comm.alltoallv(kamping::send_buf(data), kamping::send_counts(scounts));
161168
std::sort(data.begin(), data.end());
162169
}
163170
```

docs/main.dox

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ Technology.
2727

2828
kamping::Environment e;
2929
kamping::Communicator comm;
30+
31+
using namespace kamping::params;
3032

3133
std::vector<int> input(comm.rank(), comm.rank_signed());
3234
auto const result = comm.allgatherv(send_buf(input));

0 commit comments

Comments
 (0)