for i in `seq 1 8` ; do
(./runProgram &)
done
亲爱的研究员,
我知道如何通过创建8个独立的进程来创建并行进程,接下来我要搜索的是如何
与处理器固定同时运行8个副本(每个副本都是自己的处理器核心)
ii-与处理器固定同时运行16个副本(每个核心2个副本)
iii-根据“iii”与处理器固定同时运行8个副本,并在代码中的特定函数调用之后将处理器核心翻转到最远的核心。
我的cpu的当前配置是8核。它正在运行Fedora OS。我事先不知道过程ID。
请建议。
提前致谢。
答案 0 :(得分:1)
实现i和ii的最简单方法是使用taskset
命令:
案例i:
for i in `seq 0 7`; do
taskset -c $i ./runProgram &
done
案例ii:
for i in `seq 0 7`; do
taskset -c $i ./runProgram &
taskset -c $i ./runProgram &
done
案例iii:请参阅sched_getaffinity(2)
和sched_setaffinity(2)
的手册页,了解如何更改代码中的固定。