Skip to content

Commit b964645

Browse files
committed
add dwcgf helloworld sample.
1 parent b3bf9c0 commit b964645

28 files changed

+1916
-2
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*.mp4*
55
driveworks-5.8/tools/stm*
66
driverorks-5.10/tools/stm*
7-
.vscode/
7+
# .vscode/
88
docker/
99
target/
10+
.dev_bash_hist

.vscode/tasks.json

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
{
2+
// See https://go.microsoft.com/fwlink/?LinkId=733558
3+
// for the documentation about the tasks.json format
4+
"version": "2.0.0",
5+
"tasks": [
6+
// args is not allowed in docker exec
7+
{
8+
// rsync
9+
"label": "pub2orin-dw514-check",
10+
"type": "shell",
11+
"command": "rsync -avzhlce ssh ./target/dw514/install/usr nvidia@192.168.137.113:~/zhensheng/orin_ws/nv_driveworks/target/dw514/ -Pin --update --inplace --delete-delay --compress-level=3 --safe-links --munge-links --max-delete=5000",
12+
"options": {
13+
"cwd": "${workspaceFolder}"
14+
},
15+
"args": [],
16+
"problemMatcher": {
17+
"fileLocation": [
18+
"autoDetect",
19+
"${workspaceFolder}"
20+
]
21+
},
22+
"group": {
23+
"kind": "none",
24+
"isDefault": false
25+
},
26+
"presentation": {
27+
"reveal": "always",
28+
"panel": "dedicated",
29+
"clear": true,
30+
"focus": true,
31+
"group": "setup"
32+
},
33+
},
34+
{
35+
// rsync
36+
"label": "pub2orin-dw514",
37+
"type": "shell",
38+
"command": "rsync -avzhlce ssh ./target/dw514/install/usr nvidia@192.168.137.113:~/zhensheng/orin_ws/nv_driveworks/target/dw514/ -Pi --update --inplace --delete-delay --compress-level=3 --safe-links --munge-links --max-delete=5000",
39+
"options": {
40+
"cwd": "${workspaceFolder}"
41+
},
42+
"args": [],
43+
"problemMatcher": {
44+
"fileLocation": [
45+
"autoDetect",
46+
"${workspaceFolder}"
47+
]
48+
},
49+
"group": {
50+
"kind": "none",
51+
"isDefault": false
52+
},
53+
"presentation": {
54+
"reveal": "always",
55+
"panel": "dedicated",
56+
"clear": true,
57+
"focus": true,
58+
"group": "setup"
59+
},
60+
},
61+
],
62+
"inputs": [
63+
{
64+
"type": "pickString",
65+
"id": "cgfappType",
66+
"description": "What type of cgfapp do you want to run?",
67+
"options": [
68+
"team_node/runHelloworld",
69+
],
70+
"default": "team_node/runHelloworld"
71+
},
72+
{
73+
"type": "pickString",
74+
"id": "sampleAppType",
75+
"description": "What type of sample do you want to run?",
76+
"options": [
77+
"sample_hello_world",
78+
"sample_camera",
79+
"sample_renderer",
80+
],
81+
"default": "sample_hello_world"
82+
},
83+
{
84+
"type": "promptString",
85+
"id": "libName",
86+
"description": "What type of lib do you want to search?",
87+
"default": "libnvsipl_devblk_campwr_max20087_fusa",
88+
},
89+
]
90+
}

README_en.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,46 @@ set(DRIVEWORKS_DIR /usr/local/driveworks)
1414
rm -rf ./target/dw514
1515
cmake -B ./target/dw514/ -DCMAKE_TOOLCHAIN_FILE=/usr/local/driveworks/samples/cmake/Toolchain-V5L.cmake -DVIBRANTE_PDK=/drive/drive-linux -S ./driveworks-5.14/samples
1616
make -C ./target/dw514/ -j $(($(nproc)-1)) install
17+
# the installation folder is target/dw514/install/usr/local/driveworks/samples
1718
```
1819

1920
### build cgf schedule
2021

22+
the schedule yaml, stm, html are auto-generated in `target/dw514/schedule/cgf_custom_nodes`, which is defined in `driveworks-5.14/samples/src/cgf_nodes/CMakeLists.txt`
23+
24+
```sh
25+
target/dw514/schedule/cgf_custom_nodes/DWCGFHelloworld__standardSchedule.stm
26+
target/dw514/schedule/cgf_custom_nodes/DWCGFHelloworld__standardSchedule.yaml
27+
```
28+
29+
### release to orin
30+
31+
cp the install folder `target/dw514/install/usr/local/driveworks/samples` to drive-orin-machine
32+
33+
the recommended way is to use rsync, first of all install the rsync in orin.
34+
35+
```sh
36+
sudo apt install rsync
37+
```
38+
39+
```sh
40+
rsync -avzhlce ssh ./target/dw514/install nvidia@192.168.137.113:~/zhensheng/orin_ws/nv_driveworks/target/dw514/ \
41+
-Pi \
42+
--update \
43+
--inplace --delete-delay --compress-level=3 --safe-links --munge-links \
44+
--max-delete=5000
45+
```
46+
2147
### run cgf app
2248

49+
```sh
50+
# in orin
51+
cd ~/zhensheng/orin_ws/nv_driveworks/target/dw514/usr/local/driveworks/samples
52+
sudo ./bin/cgf_custom_nodes/example/runHelloworld.sh
53+
# config the ip stack if it prompts
54+
# check the logFolder log, remove the log before next running app
55+
sudo rm -rf ./LogFolder/
56+
```
57+
58+
### modify the graph and run again (nvsci bug)
59+

driveworks-5.14/samples/src/cgf_nodes/CMakeLists.txt

Lines changed: 136 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,23 @@
3232

3333
project(cgf_custom_nodes)
3434

35+
set(DRIVEWORKS_PATH "/usr/local/driveworks")
36+
set(NSIGHT_SYS_PATH "/opt/nvidia/nsight-systems/2023.1.3/")
37+
set(DWCGF_RUNNER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/bin)
38+
set(DWCGF_NODES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/nodes)
39+
set(DWCGF_GRAPHS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/graphs)
40+
set(DWCGF_APPS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/graphs/apps)
41+
set(DWCGF_NVSCI_RST ${CMAKE_CURRENT_SOURCE_DIR}/bin/nvsciipc_reset)
42+
43+
set(DWCGF_SCHE_DIR ${SDK_BINARY_DIR}/schedule/${PROJECT_NAME})
44+
file(MAKE_DIRECTORY ${DWCGF_SCHE_DIR})
45+
set(DWCGF_DATA_DIR ${CMAKE_CURRENT_SOURCE_DIR}/data)
46+
47+
file(GLOB_RECURSE DWCGF_NODES_FILES
48+
${DWCGF_NODES_DIR}/*.hpp
49+
${DWCGF_NODES_DIR}/*.cpp
50+
)
51+
3552
#-------------------------------------------------------------------------------
3653
# Project files
3754
#-------------------------------------------------------------------------------
@@ -61,8 +78,126 @@ set(LIBRARIES
6178
dwframework
6279
)
6380

81+
file(GLOB_RECURSE DWCGF_GRAPHS_FILES
82+
${DWCGF_GRAPHS_DIR}/*.yaml
83+
${DWCGF_GRAPHS_DIR}/*.json
84+
)
85+
# json-validater execute during configuring time.
86+
execute_process(
87+
COMMAND ${DRIVEWORKS_PATH}/tools/schema/validate_cgfdescriptors.py --ignore-order --ignore-array-order --ignore-indentation ${DWCGF_GRAPHS_DIR}
88+
WORKING_DIRECTORY ${DWCGF_GRAPHS_DIR}
89+
TIMEOUT 3
90+
RESULT_VARIABLE _EXIT_CODE
91+
OUTPUT_VARIABLE _OUTPUT_CODE
92+
COMMAND_ECHO STDOUT
93+
# OUTPUT_QUIET
94+
# ERROR_QUIET
95+
# ECHO_OUTPUT_VARIABLE
96+
# https://cmake.org/cmake/help/v3.16/command/execute_process.html
97+
)
98+
message(STATUS "${_OUTPUT_CODE}")
99+
if(NOT _EXIT_CODE EQUAL 0)
100+
message(FATAL_ERROR "validate_cgfdescriptors.py failed: please check the json files.")
101+
endif()
102+
64103
#-------------------------------------------------------------------------------
65104
# Custom nodes shared library
66105
#-------------------------------------------------------------------------------
67-
add_library(${PROJECT_NAME} SHARED ${SOURCES})
106+
add_library(${PROJECT_NAME} SHARED ${SOURCES} ${DWCGF_NODES_FILES})
68107
target_link_libraries(${PROJECT_NAME} PRIVATE ${LIBRARIES})
108+
target_include_directories(${PROJECT_NAME}
109+
PUBLIC
110+
include
111+
${CUDA_DIR}/include
112+
${DW_ROOT}/include
113+
${DW_ROOT}/include/3rdparty
114+
${DW_ROOT}/include/dwshared/dwfoundation
115+
${DW_ROOT}/include/dwshared/dwtrace
116+
${NSIGHT_SYS_PATH}/target-linux-tegra-armv8/nvtx/include)
117+
118+
# cgf generation
119+
set(GW_MODULE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
120+
set(GW_MODULE_BINARY_DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/${PROJECT_NAME}/)
121+
set(GW_MODULE_LIBRARY_DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/${PROJECT_NAME}/)
122+
set(GW_MODULE_ARCHIVE_DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/${PROJECT_NAME}/)
123+
set(GW_MODULE_DATA_DESTINATION ${CMAKE_INSTALL_PREFIX}/data/${PROJECT_NAME})
124+
set(GW_MODULE_GRAPHS_DESTINATION ${CMAKE_INSTALL_PREFIX}/graphs/${PROJECT_NAME})
125+
126+
set(DWCGF_APP_LIST
127+
example/appHelloworld;
128+
)
129+
foreach(DWCGF_APP ${DWCGF_APP_LIST})
130+
get_filename_component(DWCGF_APP_DIRNAME ${DWCGF_APPS_DIR}/${DWCGF_APP} NAME)
131+
get_filename_component(DWCGF_APP_FOLDERPATH ${DWCGF_APPS_DIR}/${DWCGF_APP} PATH)
132+
get_filename_component(DWCGF_APP_FOLDERNAME ${DWCGF_APP_FOLDERPATH} NAME)
133+
string(REGEX REPLACE "^app" "" DWCGF_APP_TYPE ${DWCGF_APP_DIRNAME})
134+
set(DWCGF_FILE_PREFIX DWCGF${DWCGF_APP_TYPE})
135+
set(DWCGF_RUNNER ${DWCGF_RUNNER_DIR}/${DWCGF_APP_FOLDERNAME}/run${DWCGF_APP_TYPE}.sh)
136+
set(DWCGF_YAML ${DWCGF_SCHE_DIR}/${DWCGF_FILE_PREFIX}__standardSchedule.yaml)
137+
set(DWCGF_YAML_LOG ${DWCGF_SCHE_DIR}/${DWCGF_FILE_PREFIX}__standardSchedule.yaml.log)
138+
set(DWCGF_STM ${DWCGF_SCHE_DIR}/${DWCGF_FILE_PREFIX}__standardSchedule.stm)
139+
set(DWCGF_STM_LOG ${DWCGF_SCHE_DIR}/${DWCGF_FILE_PREFIX}__standardSchedule.stm.log)
140+
set(DWCGF_SVG ${DWCGF_SCHE_DIR}/${DWCGF_FILE_PREFIX}__standardSchedule.svg)
141+
set(DWCGF_SVG_LOG ${DWCGF_SCHE_DIR}/${DWCGF_FILE_PREFIX}__standardSchedule.svg.log)
142+
set(DWCGF_HTML ${DWCGF_SCHE_DIR}/${DWCGF_FILE_PREFIX}__standardSchedule.html)
143+
set(DWCGF_HTML_LOG ${DWCGF_SCHE_DIR}/${DWCGF_FILE_PREFIX}__standardSchedule.html.log)
144+
# app2yaml
145+
add_custom_command(
146+
OUTPUT ${DWCGF_YAML}
147+
COMMAND ${DRIVEWORKS_PATH}/tools/descriptionScheduleYamlGenerator/descriptionScheduleYamlGenerator.py --app ${DWCGF_APPS_DIR}/${DWCGF_APP}/${DWCGF_FILE_PREFIX}.app.json --output ${DWCGF_YAML} 2>&1 | tee ${DWCGF_YAML_LOG}
148+
WORKING_DIRECTORY ${DWCGF_SCHE_DIR}
149+
MAIN_DEPENDENCY ${DWCGF_APPS_DIR}/${DWCGF_APP}/${DWCGF_FILE_PREFIX}.app.json
150+
DEPENDS ${DWCGF_GRAPHS_FILES}
151+
COMMENT "app2yaml[${DWCGF_APP_TYPE}]...!"
152+
VERBATIM
153+
)
154+
add_custom_target(${PROJECT_NAME}_yaml${DWCGF_APP_TYPE} ALL DEPENDS ${DWCGF_YAML})
155+
# yaml2stm
156+
add_custom_command(
157+
OUTPUT ${DWCGF_STM}
158+
COMMAND ${DRIVEWORKS_PATH}/tools/stmcompiler -i ${DWCGF_YAML} -k 2>&1 | tee ${DWCGF_STM_LOG}
159+
WORKING_DIRECTORY ${DWCGF_SCHE_DIR}
160+
MAIN_DEPENDENCY ${DWCGF_YAML}
161+
DEPENDS ${PROJECT_NAME}_yaml${DWCGF_APP_TYPE}
162+
COMMENT "yaml2stm[${DWCGF_APP_TYPE}]...!"
163+
VERBATIM
164+
)
165+
add_custom_target(${PROJECT_NAME}_stm${DWCGF_APP_TYPE} ALL DEPENDS ${DWCGF_STM})
166+
# yaml2svg
167+
# add_custom_command(
168+
# OUTPUT ${DWCGF_SVG}
169+
# COMMAND ${DRIVEWORKS_PATH}/tools/stmvizgraph -i ${DWCGF_YAML} -o ${DWCGF_SVG} 2>&1 | tee ${DWCGF_SVG_LOG}
170+
# WORKING_DIRECTORY ${DWCGF_SCHE_DIR}
171+
# MAIN_DEPENDENCY ${DWCGF_YAML}
172+
# DEPENDS ${PROJECT_NAME}_yaml${DWCGF_APP_TYPE}
173+
# COMMENT "yaml2svg[${DWCGF_APP_TYPE}]...!"
174+
# VERBATIM
175+
# )
176+
# add_custom_target(${PROJECT_NAME}_svg${DWCGF_APP_TYPE} ALL DEPENDS ${DWCGF_SVG})
177+
# stm2html
178+
add_custom_command(
179+
OUTPUT ${DWCGF_HTML}
180+
COMMAND ${DRIVEWORKS_PATH}/tools/stmcompiler -i ${DWCGF_YAML} -o ${DWCGF_STM} -k 2>&1 | tee ${DWCGF_STM_LOG}
181+
COMMAND ${DRIVEWORKS_PATH}/tools/stmvizschedule -i ${DWCGF_STM} -o ${DWCGF_HTML} 2>&1 | tee ${DWCGF_HTML_LOG}
182+
WORKING_DIRECTORY ${DWCGF_SCHE_DIR}
183+
MAIN_DEPENDENCY ${DWCGF_STM}
184+
DEPENDS ${PROJECT_NAME}_stm${DWCGF_APP_TYPE}
185+
COMMENT "stm2html[${DWCGF_APP_TYPE}]...!"
186+
VERBATIM
187+
)
188+
add_custom_target(${PROJECT_NAME}_html${DWCGF_APP_TYPE} ALL DEPENDS ${DWCGF_HTML})
189+
install(FILES ${DWCGF_YAML} DESTINATION "${GW_MODULE_BINARY_DESTINATION}")
190+
# install(FILES ${DWCGF_SVG} DESTINATION "${GW_MODULE_BINARY_DESTINATION}")
191+
install(FILES ${DWCGF_STM} DESTINATION "${GW_MODULE_BINARY_DESTINATION}")
192+
install(FILES ${DWCGF_HTML} DESTINATION "${GW_MODULE_BINARY_DESTINATION}")
193+
install(PROGRAMS ${DWCGF_RUNNER} DESTINATION ${GW_MODULE_BINARY_DESTINATION}/${DWCGF_APP_FOLDERNAME})
194+
endforeach()
195+
196+
# ------------------------------------------------------------------------------
197+
# Install target
198+
# ------------------------------------------------------------------------------
199+
sdk_add_sample(${PROJECT_NAME})
200+
201+
install(DIRECTORY ${DWCGF_GRAPHS_DIR}/ DESTINATION ${GW_MODULE_GRAPHS_DESTINATION})
202+
install(DIRECTORY ${DWCGF_DATA_DIR}/ DESTINATION ${GW_MODULE_DATA_DESTINATION})
203+
install(PROGRAMS ${DWCGF_NVSCI_RST} DESTINATION ${GW_MODULE_BINARY_DESTINATION})

0 commit comments

Comments
 (0)