首页 文章

适用于加速器的OpenMP 4.0:Nvidia GPU目标

提问于
浏览
0

我正在尝试使用英特尔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项目属性中管理的东西吗?

如果没有,我可能会遇到一个更严重的问题: does OpenMP 4.0 support Nvidia GPUs as accelerators? (我知道OpenACC是为此目的而制作的,但出于经济原因,我宁愿使用evry OpenMP功能,我可以)

任何帮助将非常感激 .

2 回答

  • 1

    对于您的第一个问题:ICC仅支持英特尔MIC卸载 . 所以你不能使用OpenMP 4.0和ICC来编程你的Nvidia GPU .

    我的知识可能已经过时,但唯一可用的针对Nvidia GPU的OpenMP 4.0编译器是Cray编译器Cray与其集群一起销售 . 也许PGI编译器可以支持OpenMP 4.0,但这是一个疯狂的猜测 . 无论如何,Windows平台上不支持这些编译器 .

  • 0

    OpenMP 4.0确实支持Nvidia GPU作为加速器 . 您真正想知道您的特定编译器是否支持OpenMP的实现 . 如果您遇到MSVC(即使在后面使用英特尔编译器),那么答案是否定的 . 你可能想查看this然后看看它如何与clang一起使用 .

相关问题