Required Info:
- Software Version
[ x ] DRIVE OS 6.0.8.1 - Target OS
[x ] Linux - SDK Manager Version
[x ] 1.9.2.10884 - Host Machine Version
[x ] native Ubuntu Linux 20.04 Host installed with DRIVE OS DOCKER Containers
Describe the bug
with helloworld and sum source code provided by driveworks-5.14 release sample, nv_driveworks/driveworks-5.14/samples/src/cgf_nodes/HelloWorldNode.hpp at main · ZhenshengLee/nv_driveworks · GitHub , nv_driveworks/driveworks-5.14/samples/src/cgf_nodes/SumNodeImpl.cpp at main · ZhenshengLee/nv_driveworks · GitHub
and the official cgf helloworld demo guide nv_driveworks/drive-agx-orin-doc/3-drive-works/CGF-presentation.pdf at main · ZhenshengLee/nv_driveworks · GitHub , we run the minimal test for the connection of socket, and found the unexpected behavior.
From the cgf 5.14 doc, Compute Graph Framework SDK Reference: Graphlet
Channels
While a connection only describes that data should flow between two endpoint, a Channel provides a specific kind of data transport mechanism (e.g. sockets, shared memory). A single channel can also provide the data transport for more than one connection, e.g. via UDP multicast. The exact type of a channel as well as optional configuration options of the specified transport mechanism are defined by parameters associated with each connection.
To Reproduce
- follow the official pdf and build a cgf app with helloworld and sum process.
- edit the json, change the connection from default to socket with 1 cases
caseA, 1 connection with default socket parameter - compile and run the cgf app, check the log and data consistency
for step2, caseA, 1 connection with default streamName
graphlet.json
{
"src": "helloWorldNode.VALUE_0",
"dests": {
"sumNode.VALUE_0": {
"mailbox": true,
"reuse": true
}
},
"params": {
"type": "socket"
}
},
Expected behavior
with helloworld sample, the socket+interprocess communication should be available as udp, as the doc said.
Actual behavior
For CaseA, 1 connection with default socket parameter, the cgf app works well.
we can see logs of socket type channel created successfully
<15>1 2024-05-16T09:47:18.431084+08:00 - helloworld_process0 958679 - - [1715818064382075us][VERBOSE][tid:13][ChannelSocket.cpp:112][ChannelSocketProducer] Server socket initialized for port 18000 server = 281463769577808
<15>1 2024-05-16T09:47:18.431120+08:00 - helloworld_process0 958679 - - [1715818064382111us][VERBOSE][tid:13][ChannelConnectorImpl.cpp:83][ChannelConnector] Add producer[0]: type=SOCKET,id=18000,ip=127.0.0.1,role=producer,name=top.helloWorldNode.FREESPACE_BOUNDARY, current producer list size: 0
<13>1 2024-05-16T09:47:18.431137+08:00 - helloworld_process0 958679 - - [1715818064382128us][DEBUG][tid:13][ThreadPool.hpp:107][ThreadPool] Thread exit from ThreadPool: bindOutput
use netstat to check the socket of port 18000, we can check the connection is with TCP transport
nvidia@tegra-ubuntu:~/zhensheng$ sudo netstat -ltpe | grep -Eni 18000
7:tcp 0 0 0.0.0.0:18000 0.0.0.0:* LISTEN root 19458346 965199/LoaderLite
Additional context
- Please the forum reproduce the issue with the official minimal helloworld sample.
- Please provide the correct way to use the socket channel with UDP socket in dwcgf, and all needed infomation to help us run dwcgf well.