SRA3-40是一款面向高性能计算的RISC-V通用服务器,国产主控具备强劲性能,融合智算,支持强编解码。
SRB3-40是一款高性能的RISC-V存储服务器,多盘位大容量安全存储。
智算服务器SGM7-40,适配主流LLM,单卡可运行70B的大语言模型
SOM1684,搭载算能BM1684,支持16路高清视频分析
Core-1684-JD4,搭载算能BM1684,支持16路高清视频分析
SBC-6841,搭载算能BM1684,支持16路高清视频分析
iCore-1684XQ,搭载算能BM1684X,支持32路高清视频分析
Core-1684XJD4,搭载算能BM1684X,支持32路高清视频分析
Shaolin PI SLKY01,搭载算能BM1684,支持16路高清视频分析
QY-AIM16T-M,搭载算能BM1684,支持16路高清视频分析
QY-AIM16T-M-G,搭载算能BM1684,支持16路高清视频分析
QY-AIM16T-W,搭载算能BM1684,支持16路高清视频分析
AIV02T,PCIE板卡,1684*2,半高半长
IVP03X,搭载算能BM1684X,支持32路高清视频分析
IVP03A,微服务器 被动散热,12GB内存
Coeus-3550T,搭载算能BM1684,支持16路高清视频分析
EC-1684JD4,搭载算能BM1684,支持16路高清视频分析
CSA1-N8S1684,算力集群服务器,BM1684*8,1U
DZFT-ZDFX,ARM+DSP智能封条分析,搭载算能BM1684X
ZNFX-32,搭载算能BM1684,支持16路高清视频分析
ZNFX-8,ARM+DSP架构,隔爆兼本安分析装置符合煤安要求,搭载BM1684X
EC-A1684JD4,微服务器主动散热,16GB内存,32GB eMMC
EC-A1684JD4 FD,搭载算能BM1684,支持16路高清视频分析,16GB内存,32GB eMMC
EC-A1684XJD4 FD,搭载算能BM1684X,支持32路高清视频分析
ECE-S01,搭载算能BM1684,支持16路高清视频分析
IOEHM-AIRC01,微服务器,主动散热,搭载算能BM1684,支持16路高清视频分析
IOEHM-VCAE01,搭载算能BM1684,支持16路高清视频分析
CSA1-N8S1684X,算力集群服务器,BM1684X*8,1U
QY-S1U-16,1U版本BM1684盒子
QY-S1U-192,算力集群服务器,BM1684*12,1U
QY-S1X-384,算力集群服务器,BM1684X*12,1U
为交通拥堵、行车安全、车辆违法和道路污染治理问题赋能
利用深度学习云边结合方式解决全域多家餐饮机构的食品安全监管需求,为政府、企业级公众打造监督闭环
对生产全过程、全方位实时感知与精细化监管,推进应急监测智能化,赋能风险识别预警
以云边协同的新型算力基础设施赋能各类数字城市场景,为数字经济发展提供源动力
以自动化训练推理一体化平台为基础,助力算力/算法整合应用快速、高效工程化落地
输入格式:大小为 1 X 1 的RGB通道图片张量
输出格式:大小为 1 X 1 的BGR通道图片向量
该算子host端和device端API通信结构体为
typedef struct { unsigned int size; unsigned long long output_addr; unsigned long long input_addr; } __attribute__((packed)) param_t;
从host端的代码分析,size
为图片数量,每张图片的原始通道顺序为RGB,in/output_addr
为Global Memory的数据存放地址,图片数据连续存放,同一个图片的RGB三个通道也是连续存放的。
可以参考host/rgb2bgr.cpp
中的rgb2bgr_reference
函数实现:
static inline void rgb2bgr_reference(float *output, const float *input, const param_t ¶m) { for(unsigned int i = 0; i < param.size; i++) { // 分别对每张图片处理 output[i*3+2] = input[i*3]; // 源图像的R通道保存到目标图像的第三个通道 output[i*3+1] = input[i*3+1];// 源图像的G通道保存到目标图像的第二个通道 output[i*3] = input[i*3+2]; // 源图像的B通道保存到目标图像的第一个通道 } }
这里视输入数据大小为 [1, 1, 3, 1]
以1张图片为例:
不考虑一切特殊情况,使用一个NPU,配合GDMA操作就可以完成该算子的实现,参赛选手只需要将R/G/B
三个通道的数据、从input_addr
搬运到Local Memory中,再从Local Memory搬运到output_addr
即可。
这里视输入数据大小为 [2, 1, 3, 1]
扩展到2张图片,可以有以下思路
参赛选手当然可以按照一张图片的处理逻辑进行处理,但是这样效率较低,如果一次性处理两张图片,那么效率可能就会更高一点。如图所示,若参赛选手精心地设计了GDMA的stride
和shape
参数,那么就可以做到将两张图片 [2, 1, 3, 1] 视为按一定规则排放的一张图片 [1, 1, 3, 2]
,通过自定义
stride
和shape
就可以一次完成两张图片的搬运。但该方法也使得GDMA数据读取效率变低,具体的性能如何参赛选手可以进行尝试和探索。
以上两种方法都可以用于任意图片数量的数据处理。
不难发现前两种思路都基于数据为 [N, 1, 3, 1]的数据格式,而根据文档可以发现BM1684的数据搬运,会按照
维度 C 切分并搬运到不同NPU上,如此设计
shape
浪费了大量NPU空间和性能,那么基于 [1, N, 3, 1]的数据格式,就可以充分利用64个NPU进行数据搬运,在此就不做更详细的描述,若参赛选手完成了思路1的代码,则应该很容易修改为思路3的代码。
在完成基础的算子实现后,参赛选手可以从以下几点考虑改进RGB2BGR算子的实现: