ExN*_*ile 2 c++ openmp visual-studio-2015
我在Visual Studio 2015中获得OpenMP支持时遇到问题.
我已经将项目选项配置为使用/ openmp(项目 - >属性 - > C/C++ - >语言 - > OpenMP支持:是),代码如下(非常简单的代码,来测试OpenMP):
#include <iostream>
#include <omp.h>
int main(int argc, char* argv[])
{
int n = 0;
#pragma omp parallel
{
std::cout << std::endl << "Hello World!";
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
只有一个线程运行并且"Hello World!" 只打印一次.
我可以用编译程序VS2015 Community Version 14.0 Update 1上Windows 8.1 64bit使用OpenMP支持.
在下面,按照可能有用的步骤列表:
Project-> Properties -> C/C++ -> Language
更改Open MP Support到Yes(/openmp)
点击 Apply
Command Line并确认/openmp
出现在编译器选项的某处.如果出现,请单击Ok并构建项目.
在运行程序之前,在该行放置一个断点:
int n = 0;
单击运行该程序 Local Windows Debugger
当程序在断点处停止时,转到 Debug -> Windows -> Disassembly
某处,在断点附近,寻找一条装配线,如:
call __vcomp_fork (?????????h)
如果你找到这一行,很可能openmp是正常运行的.
其他一些可以帮助的检查:
从Windows Sysinternals获取工具,如Process Explorer(GUI)或ListDLL(命令行).
的ListDLLs:
程序在断点处停止,打开任务管理器并查找PID该过程.
打开命令提示符并运行命令:
listdlls [PID] | findstr -i vcomp
应该出现像VCOMP140D.DLL或VCOMP140.DLL或VCOMP????.DLL.
如果没有出现,可能编译器找不到openmp dll,因此您必须查看该库是否在系统的某个位置可用.
最后两个提示可以节省您的时间:
如果您更改任何配置(例如Debug -> Release或x86 -> x64),再检查是否Command Line有/openmp设定好的选项.
如果你试图强制编译器使用C语言(而不是C++),也许是pragma:
#pragma omp parallel for
将无法工作(更新:显然这个问题不再发生在VS2017上).
它向我显示了这样的信息:
INTERNAL COMPILER ERROR in 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\CL.exe'
回到编译器到C++语言,这parallel for将工作正常.
| 归档时间: |
|
| 查看次数: |
10651 次 |
| 最近记录: |