gpt4 book ai didi

c++ - OpenMP:为什么这些 omp 并行部分不使用多线程执行?

转载 作者:太空宇宙 更新时间:2023-11-04 11:52:12 26 4
gpt4 key购买 nike

我正在尝试并行化一些代码,但我遇到了(大概是愚蠢的)问题。下面的示例代码返回“12”,尽管我期望“21”。

omp_get_max_threads() 返回 8,omp_get_num_threads() 返回 1,omp_get_thread_num() 返回 0,当我在这个 block 的任何地方调用它们时。我想我可以得出结论,它只是由主线程按顺序执行。

#include <omp.h>
#include <iostream>
#include <Windows.h>

using namespace std;

int main() {
#pragma omp parallel sections num_threads(2)
{
#pragma omp section
{ Sleep(200);
cout << "1"; }
#pragma omp section
{ cout << "2"; }
}
}

我做错了什么?如何强制并行处理这些部分?

对于上下文:我正在从两个 USB 3.0 摄像头流式传输数据,并且依次调用每个摄像头的图像速度太慢,以至于我丢失了帧。我想基本上为每个相机留出一个线程来不断地要求它的图像。

This问题有类似的标题,但没有帮助。我正在使用 Visual Studio 2010。

最佳答案

评论是正确的:我忘记在项目设置中设置 OMP 支持。

值得注意的是,我可以从下降的相机传输的帧数。最大化使用的带宽并不像我想的那么简单。

关于c++ - OpenMP:为什么这些 omp 并行部分不使用多线程执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17691217/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com