New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adding zero-copy support on the receiving end of the TCP and MPI parcel ports #6229
Conversation
49f82a4
to
71f8ebd
Compare
Performance test reportHPX PerformanceComparison
Info
Comparison
Info
Comparison
Info
Explanation of Symbols
|
8d035fd
to
2d78ba0
Compare
Performance test reportHPX PerformanceComparison
Info
Comparison
Info
Comparison
Info
Explanation of Symbols
|
libs/full/parcelport_mpi/include/hpx/parcelport_mpi/receiver_connection.hpp
Outdated
Show resolved
Hide resolved
Do you think it is better to add a command line option controlling this zero-copy behavior so we can figure out how much performance improvement we get from this optimization? |
This is a good suggestion. I will add a configuration variable for this. |
bb8568d
to
f5d09f3
Compare
Performance test reportHPX PerformanceComparison
Info
Comparison
Info
Comparison
Info
Explanation of Symbols
|
This will require some acrobatics as the two versions rely on different types representing the chunking data (the old uses a |
|
Performance test reportHPX PerformanceComparison
Info
Comparison
Info
Comparison
Info
Explanation of Symbols
|
@JiakunYan this now supports the |
- flyby: cleaning up and modernizing TCP parcel port
- flyby: HPX_ASSERT_MSG() now takes arbitrary number of arguments to pass values to hpx::util::format
- this can be used to disable the zero-copy serialization on the receiving end, this option is enabled by default - flyby: modernize parcelset code
Performance test reportHPX PerformanceComparison
Info
Comparison
Info
Comparison
Info
Explanation of Symbols
|
bors merge |
Build succeeded! The publicly hosted instance of bors-ng is deprecated and will go away soon. If you want to self-host your own instance, instructions are here. If you want to switch to GitHub's built-in merge queue, visit their help page. |
@JiakunYan this implements what we discussed recently by de-serializing received parcels once the chunk information is available. This de-serialization however does not assume that the chunk data has been received, but merely allocates the memory for the subsequent networking operations to place received chunk data directly into the internal memory buffers.