云服务器内容精选

  • 参数说明 表1 参数说明 参数名称 参数描述 是否必选 默认值 --host host_ip:指定Host侧的IP地址。 port:指定端口号。 是 port默认值为22118。 --api params包括以下项: device_info: 与Host连接的Device的列表 device_status: 仅支持查询开发者板的摄像头状态(0表示摄像头不存在,1摄像头存在),如返回100,则其中1表示3559芯片,后两个0表示两个摄像头不存在。 board_id: 仅支持查询开发者板的ID。 sys_version: 仅支持查询开发者板的产品版本。 是 -
  • 参数说明 表1 参数说明 参数名称 参数描述 是否必选 默认值 --host host_ip:指定Host侧的IP地址。 port:指定端口号。 是 port默认值为22118。 --device 如果Host连接了多个Device,则可以通过--device deviceID指定具体的Device。如果不指定Device,则默认指定deviceID为0的Device。 否 deviceID默认值为0。 --file source_dir:指定存放源文件的路径,包含文件名。执行IDE-daemon-client命令的用户必须对该文件路径有读写权限。 dest_dir:指定Device侧用于存放目的文件的路径,包含文件名。必须指定存放文件的路径,否则命令会执行失败。此处文件存放的路径只能是“/home/HwHiAiUser/hdcd”下的目录,在命令中只需指定相对路径,例如目的文件的路径为“/home/HwHiAiUser/hdcd/ide_daemon/B.java”,在命令中只需将file参数指定为“ide_daemon/B.java”。 是 -
  • 参数说明 表1 参数说明 参数名称 参数描述 是否必选 默认值 --host host_ip:指定Host侧的IP地址。 port:指定端口号。 是 port默认值为22118。 --hostcmd 指定需要Host侧执行的命令,命令列表请参见command列表。 除date命令外,其它command命令必须放在单引号或双引号中。如果command命令中已有双引号,则将command命令放在单引号中;如果command命令中已有单引号,则将command命令放在双引号中。 是 -
  • 参数说明 表1 参数说明 参数名称 参数描述 是否必选 默认值 --host host_ip:指定Host侧的IP地址。 port:指定端口号。 是 port默认值为22118。 --get source_dir:指定Host侧源文件的路径,包含文件名。此处文件存放的路径只能是以下路径: ~/ide_daemon ~/HIAI_PROJE CTS ~/HIAI_DATANDMODELSET /opt/mini /var/log/hisi_logs /var/dlog dest_dir:指定存放目的文件的路径,包含文件名。执行IDE-daemon-client命令的用户必须对该文件路径有读写权限。 是 -
  • 简介 执行IDE-daemon-client命令后,将指定的命令发送Host侧,如果命令需要在Host侧执行,则直接执行;如果命令需要在Device侧执行,则再由Host侧连接Device,然后在Device侧执行命令,具体请参见《IDE-daemon-client命令参考》。 图1 IDE-daemon总体结构 目前IDE-daemon-client命令支持在Host侧服务器(PCIe形态)上执行,也可以在DDK所在的服务器上执行: 如果在Host侧服务器上,您可以HwHiAiUser用户登录Host侧服务器,直接执行IDE-daemon-client命令。下文以此为例。 如果安装了DDK,可以在DDK服务器上执行IDE-daemon-client命令。 DDK部署在单独的服务器上,不与Host侧服务器共用,您可以DDK安装用户登录服务器,先执行如下命令设置环境变量,再执行IDE-daemon-client命令。其中,“DDK安装目录”需根据实际情况替换。 export LD_LIBRARY_PATH=DDK安装目录/ddk/uihost/libexport PATH=$PATH:DDK安装目录/ddk/uihost/bin DDK部署在Host侧服务器上且DDK安装用户为HwHiAiUser,您可以HwHiAiUser用户登录服务器,直接执行IDE-daemon-client命令,不用设置环境变量。 如果您直接复制下文中的命令,由于PDF文档格式的限制,超过单行的命令,会自动换行,因此您需要手动将多行命令合并成一行,参数之间以空格分割。
  • 使用示例 以Mind Studio安装用户登录Mind Studio服务器。 执行如下命令设置环境变量。 export LD_LIBRARY_PATH=~/tools/che/ddk/ddk/uihost/libexport PATH=$PATH:~/tools/che/ddk/ddk/uihost/bin 执行IDE-daemon-client命令。 此处是示例命令,需要根据实际情况修改。 --host参数后的“xx.xx.xx.xx”需要替换为实际的Host服务器的IP地址。 /home/ascend表示Mind Studio安装用户家目录,需要根据实际情况替换。 app_dir后的“/xxx/xxx”需替换为Host侧app所在路径,例如:“/home/HwHiAiUser/HIAI_PROJECTS/workspace_mind_studio/testProject/out”。 app需要替换为app_dir指定目录下的应用程序名,例如:workspace_mind_studio_testProject。 result_dir后的路径需替换为Host服务器上已存在的路径。执行命令后,您可以在result_dir指定的目录下查看采集结果。 IDE-daemon-client --host xx.xx.xx.xx:22118 --profile "{\"ddk_dir\": \"/home/ascend/tools/che/ddk/ddk\",\"app\": \"workspace_mind_studio_testProject\",\"app_dir\": \"/home/HwHiAiUser/HIAI_PROJECTS/workspace_mind_studio/testProject/out\", \"umode\": \"MIND\",\"result_dir\": \"/home/ascend/tools/projects/test_ycm\",\"peripheral_profiling\": \"\",\"ts_cpu_profiling\": \"off\",\"ai_cpu_profiling\": \"off\",\"rts_profiling\": \"on\",\"ai_core_profiling_mode\": \"\",\"ai_core_profiling\": \"off\",\"hiai_engine_profiling\": \"off\",\"framework_profiling\": \"off\",\"ctrl_cpu_profiling\": \"off\",\"profiling_mode\": \"online\",\"llc_profiling\": \"off\",\"ddr_profiling\": \"on\",\"deviceid\": \"0\", \"ddr_profiling_events\": \"read,write\", \"hiai_engine_profiling\": \"on\", \"analysis_target\": \"Launch Application\"}" 关于各采集项的含义请参见《Ascend 310 Mind Studio开发辅助工具》中的“Profiling”章节。
  • 前提条件 已安装Mind Studio,且已提前将Mind Studio侧编译后的工程的相关文件复制到Host侧的对应目录下。 例如,Mind Studio侧的工程名是testProject,工程编译后的文件在“Mind Studio安装用户家目录/tools/projects/testProject/out”目录下,则需要将“Mind Studio安装用户家目录/tools/projects/testProject/out”目录下的文件上传到Host侧的“/home/HwHiAiUser/HIAI_PROJECTS/workspace_mind_studio/testProject/out”目录下,将可执行文件名称修改为workspace_mind_studio_工程名称(例如:workspace_mind_studio_testProject),同时,还需要执行chmod +x workspace_mind_studio_testProject命令给可执行文件加执行权限。
  • 参数说明 表1 参数说明 参数名称 参数描述 是否必选 默认值 --host host_ip:指定Host侧的IP地址。 port:指定端口号。 是 port默认值为22118。 --device 如果Host连接了多个Device,则可以通过--device deviceID指定具体的Device。如果不指定Device,则默认指定deviceID为0的Device。 否 deviceID默认值为0。 --cmd 指定需要Device侧执行的命令,命令列表请参见command列表。 除date命令外,其它command命令必须放在单引号或双引号中。如果command命令中已有双引号,则将command命令放在单引号中;如果command命令中已有单引号,则将command命令放在双引号中。 是 -
  • 使用示例 以HwHiAiUser用户登录Host侧服务器。 执行命令,设置Host侧和Device侧的日志级别。 IDE-daemon-client --host xx.xx.xx.xx:22118 --log 'SetLogLevel(0)[error]'IDE-daemon-client --host xx.xx.xx.xx:22118 --log 'SetLogLevel(1)[S LOG :error]'IDE-daemon-client --host xx.xx.xx.xx:22118 --log 'SetLogLevel(2)[enable]' xx.xx.xx.xx需要替换为实际的Host的IP地址。 moduleName通过枚举形式定义,包括如下值: enum { DLOG = 0, // Dlog SLOG, // Slog IDEDD, // IDE daemon device IDEDH, // IDE daemon host LOGAGTH, // log agent host HCCL, // HCCL FMK, // Framework HIAIENGINE, // Matrix DVPP, // DVPP RUNTIME, // Runtime CCE, // CCE #if (OS_TYPE == LINUX) HDC, // HDC #else HDCL, // HDCL windows has a def with the same name HDC, so change HDC to HDCL #endif DRV, // Driver MDCCONTROL, // Mdc control MDCFUSION, // Mdc fusion MDCLOCATION, // Mdc location MDCPERCEPTION, // Mdc perception MDCMOP, MDCFSM, MDCCOMMON, MDCMONITOR, MDCBSWP, // MDC basesoftware platform MDCDEFAULT, // MDC UNDEFINE MD CS C, // MDC spatial cognition MDCBP, MDCTF, MLL, DEVMM, // Dlog memory managent KERNEL, // Kernel MDCSMCMD, // sm_control_cmd MDCSCREEN, // parking_spot_screen LIBMEDIA, // Libmedia CCECPU, // ai cpu ASCENDDK, // AscendDK ROS, // ROS HCCP, RoCE, TEFUSION, PROFILING, // Profiling DP, // Data Preprocess APP, // User Application call HIAI_ENGINE_LOG INVLID_MOUDLE_ID };
  • 参数说明 表1 参数说明 参数名称 参数描述 是否必选 默认值 --host host_ip:指定Host侧的IP地址。 port:指定端口号。 是 port默认值为22118。 --device 如果Host连接了多个Device,则可以通过--device deviceID指定具体的Device。如果不指定Device,则默认指定deviceID为0的Device。 否 deviceID默认值为0。 --log params包括以下项: SetLogLevel 设置全局日志级别,0表示全局级日志级别,1表示模块级日志级别,2表示event日志级别(在设置event日志级别时,“enable”表示开启event日志级别,“disable”表示不开启event日志级别)。 SetLogLevel[moduleName:level] 设置指定模块日志级别 level:error, info, warning, debug, null(表示不打印日志) moduleName: 模块名称 是 -
  • 算子调度与编译 如下代码所示,当定义完计算逻辑后,使用auto_schedule机制,便可以自动生成相应的调度,此处通过TVM的打印机制可以看到相应计算的中间表示。配置信息包括是否需要打印、编译以及算子内核名以及输入、输出张量。 sch = generic.auto_schedule(res)config = { "print_ir": need_print, "need_build": need_build, "name": kernel_name, "tensor_list": [data, res]}te.lang.cce.cce_build_code(sch, config) 使用“generic”的“auto_schedule”接口,自动生成相应的调度(schedule),“auto_schedule”接口的参数为算子的输出张量。 schedule可以理解为:描述的计算过程如何在硬件上高效执行。就是把相关的计算和硬件设备上的相关指令对应起来。schedule对象中包含一个“中间表示”(IR),它用一种类似伪代码来描述计算过程,可以通过“need_print”参数把它打印出来进行查看。 “tensor_list”(张量列表)中保存输入张量、输出张量,这个顺序需要严格按照算子本身的输入、输出数据顺序排列。 例如:"tensor_list": [tensor_a, tensor_b, res],tensor_a与tensor_b是输入张量,res为输出张量。 根据调度和配置使用“te.lang.cce”提供的“cce_build_code”接口来进行算子编译,算子编译过程会根据输入的数据形状、类别、算子参数等编译出专用内核,这个过程在离线模型生成器转换模型时发生。 sch:生成的算子计算schedule对象。 config:编译参数配置的map。 编译完成后,会生成算子目标文件.o文件(运行目标为AI Core的算子)或者.so文件(运行目标为AI CPU的算子)与算子描述文件.json文件。 父主题: 算子代码实现
  • 构造输入数据文件 运行单算子需要构造算子输入数据,并以二进制格式保存到算子工程下。 以DDK安装用户进入自定义算子工程的算子代码目录下。 cd $HOME/tools/projects/customop_te/operator/ 执行样例数据生成脚本,生成reduction算子的样例数据文件。 python data_gen.py reduction 在算子工程中会生成如图1所示数据文件。 图1 样例数据生成 数据文件说明如表1所示。 表1 数据文件说明 数据文件 说明 Reduction_input_2_3_4_sum_axis_1.data reduction算子的二进制格式输入数据文件。 Reduction_input_2_3_4_sum_axis_1.txt 将reduction算子的二进制格式文件以txt文件的方式显示出来,方便用户查看结果。 Reduction_output_2_3_4_sum_axis_1.data reduction算子二进制格式输出数据验证文件,用于验证算子运行后的输出结果是否正确。 Reduction_output_2_3_4_sum_axis_1.txt 将reduction算子的二进制格式输出数据文件以txt文件的方式显示出来,方便用户查看结果。 父主题: 算子运行验证
  • 算子注册 框架管理器(Framework)提供REGISTER_CUSTOM_OP宏,按照指定的算子名称完成算子的注册。 自定义算子的注册代码如下所示: REGISTER_CUSTOM_OP("test_layer") .FrameworkType(CAFFE) .OriginOpType("Test") .ParseParamsFn(ParseParamsxx) .InferShapeAndTypeFn(InferShapeAndTypexx) .TEBinBuildFn(BuildTeBinxx) .ImplyType(ImplyType::TVM) .Formats({DOMI_TENSOR_NC1HWC0}, {DOMI_TENSOR_NC1HWC0}) .WeightFormats({DOMI_TENSOR_FRACTAL_Z, DOMI_TENSOR_NC1HWC0}); 其中: REGISTER_CUSTOM_OP:注册自定义算子,"test_layer"作为离线模型文件中的算子名称,可以任意命名但不能和已有的算子命名冲突。 FrameworkType:不同框架的算子参数解析逻辑不同,因此对于不同框架模型需要有不同的插件,在插件的注册代码需要表明对应的框架。当前请配置为CAFFE。 OriginOpType:算子类型,需要与Caffe Prototxt中定义的算子类型保持一致,否则无法正常解析,内置的caffe.proto文件路径为DDK安装路径下的“/include/inc/custom/proto/caffe/caffe.proto”。 ParseParamsFn:用来注册解析模型的函数,“ParseParamsxx”即解析算子中实现的函数,针对Caffe框架开发插件时需要,若自定义的算子为重写昇腾AI处理器已经支持的算子,则此步骤可跳过;若自定义的算子为昇腾AI处理器不支持的算子,则此步骤必选。 InferShapeAndTypeFn:用来注册形状和类别推断函数,“InferShapeAndTypexx”即推理算子输出张量描述中实现的函数。 TEBinBuildFn:用来注册TE算子编译函数,“BuildTeBinxx”即编译算子中实现的函数。 ImplyType:指定算子的实现方式,ImplyType::TVM表示该算子是TE算子。 Formats:算子输入数据与输出数据的数据排布格式,其中第一个列表是输入数据格式列表,第二个列表为输出数据格式列表,若输入数据有多个,请在第一个列表中列出每一个输入数据的排布格式。例如若有两个输入数据,分别是NC1HWC0格式,则Formats函数调用方式如下: .Formats({DOMI_TENSOR_NC1HWC0, DOMI_TENSOR_NC1HWC0}, {DOMI_TENSOR_NC1HWC0}) 详细说明请参见《Framework API参考》中的“Formats函数”。 WeightFormats:设置算子的权重数据的排布格式,支持的数据格式类型请参见《Framework API参考》中的“WeightFormats函数”。例如Convolution的filter的数据排布格式是fractal_Z,bias的数据排布格式是NC1HWC0。 如果模型转换时开启量化开关,需要在此接口中增加Framework处理时新增的常量数据的格式,当前Framework支持的量化算子有Conv,FC与Depthwise Conv,若这几个算子在模型转换时开启了量化开关,则需要在WeightFormats接口的参数列表最后增加6个DOMI_TENSOR_NC1HWC0的数据格式(量化时Framework新增了6个数据排布格式为NC1HWC0的常量,此处不详细介绍),开启量化后的Convolution的WeightFormats接口示例如下: .WeightFormats({DOMI_TENSOR_FRACTAL_Z, DOMI_TENSOR_NC1HWC0, DOMI_TENSOR_NC1HWC0, DOMI_TENSOR_NC1HWC0, DOMI_TENSOR_NC1HWC0,DOMI_TENSOR_NC1HWC0, DOMI_TENSOR_NC1HWC0, DOMI_TENSOR_NC1HWC0}) 父主题: 插件代码实现
  • 函数声明 算子编译函数的声明如下所示: Status BuildTeBinxx(const ge::Operator& op, TEBinInfo& te_bin_info) 其中: BuildTeBinxx:函数名称,用户自定义,需要保持唯一。 op:目标算子模型,适配昇腾AI处理器的离线模型的算子数据结构,保存算子信息,Operator类的详细描述请参见《GE API参考》中的“Operator类接口”。 te_bin_info:存储自定义算子二进制文件路径、算子描述文件路径以及DDK的版本信息。TEBinInfo结构体的详细描述请参见《Framework API参考》中的“TEBinBuildFn函数”。
  • 输出张量与输入张量形状相同的算子 对于输出张量与输入张量形状相同的算子,可以直接将输入张量的描述插入输出张量描述所在的向量空间中。 代码示例如下所示: v_output_desc.push_back(op.GetInputDesc(0)); 其中GetInputDesc是Operator类中根据算子Input名称或者Input索引获取输入张量描述的接口,详细的接口介绍请参见《GE API参考》中的“Operator类接口”。