[BUG] cgf helloworld sample socket+interprocess communication got tcp socket, conflicts with the doc saying udp

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

  1. follow the official pdf and build a cgf app with helloworld and sum process.
  2. edit the json, change the connection from default to socket with 1 cases
    caseA, 1 connection with default socket parameter
  3. 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

  1. Please the forum reproduce the issue with the official minimal helloworld sample.
  2. 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.

Dear @lizhensheng ,
You want to confirm the default behaviour of socket+interprocess communication. right?

I want to know the default behavior and how to config different socket type of cgf channel communication.

Dear @lizhensheng,
socket type support only TCP.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.