×

签到

分享到微信

打开微信,使用扫一扫进入页面后,点击右上角菜单,

点击“发送给朋友”或“分享到朋友圈”完成分享

【开发者学院】中级课程—BANG 基础知识(3节)(本文附课后小练习答案) 三叶虫2023-02-23 15:51:31 回复 查看 社区交流 干货资源
【开发者学院】中级课程—BANG 基础知识(3节)(本文附课后小练习答案)
分享到:

image.png

进阶开发者课程~ BANG 系列基础知识课程已更新,以下为简介及课后练习答案:

一、《初识 BANG 异构模型》

简介BANG 异构计算平台;抽象硬件模型与存储模型;BANG 语言基础介绍。

链接:初识 BANG 异构模型 – 寒武纪开发者社区 (cambricon.com)

课后习题:

Q1、NRAM主要功能、作用是什么? 可与什么单元能进行数据交互?

Q2、任务映射:设任务类型为 Union2, 任务规模为dim.x=8,dim.y=2,dim.z=2, 分析taskIdx, taskIdy, taskIdz 和 taskId 的值。

答案:

A1、NRAM作用是主要用来存放向量运算和张量运算的输入和输出数据,也可以存储一些计算过程中的临时标量数据。NRAM可以与GDRAM、SRAM、WRAM、LDRAM进行数据交互。

A2、taskIdx取值范围为[0,7],taskIdy取值范围为[0,1],taskIdy取值范围为[0,1],taskID取值范围是[0,31]

二、《BANG 编程实战》

简介 BANG C 语言的基础语法支持;Host 侧和 Device 侧代码编写流程;编译流程 与 CNGDB 调试

链接:BANG 编程实战 – 寒武纪开发者社区 (cambricon.com)

课后习题

Q1、参考文档中的案例,实现一个完整的向量加法程序,在MLU中尝试编译运行。

Q2、尝试使用 CNGDB 对问题1中代码进行调试。

答案

A1、代码见文本,编译为:cncc kernel_add.mlu -o add --bang-mlu-arch=mtp_372 -O3

(下载以下附件中的文件:kernel_add.mlu)

kernel_add.rar


A2、根据视频课件进行调试和熟悉。

 

三、BANG 性能优化

简介 BANG 编程优化的基本流程和常用优化方法

链接:BANG 性能优化 – 寒武纪开发者社区 (cambricon.com)

课后习题

Q1、简述性能调优基本流程。

Q2、简述性能调优基本方法。

答案

A1

a)      建立性能基准:以第一份运行正确的代码运行时间为基准性能数据。

b)      识别性能瓶颈:程序性能瓶颈主要有两个,计算瓶颈和 IO 瓶颈。

c)      等价变换:确保代码执行正确的前提下,优化代码,消除或降低瓶颈。

d)      回归验证:运行新代码,看性能是否提升,然后继续上述步骤,不断优化。

A2

Ø  计算优化(尽量使用融合指令)

Ø  访存优化(拷贝方式,排流水等)

Ø  异构优化(在host侧:kernel融合,多队列并行,多队列流水)


版权所有 © 2024 寒武纪 Cambricon.com 备案/许可证号:京ICP备17003415号-1
关闭