https://github.com/ansys/grpc_chunk_stream_demo
Demonstrate Large Array Serialization using gRPC
https://github.com/ansys/grpc_chunk_stream_demo
cpp grpc
Last synced: about 1 month ago
JSON representation
Demonstrate Large Array Serialization using gRPC
- Host: GitHub
- URL: https://github.com/ansys/grpc_chunk_stream_demo
- Owner: ansys
- Created: 2020-07-07T05:53:09.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2022-03-24T07:55:35.000Z (about 3 years ago)
- Last Synced: 2025-03-26T19:22:40.527Z (about 2 months ago)
- Topics: cpp, grpc
- Language: C++
- Homepage:
- Size: 1000 KB
- Stars: 4
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
### Large Array Serialization using gRPC
#### Prerequisites
Install `gRPC` for C++ using by following the directions at [gRPC Quick Start](https://grpc.io/docs/languages/cpp/quickstart/). This will install both `gRPC` and `protobuf`, which you will need to compile the server and client. If you wish you use the Python server as well, install `Python 3.6` or newer.
You will also need `cmake` to build the server and client, and the directions for installing a modern version of `cmake` are also at [gRPC Quick Start](https://grpc.io/docs/languages/cpp/quickstart/).
#### C++ Server
Enter the `cpp` directory and run the following to build the `demo_server`
```
mkdir build
cd build
cmake ..
make -j
```Next, start the `demo_server` with:
```
./demo_server
```You should see:
```
Server listening on 0.0.0.0:50000
```The C++ server is now waiting for connections from port 50000.
#### C++ Client
After compiling the C++ server, start the C++ client with
```
./demo_client
```This will automatically run the streaming demo:
```
./demo_client
Connected to server at: localhost:50000
Created an INT32 array on the server size 10000000
Array is 38.15 MBTesting with byte stream...
Using chunk size 256 kB
Average time: 0.0167268
Approx speed: 2.23 GBpsTesting with repeated messages...
Average time: 0.0932537
Approx speed: 409.07 MBpsTesting with repeated chunked messages...
Average time: 0.0300367
Approx speed: 1.24 GBps```
Use the `-h` flag to see the options available when running the client.
```
./demo_client -h
``````
demo_client [options]
Options:
-h Print this help
--target Set the target channel (default localhost:50000)
--chunk_size Set the chunk size in kB (default 256)
--skip_repeated Skip testing the repeated messages
--array_size Size of array in int32
--ntimes_stream Number of times to test the stream
```#### Python Client
First, ensure you have the following packages installed:
- `grpcio`
- `google-api-python-client`Also, make sure that the version of the packages is greater than or equal to your `gRPC` C++ version.
Next, enter the `python` directory and run:
```
make
```This will generate the python gRPC interface files `chunkdemo_pb2.py`
and `chunkdemo_pb2_grpc.py`. While you have the C++ server running,
run:```
python client.py
```This will connect to the server at your local host and run a basic
array transfer test using both a byte stream and repeated messages.```
Connected to server at 127.0.0.1:50000
Created an INT32 array on the server size 20000000
Testing with byte stream...
Average time: 0.03763810700038448
Aprox speed: 2.0GiBTesting with repeated messages...
Average time: 0.8858063033355089
Aprox speed: 86.1MiB```