SW并行编程

作业提交命令:

  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编译主核从核文件
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值