join之前没有spawn线程?
swmore
@swmore
18
声望
278
帖子
9157
资料浏览
44
粉丝
2
关注
swmore 发布的帖子
-
RE: 各位老师同学,问一个有关动态线程调度的问题。
我理解就是你有:
for (i = 0; i < n; i ++){ for (j = 0; j < m; j ++) { DO_COMPUTE(i, j); } }
在从核上可以尝试:
int global_task_ptr = 0; //设置一个原子变量 void slave_kernel(){ if (_MYID ==0) global_task_ptr = 0; //先清零 athread_syn(ARRAY_SCOPE, 0xffff); //同步防止从核清零前偷跑 int local_task_ptr = 0; while (1) { asm volatile("faal %0, 0(%1)\n\t" : "=r"(local_task_ptr): "r"(&global_task_ptr)); //原子取并+1 if (local_task_ptr >= n * m) break; int i = local_task_ptr / m; int j = local_task_ptr % m; DO_COMPUTE(i, j); } }
需要
DO_COMPUTE(i, j)
占用的时间足够长。 -
RE: 在生成神威的静态库后,如何自动添加athread_init()和athread_halt()
@varinic 不halt,然后
if (!athread_idle()) athread_init(); athread_spawn(xxxxxx)
-
RE: SPE 0 exception ! Illegal instruction
@timewind 跳转失败的可能性比较大,你看spc里面的last function spawned找是哪个kernel吧