全文总结:
附:
【思考】 用于那些产生对问题的思考,但是并不确定答案,还需要求证的地方的留痕
【妙点】 用于可以应用到后面优化的妙点
SDDA C 初印象
【思考】
SDDA C就有点像mpi
都是先把任务划分成几部分,然后传输到处理器,处理器接受处理后返回数据,最后对返回的数据进行处理,输出最后的结果
学习资料
【思考】
倾向于优先学习视频,其次学习文档资料
因为视频的内容容量大,传递的信息相对而言更容易接受
学习资料链接
视频链接:
太初元碁的个人空间-太初元碁个人主页-哔哩哔哩视频
文档链接:
文档中心
建议按照上图的顺序对文档资料进行学习
也就是:
PS:这个介绍之后感觉更像mpi指令了
【mpi好像也可以进行多设备并行计算】
【思考】
这个SDAA C的功能和mpi如此相像,那为什么不直接用mpi?
还是说这就是mpi的一个优化版本?
硬件基础知识
太初加速卡
对应储存结构
PS:主机是设备端???
不对,主机端和设备端还是有区别
主机端和设备端
这里的主机端可能是指云“机器”的主机
【思考】
SPM-SPE的私有储存空间
真的感觉这么像mpi,也是私有内存【妙点】
在储存数据的时候,可以依照SPM的储存设计,对需要计算的数据进行切割和分发【或者其它类似的操作】?
编程模型
介绍:
【闲话】
欸???
这不就是mpi(的能力)吗?【黑人问号???】
多线程
任务核心
任务分配方式
Kernel函数??
【思考】
异构并行计算是否可以理解为:
本地制定、划分、传输任务到云端,然后云端计算、反馈计算结果
就是因为有本地和云端的存在,使得整个计算不在一个整体上,因此叫做异构并行计算???
否
线程代码是什么???
线程代码
数据传输
语法规范
语法、头文件以及关键字
【思考】
kernel函数作用到底是什么???【思考】
矩阵转置是什么意思???
线代知识
语法、头文件
关键字
真正运行写代码的时候多看看这张图吧,哈哈哈哈
数据类型
TecoCC编译工具
示例解剖
一
程序的编写多了一部分
【思考】【现在我也不明白,等后面看看】
- 程序的书写
- 编译
- 运行
代码:
//需要哪些头文件???
//不需要...?
__global__ void kernel_entry()
{
printf("Hello AI Card\n");
}
int main()
{
sdaaSetDevice(0);
kernel_entry<<<1>>>();
sdaaDeviceSynchronize();
return 0;
}
编译:
tecocc test.scpp
运行:
./a.out
【思考】
按照上图结果来看
有多少个SPE就会执行多少次代码?【重复执行代码】
那是否需要/怎么精细化操作,避免重复执行代码的存在?
【思考】 用if+reuturn的操作?
这太复杂了吧,应该有其它的分配的函数或者关键字吧
二
PS:和mpi实现的过程相似