我读到某些c ++ dll可以自动卸载到Xeon Phi,即使它们并非专门用于使用多核......
我的问题 - 我可以使用c#中的英特尔并行工作室来构建c ++ dll吗?希望它会自动卸载
答案 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还是协处理器上运行计算。