> 文章列表 > 【边缘计算】登临(Goldwasser-UL64)BW-BR2边缘设备配置指南

【边缘计算】登临(Goldwasser-UL64)BW-BR2边缘设备配置指南

【边缘计算】登临(Goldwasser-UL64)BW-BR2边缘设备配置指南

目录

    • 开箱配置
    • 激活SDK环境
    • 测试cuda兼容性

开箱配置

更改盒子root用户密码:

sudo passwd root

(密码同为root)
切换到root用户身份:

su root

查看ssh的状态,没有返回说明没有启动

sudo ps -e|grep ssh

此时说明ssh服务已启动。
更改ssh配置文件

vim /etc/ssh/sshd_config

填加以下内容:

Port 10002
PermitRootLogin yes #允许root用户使用ssh登录

重启服务:

sudo service ssh restart

对应vscode的远程配置为:

Host denglin
HostName 192.168.25.143
Port 18888
User root
StrictHostKeyChecking no

激活SDK环境

source /dl/python/bin/activate
source /dl/sdk/env.sh

每次使用cuda都需激活环境变量,推荐将相关配置写入~/.bashrc内
如果linux命令行不再显示当前路径,则应添加:

PS1='\\u@\\h:\\w\\$ '

解决不显示路径的问题。
使用dlsmi命令得出基本配置:
【边缘计算】登临(Goldwasser-UL64)BW-BR2边缘设备配置指南

测试cuda兼容性

cd /dl/sdk/samples/cuda/vectorAdd_nvrtc/
make
/dl/sdk/samples/cuda/vectorAdd_nvrtc/vector_add_nvrtc

进行编译运行即可
盒子中一个标准的cmakelist文件结构如下:

cmake_minimum_required(VERSION 3.5)
project(Vector_ADD_Nvrtc)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/workspace)
set(SDK_DIR $ENV{DLICC_PATH}/../)
set(DLCC_TARGET_SHORT_NAME dltmp)
set(DLCC_TARGET_FULL_NAME libdltmp.a)
# 根据需要设置相应的编译选项,更多的dlcc 编译选项请参考 dlcc --help
set(CXX_FLAGS -std=c++11 -fPIC -fpermissive)
set(DLCC_CXX_FLAGS --cuda-gpu-arch=dlgpuc64 -x cuda  -std=c++11 -fpermissive -fPIC)# 指定cpp文件和cu文件,分别指定gcc和dlcc去编译
file(GLOB_RECURSE cpp_srcs ${PROJECT_SOURCE_DIR}/src/*.cpp)
file(GLOB_RECURSE cuda_srcs ${PROJECT_SOURCE_DIR}/src/*.cu)# 打印变量
message("cpp_srcs: ${cpp_srcs}")
message("cuda_srcs: ${cuda_srcs}")# 添加可执行目标,需要额外链接dlcc编译生成的临时静态库
link_directories(${SDK_DIR}/lib ${CMAKE_BINARY_DIR})
add_executable(${PROJECT_NAME} ${cpp_srcs})
target_compile_options(${PROJECT_NAME} PRIVATE -I${SDK_DIR}/include -I${CMAKE_SOURCE_DIR} ${CXX_FLAGS})
target_link_libraries(${PROJECT_NAME} PRIVATE curt ${DLCC_TARGET_SHORT_NAME})# 添加pre-build和post-build,使用dlcc并指定相应的编译选项编译出obj文件并在之后删除这些obj文件
foreach (cu_file ${cuda_srcs})set(tmp ${cu_file}.o)string(REPLACE ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} cu_obj "${tmp}")string(REGEX MATCH "/.*/" cu_dir ${cu_obj})set(cu_objs ${cu_objs} ${cu_obj})add_custom_command(TARGET ${PROJECT_NAME} PRE_BUILDCOMMAND mkdir -p ${cu_dir})add_custom_command(TARGET ${PROJECT_NAME} PRE_BUILDCOMMAND dlcc ${DLCC_CXX_FLAGS}  -o ${cu_obj} -c ${cu_file})add_custom_command(TARGET ${PROJECT_NAME} POST_BUILDCOMMAND rm ${cu_obj})
endforeach()# 将dlcc编译出来的obj文件打包成临时静态库,编译出可执行程序后删除
add_custom_command(TARGET ${PROJECT_NAME} PRE_BUILDCOMMAND ar cqs ${DLCC_TARGET_FULL_NAME} ${cu_objs})
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILDCOMMAND rm ${DLCC_TARGET_FULL_NAME})

文档在/sdk/documents/下。