0

我读到某些 c++ dll 可以自动卸载到 Xeon Phi,即使它们不是专门为使用多核而设计的。

我的问题 - 我可以使用来自 c# 的英特尔并行工作室来互操作一个 c++ dll 吗?希望自动卸载

4

2 回答 2

2

我也对您关于 dll 能够自动卸载到英特尔至强融核协处理器的说法感到困惑,“即使它们不是专门为使用多核而设计的”。要自动卸载,库必须包含使用卸载指令的代码,并使用识别卸载指令的编译器进行编译。默认情况下,卸载指令导致编译器生成处理器和协处理器可执行代码。

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

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

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

关于从 C# 调用包含卸载指令的库,英特尔® Parallel Studio XE 2015 中存在问题,该问题已在更新 1 中修复。但除了编译器的一个版本之外,您应该能够调用包含卸载的动态库指令。

于 2014-12-05T19:10:53.233 回答
1

有 DLL 可以自动卸载到英特尔至强融核,例如英特尔 MKL。这些库可以与 C++ 和 C# 链接(请参阅泡沫的答案)。

Automatic offload在这种情况下,意味着一个库包含一个代码,它允许卸载其计算,对用户透明。

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

于 2014-12-16T13:35:40.647 回答