• [技术干货] VDC Server API 的问题的回复
    1,看以下 header 里面是不是没有加token。先用会议管理员账户,取token登录,这里示例用fn333-2的会议管理员账户2,取token成功后,再取ticket取ticket要注意,url参数里面带上username,就是第一步里面的登录账号header里面Token参数要填第一步取到的token值2、有没有直接调视频会议的接口,相当于 Could Link 中开视频会议,请详列接口参数。4.3.1.1 预约会议。这个接口可以直接调视频会议,参数设置即时会议即可3、预约会议中最小请求参数应该是哪些。见附件《简单预约会议body.txt》0%简单预约会议body.txt (418 B)这个预约会议参数,我写了一个简单的预约会议,只有一个测试sip会场。先调通简单会议,再根据需要增加其他接口参数。4、为何主流,为何辅流主流就是终端入会以后,收发会议中的视频音频码流,这是主流。除此以外,部分会议可能会开启辅流,也就是说除了发送主流以外还会发一路其他视频码流作为辅流,一般辅流发送的内容比如胶片等共享材料5、什么叫多点会议请求?点对点会议一般指只有两方接入会议,其实就是点对点通话或视频。多点就是3方或3方以上的音视频通话。或者理解预约会议的请求参数中如果会场数量大于等于3个,就是多点会议请求6、StreamServiceReq 的作用?开会参数中指定会议一些设置,像这种StreamServiceReq 类型不清楚定义的,可以在接口文档中直接搜索,一般类型定义都在前面这里面就能看到 StreamServiceReq 实际上就是设置会议是否支持直播、录播。自动录播、语音录播,直播地址等这些参数非必填参数,如果这个参数不填,系统有默认设置
  • [问题求助] VDC Server API 的问题
    1、会议控制,需要获取 Ticket, 依据 获取 Ticket的接口,用会议管理员的账号进行 测试,显示 没有权限,请详见下面第三张图。获取Ticket 的接口如下: 测试如下: 2、有没有直接调视频会议的接口,相当于 Could Link 中开视频会议,请详列接口参数。 3、预约会议中最小请求参数应该是哪些?为何文档中 选填的字段,不填却通不过? 4、为何主流,为何辅流, 5、什么叫多点会议请求? 6、StreamServiceReq 的作用?
  • [交流吐槽] 鸿蒙14天-驱动子系统开发笔记
    PWM   相关API接口介绍 LED灯对应GPIO引脚输入PWM改变LED亮度ADC采样API接口介绍ADC对应GPIO引脚ADC读取GPIO电压值I2CAPI介绍NFC的I2C对应的GPIO引脚I2C读取NFC芯片UARTAPI介绍UART1对应GPIO引脚UART进行数据读取的代码
  • [交流吐槽] 第六次笔记
    # WIFI AP热点 **无线AP(Access Point)**:即无线接入点,它用于无线网络的无线交换机,也是无线网络的核心。无线AP是移动计算机用户进入有线网络的接入点 ## API介绍 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/24/1658643677260451644.png) ## AP热点创建 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/24/1658643809327373692.png) # WIFI STA联网 **站点(STA,Station)**,在无线局域网(WLAN,WirelessLocalAreaNetworks)中一般为客户端,可以是装有无线网卡的计算机,也可以是有WiFi模块的智能手机,可以是移动的,也可以是固定的 ## API介绍 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/24/1658644085507682571.png)
  • [技术干货] cmsis-rtos2
    CMSIS-RTOS v2 (CMSIS-RTOS2) 为基于 Arm® Cortex® 处理器的设备提供通用 RTOS 接口。它为需要RTOS功能的软件组件提供了标准化的API,因此为用户和软件行业带来了巨大的好处:CMSIS-RTOS2 提供了许多应用程序所需的基本功能。CMSIS-RTOS2 的统一功能集减少了学习工作,并简化了软件组件的共享。使用CMSIS-RTOS2的中间件组件与实时操作系统无关,并且更容易适应。CMSIS-RTOS2 的标准项目模板可能与免费提供的 CMSIS-RTOS2 实现一起提供。CMSIS-RTOS2 提供以下 API 接口:CMSIS-RTOS C API v2是支持动态对象创建和Armv8-M(Arm Cortex-M23,Cortex-M33和Cortex-M35P)的C函数接口。CMSIS-RTOS C API v1 是一个 C 函数 API,向后兼容 CMSIS-RTOS v1。CMSIS-RTOS C++ API 是一个C++类函数 API(未来扩展)。可以在同一应用程序中混合不同的API变体,甚至可以在同一C / C++源模块中混合。但是,CMSIS-RTOS C API v1 的功能可能会在 CMSIS-RTOS 的未来版本中弃用。CMSIS-RTOS2 还定义了一个通用系统计时器接口,该接口可在受支持的 Arm Cortex 处理器上运行:OS Tick API 是内核系统计时器的接口。
  • [API使用] 【Mindspore】【detach】Pytorch detach 功能有对应API吗?
    【功能模块】Pytorch detach API , Mindspore找不到对应【操作步骤&问题现象】【截图信息】
  • [技术干货] 第四章笔记总结
    # 驱动子系统开发 ## 1.驱动GPIO (1)具体内容 ・GPIO相关API ・如何操作GPIO点亮LED灯 ・如何读取GPIO电平状态 (2)GPIO API介绍 wifiot_gpio.h接口简介: 注意: 这个.h中包含声明GPIO接口函数,这些功能用于初始化GPIO。 常用接口及其常用功能 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/21/1658399591179340484.png) (3)与LED对应的GPIO引脚 LED对应的GPIO引脚是GPIO2通过控制GPIO2输出的的电平信号来实现LED灯的闪烁。 ·高电平时点亮LED灯。 ·低电平时熄灭LED灯。 (4)操作GPIO点亮LED 相关代码:![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/21/1658399875307339272.png) (5)本节收获: 学习了GPIO的主要引脚 学习了操作GPIO来点亮LED灯 ## 2.GPIO的中断 (1)主要内容 ·GPIO中断相关API ·如何使用GPIO中断相关API ·如何通过GPIO中断判断按键状态 (2)GPIO中断API介绍 其实就是wifiot_gpio.h中包含声明GPIO中断相关函数。 主要接口及其功能描述: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/21/1658400329778899183.png) (3)如何查看按键对应的GPIO引脚 F1和F2按键对应的GPIO引脚是分别是GPIO11和GPIO12,通过检测GPIO的电平信号来判断按键的状态。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/21/1658400428313648516.png)
  • [问题求助] 【SMC3.0】【api添加会议室】一添加会议室接口调用后添加到了外部会议室T /meetingrooms/create
    【功能模块】会议室添加 smc 3.0T/meetingrooms/create 【操作步骤&问题现象】1、调用这个api后添加会议室在smc中显示在外部会场,要怎么用或者是哪个字段那区分添加到外部会议或者内部会议室【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] HarmonyOS上实现“手机充电”动画
    在项目开发中遇到给设备充电时,电池图标显示一个充电动画效果,下面基于 HarmonyOS 的 JSAPI 实现一个电池充电的动画效果。效果展示:实现原理电池充电的动画就是一个宽度从 0% 加载到 100% 的过程,所以在充电状态只需要动态改变显示的宽度就可以实现一个充电的效果,而电池的轮廓和充电状态采用加载本地图片的方式实现。实现步骤①实现电池图标首先加载空电量的电池轮廓的图片,在电池轮廓的上面覆盖一个显示电池电量的进度条,在电池电量进度条的上面覆盖一个闪电图标,显示充电状态。battery.hml:<div class="container">    <image show="true" src="{{ batteryIcon }}"></image>    <div class="progress" style="width : {{ getBatteryNum() }} px;"></div>    <image show="{{ chargeState }}" class="charging" src="/common/img/ic_charging.png"></image></div>css 样式:.container {    height: 48px;    width: 48px;    justify-content: center;    align-items: center;}.progress {    height: 16px;    background-color: black;    position: absolute;    margin-left: 12%;    top: 50%;    transform: translate(0, -50%);}.charging {    height: 48px;    width: 48px;    position: absolute;    left:50%;    top: 50%;    transform: translate(-50%, -50%);}②获取手机电池信息通过系统接口提供的接口获取手机电池信息,导入 batteryInfo 模块,接口从 API version 6 开始支持。import batteryInfo from '@ohos.batteryInfo';batteryInfo 详细属性:index.js 中获取电池电量和充电状态://获取设备电池电量百分比this.batterySoc = batteryInfo.batterySOC//设备电池是否在充电状态this.chargingStatus = batteryInfo.chargingStatus == batteryInfo.BatteryChargeState.ENABLE③实现动态改变进度条宽度进度条必须显示在电池图标轮廓里,所以进度条的宽度不能超过电池图标,根据获取到的电量百分比,动态改变宽度但不能超过满电时的最大宽度,满电时的最大宽度可根据实现效果调整。如下代码:getBatteryNum() {        let width = (this.percent / 100) * this.maxWidth        if (this.percent >= 100) {            return this.maxWidth        }        console.log(" getBatteryNum " + Math.round(width))        return Math.round(width);},④实现充电动画效果使用系统提供的动画接口,导入 animator 模块,接口从 API version 6 开始支持。import animator from '@ohos.animator';animator 有以下方法:AnimatorOptions 属性:在触发充电状态时,重复播放 Animator 动画,在 onframe() 回调中动态改变电池电量百分比,从而改变进度条宽度,详细代码如下。battery.js 完整代码:import animator from '@ohos.animator';import batteryInfo from '@ohos.batteryInfo';export default {    props: ['quantity', 'charge'],    data() {        return {            percent: this.quantity,            chargeState: this.charge,            batteryIcon: "/common/img/ic_battery.png",            animator: null,            maxWidth: 30        };    },    onInit() {        console.log("battery onInit")        this.setBatteryIcon()        this.$watch('quantity', 'onQuantityChange')        this.$watch('charge', 'onChargeChange')        var options = {            duration: 2000,            easing: 'friction',            fill: 'forwards',            direction: 'reverse',            iterations: -1,            begin: 0,            end: this.maxWidth        };        this.animator = animator.createAnimator(options);        var _this = this;        this.animator.onframe = function (value) {            _this.percent = (parseInt(value) / _this.maxWidth) * 100        };    },    onPageShow() {        console.log("battery onPageShow percent = " + this.percent + " chargeState = " + this.chargeState)    },    // 监听是否变化电量    onQuantityChange(newV, oldV) {        console.log('======proQuantity============ newV=' + newV + " oldV = " + oldV)        this.percent = newV    },    // 监听是否充电    onChargeChange(newV, oldV) {        console.log('======proIsCharge============newV =' + newV + " oldV = " + oldV)        this.chargeState = newV        if (this.chargeState) {            this.animator.play();        } else {            this.percent = batteryInfo.batterySOC            this.animator.cancel();        }    },    getBatteryNum() {        let width = (this.percent / 100) * this.maxWidth        if (this.percent >= 100) {            return this.maxWidth        }        console.log(" getBatteryNum " + Math.round(width))        return Math.round(width);    },    onDestroy(){        this.animator.cancel();    }}总结以上只是简单实现了一个平移动画的效果,结合系统的 Animator 可以实现各种各样炫酷的动画效果,可以提高应用的视觉和用户的体验。掌握 HarmonyOS 动画的使用,可以让我们更好的了解和参与 HarmonyOS 的开发。作者:陈忠蔚转载于OST开源开发者微信公众号
  • [交流吐槽] 第二章笔记
    1. 添加源码文件打开源码,在applications/BeraPi/BearPi-HM_Nano/sample下,新建文件夹my_app,在此文件夹下新建一个hello_world.c文件,再新建一个BUILD.gn文件2. 编写hello_word代码在新建的hello_word.c文件夹中编写代码在myapp路径下的BUILD.gn文件下添加代码static_library中指定业务模块的编译结果,将hello_word.c文件编译成libmyapp.a文件在sample路径下的BUILD.gn文件下添加代码,放在最下边3. 编译打开MobaXterm,打开源码,登录,在code/code_3路径下进行编译hpm dist,编译成功之后,打开HiBurn工具,需要查看开发板与电脑的连接情况,设置波特率为115200,选择烧录文件,点击connect进行下载,成功之后通过MobaXterm查看4. 点亮LED添加源码文件在sample路径下新建my_led文件夹,在my_led路径下新建led_example.c文件和BUILD.gn文件(与hello_world一样)。添加源码在led_example.c文件下添加代码在my_led路径下的BUILD.gn文件中添加代码在sample路径下的DUILD.gn文件中添加代码烧录代码与上述相同烧录完成之后根据上述的步骤可以查看LED灯被点亮Ninja编译工具在Unix/Linus下通常使用Makefile来控制代码的编译,但对于比较大的项目有时候会比较慢。故重新开发出来新的编译工具Ninja,编译速度更快。如何执行代码CMSIS-RT0S2接口CMSIS-RT0S2是一个通用的API,与底层的ROTS内核无关,程序员在用户代码中调用CMSIS-ROTS2 API函数时,可以方便的将应用程序从一个ROTS移到另一个ROTS。OpenHarmony与CMSIS-RT0S2接口联系OpenHarmony在CMSIS-RT0S2接口中封装了LiteOS-m的内核代码结构关系
  • [云动向] 华为云发布桌面IDE-CodeArts,让连接更简单、编码更智能
    【中国,2022年6月15日】主题为“因聚而生,为你所能”的华为伙伴暨开发者大会2022隆重开幕,华为云CEO张平安发表“共创新价值,一切皆服务”的主题演讲,重磅发布了华为云桌面IDE-CodeArts,并邀请华为云开发工具和效率首席专家王亚伟向大家介绍了这款智能化桌面集成开发环境的主要特点。全新发布的华为云桌面IDE-CodeArts为了给广大的开发者提供更高效、更智能的桌面开发体验,具备“连接华为云服务、智能开发、开发者生态”三大特性,支持便捷连接220+华为云服务、引用4500+华为云服务API,汇聚300万+华为云开发者,助力编码效率提升50%。华为云桌面IDE-CodeArts发布,助力开发更高效华为云软件开发生产线(DevCloud)是一站式、全流程、安全可信的云原生DevSecOps平台,开箱即用,预置最佳实践。去年DevCloud发布了内置智能化代码补全的CloudIDE服务,为开发者提供了随时随地的云上在线编程体验。为了帮助开发者获得更好的用云体验和开发效率,华为云推出了桌面集成开发环境(IDE)- CodeArts。据王亚伟介绍,CodeArts定位为华为云开发者桌面,是一款智能化桌面集成开发环境,目标是让开发者更简单的使用华为云,以及更高效的基于华为云来构建应用。内置华为云开发套件,用云更便捷作为华为云的开发者桌面,CodeArts提供的华为云API开发套件可以快速连接220+华为云服务,和集成超过4500+华为云服务API。开发者在CodeArts中可以搜索、调测和集成已发布的华为云服务API,利用详尽的参数说明和示例代码,实现在代码中调用华为云服务。此举大幅降低开发者在应用中集成华为云能力的门槛,让用云更便捷。智能化开发,编码效率大幅提升作为桌面集成开发环境(IDE),CodeArts将智能化融入到开发的各个环节,提升开发者效率。基于深度学习的Java语言服务,通过代码所在光标位置代码上下文的语义理解,可以准确为用户推荐和生成代码。代码搜索服务可以对用户历史代码活动的特征进行分析,根据用户输入的关键词快速定位到相关搜索结果。通过智能化的语言服务和搜索服务,CodeArts能够帮助开发者提升50%的综合编码效率。开放插件扩展和市场,共同繁荣生态作为华为云开发者的生态入口,CodeArts支持基于插件的服务扩展,并利用不断增加的开发套件(插件)支持更多研发场景,从传统应用到现代化(Serverless)应用,从本地开发到云上远程开发,从单人开发到团队DevOps协作。通过开放的插件标准和市场,CodeArts支持合作伙伴和开发者一起加入进来,共同打造华为云的开发者生态。依托三大特性,CodeArts能让各类场景的开发事半功倍。以往,开发者需要在华为云4500+的API中找到最合适的那个并集成于自身业务,需要颇费一番周折。现在,企业通过CodeArts开发云上应用时集成华为云服务将成为自然选择,在IDE中一边编写业务代码即可一边通过关键字搜索需要的云服务。比如,在开发“图像识别文字”业务的场景中。仅输入关键字“文字识别”,即可查找到华为云文字识别(OCR)服务的多种类型接口,每个接口都有详细的说明、参数定义,以及请求和返回示例。更简便的,开发者可直接打开“SDK示例代码”,按照接口调用格式预置参数,然后把自动配置好参数的示例代码直接复制、粘贴,再启动运行、调试,分钟级即可实现业务代码调用华为云服务接口。通过CodeArts连接华为云,编程变得高效简单。图示:通过华为云API开发套件获取接口示例代码华为云CodeArts,将服务于华为云数百万不断增长的开发者,支持合作伙伴共建共享生态,使能开发者更高效的基于华为云构建应用,让连接更简单、编码更智能,助力企业更快实现数字化转型。*来源IT168
  • [沙箱纠错] 自然语言处理API服务调用_步骤
    最后运行程序时,eclipse闪退,没有任何错误提示。
  • [技术干货] 第五讲:鲲鹏编译调试及原生开发工具基础知识
    课程链接:https://www.hikunpeng.com/zh/developer/live/detail/1537729153943310338鲲鹏编译调试及原生开发工具基础知识分为两个板块进行讲解。第一个版块是开发框架插件的内容介绍。第二个板块是开发框架功能特性与案例演示。在介绍鲲鹏开发框架插件之前,先让我们了解一下什么是原生开发。因为鲲鹏开发框架插件的提供的功能是帮助用户快速上手。原生开发的定义是什么呢?让我们来看一下。即开发者基于任意环境快速开发新软件应用,可在鲲鹏服务器或鲲鹏架构下高效运行。开发过程体验好、粘性强,此过程称为鲲鹏原生开发。它主要具备以下四个特点,首先,开发体验好。开发体验好主要体现在易用和好用两个方面。易用,即不改变开发者原本的开发习惯,降低开发者的学习成本。好用在于开发者开发鲲鹏应用可以敏捷开发,提升开发效率,让开发者可以高效地进行创新。鲲鹏原生开发的第二个特点是架构自亲和,即开发过程屏蔽硬件复杂性鲲鹏架构自亲和。鲲鹏原生开发的第三个特点,应用高性能,即在用户开发应用时发挥鲲鹏架构优势,释放鲲鹏算力,构建极致性能。鲲鹏原生开发的最后一个特点是多算力兼容,多样算力兼容,一次开发多次复用,性能可移植。待介绍完原生开发的概念之后,接下来让我们看一下鲲鹏开发框架插件是什么。很多开发者在刚开始接触鲲鹏原生开发时都会遇到这样的问题,对鲲鹏加速库的 API 不熟悉,不知道有哪些 API 也不知道如何去使用。同时对如何将自己的程序针对鲲鹏处理器进行加速优化的方法也一无所知。针对这些开发者遇到的这些常见问题,鲲鹏推出了鲲鹏开发框架插件,帮助开发者更便捷的开发鲲鹏应用,使能开发者高效创新。鲲鹏开发框架插件可以在 ID 的插件市场中免费获取,在插件市场中搜索鲲鹏关键字就可以看到了。鲲鹏开发框架插件充分利用了鲲鹏平台的各类型算力,即性能更优的第三方组件,提供了三大特性,分别是鲲鹏工程向导洗发、日编程代码亲和检查等能力。一键引入了鲲鹏加速库,快速构建鲲鹏应用软件框架,引导用户快速上手。原生开发。接下来我们整体的看一下鲲鹏开发框架插件给我们提供了哪些功能。从图中我们可以看出,鲲鹏开发框架插件着眼于开发全流程,在开发前、开发中、开发后都提供了重要的特性,帮助开发者提升开发效率,提高应用性能。在开发前,开发者可以使用开发向导功能,通过输入一些简单的工程配置项,就可以一键创建鲲鹏工程,从而快速上手鲲鹏原生开发。鲲鹏工程中包含了基础的 demo 文件以及相关加速库的 demo 和源码文件。开发者通过鲲鹏工程不仅可以了解奔鹏加速库的 API 是如何调用的,还可以在远程服务器上实地的进行运行,查看鲲鹏加速库带来的极致性能提升。在开发过程中,鲲鹏开发框架插件提供了启发式编程功能,用户只需要输入相关函数的关键字,鲲鹏开发框架产插件便会根据这些关键字进行智能联想,并提示该函数的一些相关内容。这些内容中包含功能名称、优化内容、对应的汇编指令等丰富的信息,帮助用户了解鲲鹏加速库的 API 在用户开发之后可以使用代码亲和检查功能。代码亲和检查是鲲鹏原生开发的一大特性之一,功能分布在鲲鹏开发框架插件和迁移插件中。在鲲鹏开发框架插件里,主要的实现形式是鲲鹏加速分析,它会扫描用户工程中可以用鲲鹏加速库 API 替换的代码,并生成详细的可视化报告,帮助用户更好地进行替换。好待对开发框架插件进行了一个整体的介绍过后,接下来让我们详细的展示一下鲲鹏开发框架插件的功能特性。第一个要介绍的开发框架插件的功能特性是鲲鹏工程向导。鲲鹏工程向导的实现效果如图中所示,在输入一些简单的工程配置项之后,选择相关的加速库信息之后,可以自动构建鲲鹏工程,推动用户深入地进行鲲鹏原生开发。接下来让我们仔细看一下鲲鹏工程要怎样进行创建。首先在创建鲲鹏工程的页面中输入相关的工程配置项,诸如工程名称、工程位置语言选择语言必标准工程类型等。用户只需要输入和选择一些关键项目信息,开发框架插件就会根据用户的选择自动创建鲲鹏工程用户点击下一步之后就到了加速库选择页面。鲲鹏工程目前支持 jstd 激励吧 C Hyper scan 等 7 款加速库,涵盖系统、压缩、存储三大主要类别。这些加速库基于鲲鹏 920 处理器微架构特点进行了大量优化,可以使鲲鹏服务器的性能得到更充分的释放。除了这些棚加速库,我们还提供了加解密媒体、数学库、网络库等四大加速库的主要类别的下载链接,用户可以点击获取资源按钮下载并使用这些家族库。接下来我们介绍一下开发框架插件的第二大特性,启发式编程。启发式编程针对所有进行鲲鹏原生开发的开发者,提供了总量几千条的函数编码,实时智能补全仪式内容信息全覆盖广,包含鲲鹏加速库函数以及 new interest 函数。股权内容包含功能描述、优化点描述、对应汇编指令等多种提示信息。我们从页面的图中可以看到,当用户输入相关函数的关键字之后,开发框架插件就会进行编码。智能实时补全的提示,提示相关用户可能想输入的函数,并展示了丰富的补全信息,帮助用户提高开发效率,提升用户的使用体验。启发式编程提供的函数智能提示功能会在用户编写 C 或 C 加文件时触发。它主要针对这么两种函数进行智能联想与补全,分别是鲲鹏加速库函数以及 NEO interest 函数。鲲鹏加速库函数的智能补全包含了 ZSTD chaekml 等 14 款加速库,覆盖系统压缩加解密、数学四大基础加速场景,为大数据加解密、分布式存储压缩应用场景提供高性能加速。利用 interesting 函数的智能联想包含了 arm 提供的所有 new inch 这个函数。 new 函数相比于传统的使用纯汇编语言对 NEO 寄存器进行操作,具有可读性强、开发速度快等优势。最后让我们来看一下代码亲和检查特性的功能。代码亲和检查特性在开发框架上的实现主要是鲲鹏加速分析。鲲鹏加速分析针对压缩系统加解密、媒体数学五大基础加速场景进行分析优化,它会扫描开发者工程中可以使用鲲鹏加速库函数进行优化的代码,并整理出详细的可视化报告。用户将这些函数替换成鲲鹏加速库函数之后,就可以提高用户工程在鲲鹏服务器上的运行性能。接下来让我们看一下可视化报告中给我们提供了哪些信息。我们可以看到报告中提供的信息有函数名、所在路径、函数简介、加速方法等比较关键的信息。同时还提供了下载链接,开发者可以点击下载链接下载相关的鲲鹏加速库函数并进行替换使用。鲲鹏开发框架插件的功能特性暂时讲解到这里。接下来让我们使用 VSCode 这个非常主流的 IDE 去实战一下。我们在 vs code 上搜索鲲鹏开发框架插件并进行下载使用实地体验一下鲲鹏开发框架插件给我们提供的强大功能。大家在设计开发场景中,经常会是在本地 Windows 环境中使用 IDE 编码,比如使用 VSCode 然后再手动将代码上传到远端服务器,之后在服务器上进行编译调式运行等一系列操作。如果遇到编译错误,又得回到本地继续修改,修改完成之后再上传编译。如果遇到运行错误,这个时候我们就需要在服务器上进行调试定位问题,然后再到本地修改代码,然后再上传编译运行重复前面的一些动作。我们推出鲲鹏编译调试插件,就是为了解决这一系列因为开发调试环境分离而造成的开发效率低下的问题。鲲鹏调鲲鹏编译调试插件能够在本地 IDE 中实现一站式部署开发。远程区编译调试功能可以简化大家在 Linux 服务器开发流程和提高大家的开发效率。下面给大家介绍一下编译条插件的基本功能。在编译之前可以使用编译调试插件提供的一键式部署编译器的功能,将选择的编译器一键部署到目标服务器上。可以选择的编译器类型有 GCC for open 欧拉和避声编译器以及避声 gdk 在配置目标服务器之后,我们可以创建编译任务。在编译之前,我们可以通过手动同步,就是通过按钮操作,一次性将项目的文件同步到远端服务器,或者通过自动同步,通过监听代码变更,自动将变更的文件同步到远端服务器。这两种方式将本地代码上传到远端服务器。代码同步完成之后,执行编译操作,编译的过程以及结果可以通过本地终端查看。在编译成功之后,也可以通过测试用例功能,就是添加测试用例,然后执行测试用例,通过执测试用例的代码执行整个过程。也可以整个过程无需本地与远端服务器之间的频繁切换,实现的本地 IDE 中一站式部署开发远程调试和编译。下面给大家介绍一下编译调试插件的部分案例演示。编译调试插件以插件的形式集成到 IDE 中,给鲲鹏生态用户安装使用。当前工具支持部署编译器、远程编译和远程运行调试三大功能,目的是解决开发者因开发和调试环境分离造成的开发效率低下的问题,实现本地 IDE 开发调试一体化。部署编译器的功能。支持部署 GCC for open 欧拉、避声编译器和避声 gdk 单款编译器整个部署的过程不需要手动登录到远端服务器,仅在本地 ID 端即可完成部署。 GCC for open 欧拉是一款基于 GCC 开发,主要是因为当前很多服务器软件都是基于开源 GCC 开发。为了减少客户切换的成本,我们在 GCC 上也做了优化和改进,比如提供高性能编译算法,提供加速指令集、高性能数学库等。 SPC 2006 和 SPC 2017 性能比开源的 GCC 九点三高 10% 以上。B 升编译器是基于开源的 LVM 开发,是一种 Linux 下针对鲲鹏九十零的高性能编译器。主要支持 C 语言、 C 加语言、 fountrie 语言。这三种语言是在 HPC 高性能计算场景下使用最多的语言。毕生编译器针对鲲鹏的芯片指定集、流水线也做了增强和优化,比如高性能的编译算法,提升指令和数据吞吐量。另外还提供一些加速指令集和 AI 迭代调优,充分发挥鲲鹏架构的最佳性能。毕森 gdk 是基于 openjdk 定制开发的开源版本,是一款高性能可用于生产环境的 openjdk 发行版。毕生 gdk 是 open gdk 的下游,我们在华为内部 500 多个产品上广泛使用,积累了大量使用场景和 Java 开发者反馈的问题和需求,解决了很多业务运行中的实际问题,并且针对这些问题也做了相应的修复。在 arm 架构上也进行了优化和稳定性增强,使得在 arm 架构下更加稳定,在大数据场景下也获得了更好的性能。远程编译,你们插件也是提供的可视化界面执行,无需重复手动输入编译命令,同时再配合其他调试插件支持调配,在配合其他调试插件下,支持远程执行和调试的功能。当然在使用编译调试插件与远程编译和运行之前,需要完成配置远程服务器。这边一键是部署的编译器的一个部分界面。一键是部署编译器的目标服务器,就是需要处于联网状态。在输入目标服务器的相关参数,比如 IP 地址 polar 端口以及用户名和密码。配置好之后,插件会根据选择的编译器类型,从官方镜像网站下载对应的编译器自动完成安装。这也是为什么要保证目标服务器也是处于联网状态。因为这个要从官方网站下载对应的编译器。在下载和安装的过程中,也可以通过 ID 的终端去查看具体的下载和安装的进度。在安装完成之后,也会给出工具部署成功的提示,整个过程都不需要去登录远程服务器。在编译器安装完成之后,下一步就是进行远程编译。首先创建一个编译任务,可以给编译任务进行不同的命名,而且指定编译命令。这样创建好一个编译任务。下面就是将本地代码同步到远端服务器进行编译,同时可以在终端查看整个的编译结果。当然在设置同步设置远程同步代码的时候,也可以在设置中启动自动同步功能。如果本地代码发生变化,会自动同步到服务器。代码自动同步到服务器之后,可以直接通过编译生成新的可执行文件。在编译完成情况下,可以通过添加测试用例来进行远程运行和调试。这是一个调试二进制的一个页面。大家可以看到这是归因有一些调试按钮和正在运行的一个行。这边高亮行就是正在运行的那一行。下面是运行的结果,下面大家看一下部分的案例演示。这边是一个编译器部署的页面,这上面是可以选择编译器的类型,就是那三款编译器以及右边是服务器 IP 地址、端口号,还有用户名以及用户的密码。这边选择通过密钥认证这些信息填完填完之后可以通过检测连接,如果能够连,如果连接没有问题就可以直接部署。这是编辑部署这个功能。远程编译的话是先创建一个编译任务指定一下编译名称和编译命令。然后会在编译任务下面会有一个列表展示,列表展示上面去这个按钮可以点击去执行整个编译任务。编译任务执行的时候,会通过选择对应的目标服务器的话,会会去执行编译编译的过程中是能够在终端查看整个编译过程程执行编译执行的过程这边是添加测试用例,然后远程运行和调试。测试用例这边也是有一个测试用例的任务名称以及可执行的程序和程序所在的路径,最后面也可以加一些参数。然后运行完之后那个也可以点击调试按钮,调试按钮的话就会进入到这个调试的界面。这个调试的界面就跟本地调试是一样的,有一些继续什么步入步出,还有一些下一步还有一些重启会暂停一些功能。下面用一个 demo 给大家演示一下。下面这个例子比较简单,就是一个简单的 hard word 输出。首先在不介入我们调试插件的情况下,如果想调试运行这个程序,咱们需要将这个上面本地的代码传到人的服务器上,先打一个压缩包,然后通过本地的 sap 命令转到人端服务器上。我这个服务器也是通过远程实验室申请的。 Workspace.输入密码。已经传到了免单服务器 in the workspace 目录,然后进行解压,然后再进到 demo 的 demo 目录。这个时候就需要去在远端服务器执行它的编译命令,可以看到生成的一个 hello 的二进制文件,这个时候就执行 hello 然后就打印了这个 hello world 这是不借助我们工具。而且如果要是通过修改代码的话,比如说我又在代码里面修改的一个,再打印一个 hi word 然后这个时候又需要进到项目中。但是这个时候可以对单独的文件进行上传,不需要再去打压缩包了。然后在这个要上传到它的文件目录 demo 下面再输入一遍密码。这时候传上来之后,要重新对这个文件进行编译,它能生成到一个新的二进制文件。接下来我们使用用一下鲲鹏开发框架插件提供的加速分析功能。加速分析可以分析用户选中的对应工程或文件中的内容,扫描出其中可以使用鲲鹏加速库函数进行替换的内容,并提供一份详细的可视化报告供用户进行查看。我们以 gzip demo 中的 demo gzip.cbp 文件为例进行一次扫描,右键这个文件,点击加速分析按钮。此时我们可以看到开发框架插件会先让用户选择对应的加速分析类型。如果用户只想针对自己的工程或文件进行压缩方面的扫描,就可以直接选择压缩库。这一次我为了给大家更好的展示扫描结果,我针对这个文件进行所有相关加速库的加速分析。点击确认分析按钮之后,右下角会有对应的进度提示。同时下面的问题弹窗中会展示相关可以优化的函数,即对应的详细信息,比如名称、描述、优化点等。扫描结束之后,会议在当前页面中展示详细的可视化报告。从这个报告中我们可以看出有以下几点重要内容,比如对应的函数名、所在地址、加速方法等,同时提供了查看和下载按钮,用户点击下载会自动跳转到对应的加速库的下载地址,用户可以下载之后进行对应的函数替换。同时用户可以点击查看按钮,跳转到对应的函数地址,方便用户进行下一步的替换。此时鲲鹏开发框架插件给我们提供的三大功能已经全部演示完毕。接下来让我们回到 PPT 看一下鲲鹏开发框架插件的相关关沙箱实验内容。目前鲲鹏社区推出了鲲鹏开发框架的在线实验,用户可以登陆鲲鹏社区搜索基于鲲鹏亲和开发框架进行原生开发这么个实验。这个实验会指导用户创建并运行坤鹏工程,帮助用户快速熟悉原生开发的过程和优势。今天在这里我带大家大概看一下这个实验的一些具体的内容。好,这个实验它的目的是指导用户通过鲲鹏开发框架插件从 0 到 1 完成原生开发的基本开发过程,让用户熟悉原生开发的基本操作过程,体验原生开发带来的极简操作和性能提升。我们看一下实验手册。实验手册中主要分为以下四步,非常简单,安装插件、创建工程并查看工程,最后编译并执行这个鲲鹏工程安装和创建鲲鹏工程。这么两步刚刚已经给大家进行了个展示,查看工棚工程的话,我们来看一下这昆仑工程到底有什么。点击查看工程按钮之后会展示对应的工程内容。我们可以看到在这个实验中创建的是 gzip 相关的一个加速库的 demo 那么这个 demo 里面一共有两个子文件夹,分别是 G zip demo 还有 G zip demo 的源码。那么 G zip 这个源码是已经下载并解压好的 gzip 鲲鹏库。这个加速库针对鲲鹏处理器的架构特点,对 gzip 原生库进行了加速优化。接下来的这个实验就是利用这个 demo 来对比加速库和原生库在解压两个 G 大小文件时的解压效率。
  • [技术干货] 第五讲:鲲鹏编译调试及原生开发工具基础知识
    课程链接:https://www.hikunpeng.com/zh/developer/live/detail/1537729153943310338鲲鹏编译调试及原生开发工具基础知识分为两个板块进行讲解。第一个版块是开发框架插件的内容介绍。第二个板块是开发框架功能特性与案例演示。在介绍鲲鹏开发框架插件之前,先让我们了解一下什么是原生开发。因为鲲鹏开发框架插件的提供的功能是帮助用户快速上手。原生开发的定义是什么呢?让我们来看一下。即开发者基于任意环境快速开发新软件应用,可在鲲鹏服务器或鲲鹏架构下高效运行。开发过程体验好、粘性强,此过程称为鲲鹏原生开发。它主要具备以下四个特点,首先,开发体验好。开发体验好主要体现在易用和好用两个方面。易用,即不改变开发者原本的开发习惯,降低开发者的学习成本。好用在于开发者开发鲲鹏应用可以敏捷开发,提升开发效率,让开发者可以高效地进行创新。鲲鹏原生开发的第二个特点是架构自亲和,即开发过程屏蔽硬件复杂性鲲鹏架构自亲和。鲲鹏原生开发的第三个特点,应用高性能,即在用户开发应用时发挥鲲鹏架构优势,释放鲲鹏算力,构建极致性能。鲲鹏原生开发的最后一个特点是多算力兼容,多样算力兼容,一次开发多次复用,性能可移植。待介绍完原生开发的概念之后,接下来让我们看一下鲲鹏开发框架插件是什么。很多开发者在刚开始接触鲲鹏原生开发时都会遇到这样的问题,对鲲鹏加速库的 API 不熟悉,不知道有哪些 API 也不知道如何去使用。同时对如何将自己的程序针对鲲鹏处理器进行加速优化的方法也一无所知。针对这些开发者遇到的这些常见问题,鲲鹏推出了鲲鹏开发框架插件,帮助开发者更便捷的开发鲲鹏应用,使能开发者高效创新。鲲鹏开发框架插件可以在 ID 的插件市场中免费获取,在插件市场中搜索鲲鹏关键字就可以看到了。鲲鹏开发框架插件充分利用了鲲鹏平台的各类型算力,即性能更优的第三方组件,提供了三大特性,分别是鲲鹏工程向导洗发、日编程代码亲和检查等能力。一键引入了鲲鹏加速库,快速构建鲲鹏应用软件框架,引导用户快速上手。原生开发。接下来我们整体的看一下鲲鹏开发框架插件给我们提供了哪些功能。从图中我们可以看出,鲲鹏开发框架插件着眼于开发全流程,在开发前、开发中、开发后都提供了重要的特性,帮助开发者提升开发效率,提高应用性能。在开发前,开发者可以使用开发向导功能,通过输入一些简单的工程配置项,就可以一键创建鲲鹏工程,从而快速上手鲲鹏原生开发。鲲鹏工程中包含了基础的 demo 文件以及相关加速库的 demo 和源码文件。开发者通过鲲鹏工程不仅可以了解奔鹏加速库的 API 是如何调用的,还可以在远程服务器上实地的进行运行,查看鲲鹏加速库带来的极致性能提升。在开发过程中,鲲鹏开发框架插件提供了启发式编程功能,用户只需要输入相关函数的关键字,鲲鹏开发框架产插件便会根据这些关键字进行智能联想,并提示该函数的一些相关内容。这些内容中包含功能名称、优化内容、对应的汇编指令等丰富的信息,帮助用户了解鲲鹏加速库的 API 在用户开发之后可以使用代码亲和检查功能。代码亲和检查是鲲鹏原生开发的一大特性之一,功能分布在鲲鹏开发框架插件和迁移插件中。在鲲鹏开发框架插件里,主要的实现形式是鲲鹏加速分析,它会扫描用户工程中可以用鲲鹏加速库 API 替换的代码,并生成详细的可视化报告,帮助用户更好地进行替换。好待对开发框架插件进行了一个整体的介绍过后,接下来让我们详细的展示一下鲲鹏开发框架插件的功能特性。第一个要介绍的开发框架插件的功能特性是鲲鹏工程向导。鲲鹏工程向导的实现效果如图中所示,在输入一些简单的工程配置项之后,选择相关的加速库信息之后,可以自动构建鲲鹏工程,推动用户深入地进行鲲鹏原生开发。接下来让我们仔细看一下鲲鹏工程要怎样进行创建。首先在创建鲲鹏工程的页面中输入相关的工程配置项,诸如工程名称、工程位置语言选择语言必标准工程类型等。用户只需要输入和选择一些关键项目信息,开发框架插件就会根据用户的选择自动创建鲲鹏工程用户点击下一步之后就到了加速库选择页面。鲲鹏工程目前支持 jstd 激励吧 C Hyper scan 等 7 款加速库,涵盖系统、压缩、存储三大主要类别。这些加速库基于鲲鹏 920 处理器微架构特点进行了大量优化,可以使鲲鹏服务器的性能得到更充分的释放。除了这些棚加速库,我们还提供了加解密媒体、数学库、网络库等四大加速库的主要类别的下载链接,用户可以点击获取资源按钮下载并使用这些家族库。接下来我们介绍一下开发框架插件的第二大特性,启发式编程。启发式编程针对所有进行鲲鹏原生开发的开发者,提供了总量几千条的函数编码,实时智能补全仪式内容信息全覆盖广,包含鲲鹏加速库函数以及 new interest 函数。股权内容包含功能描述、优化点描述、对应汇编指令等多种提示信息。我们从页面的图中可以看到,当用户输入相关函数的关键字之后,开发框架插件就会进行编码。智能实时补全的提示,提示相关用户可能想输入的函数,并展示了丰富的补全信息,帮助用户提高开发效率,提升用户的使用体验。启发式编程提供的函数智能提示功能会在用户编写 C 或 C 加文件时触发。它主要针对这么两种函数进行智能联想与补全,分别是鲲鹏加速库函数以及 NEO interest 函数。鲲鹏加速库函数的智能补全包含了 ZSTD chaekml 等 14 款加速库,覆盖系统压缩加解密、数学四大基础加速场景,为大数据加解密、分布式存储压缩应用场景提供高性能加速。利用 interesting 函数的智能联想包含了 arm 提供的所有 new inch 这个函数。 new 函数相比于传统的使用纯汇编语言对 NEO 寄存器进行操作,具有可读性强、开发速度快等优势。最后让我们来看一下代码亲和检查特性的功能。代码亲和检查特性在开发框架上的实现主要是鲲鹏加速分析。鲲鹏加速分析针对压缩系统加解密、媒体数学五大基础加速场景进行分析优化,它会扫描开发者工程中可以使用鲲鹏加速库函数进行优化的代码,并整理出详细的可视化报告。用户将这些函数替换成鲲鹏加速库函数之后,就可以提高用户工程在鲲鹏服务器上的运行性能。接下来让我们看一下可视化报告中给我们提供了哪些信息。我们可以看到报告中提供的信息有函数名、所在路径、函数简介、加速方法等比较关键的信息。同时还提供了下载链接,开发者可以点击下载链接下载相关的鲲鹏加速库函数并进行替换使用。鲲鹏开发框架插件的功能特性暂时讲解到这里。接下来让我们使用 VSCode 这个非常主流的 IDE 去实战一下。我们在 vs code 上搜索鲲鹏开发框架插件并进行下载使用实地体验一下鲲鹏开发框架插件给我们提供的强大功能。大家在设计开发场景中,经常会是在本地 Windows 环境中使用 IDE 编码,比如使用 VSCode 然后再手动将代码上传到远端服务器,之后在服务器上进行编译调式运行等一系列操作。如果遇到编译错误,又得回到本地继续修改,修改完成之后再上传编译。如果遇到运行错误,这个时候我们就需要在服务器上进行调试定位问题,然后再到本地修改代码,然后再上传编译运行重复前面的一些动作。我们推出鲲鹏编译调试插件,就是为了解决这一系列因为开发调试环境分离而造成的开发效率低下的问题。鲲鹏调鲲鹏编译调试插件能够在本地 IDE 中实现一站式部署开发。远程区编译调试功能可以简化大家在 Linux 服务器开发流程和提高大家的开发效率。下面给大家介绍一下编译条插件的基本功能。在编译之前可以使用编译调试插件提供的一键式部署编译器的功能,将选择的编译器一键部署到目标服务器上。可以选择的编译器类型有 GCC for open 欧拉和避声编译器以及避声 gdk 在配置目标服务器之后,我们可以创建编译任务。在编译之前,我们可以通过手动同步,就是通过按钮操作,一次性将项目的文件同步到远端服务器,或者通过自动同步,通过监听代码变更,自动将变更的文件同步到远端服务器。这两种方式将本地代码上传到远端服务器。代码同步完成之后,执行编译操作,编译的过程以及结果可以通过本地终端查看。在编译成功之后,也可以通过测试用例功能,就是添加测试用例,然后执行测试用例,通过执测试用例的代码执行整个过程。也可以整个过程无需本地与远端服务器之间的频繁切换,实现的本地 IDE 中一站式部署开发远程调试和编译。下面给大家介绍一下编译调试插件的功能特性以及部分案例演示。编译调试插件以插件的形式集成到 IDE 中,给鲲鹏生态用户安装使用。当前工具支持部署编译器、远程编译和远程运行调试三大功能,目的是解决开发者因开发和调试环境分离造成的开发效率低下的问题,实现本地 IDE 开发调试一体化。部署编译器的功能。支持部署 GCC for open 欧拉、避声编译器和避声 gdk 单款编译器整个部署的过程不需要手动登录到远端服务器,仅在本地 ID 端即可完成部署。 GCC for open 欧拉是一款基于 GCC 开发,主要是因为当前很多服务器软件都是基于开源 GCC 开发。为了减少客户切换的成本,我们在 GCC 上也做了优化和改进,比如提供高性能编译算法,提供加速指令集、高性能数学库等。 SPC 2006 和 SPC 2017 性能比开源的 GCC 九点三高 10% 以上。B 升编译器是基于开源的 LVM 开发,是一种 Linux 下针对鲲鹏九十零的高性能编译器。主要支持 C 语言、 C 加语言、 fountrie 语言。这三种语言是在 HPC 高性能计算场景下使用最多的语言。毕生编译器针对鲲鹏的芯片指定集、流水线也做了增强和优化,比如高性能的编译算法,提升指令和数据吞吐量。另外还提供一些加速指令集和 AI 迭代调优,充分发挥鲲鹏架构的最佳性能。毕森 gdk 是基于 openjdk 定制开发的开源版本,是一款高性能可用于生产环境的 openjdk 发行版。毕生 gdk 是 open gdk 的下游,我们在华为内部 500 多个产品上广泛使用,积累了大量使用场景和 Java 开发者反馈的问题和需求,解决了很多业务运行中的实际问题,并且针对这些问题也做了相应的修复。在 arm 架构上也进行了优化和稳定性增强,使得在 arm 架构下更加稳定,在大数据场景下也获得了更好的性能。远程编译,你们插件也是提供的可视化界面执行,无需重复手动输入编译命令,同时再配合其他调试插件支持调配,在配合其他调试插件下,支持远程执行和调试的功能。当然在使用编译调试插件与远程编译和运行之前,需要完成配置远程服务器。这边一键是部署的编译器的一个部分界面。一键是部署编译器的目标服务器,就是需要处于联网状态。在输入目标服务器的相关参数,比如 IP 地址 polar 端口以及用户名和密码。配置好之后,插件会根据选择的编译器类型,从官方镜像网站下载对应的编译器自动完成安装。这也是为什么要保证目标服务器也是处于联网状态。因为这个要从官方网站下载对应的编译器。在下载和安装的过程中,也可以通过 ID 的终端去查看具体的下载和安装的进度。在安装完成之后,也会给出工具部署成功的提示,整个过程都不需要去登录远程服务器。在编译器安装完成之后,下一步就是进行远程编译。首先创建一个编译任务,可以给编译任务进行不同的命名,而且指定编译命令。这样创建好一个编译任务。下面就是将本地代码同步到远端服务器进行编译,同时可以在终端查看整个的编译结果。当然在设置同步设置远程同步代码的时候,也可以在设置中启动自动同步功能。如果本地代码发生变化,会自动同步到服务器。代码自动同步到服务器之后,可以直接通过编译生成新的可执行文件。在编译完成情况下,可以通过添加测试用例来进行远程运行和调试。这是一个调试二进制的一个页面。大家可以看到这是归因有一些调试按钮和正在运行的一个行。这边高亮行就是正在运行的那一行。下面是运行的结果,下面大家看一下部分的案例演示。这边是一个编译器部署的页面,这上面是可以选择编译器的类型,就是那三款编译器以及右边是服务器 IP 地址、端口号,还有用户名以及用户的密码。这边选择通过密钥认证这些信息填完填完之后可以通过检测连接,如果能够连,如果连接没有问题就可以直接部署。这是编辑部署这个功能。远程编译的话是先创建一个编译任务指定一下编译名称和编译命令。然后会在编译任务下面会有一个列表展示,列表展示上面去这个按钮可以点击去执行整个编译任务。编译任务执行的时候,会通过选择对应的目标服务器的话,会会去执行编译编译的过程中是能够在终端查看整个编译过程程执行编译执行的过程这边是添加测试用例,然后远程运行和调试。测试用例这边也是有一个测试用例的任务名称以及可执行的程序和程序所在的路径,最后面也可以加一些参数。然后运行完之后那个也可以点击调试按钮,调试按钮的话就会进入到这个调试的界面。这个调试的界面就跟本地调试是一样的,有一些继续什么步入步出,还有一些下一步还有一些重启会暂停一些功能。下面用一个 demo 给大家演示一下。下面这个例子比较简单,就是一个简单的 hard word 输出。首先在不介入我们调试插件的情况下,如果想调试运行这个程序,咱们需要将这个上面本地的代码传到人的服务器上,先打一个压缩包,然后通过本地的 sap 命令转到人端服务器上。我这个服务器也是通过远程实验室申请的。 Workspace.输入密码。已经传到了免单服务器 in the workspace 目录,然后进行解压,然后再进到 demo 的 demo 目录。这个时候就需要去在远端服务器执行它的编译命令,可以看到生成的一个 hello 的二进制文件,这个时候就执行 hello 然后就打印了这个 hello world 这是不借助我们工具。而且如果要是通过修改代码的话,比如说我又在代码里面修改的一个,再打印一个 hi word 然后这个时候又需要进到项目中。但是这个时候可以对单独的文件进行上传,不需要再去打压缩包了。然后在这个要上传到它的文件目录 demo 下面再输入一遍密码。这时候传上来之后,要重新对这个文件进行编译,它能生成到一个新的二进制文件。这整个过程可以看到在这个远端服务器和本地 IDE 之间去来回的切换,而且还需要手动将变更了代码以及最开始的代码都要同步到远端服务器。这个过程还是比较比较复比较复杂的,完全非常影响大家的开发效率。对于我们的鲲鹏调试插件,就对这一块做的做了优化。首先在插件市场搜查搜一下鲲鹏,这些都是我们鲲鹏生态的一些插件,这个是我们编译调试的插件。安装完之后,首先因为我们这个上面不需要可以不需可以,如果有编译器源不需要去安装编译器,可以直接通过添加目标服务器邀请。这个是输入服务器 IP 地址,然后端口号默认 2 加 2 端口,然后用户名 root 工作空间就是 root workspace 这边因为我新建了一个新建那个 test 目录,就是为了对比你现在在这个目录新建一个 test 目录,这边可以通过输入需要传入那个私公私钥。公钥,就是为了方便后面自动上传代码的免密边填入 root 的账号密码。配置完成之后,它会提示一个你可以开始调试任务了。点击确认这边就是添加调试任务,因为这个部署编辑可以不需要部署编译任务,指定一个名称 build SED 刚才我们的编译命令就是 make 创建一个编译任务,就是可以启动编译,这边就需要选择你的目标服务器。如果添加多个目标服务器,这边会一个个列表,就需要选择你这个编译任务在哪个目标服务器上去运行。因为我们代码这个时候还没有同步到远端服务器,现在远端服务器这个目录下是空的。所以说第一步就选择同步并编译,就是将本地的这个代码同步到远端服务器上。这边就是编译的输出,可以看到编译成功。可以看到编译成功,也生成了这个 hello 的二进制文件。然后这个时候就可以通过创建那个测试用例。来测试这个编译的。问编译的二进制这个程序路径就是这个生成的二进制的路径。这个也没有参数,所以说调试参数就直接空着了。然后添加测试用例。添加的测试用例之后,可以点击这个测试用例上面的获取测试用例,也是可以选择一个 IPD 一个目标服务器获取测试用例。完成之后这边可以展开有一个测试用例的任务,点击一下运行。这是就是刚才这个代码这边打印的两句话,一个 hello word 一个 high word。也可以通过这个调试。这个是通过 GDB 远程调试,然后在实现本地调试,这个是可以通过下一步这种或者是继续,这都是可以的。下面就是如果下面就是配置一下自动代码自配置,自动上传选择配置的服务器,配置完之后大家可以看一下。就是如果这个时候我去修改代码。然后点击的直接按下 ctrl S 然后在下面右下角这里提示代码已经同步上去,这时候咱们可以在这边看一下。就是远端服务器代码是已经同步过来了,然后这个时候直接就可以不需要去上传代码,直接可以点击这个编译任务,重新将这个只能生成一下这个二进制文件仅编译这个二进制文件生成完之后这边测试用例去执行的时候就是最新的。所以说整个过程人是不需要去额外的去频繁地切换这个远端服务器和本地的 ID 只需要在这边修改调试。比如说又需要调试的话,就直接点击一下,这是下一步。这都是可以完全实现本地调试。如果就是不想去每次修改代码的时候都去把这个代码同步到远端。远端服务器可以将可以在那个地方给将它的手动,手动将它那个自动改为手动,那这个否有关闭的自动同步的功能。就不需要去。但是这个时候如果编译之前就将代码同步一遍就可以了以上就是编译调试插件的介绍和部分功能的演示,谢谢大家。下面由我的同事王启坤给大家继续介绍鲲鹏开发框架插件。好,接下来让我们打开 VSCode 这个开发工具,实地安装一下鲲鹏开发框架插件,体验一下鲲鹏开发框架插件给我们提供的强大功能。打开 VSCode 工具之后,让我们点击扩展按钮,搜索鲲鹏。搜索结果中展示了这么几个信息,首先是鲲鹏 David kit 鲲鹏 David kit 是所有鲲鹏 David kit 插件的一个集合。当你安装鲲鹏 DEV kit 之后,会自动将下面四个插件全部进行安装。今天我们只演示鲲鹏开发框架插件的功能,所以我们只安装鲲鹏开发框架插件,点击按钮之后就可以快速进行安装了。安装之后会弹出鲲鹏开发框架插件的详细内容。从这些内容中我们可以看到鲲鹏开发框架插件支持的相关鲲鹏加速库,比如系统库、压缩库、加解密媒体等,同时还展示了鲲鹏开发框架插件围绕鲲鹏处理器提供的加速策略。接下来让我们看一下鲲鹏开发框架插件给我们提供的第一大功能等工程管理向导。首先点击鲲鹏开发框架插件按钮,之后先关闭其他无关页面,并点击新建鲲鹏工程按钮。现在我们创建一个包含相关加速库的一个鲲鹏工程,工程名称定为 PaaS demo 1 工程位置默认选择地盘之后我们选择两个加速库进行下载。比如我们选择系统库的 Hyper scan 以及压缩库中的。 Be zip. 点击创建工程,并选择继续下载。下载加速库会为我们从目标地址中下载鲲鹏加速库的源码,之后我们在当前窗口查看工程。此时工程内容已经展示在左侧栏中了。从左侧栏中的信息我们可以看到主要以有以下几个主要内容。首先 SRC 中包含一些简单的 hello world 式的 demo 我们先禁用一下这个错误波形曲线。之后在 sort party 里面包含我们刚刚选择的两款加速库的子文件夹,分别是 zip 还有 Hyper scan 这两款。那么以 gzip 为例,它下面包含 G zip 加速库对应的 demo 以及 G zip 加速库对应的源码。 G zip 是一个压缩库。所以说 jessica demo 中就提供了对 gzip 的加密和压缩和解压缩的 API 的调用。同时除了这两个内容之外,还提供了一份详细的 README 文档,指导用户如何对 gzip 这个工程进行编译并运行。接下来我们以这个工程为基础,试一下鲲鹏开发框架插件给我们提供的第二大功能,也就是启发式编程。首先以面点 C 这个工程为基础,我们先输入一下鲲鹏的加速库函数。以 kml 数学库为例,当我输入 K 的时候,其实他就已经对相关的函数进行提示了。提示的信息除了有对应的加速库函数,还包含这个函数对应的一些详细信息,比如功能描述、优化点介照、下载地址等。当你想选择对应的函数进行补全时,除了用鼠标点击,还可以直接敲击回车键。当你敲击回车键之后,你就可以发现对应的鲲鹏加速库函数已经进行了高亮展示。同理利用 interest 函数也是一样的操作方法。比如我输入 VA 它就会给我提示相关的一些函数信息,我选择 VBA his 16,它的功能描述是长行绝对差值,再加上 16 敲击回车同样是高亮进行展示,这就是鲲鹏开发框架插件给我们提供的第二大功能启发式编程。接下来我们使用用一下鲲鹏开发框架插件提供的加速分析功能。加速分析可以分析用户选中的对应工程或文件中的内容,扫描出其中可以使用鲲鹏加速库函数进行替换的内容,并提供一份详细的可视化报告供用户进行查看。我们以 gzip demo 中的 demo gzip.cbp 文件为例进行一次扫描,右键这个文件,点击加速分析按钮。此时我们可以看到开发框架插件会先让用户选择对应的加速分析类型。如果用户只想针对自己的工程或文件进行压缩方面的扫描,就可以直接选择压缩库。这一次我为了给大家更好的展示扫描结果,我针对这个文件进行所有相关加速库的加速分析。点击确认分析按钮之后,右下角会有对应的进度提示。同时下面的问题弹窗中会展示相关可以优化的函数,即对应的详细信息,比如名称、描述、优化点等。扫描结束之后,会议在当前页面中展示详细的可视化报告。从这个报告中我们可以看出有以下几点重要内容,比如对应的函数名、所在地址、加速方法等,同时提供了查看和下载按钮,用户点击下载会自动跳转到对应的加速库的下载地址,用户可以下载之后进行对应的函数替换。同时用户可以点击查看按钮,跳转到对应的函数地址,方便用户进行下一步的替换。此时鲲鹏开发框架插件给我们提供的三大功能已经全部演示完毕。接下来让我们回到 PPT 看一下鲲鹏开发框架插件的相关关沙箱实验内容。目前鲲鹏社区推出了鲲鹏开发框架的在线实验,用户可以登陆鲲鹏社区搜索基于鲲鹏亲和开发框架进行原生开发这么个实验。这个实验会指导用户创建并运行坤鹏工程,帮助用户快速熟悉原生开发的过程和优势。今天在这里我带大家大概看一下这个实验的一些具体的内容。好,这个实验它的目的是指导用户通过鲲鹏开发框架插件从 0 到 1 完成原生开发的基本开发过程,让用户熟悉原生开发的基本操作过程,体验原生开发带来的极简操作和性能提升。我们看一下实验手册。实验手册中主要分为以下四步,非常简单,安装插件、创建工程并查看工程,最后编译并执行这个鲲鹏工程安装和创建鲲鹏工程。这么两步刚刚已经给大家进行了个展示,查看工棚工程的话,我们来看一下这昆仑工程到底有什么。点击查看工程按钮之后会展示对应的工程内容。我们可以看到在这个实验中创建的是 gzip 相关的一个加速库的 demo 那么这个 demo 里面一共有两个子文件夹,分别是 G zip demo 还有 G zip demo 的源码。那么 G zip 这个源码是已经下载并解压好的 gzip 鲲鹏库。这个加速库针对鲲鹏处理器的架构特点,对 gzip 原生库进行了加速优化。接下来的这个实验就是利用这个 demo 来对比加速库和原生库在解压两个 G 大小文件时的解压效率。接下来让我们大致看一下在编译并执行鲲鹏工程时,加速库和原生库的解压效率究竟有何不同。我们略过这些命令的相关内容,看一下具体的执行结果。大家也可以自己去鲲鹏社区上的这个在线实验去手动操作一下,看看自己得到的结果和沙箱实验里面提到的结果是否有和不同?首先先进行的是 dzip 鲲鹏加速库对两个 G 大小压缩文件的解压。从终端动作结果可以看出解压时间是 27.3 秒。下面使用的是原生 gzip 来对比这个解压性能。我们可以看到原声库针对两 G 大小的压缩文件的解压时间是 34.8 秒,加速库相比于原生库有 20% 的性能提升。
  • [问题求助] 【200DK】【ascendCamera】fatal error:driver/peripheral_api.h:没有那个文件
    【功能模块】想运行https://gitee.com/ascend/samples/tree/master/cplusplus/level1_single_api/5_200dk_peripheral/ascendcamera【操作步骤&问题现象】1、执行“make",一直报找不到acl/acl.h,acl/acl_base.h的问题。通过修改src下面的CMakeList.txt大概解决了这个问题。2、但是还是出现了新的问题。我怀疑我的环境变量有问题,但是实在不会改。通过find也找不到该文件。【截图信息】【日志信息】(可选,上传日志内容或者附件)
总条数:968 到第
上滑加载中