【问题标题】:Intel C++ compiler gives "offload constructs are not supported on this platform" error英特尔 C++ 编译器给出“此平台不支持卸载构造”错误
【发布时间】:2014-06-09 15:42:15
【问题描述】:

在 Windows(使用 Visual Studio)上编译使用 _Cilk_offload 关键字的基本代码段时,编译器在所有带有 _Cilk_offload_Cilk_shared 的行上抛出 error : offload constructs are not supported on this platform(使用 \Qoffload 编译)

平台或设置具体有什么问题?

编辑:代码在编译时失败,编译机和目标机不同

以下是我的代码的基本大纲

Main.cpp

//other includes
#include <cilk/cilk.h>
#include "offload.h"
#define ITERS 100

int main()
{
    // code ommitted
    doSetup();
    for(int i=0;i<ITERS;i++)
//initialize array    {
        doWork();
    }
    // code omitted
}

卸载.h

#ifndef OFFLOAD_H
#define OFFLOAD_H

#define ARRAY_WIDTH 100
#define ARRAY_HEIGHT 100
#define ARRAY_SIZE ARRAY_WIDTH*ARRAY_HEIGHT

void doWork();
void doSetup();

#endif

卸载.cpp

#include "offload.h"
#include <cilk/cilk.h>

_Cilk_shared float c=1.1;
_Cilk_shared float __declspec(align(64)) a[ARRAY_SIZE]
_Cilk_shared float __declspec(align(64)) b[ARRAY_SIZE]
void doWork()
{
    _Cilk_offload cilk_for(int j=0; j<ARRAY_HEIGHT; j++)
    {
        a[j*ARRAY_WIDTH:ARRAY_WIDTH] = c * a[j*ARRAY_WIDTH:ARRAY_WIDTH] + b[j*ARRAY_WIDTH:ARRAY_WIDTH];
    }
}

void doSetup()
{
    //array initialization omitted
}

【问题讨论】:

  • 所以要么切换到支持卸载的平台,要么停止尝试在现有平台上使用它。似乎不是什么大问题...您可能无法强制一个不支持某些东西的平台突然开始支持它...
  • 它在windows上,被列为支持。
  • 我认为@twalberg 的意思是:您的 CPU 是否支持 Cilk 扩展?如果您的 Intel CPU 中没有特定的硬件支持,那么这将无法正常工作。
  • 这在编译时失败,Cilk 适用于非卸载代码,但卸载代码生成不起作用。无论编译器端机器设置是否正确,我都应该能够编译?

标签: c++ intel-mic cilk-plus xeon-phi icc


【解决方案1】:

修复了问题,安装目录中缺少几个编译器套件。我更新了并行工作室并且文件存在。如果您对此有疑问,请查看名为 ofldbegin.objofldend.obj 的文件是否存在于您的系统中,位于 (installDirectory)\compiler\lib\intel64

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 2021-07-28
    • 2013-04-28
    • 2014-06-14
    • 2014-02-19
    • 2021-01-05
    • 1970-01-01
    相关资源
    最近更新 更多