我可以通过Interop使用C ++ DLL卸载到Xeon Phi吗?

时间:2014-12-05 00:57:15

标签: c# .net interop xeon-phi intel-parallel-studio

我读到某些c ++ dll可以自动卸载到Xeon Phi,即使它们并非专门用于使用多核......

我的问题 - 我可以使用c#中的英特尔并行工作室来构建c ++ dll吗?希望它会自动卸载

2 个答案:

答案 0 :(得分:2)

我也对你关于dll能够自动卸载到Intel Xeon Phi协处理器的声明感到困惑,“即使它们不是专门用于使用manycore”。要自动卸载,库必须包含使用offload指令的代码,并使用识别卸载指令的编译器进行编译。默认情况下,offload指令会导致编译器生成处理器和协处理器可执行代码。

关于如何构建包含卸载代码的动态库,让我引用Kevin Davis在software.intel.com上发布的回复引用:

  

对于Dynamic库,必须使用-fPIC编译器选项编译包含Offload语言扩展的所有源文件。您可以在IDE下的属性设置下添加此选项:   配置属性> C / C ++>代码生成[Intel C ++]> MIC卸载编译器的其他选项   ....   使用icl命令行时,必须使用/ Qoffload选项编译动态库中包含卸载代码的每个源文件,以传递-fPIC选项。

有一个限制,你不能在dll中使用_Cilk_offload指令,但我认为这是唯一的限制。

对于从C#调用包含offload指令的库,英特尔®ParallelStudio XE 2015中存在一个问题,在Update 1中修复了。但除了那个版本的编译器之外,你应该能够调用动态包含卸载指令的库。

答案 1 :(得分:1)

有些DLL可以自动卸载到Intel Xeon Phi,例如: Intel MKL。这些库可以与C ++和C#链接(参见泡沫的答案)。

在此上下文中,

Automatic offload表示库包含一个代码,允许卸载其计算,对用户透明。

此外,库可能包含一些代码,这些代码将决定是在CPU还是协处理器上运行计算。