SW并行编程

文章介绍了在SW26010处理器上进行作业提交的命令参数,包括交互式运行、队列选择、核组使用和内存配置。重点讨论了从核ID的获取、LDM(LocalDataMemory)在降低访存开销中的作用,以及athread_get和athread_put函数在数据传输中的应用。此外,文章还展示了主核函数如何启动、管理和回收从核线程。
摘要由CSDN通过智能技术生成

作业提交命令:

  1. 参数 -I (交互式运行、本地终端挂掉,作业就挂掉了; 后续使用 -o out.log 后台运行)
  2. 参数 -q(太湖之光有4W的CPU,为了使用方便,认为的划分为若干队列; -q 指定在哪个队列上运行任务)
  3. 参数 -n (指定使用的核组数(sw26010CPU上有4个核组(那么太湖之光上,有近16万个核组)))
  4. 参数 -b (指定使用从核栈空间;从核函数若涉及函数调用,肯定要压栈(如果压栈到主存,有访存开销))
  5. 参数 -cgsp (指定使用从核的数量)
  6. 参数 -host_stack (指定主核栈空间大小;默认为8M,一般设置在128MB以上;(如果主核函数比较大,涉及较多的函数调用,需要压栈操作;局部变量的数据的大小))
  7. 参数 -share_size (设置核组共享空间大小;(其实我理解就是设置堆空间的大小))

注意:
1、 -host_stack 、 -share_size的单位都是MB
2、 -host_stack 、 -share_size指的都是主存的大小
3、一般设置 host_stack + share_size 小于 7500 (因为主存的空间大小为8GB,还有一部分内存空间是内核的

在这里插入图片描述

SW26010处理器架构
在这里插入图片描述

获取从核ID号

thread_id = athread_get_id(-1)

在这里插入图片描述

LDM降低访存开销
在这里插入图片描述

主核 从核 访问数据的开销
在这里插入图片描述
从核并行编程关键点2
利用athread_get(主存地址,从核地址,数据量)
把主存数据放到从核LDM
降低访存开销
在这里插入图片描述

具体从核函数怎么写?

// 将主存数据 放到 从核LDM处
athread_get(数据的主存地址,数据的从核LDM局存地址,数据量,&get_reply);
// 将从核LDM数据 放到 主存地址处
athread_put(数据的从核LDM局存地址, 数据的主存地址,数据量,&put_reply);

/*
注意,每成功一次athread_get、和athread_put操作,回答字都会加一
*/

在这里插入图片描述

主核函数的写法


extern SLAVE_FUN(func)(); // 从核函数声明

athread_init();					/*1、从核线程初始化*/
athread_spawn(func, args);		/*2、从核线程启动*/
athread_join();					/*3、从核线程回收*/
athread_halt();					/*4、从核线程终止*/

在这里插入图片描述

sw5cc编译主核从核文件
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值