我的问题是这样的 一个...但我想做一些不同的事情... ...
例如,在我的并行区域内,我想在4个线程上运行我的代码,当每个线程进入for循环时,我想在8个线程上运行我的代码。
#pramga omp parallel num_threads(4)
{
//do something on 4 threads
#pragma omp parallel for num_threads(2)
for(int i=0;i<2;i++){
//do something on 8 threads in total
}
}
那么,有没有办法把每个(4个)正在运行的线程 "分割 "成两个(新的)线程,这样在for循环中就有更多(8个)线程在运行?
是的,正确的做法是你选择的方法:第二个for循环将被每4个线程分割,这样8个线程 可 同时执行最里面的循环。