kir*_*off 5 c++ parallel-processing multithreading openmp multiprocessing
我想知道是否可以在具有8个内核的硬件上同时运行8个以上的线程.
如果是这样,使用openMP来并行化N个计算,我可以创建大小的块,比如N/8,并且在每个线程中进一步分叉成(N/8)/ 8个线程,可能还有更多?
当我嵌套并行化时,会发生什么?对于嵌套并行,我还有8个可用线程吗?
谢谢!!
Pét*_*rök 10
8个核心在给定时间点最多只能同时运行8个线程.但是,很大程度上取决于你的线程在做什么.如果他们正在执行CPU密集型任务,则不建议生成比核心数量多的线程(少数可能正常).否则,过多的上下文切换和高速缓存未命中将开始降低性能.但是,如果存在大量I/O,则线程可能会被阻塞很多,而不是使用CPU,因此您可以并行运行更多的线程.
最重要的是,您需要在特定环境中测量特定情况下的性能.
另请参见此相关主题.
归档时间:
13 年,9 月 前
查看次数:
4170 次
最近记录:
8 年,6 月 前