问题标签 [xeon-phi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cross-compiling - 如何为英特尔至强麦克风构建 cado-nfs
我有平台 radhat 和 icc,用于英特尔至强麦克风的 icpc
我发现我命令 'icc -mmic' 作为 c 编译器,用于在 intel xeon mic 上执行一些程序。(还有,icpc,...等)
所以,我使用 'cmake' 来编译 cado-nfs
当我编译 cado-nfs 时,我为 cmake 选项和 make 选项添加了变量选项。然后我看到很多错误......
我正在搜索为英特尔至强麦克风编译 cado-nfs。但是我找不到为英特尔至强麦克风编译 cado-nfs 的教程或如何解决许多错误,...
c++ - 英特尔指令集扩展和用户机器(AVX、IMCI...)
如果一个程序在 Xeon-Phi 协处理器上编译,并且包含来自 IMCI 指令集扩展的指令,是否可以在没有 Xeon-Phi 协处理器的用户机器上运行它?
如果可能的话,与在 i7 Core 处理器上没有编译 IMCI 指令的相同应用程序相比,用户机器上的性能会得到改善吗?
换句话说,为了在使用 Intel 指令集扩展时从提高的性能中受益,用户机器是否有必要拥有支持此扩展的处理器?
c++ - 非常适合 Xeon-phi 多核架构的应用程序
从这个https://software.intel.com/en-us/videos/ purpose-of-the-mic-architecture 我了解到具有复杂或大量随机内存访问的应用程序不太适合英特尔至强融芯片。这是因为该架构使用 61 个内核和 8 个内存控制器。在 L1 和 L2 缓存未命中的情况下,最多需要 100 秒的周期才能将行读取到内存中并准备好供 CPU 使用。这样的应用程序被称为延迟绑定。
然后,本教程提到多核架构(仅限 Xeon-phi 协处理器)非常适合高度并行的同构代码。来自那里的两个问题:
什么叫做同构代码?
哪些实际应用程序可以充分受益于 MIC 架构?
c - Xeon Phi 上带有 GDB 的 LD_LIBRARY_PATH
我目前正在尝试使用英特尔提供的 GDB 版本(gdb-mic)为 Xeon Phi 调试本机应用程序。当我在登录到 Phi 时运行程序时,只要我设置了 LD_LIBRARY_PATH=/tmp(我之前转移 libiomp5.so 的位置),它就可以工作。
但是,当我使用 GDB 调试应用程序时,我无法设置库路径。我尝试了命令“set env LD_LIBRARY_PATH=/tmp”,但 GDB 仍然找不到 libiomp5.so。
有没有人遇到过这个问题?
谢谢 !
cpu - 至强融核的前端如何为其 U 管道和 V 管道分配指令?
根据几份英特尔文件,我了解到 Xeon Phi 上的一个内核每个周期最多可以发出 2 条指令。一个在 U 型管上,一个在 V 型管上。以下文档说明前端以循环方式在多个上下文之间切换。这两条指令是否来自相同的上下文?或者,它们可以来自不同的背景吗?我认为他们不能,但我还没有找到这方面的详细文档。
关于英特尔至强融核协处理器流水线前端需要了解的另一件重要事情是,它不会连续两个时钟周期从同一硬件上下文(硬件线程)发出指令,即使该硬件上下文是唯一的一个执行。因此,为了达到最大的发布率,至少必须运行两个硬件上下文。运行多个上下文时,前端将以循环方式在它们之间切换。
另外,假设我们有一个向量指令和一个标量指令,前端是否在 U 管道中发出向量 1,在 V 管道中发出标量指令以达到最大发出率?我想知道,因为这两个管道的实际使用会影响发出率,因为 V 管道只能执行一小部分向量指令。
内核是一个 2 宽处理器,这意味着它每个周期可以执行两条指令,一条在 U 管道上,另一条在 V 管道上。它还包含一个 x87 单元,用于在需要时执行浮点指令。
...
向量单元与内核通信并执行分配在 U 或 V 流水线中的向量指令。内核每个时钟可以执行两条指令,一条在 U 管道上,另一条在 V 管道上。V-pipe 执行指令的子集,并受指令配对规则的约束,这对于获得最佳处理器性能很重要。
来源:https ://software.intel.com/en-us/articles/intel-xeon-phi-core-micro-architecture
c++ - 如何分解 Xeon Phi 上程序的仅内存时间和仅计算时间?
现代处理器将内存访问与计算重叠。我想在英特尔至强融核上研究这种重叠。这样做的传统方法是修改代码并制作两个版本:仅内存和仅计算,就像这张幻灯片中用于 GPU 的方法:http ://www.nvidia.com/content/GTC-2010/ pdfs/2012_GTC2010.pdf。
但是,我的程序具有复杂的控制流和数据依赖性。我很难做出这样的两个版本。
有没有方便的方法来测量这种重叠?我正在考虑 Vtune 配置文件,但我仍然不确定应该查看哪些硬件计数器。
c - OpenMP 4.0 - GCC 5.2.0 - 重叠设备和主机任务执行
我正在尝试测试一个非常简单的程序,该程序通过 OpenMP 4.0 指令使用 gcc 5 卸载功能。我的目标是编写一个两个独立的任务程序,其中一个任务在加速器(即 Intel MIC 仿真器)上执行,另一个任务在 CPU 上同时执行。
这是代码:
使用此代码,我期待以下执行流程:
- 主线程 (MT) 遇到第一个显式任务区域,绑定到该任务并开始执行。
- 遇到目标指令,MT 将目标块卸载到加速器并到达调度点
- MT 回到隐式任务区域
- MT 遇到第二个显式任务区域,绑定到该任务并开始执行。
- MT 在主机上执行计算,同时将计算卸载到加速器设备。
- MT 回到隐式任务区域并到达由 taskwait 指令引起的调度点
- MT 回到第一个显式任务区域等待卸载块的结束。
编译并运行:
输出:
这不是我所期望的输出,因为这意味着主线程在调度主机任务之前正在等待卸载计算完成。相反,我正在寻找这样的东西:
卸载模拟器工作正常,因为在执行期间我可以看到 _offload_target 进程在程序执行目标块时达到 100% CPU 使用率。
所以问题是:有没有人知道为什么这两个任务被序列化而不是并行执行(一个在主机进程上,另一个在 _offload_target 仿真进程上)?
architecture - Xeon Phi 上的 vtune 中可能存在错误
我在 xeon phi 内核上运行 vtune,并在单线程基准测试中获得了 0.777 的 CPI。然而,这似乎不太可能是真的,因为理论上单个线程的最大 CPI 是 1.0。(在https://software.intel.com/en-us/articles/optimization-and-performance-tuning-for-intel-xeon-phi-coprocessors-part-2-understanding上搜索“理论 CPI” )
我通过检查 vtune 线程信息验证了没有其他线程正在运行。
- VTune CPI 信息:
函数/调用堆栈 Clockticks 指令 已停用 CPI 速率 停用 错误推测 后端绑定 前端绑定模块 函数(完整) 源文件起始地址 centered_3d 259,622,095,647 334,057,786,295 0.777 0.316 0.000 0.719 0.004 ef-test centered_3d ef_operator.c 0x
从以上信息来看,CPI为0.777。
- 函数 centered_3d 的 VTune 线程信息:
239.616s -- 同时使用的逻辑 CPU = 0
163.632s -- 同时使用的逻辑 CPU = 1
以上信息是否暗示 vtune 的某些计算不正确?例如:它是否可能没有正确计算周期数或指令数?
linux - 如何从源代码编译 Xeon phi 修补 gcc?
我从 intel 网站下载了 MPSS 软件堆栈版本 3.5.2 的源代码。我正在尝试从源代码编译 xeon phi 移植的 GCC(从 GCC 4.7.0 移植)并将其安装在本地子目录中。但是,我收到以下错误-
我的配置如下-
为什么 Makefile 调用k1om-mpss-linux-gcc
?这不应该是 make 完成后交叉编译的 gcc 二进制文件吗?我该如何解决这个问题或我错过了什么?
编辑 1:我将配置参数更改为--build=x86_64-mpsssdk-linux --host=x86_64-mpsssdk-linux
. 我现在收到以下错误-
gtype-desc.c是机器生成的文件。
编辑2:我现在收到错误-
我怎样才能解决这个问题 ?这些似乎是向量指令,但我认为 gcc 交叉编译器不支持向量指令。
gcc - Xeon phi 的 GCC 交叉编译器在哪里?
我发现了两个编译器的二进制文件,如下所示 -
和
我已经能够使用它们编译一个简单的测试程序并在 xeon phi 上成功运行可执行文件。
这两个是一样的吗?为什么他们在不同的位置?它们背后的命名约定是什么?
编辑:结果*gcc -v
。两者都是一样的,除了$COLLECT_GCC
。
Using built-in specs.
COLLECT_GCC=/opt/mpss/3.5.1/sysroots/x86_64-mpsssdk-linux/usr/bin/k1om-mpss-linux/k1om-mpss-linux-gcc
COLLECT_LTO_WRAPPER=/opt/mpss/3.5.1/sysroots/x86_64-mpsssdk-linux/usr/libexec/k1om-mpss-linux/gcc/k1om-mpss-linux/4.7.0/lto-wrapper
Target: k1om-mpss-linux
Configured with: /sandbox/build/tmp/tmp/work/x86_64-nativesdk-mpsssdk-linux/gcc-cross-canadian-k1om-4.7.0+mpss3.5.1-1/gcc-4.7.0+mpss3.5.1/configure --build=x86_64-linux --host=x86_64-mpsssdk-linux --target=k1om-mpss-linux --prefix=/opt/mpss/3.5.1/sysroots/x86_64-mpsssdk-linux/usr --exec_prefix=/opt/mpss/3.5.1/sysroots/x86_64-mpsssdk-linux/usr --bindir=/opt/mpss/3.5.1/sysroots/x86_64-mpsssdk-linux/usr/bin/k1om-mpss-linux --sbindir=/opt/mpss/3.5.1/sysroots/x86_64-mpsssdk-linux/usr/bin/k1om-mpss-linux --libexecdir=/opt/mpss/3.5.1/sysroots/x86_64-mpsssdk-linux/usr/libexec/k1om-mpss-linux --datadir=/opt/mpss/3.5.1/sysroots/x86_64-mpsssdk-linux/usr/share --sysconfdir=/opt/mpss/3.5.1/sysroots/x86_64-mpsssdk-linux/etc --sharedstatedir=/opt/mpss/3.5.1/sysroots/x86_64-mpsssdk-linux/com --localstatedir=/opt/mpss/3.5.1/sysroots/x86_64-mpsssdk-linux/var --libdir=/opt/mpss/3.5.1/sysroots/x86_64-mpsssdk-linux/usr/lib/k1om-mpss-linux --includedir=/opt/mpss/3.5.1/sysroots/x86_64-mpsssdk-linux/usr/include --oldincludedir=/opt/mpss/3.5.1/sysroots/x86_64-mpsssdk-linux/usr/include --infodir=/opt/mpss/3.5.1/sysroots/x86_64-mpsssdk-linux/usr/share/info --mandir=/opt/mpss/3.5.1/sysroots/x86_64-mpsssdk-linux/usr/share/man --disable-silent-rules --disable-dependency-tracking --with-libtool-sysroot=/sandbox/build/tmp/tmp/sysroots/x86_64-nativesdk-mpsssdk-linux --with-gnu-ld --enable-shared --enable-languages=c,c++ --enable-threads=posix --disable-multilib --enable-c99 --enable-long-long --enable-symvers=gnu --enable-libstdcxx-pch --program-prefix=k1om-mpss-linux- --enable-target-optspace --enable-lto --enable-libssp --disable-bootstrap --disable-libgomp --disable-libmudflap --with-system-zlib --with-linker-hash-style=gnu --enable-cheaders=c_global --with-local-prefix=/opt/mpss/3.5.1/sysroots/k1om-mpss-linux/usr --with-gxx-include-dir=/opt/mpss/3.5.1/sysroots/k1om-mpss-linux/usr/include/c++ --with-build-time-tools=/sandbox/build/tmp/tmp/sysroots/x86_64-linux/usr/k1om-mpss-linux/bin --with-sysroot=/opt/mpss/3.5.1/sysroots/k1om-mpss-linux --with-build-sysroot=/sandbox/build/tmp/tmp/sysroots/knightscorner --disable-libunwind-exceptions --disable-libssp --disable-libgomp --disable-libmudflap --with-mpfr=/sandbox/build/tmp/tmp/sysroots/x86_64-nativesdk-mpsssdk-linux --with-mpc=/sandbox/build/tmp/tmp/sysroots/x86_64-nativesdk-mpsssdk-linux --enable-nls --enable-__cxa_atexit
Thread model: posix
gcc version 4.7.0 20110509 (experimental) (GCC)