fi_pingpong(1)
π fi_pingpong(1) β the Libfabric v2.7.0 pingpong page, bestie edition π
okay so this is a page from the Libfabric Programmer's Manual, and it's literally the cutest little test utility ever. bestie, grab a boba, we're doing this π
β¨ NAME β¨
fi_pingpong β a quick and simple pingpong test for libfabric. that's it, that's the whole vibe π
β¨ SYNOPSIS β¨
fi_pingpong [OPTIONS] start server
fi_pingpong [OPTIONS] <server address> connect to server
two modes, one little program. pick your main character energy: server or client π«Ά
β¨ DESCRIPTION β¨
fi_pingpong is a pingpong test for the core feature of the libfabric library: transmitting data between two processes. like, the whole point of the library, and this little cutie tests it. it also displays aggregated statistics after each test run, and can additionally verify data integrity upon receipt. data integrity checks? we love a thorough queen π
by default, the datagram (FI_EP_DGRAM) endpoint is used for the test, unless otherwise specified via -e. dgram is the default, no cap.
πΈ HOW TO RUN TESTS πΈ
bestie, listen: two copies of the program must be launched. first, one copy must be launched as the server. second, another copy is launched with the address of the server. two copies. always. iykyk.
as a client-server test, each have the following usage model:
π Start the server
server$ fi_pingpong
π Start the client
client$ fi_pingpong <server address>
that's it. server first, then client with the address. slay β¨
π OPTIONS π
the server and client must be able to communicate properly for the fi_pingpong utility to function. read that again, it matters.
- if any of the
-e,-I,-S, or-poptions are used, then they must be specified on the invocation for both the server and the client process. both. matching. periodt. - if the
-doption is specified on the server, then the client will select the appropriate domain if no hint is provided on the client side. - if the
-doption is specified on the client, then it must also be specified on the server. - if both the server and client specify the
-doption and the given domains cannot communicate, then the application will fail. like, it's giving heartbreak π
π Control Messaging
-B<src_port> β the non-default source port number of the control socket. if this is not provided then the server will bind to port47592by default and the client will allow the port to be selected automatically. cute β¨-P<dest_port> β the non-default destination port number of the control socket. if this is not provided then the client will connect to47592by default. the server ignores this option. rude, but okay π
π Fabric Filtering
-p<provider_name> β the name of the underlying fabric provider (e.g.,sockets,psm3,usnic, etc.). if a provider is not specified via the-pswitch, the test will pick one from the list of available providers (as returned byfi_getinfo(3)). it'll choose for you, king behavior π-e<endpoint> β the type of endpoint to be used for data messaging between the two processes. supported values aredgram,rdm, andmsg. for more information on endpoint types, seefi_endpoint(3). three flavors of endpoint, pick your fave π-d<domain> β the name of the specific domain to be used.-s<source address> β address to corresponding domain. required in multi-adapter environment. don't skip it in multi-adapter land, fr fr.
π Test Options
-I<iter> β the number of iterations of the test will run.-S<msg_size> β the specific size of the message in bytes the test will use, orallto run all the default sizes.allis such a mood.-cβ activate data integrity checks at the receiver (note: this will degrade performance). thorough but lowkey expensive π
π Utility
-vβ activate output debugging (warning: highly verbose). like, highly. you've been warned, bestie π-hβ displays help output for the pingpong test. the classic π
π¦ USAGE EXAMPLES π¦
β A simple example
Server: fi_pingpong -p <provider_name>
server$ fi_pingpong -p sockets
Client: fi_pingpong -p <provider_name> <server_addr>
client$ fi_pingpong -p sockets 192.168.0.123
β An example with various options
Server:
server$ fi_pingpong -p usnic -I 1000 -S 1024
Client:
client$ fi_pingpong -p usnic -I 1000 -S 1024 192.168.0.123
specifically, this will run a pingpong test with:
- usNIC provider
- 1000 iterations
- 1024 bytes message size
- server node as
192.168.0.123
iconic lineup, honestly π₯
β A longer test
Server:
server$ fi_pingpong -p usnic -I 10000 -S all
Client:
client$ fi_pingpong -p usnic -I 10000 -S all 192.168.0.123
10000 iterations, all the sizes. she's committed πͺ
π§ DEFAULTS π§
there is no default provider; if a provider is not specified via the -p switch, the test will pick one from the list of available providers (as returned by fi_getinfo(3)). it'll surprise you β¨
if no endpoint type is specified, dgram is used. that's the standing default, periodt.
the default tested sizes are: 64, 256, 1024, 4096, 65536, and 1048576. the test will only test sizes that are within the selected endpoint's maximum message size boundary. no going over the limit, bestie π«
π OUTPUT π
each test generates data messages which are accounted for. specifically, the displayed statistics at the end are:
bytes: number of bytes per message sent#sent: number of messages (ping) sent from the client to the server#ack: number of replies (pong) of the server received by the clienttotal: amount of memory exchanged between the processestime: duration of this single testMB/sec: throughput computed fromtotalandtimeusec/xfer: average time for transferring a message outbound (ping or pong) in microsecondsMxfers/sec: average amount of transfers of message outbound per second
the numbers?? she's giving data scientist π π
πΈ SEE ALSO πΈ
fi_getinfo(3), fi_endpoint(3), fabric(7)
go read those too, bestie, they're the supporting cast π«Ά
π AUTHORS π
OpenFabrics. legends, honestly π
ok that's the whole page!! every flag, every port number, every default size, all of it π―
and finally, the cute sign-off: this lil beauty lives in the Libfabric Programmer's Manual, dated 2024-12-10. go forth and pingpong, bestie πβ¨π
π¦ where this page comes from
- arch rolling: libfabric 2.7.0-1 Β· BSD-2-Clause OR GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms