标签: xeon-phi

比较Intel Xeon Phi和N​​vidia Tesla K20的基准

令我惊讶的是,我无法使用开源OpenCL基准测试套件(例如rodiniaSHOC)找到这些产品的比较.这种比较可能比理论峰值性能或简单矩阵乘法内核中的性能比较更有趣,我已经能够找到它.

有谁知道这些结果可能在哪里?如果不这样做,任何堆栈溢出用户是否可以访问一个或两个产品,以及运行基准测试并分享结果的时间和倾向?任何一种卡版本的结果都会很有趣.

benchmarking gpu nvidia opencl xeon-phi

12
推荐指数
3
解决办法
1万
查看次数

Fast popcount on Intel Xeon Phi

I'm implementing an ultra fast popcount on Intel Xeon® Phi®, as it's a performance hotspot of various bioinformatics software.

I've implemented five pieces of code,

#if defined(__MIC__)
#include <zmmintrin.h>
__attribute__((align(64))) static const uint32_t POPCOUNT_4bit[16] = {0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4};
__attribute__((align(64))) static const uint32_t MASK_4bit[16] = {0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF};
inline uint64_t vpu_popcount1(uint64_t* buf, size_t n)  { …
Run Code Online (Sandbox Code Playgroud)

c vectorization hammingweight intel-mic xeon-phi

9
推荐指数
1
解决办法
1749
查看次数

使用Xeon Phi和基于JVM的语言

是否可以使用基于JVM的语言(如Scala)来使用Xeon Phi?有什么例子吗?

hardware parallel-processing scala xeon-phi

8
推荐指数
2
解决办法
2555
查看次数

如何用C#编程Intel Xeon Phi?

我是一名具有一些C++经验的C#程序员,所有这些都在Windows上.

有了这个技能,有没有为英特尔至强Phi处理器开发的选择?

找到此链接,但不确定这是否是最佳/唯一的方式.

谢谢你的建议.

c# multithreading xeon-phi

8
推荐指数
1
解决办法
2105
查看次数

如何使用GCC 5.1和OpenMP将工作卸载到Xeon Phi

背景

我们一直试图使用新的GCC 5.1版本将OpenMP块卸载到Intel MIC(即Xeon Phi),但未成功.在GCC Offloading页面之后,我们将build.sh脚本放在一起,为"intelmic"和主机编译器构建"accel"目标编译器.编译似乎成功完成.

env.sh然后使用该脚本,我们尝试编译hello.c下面列出的简单程序.但是,此程序似乎只在主机上运行,​​而不是在目标设备上运行.

由于我们不熟悉卸载,以及编译GCC,我们可能会做错多少事情.但是,我们已经调查了已经提到的资源以及以下内容(我没有足够的代表来发布链接):

  • 为Xeon Phi卸载
  • Xeon Phi教程
  • Intel Xeon Phi卸载编程模型

最大的问题是他们通常会参考英特尔编译器.虽然我们计划购买副本,但目前我们没有副本.此外,我们的大部分开发流程已经与GCC集成,我们更愿意保持这种方式(如果可能的话).

我们安装了最新的MPSS 3.5发行版,对Ubuntu下的工作进行了必要的修改.我们可以在我们的系统中成功地沟通和检查Xeon Phis的状态.

在我们的努力中,我们从未看到代码在麦克风仿真模式下运行的任何迹象.

问题

  1. 有没有人成功构建了一个实际卸载到Xeon Phi的主机/目标GCC编译器组合?如果是这样,您使用了哪些资源?
  2. 我们在构建脚本中遗漏了什么吗?
  3. 测试源代码有什么问题吗?它们编译时没有错误(除了下面提到的内容)并运行48个线程(即主机系统中的逻辑线程数).
  4. 由于谷歌搜索没有透露太多,有没有人有下一步的建议(除了放弃GCC卸载)?这是一个错误吗?

谢谢!

build.sh

#!/usr/bin/env bash                                                                                                                                           

set -e -x
unset LIBRARY_PATH

GCC_DIST=$PWD/gcc-5.1.0

# Modify these to control where the compilers are installed                                                                                                   
TARGET_PREFIX=$HOME/gcc
HOST_PREFIX=$HOME/gcc

TARGET_BUILD=/tmp/gcc-build-mic
HOST_BUILD=/tmp/gcc-build-host

# i dropped the emul since we are not planning to emulate!                                                                                                    
TARGET=x86_64-intelmic-linux-gnu
# should this be a quad (i.e. pc)?? default …
Run Code Online (Sandbox Code Playgroud)

gcc openmp offloading xeon-phi

8
推荐指数
1
解决办法
4363
查看次数

为什么英特尔编译器会忽略英特尔MIC的非时间预取pragma指令?

英特尔编译器在循环内生成以下预取指令,以通过a_ptr指针访问数组:

400e93:       62 d1 78 08 18 4c 24    vprefetch0 [r12+0x80]
Run Code Online (Sandbox Code Playgroud)

如果我手动更改(通过十六进制编辑可执行文件)这到非临时预取:

400e93:       62 d1 78 08 18 44 24    vprefetchnta [r12+0x80]
Run Code Online (Sandbox Code Playgroud)

循环运行快了近1.5倍(!!!).但是,我更喜欢编译器为我生成非时间预取.我以为

#pragma prefetch a_ptr:_MM_HINT_NTA
Run Code Online (Sandbox Code Playgroud)

在循环之前应该做的伎俩,但它实际上没有; 它生成的指令与不完整的pragma完全相同.为什么icpc忽略这个pragma?我怎么强迫它生成非时间预取?

选择.据我所知,报告没有说任何有用的内容:

LOOP BEGIN at test-mic.cpp(56,5)
   remark #15344: loop was not vectorized: vector dependence prevents vectorization
   remark #15346: vector dependence: assumed ANTI dependence between b_ptr line 64 and b_ptr line 65
   remark #15346: vector dependence: assumed FLOW dependence between b_ptr line 65 and b_ptr line …
Run Code Online (Sandbox Code Playgroud)

c++ intel pragma prefetch xeon-phi

8
推荐指数
1
解决办法
705
查看次数

在Knights Landing上清除单个或几个ZMM寄存器的最有效方法是什么?

说,我想清除4个zmm寄存器.

以下代码是否会提供最快的速度?

vpxorq  zmm0, zmm0, zmm0
vpxorq  zmm1, zmm1, zmm1
vpxorq  zmm2, zmm2, zmm2
vpxorq  zmm3, zmm3, zmm3
Run Code Online (Sandbox Code Playgroud)

在AVX2上,如果我想清除ymm寄存器,vpxor比vxorps更快,速度更快,因为vpxor可以在多个单元上运行.

在AVX512上,我们没有用于zmm寄存器的vpxor,只有vpxorq和vpxord.这是清除寄存器的有效方法吗?当我使用vpxorq清除zmm寄存器时,CPU是否足够智能,不会对zmm寄存器的先前值产生错误依赖?

在没有物理AVX512 CPU测试的情况下 - 也许有人在Knights Landing上测试过?是否有任何延迟发布?

assembly avx xeon-phi avx512 knights-landing

7
推荐指数
2
解决办法
886
查看次数

是否有Xeon Phi的模拟器/模拟器?

我打算将一些计算卸载到Xeon Phi,但是想先测试不同的API和不同的并行编程.

是否有适用于Xeon Phi(Windows或Linux)的模拟器/模拟器?

c c++ parallel-processing intel-mic xeon-phi

6
推荐指数
2
解决办法
1504
查看次数

Knights Landing CPU(Xeon Phi)会加速字节/字整数代码吗?

英特尔至强披"骑士降落"处理器将是第一个支持AVX-512,但它只能支持"F"(如无SSE SSE2,或不AVX AVX2),所以浮点东西为主.

我正在编写使用内部函数通过SSE4.1指令操作字节和字(8位和16位)的软件.

我很困惑,是否会出现在AVX-512F全部/大部分SSE4.1指令EVEX编码的版本,以及这是否意味着我可以期待我的SSE代码来自动获取EVEX扩展指令和映射到所有新的寄存器.

维基百科说:

SIMD寄存器文件的宽度从256位增加到512位,共有32个寄存器ZMM0-ZMM31.如256位的YMM从AVX扩展和从流SIMD扩展128位XMM寄存器寄存器,这些寄存器可被寻址,和遗留AVX和SSE指令可以扩展到在16个附加寄存器XMM16-XMM31和YMM16-YMM31使用EVEX当操作编码形式.

这不幸的是没有澄清是否编译SSE4代码启用AVX512,会导致相同的(真棒)加速比它编译成AVX2提供(的传统指令VEX编码).

有人知道为AVX-512F编译SSE2/4代码(C内在函数)会发生什么?人们可以期待像AVX1的字节和字指令的VEX编码那样的速度颠簸吗?

c byte sse4 xeon-phi avx512

6
推荐指数
1
解决办法
273
查看次数

使用Xeon Phi Knights Landing获得密集矩阵乘法的最大FLOPS

我最近开始使用Xeon Phi Knights Landing(KNL)7250计算机(http://ark.intel.com/products/94035/Intel-Xeon-Phi-Processor-7250-16GB-1_40-GHz-68-core) .

它有68个核心和AVX 512.基本频率为1.4 GHz,Turbo频率为1.6 GHz.我不知道所有内核的turbo频率是多少,因为通常turbo频率只引用一个内核.

每个Knights Landing核心每个周期可以进行两次8宽双FMA操作.由于每个FMA操作是两个浮点运算,因此每个核每个周期的双浮点运算为32.

因此最大GFLOPS是32*68*1.4 = 3046.4 DP GFLOPS.

对于单核心,峰值FLOPS是32*1.6 = 51.2 DP GLOPS.

密集矩阵乘法是实际上能够接近峰值触发器的少数操作之一.英特尔MKL库提供优化的密集矩阵乘法功能.在Sandy Bridge系统中,我使用DGEMM获得了超过97%的峰值FLOPS.在哈斯威尔,几年前我检查了大约90%的峰值,所以当时用FMA获得峰值显然更加困难.然而,凭借Knights Landing和MKL,我得到的峰值不到50%.

我修改了dgemm_example.cMKL示例目录中的文件以使用2.0*1E-9*n*n*n/time(参见下文)计算GFLOPS .

我也试过了export KMP_AFFINITY=scatter,export OMP_NUM_THREADS=68但这似乎没有什么区别.但是,KMP_AFFINITY=compact速度明显较慢,因此OMP_NUM_THREADS=1默认的线程拓扑似乎是分散的,并且线程正在工作.

我见过的最好的GFLOPS约为1301 GFLOPS,约占峰值的43%.对于一个线程,我看到38 GFLOPS,约占峰值的74%.这告诉我MKL DGEMM针对AVX512进行了优化,否则会看到不到50%.另一方面,对于单个线程,我认为我应该获得90%的峰值.

KNL内存可以在三种模式下运行(缓存,平面和混合),可以通过BIOS设置(http://www.anandtech.com/show/9794/a-few-notes-on-intels-knights-登陆-mcdram-modes-from-sc15).我不知道我的(或者说我的工作)KNL系统是什么模式.这会对DGEMM产生影响吗?

我的问题是为什么DGEMM的FLOPS如此之低,我该怎么做才能改进它?也许我没有最佳配置MKL(我正在使用ICC 17.0).

source /opt/intel/mkl/bin/mklvars.sh  intel64
icc -O3 -mkl dgemm_example.c 
Run Code Online (Sandbox Code Playgroud)

这是代码

#define min(x,y) (((x) < (y)) ? (x) : (y))

#include <stdio.h>
#include <stdlib.h>
#include "mkl.h"
#include …
Run Code Online (Sandbox Code Playgroud)

x86 openmp icc intel-mkl xeon-phi

6
推荐指数
0
解决办法
877
查看次数