【发布时间】:2016-12-23 23:29:41
【问题描述】:
我正在尝试使用英特尔 C++ 15.0 编译器在 Visual Studio 2012 中将 openMP 用于加速器 (openMP 4.0)。
我的加速器是 Nvidia GeForce GTX 670。
此代码无法编译:
#include <stdio.h>
#include<iostream>
#include <omp.h>
using namespace std;
int main(){
#pragma omp target
#pragma omp parallel for
for (int i=0; i<1000; i++)
cout<<"Hello world, i am number "<< i <<endl;
}
当然,当我评论 #pragma omp target 行时,一切都很好。
当我在 OpenMP 4.0 规范中执行与加速器相关的任何事情时遇到同样的问题(例如,omp_get_num_devices() 函数应该返回我系统中潜在加速器的数量)
我得到的是以下错误和警告:
error #10340: problem encountered when performing target compilation
error : *MIC* cannot open source file "stdio.h"
warning #10362: Environment configuration problem encountered. Please check for proper MPSS installation and environment setup.
由于*MIC* 标签,这是我的理论:默认情况下,我的英特尔编译器正在尝试构建一个 MIC 应用程序(用于 Xeon Phi 加速器)并且不接受我的 Nvidia GPU 作为有效的加速器。这可能性有多大?这是我可以在我的 VS 项目属性中管理的东西吗?
如果不是,我可能会遇到更严重的问题:OpenMP 4.0 是否支持 Nvidia GPU 作为加速器?(我知道 OpenACC 就是为此目的而设计的,但出于经济原因,我更愿意使用我可以使用的所有 OpenMP 功能)
任何帮助将不胜感激。
【问题讨论】:
-
你必须使用 OpenCL 或 CUDA。
-
GCC 5.0 支持这个phoronix.com/…
标签: c++ visual-studio-2012 openmp intel gpgpu