Skip to content

Commit 1c0be8f

Browse files
authored
Changelog V4 (#334)
* WIP changelog * Update CHANGELOG.md * Update CHANGELOG.md * increment version to 4.0.0 * minor * updated changelog * enable MPI-Comm * missing type * updating changelog * revert unwanted change
1 parent 16f093f commit 1c0be8f

4 files changed

Lines changed: 20 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,18 @@ All important and notable changes in the _CoSimIO_ are documented in this file.
4949
- All CMake macros of _CoSimIO_ now start with `CO_SIM_IO_`. This affects especially `BUILD_C` and `BUILD_PYTHON` which are changed to `CO_SIM_IO_BUILD_C` and `CO_SIM_IO_BUILD_PYTHON`.
5050
- Several minor improvements to the CI (continuous integration)
5151
- Internal errors now give much better error messages including detailed stacktraces
52+
53+
## 4.0.0
54+
- (Interprocess) Communication
55+
- Socket based communication was added (using TCP network sockets with IPv4). Documentation is available [here](https://kratosmultiphysics.github.io/CoSimIO/communication.html#socket-based-communication).
56+
Due to its versatility it is the **new default** (previously it was file-based communication)
57+
- Experimental support for unix domain sockets was added (see [here](https://kratosmultiphysics.github.io/CoSimIO/communication.html#unix-domain-socket-based-communication))
58+
- PipeCommunication now supports large data (data larger than pipe buffer). Furthermore the buffer size can be configured with `buffer_size`, see the [documentation](https://kratosmultiphysics.github.io/CoSimIO/communication.html#pipe-based-communication).
59+
- Experimental support for communication based on `MPI_Ports` was added (see [here](https://kratosmultiphysics.github.io/CoSimIO/communication.html#mpi-based-communication)). It is available when connection is done with MPI and can be enabled with `CO_SIM_IO_BUILD_MPI_COMMUNICATION`
60+
- Mesh container (`ModelPart`)
61+
- Creating entities in the ModelPart is now significantly faster. Especially when creating many entities the speedup is several orders of magnitude.
62+
- New interfaces are added to the ModelPart with which multiple entities can be created.
63+
- Improved and extended documentation
64+
- Improved synchronization during initial handshake to avoid deadlocks
65+
- Printing timing information for communication is now unified for all communication methods (can be enabled with `print_timing`)
66+
- other minor interal improvements and fixes

co_sim_io/sources/version.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
namespace CoSimIO {
1717

1818
int GetMajorVersion() {
19-
return 3;
19+
return 4;
2020
}
2121

2222
int GetMinorVersion() {

docs/communication.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ The following logic is used for selecting the ip-address
104104

105105
## Unix domain socket-based communication
106106
**This form of communication is experimental**
107+
107108
This type of communication uses unix domain sockets for the data exchange. It is similar to the tcp socket communication, but instead of passing the data through the network, it uses the kernel memory. This makes it faster, but at the same time it only works locally on one compute node.
108109

109110
The [ASIO](https://think-async.com/Asio/) library is used as a high level interface for the sockets.
@@ -124,6 +125,7 @@ Set `communication_format` to `local_socket`.
124125

125126
## Pipe-based communication
126127
**This form of communication is experimental**
128+
127129
A pipe is a data channel to perform interprocess communication between two processes. No data is written to the filesystem, it is directly exchanged through the kernel memory. This makes it more efficient than the file-based communication, but at the same time it only works locally on one compute node.
128130

129131
The (default) buffer size is specific for each operating system, see e.g. [here](https://man7.org/linux/man-pages/man7/pipe.7.html) for information for Linux. If the data to be exchanged is larger than the buffer size, then it is exchanged in chuncks. Hence a larger buffer size results in less data exchanges.
@@ -145,6 +147,7 @@ Set `communication_format` to `pipe`.
145147

146148
## MPI-based communication
147149
**This form of communication is experimental**
150+
148151
MPI is usually used to communicate between different ranks within an executable/one MPI-communicator. MPI 2.0 added functionalities with which the communication can be done also between independent communicators (i.e. if two executables were started separately with MPI as shown below). This can be done similarly to the socket based communication through opening ports and accepting connection (on the primary/server side) and connecting to the opened port (on the secondary/client side). After the connection is established, communication is done with the standard MPI calls like `MPI_Send` and `MPI_Recv`. This is oftentimes the fastest way of exchanging data in a distributed memory environment.
149152

150153
The disadvantage of this form of communication is that the features required for establishing communication across communicators are not robustly available for all MPI implementations. Experience shows that it is problematic with OpenMPI but works well with IntelMPI. Furthermore it might be required to use the same compilers and MPI implementation for successfully connecting.

docs/info/info_cpp.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
The `CoSimIO::Info` object plays a very important role in the _CoSimIO_. It is a map (implemented with `std::map`) holding key-value pairs of different value types, similar to the `dict` of Python. It is used as a configuration object and supports the following value types:
2525
- `int`
26+
- `std::size_t`
2627
- `double`
2728
- `bool`
2829
- `std::string`

0 commit comments

Comments
 (0)