Multithreading 仅对线程使用Xeon Phi

Multithreading 仅对线程使用Xeon Phi,multithreading,processor,intel-mic,xeon-phi,Multithreading,Processor,Intel Mic,Xeon Phi,是否可以通过启动多个线程来使用Xeon Phi, 或者使用Xeon Phi需要一些特殊类型的编程?英特尔有一些相当好的数学库IPP/MKL。从Xeon-Phi看起来是什么的字里行间,我想象英特尔有一个版本的库,可以利用非常宽的SIMD单元,它似乎已经成为体系结构的一部分 英特尔的编译器还将放入多个线程,以并行方式而不是顺序地执行循环。这将是利用Phi似乎拥有的大量内核的一种方法 因此,有了正确的编译器和库,Phi的编程可能相当正常,直到您开始需要库中没有的例程。英特尔有一些相当好的数学库,IPP

是否可以通过启动多个线程来使用Xeon Phi,
或者使用Xeon Phi需要一些特殊类型的编程?

英特尔有一些相当好的数学库IPP/MKL。从Xeon-Phi看起来是什么的字里行间,我想象英特尔有一个版本的库,可以利用非常宽的SIMD单元,它似乎已经成为体系结构的一部分

英特尔的编译器还将放入多个线程,以并行方式而不是顺序地执行循环。这将是利用Phi似乎拥有的大量内核的一种方法


因此,有了正确的编译器和库,Phi的编程可能相当正常,直到您开始需要库中没有的例程。

英特尔有一些相当好的数学库,IPP/MKL。从Xeon-Phi看起来是什么的字里行间,我想象英特尔有一个版本的库,可以利用非常宽的SIMD单元,它似乎已经成为体系结构的一部分

英特尔的编译器还将放入多个线程,以并行方式而不是顺序地执行循环。这将是利用Phi似乎拥有的大量内核的一种方法


因此,有了正确的编译器和库,Phi的编程可能相当正常,直到您开始需要库中没有的例程。

您可以阅读这些文档,了解有关如何利用Xeon Phi上的许多可用线程的更多信息:

  • 更多关于
总之,可以手动管理线程(通过TBB/pthreads/等),也可以使用支持的并行编程模型之一:

  • OpenMP
  • MPI
  • Cilk Plus
  • OpenCL
  • OpenACC

或者使用可以自动卸载到设备的库,例如或。

您可以阅读这些文档,了解有关如何利用Xeon Phi上的许多可用线程的更多信息:

  • 更多关于
总之,可以手动管理线程(通过TBB/pthreads/等),也可以使用支持的并行编程模型之一:

  • OpenMP
  • MPI
  • Cilk Plus
  • OpenCL
  • OpenACC

或者使用可以自动卸载到设备的库,例如或。

您是否有任何源代码使用ICC会自动在Xeon Phi上使用多个线程,即使不使用并行指令(如我在回答中提到的指令)?我知道它会矢量化(使用宽SIMD),但据我所知,它不会使用多线程。如果你能证明我的投票是正确的,我很乐意改变我的投票:)@Oak:。如果很早以前就开发了这个,但它在Phi上也不起作用,那将是令人惊讶的。Solaris上的Sun C/C++编译器也有同样的功能(如果您设置了正确的命令行选项),而且它们是免费的。Intel从2010年开始这样做,Sun我敢肯定它早在20世纪90年代就有了!在寻找性能时,不要忽略寻找一个合适的编译器。GCC不是编译器中的最后一个词。根据维基百科第13版支持Phi。就个人而言,我对自动并行有着复杂的感觉。如果它能够工作并生成满足任何性能要求的代码,那就太棒了!然而,我更喜欢自己将代码优化到n度,这涉及到对它及其性能的真正理解。自动并行化将改进您放入编译器的代码;它不会改变代码来进行有益的结构改变。被迫理解自己的代码意味着可能会发现这种结构变化的机会。您是否有任何资料表明,即使不使用并行指令(如我在回答中提到的指令),使用ICC也会自动在Xeon Phi上使用多个线程?我知道它会矢量化(使用宽SIMD),但据我所知,它不会使用多线程。如果你能证明我的投票是正确的,我很乐意改变我的投票:)@Oak:。如果很早以前就开发了这个,但它在Phi上也不起作用,那将是令人惊讶的。Solaris上的Sun C/C++编译器也有同样的功能(如果您设置了正确的命令行选项),而且它们是免费的。Intel从2010年开始这样做,Sun我敢肯定它早在20世纪90年代就有了!在寻找性能时,不要忽略寻找一个合适的编译器。GCC不是编译器中的最后一个词。根据维基百科第13版支持Phi。就个人而言,我对自动并行有着复杂的感觉。如果它能够工作并生成满足任何性能要求的代码,那就太棒了!然而,我更喜欢自己将代码优化到n度,这涉及到对它及其性能的真正理解。自动并行化将改进您放入编译器的代码;它不会改变代码来进行有益的结构改变。被迫理解自己的代码意味着可能会发现这种结构变化的机会。如何手动将线程卸载到特定的Phi核心?如何手动将线程卸载到特定的Phi核心?