面向FPGA的Intel OpenCL SDK编译内核,可通过aoc命令进行仿真,从而给出链接器错误

时间:2019-05-11 17:49:20

标签: opencl fpga intel-fpga

我试图在Intel FPGA SDK中编译内核以进行aoc仿真,即使使用SDK中包含的init_opencl.bat,我也已设置了所有环境变量。 我正在使用Visual Studio 2017开发人员命令promt运行以下行以使用Visual Studio链接器:

aoc -march=emulator -v -board=a10gx my_kernel.cl -o my_kernel.aocx

但是它总是抛出一个链接器错误(该错误是西班牙语的,对此感到抱歉)。

  

Creando biblioteca libkernel.lib和objeto libkernel.exp

     

libkernel.obj:错误LNK2019:símboloexterno   __imp___translate_sampler_initializer解析程序可以参考my_kernel的其他功能

     

libkernel.obj:错误LNK2019:símboloexterno floorf sin resolver al   __acl__copysignf      

libkernel.obj:错误LNK2019:símboloexterno ceilf sin resolver al   __acl__copysignf      

libkernel.obj:错误LNK2019:símboloexterno log2 sin resolver al   __acl__sppow_approx有趣的地方咨询

     

libkernel.obj:错误LNK2019:símboloexterno exp2 sin resolver al   __acl__sppow_approx有趣的地方咨询

     

LINK:错误LNK2001:símboloexterno _DllMainCRTStartup sin解析器

     

C:\ Program Files(x86)\ Microsoft Visual   Studio \ 2017 \ Community \ VC \ Tools \ MSVC \ 14.16.27023 \ lib \ x86 \ msvcrt.lib:   警告LNK4272:图书馆提示“ x86”Estáen   destino de xino冲突影片“ x64”

     

C:\ Program Files(x86)\ Microsoft Visual   Studio \ 2017 \ Community \ VC \ Tools \ MSVC \ 14.16.27023 \ lib \ x86 \ legacy_stdio_definitions.lib   :警告LNK4272:图书馆提示'x86'estáen   destino de xino冲突影片“ x64”

     

libkernel.dll:致命错误LNK1120:6个externos sin解析器

我不知道该怎么办

注意: 内核使用image2d对象,但我不确定是否与FPGA兼容。其实这是另一个问题。

3 个答案:

答案 0 :(得分:0)

很有可能的问题是,他们(Altera,现在是Intel)在Windows上仍然需要使用MSVC 2010才能成功地将其库与宿主项目链接。

至少fft-2d就是这种情况。

因此,您可能有2个选择:

  1. 安装MSVC 2010

  2. 弄清楚如何成功链接使用MSVC 2010构建的库


更新

我检查了笔记。为了能够使用VS 2015与Altera库成功链接,我还与legacy_stdio_definitions.lib进行了链接。这应该在链接器部分的AdditionalDependencies中。无法确保这也会对您的案件有所帮助,但是值得一试。

答案 1 :(得分:0)

首先感谢doqtor的回答...最终,我最终能够在无需进行太多更改的情况下进行编译....实际上,如果您从Visual Studio Developers Command Prompt x64运行aoc脱机编译器,则大部分问题解决了。

我决定干净地重新安装整个英特尔FPGA SDK,这次正确设置了每个环境变量...并且一切运行正常...我能够编译并执行SDK示例。

但是一个问题无法解决....我的内核使用image2d_t对象,当然还有sampler_t ....根据《英特尔SDK编程指南》证明...该SDK在使用时不支持图像和采样器OpenCL 1.0。

奇怪的是,FPGA仿真器平台确实支持它,因此我能够使用仿真器进行编译。...尽管这对我来说解决不了多.....我决定更换内核并找到一个图像和采样器的替代品。

谢谢

答案 2 :(得分:0)

回答您的问题:

  1. FPGA仿真器不支持x86平台,仅支持x86_64(但是我想您已经解决了这个问题)。
  2. 关于图像。该SDK确实不支持图像类型,但这并不意味着aoc在编译期间会失败。稍后尝试运行应用程序时,您将失败。