1
for i in `seq 1 8` ; do
    (./runProgram &)
done

亲爱的同学们,我知道如何通过创建 8 个独立进程来创建并行进程,接下来我要寻找的是如何

i-Run 8 个副本与处理器固定同时运行(每个副本都是自己的处理器内核)

ii-与处理器固定同时运行 16 个副本(每个内核 2 个副本)

iii-按照“iii”同时运行 8 个副本,处理器固定,并在代码中的特定函数调用后将处理器内核翻转到最远的内核。

我的 cpu 当前配置是 8 核。它运行 Fedora 操作系统。我事先不知道进程ID。

请建议。

提前致谢。

4

1 答案 1

1

实现 i 和 ii 的最简单方法是使用taskset命令:

案例一:

for i in `seq 0 7`; do
  taskset -c $i ./runProgram &
done

案例二:

for i in `seq 0 7`; do
  taskset -c $i ./runProgram &
  taskset -c $i ./runProgram &
done

案例 iii:请参阅手册页了解如何更改代码中的固定sched_getaffinity(2)sched_setaffinity(2)

于 2012-05-07T07:05:41.643 回答