OpenMP:并行运行两个函数,每个函数使用一半的线程池
我有一个消耗 CPU 的函数 do_long
,我需要在两个不同的数据集上运行。
do_long(data1);
do_long(data2);
do_long() {
#pragma omp for
for(...) {
// do proccessing
}
}
我有 N 个可用线程(取决于机器)。如何告诉 OpenMP 我希望两者都 do_long
函数并行运行,N/2 个线程应该执行第一个 do_long
中的循环,另一个 N/2 个线程应该处理第二个 do_long
?
I have a CPU consuming function do_long
that I need to run on two different datasets.
do_long(data1);
do_long(data2);
do_long() {
#pragma omp for
for(...) {
// do proccessing
}
}
I have N threads available (depends on machine). How to tell OpenMP that I want that both do_long
functions are run in parallel, and N/2 threads should perform the loop in first do_long
and another N/2 should process second do_long
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一种方法是使用嵌套并行性来实现:
One approach is to do it using nested parallelism: