为什么OpenMP仅使用一个线程运行?

时间:2018-01-19 01:51:21

标签: c++ visual-studio openmp

我开始学习MPI,并尝试从VS单元测试中运行一个简单的MPI程序。

版本:Visual Studio 2017(第141页)
 处理器:Intel Core i3 CPU 540 @ 3.07GHz,2个核心
 Everythin设为64

 #include "stdafx.h"
#include "CppUnitTest.h"
#include <xmmintrin.h> // Contain the SSE compiler intrinsics
#include <intrin.h>
#include "mathutils.h"
#include "stringbilder.h"
#include <ctime>
#include <intrin.h>
#include <omp.h>
#include <sstream>


using namespace Microsoft::VisualStudio::CppUnitTestFramework;
using namespace std;

namespace tensorlearn
{
    TEST_CLASS(noob_tutorials2) {

public:
    TEST_METHOD(OMP_HEllo)
    {
#ifdef _OPENMP
        if (_OPENMP >= 201107) {
            Logger::WriteMessage("Openmp supported");
        }
#endif

#pragma omp parallel num_threads(4)
        { stringstream ss;
        ss << "hello from MPI: thread " << omp_get_thread_num() <<
            " of " << omp_get_num_threads() << " \n";
        Logger::WriteMessage(ss.str().c_str());
                /* barrier and join*/
        }
        Logger::WriteMessage("barrier and join");
    }

    };
}

我觉得只有一个线程在运行:

hello from MPI: thread 0 of 1 
barrier and join

我检查了项目的配置:

    其他包含目录中的
  • $(MSMPI_INC); $(MSMPI_INC)\ 64; $(VCInstallDir)单元测试\包括;%(AdditionalIncludeDirectories)

  • 启用Sdl检查和多处理器编译

  • 链接器其他依赖项:msmpi.lib;%(AdditionalDependencies)
  • 链接其他库依赖项$ MSMPI_LIB64; $(VCInstallDir)UnitTest \ lib;%(AdditionalLibraryDirectories)

它能导致什么 - 我是否忘记了某些事情,或者是因为从单元测试开始? 我不是从命令promt启动它,而是从VS启动它 - &gt; &#34;运行选定的测试&#34;,这是一个问题吗? 此外,_OPENMP未设置

0 个答案:

没有答案