问题标签 [intel-mic]

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.

0 投票
0 回答
109 浏览

performance - 为什么 Xeon Phi 上的简单黎曼和积分的矢量化约简时间如此糟糕?

我是 Xeon Phi 的新手,所以我正在阅读手册,试图了解如何使用向量寄存器提高 Phi 的性能。

考虑这个问题末尾的短代码,它[0,1]使用黎曼和计算曲线 4/(1+x^2) 下的面积。解析答案是 pi = 3.14159....

该代码基本上由两个几乎相同的代码块组成,它们使用 OpenMP 使用 4 个线程计算答案。唯一的区别是,在第二个 块中,我使用向量化函数__sec_reduce_add()来计算给线程的 [0,1] 的子域的黎曼和。

第一个代码块的时间是0.0866439 s,第二个(矢量化)块的时间是0.0868771 s

为什么这两者产生几乎相同的时间。我原以为使用向量寄存器会显着提高性能。

我用icc -mmic -vec-report3 -openmp标志编译了这个

[注意:我rpt在两个部分上放置了一个带有变量的 for 循环,因为 rpt=0 和 rpt=1 是“热身”循环,因此时间会稍长一些。我在 rpt=3 处给出了两个部分的时间安排]

0 投票
1 回答
728 浏览

c++ - 通过内部函数或指令手动控制 Intel MIC SIMD 操作

我想手动管理我的代码在 MIC 上的 SIMD 操作,并在下面编写内部函数

并且编译器 icpc 给出了这些错误信息。

如果我使用 _mm512_mask_load_ps 可以编译,但是我的内存不能 64 字节对齐,所以使用 _mm512_mask_load_ps 会导致运行时错误。

然后我尝试像这样手动编写内联 asm 块

编译器icpc再次显示错误

我是汇编语言的初学者,如果有人能告诉我为什么icpc没有找到参考以及如何修复它,或者可以向我推荐一些材料,我将非常感激。(我已阅读英特尔® 至强融核™ 协处理器指令集架构参考手册,但仍不知道如何编写。)

非常感谢。

0 投票
2 回答
656 浏览

gmp - 有人在 Xeon Phi 上使用 GMP 吗?

我使用 icc 和 -mmic 选项编译了 GMP,但无法安装在 MIC 上。我应该如何安装?我写了一个演示程序,用icc编译。它说找不到gmp.h。我应该如何在 MIC 上安装 GMP 库以及放置 gmp.h 的位置?

0 投票
1 回答
642 浏览

assembly - 如何编译包含卸载到麦克风的程序集文件

我编写了一个名为“test.c”的 C 文件,其中包含对 mic 的卸载操作。然后我使用命令“icc -S test.c”将它编译成汇编文件。这产生了两个名为“test.s”和“testMIC.s”的汇编文件。当我继续将它们编译为可执行文件时,出现如下错误。

  1. 使用逗号“icc test.s”

    /tmp/iccG8ZTVA.o: 在函数main': test.c:(.text+0x30): undefined reference to__kmpc_begin' test.c:(.text+0x6f): 未定义引用__offload_target_acquire' test.c:(.text+0x11f): undefined reference to__offload_offload' test.c:(.text+0x15b): 未定义引用 `__kmpc_end'

  2. 使用逗号“icc testMIC.s”

    /tmp/icc7qv8qX.o: 在函数__offload_entry_test_c_10main': test.c:(.text+0x1d): undefined reference to__intel_new_proc_init_R' test.c:(.text+0xd5): 未定义引用__offload_target_enter' test.c:(.text+0x111): undefined reference to__offload_target_leave' /tmp/icc7qv8qX.o: 在函数main': test.c:(.text+0x140): undefined reference to__intel_new_proc_init_R'

  3. 使用逗号“icc test.s testMIC.s”

    /tmp/iccEOtVAs.o: 在函数foo': test.c:(.text+0x170): multiple definition offoo' /tmp/icczmGFBD.o:test.c:(.text+0x170): 首先定义在这里 /tmp/iccEOtVAs.o: 在函数main': test.c:(.text+0x128): multiple definition ofmain' /tmp/icczmGFBD.o: test.c:(.text+0x0): 首先在这里定义 /tmp/icczmGFBD.o: In function main': test.c:(.text+0x30): undefined reference to__kmpc_begin' test.c:(.text+0x6f): undefined reference to __offload_target_acquire' test.c:(.text+0x11f): undefined reference to__offload_offload' test.c:(.text+0x15b ): 未定义引用__kmpc_end' /tmp/iccEOtVAs.o: In function__offload_entry_test_c_10main': test.c:(.text+0x1d): 未定义引用__intel_new_proc_init_R' test.c:(.text+0xd5): undefined reference to__offload_target_enter' test.c:(.text+0x111): 未定义引用__offload_target_leave' /tmp/iccEOtVAs.o: In functionmain': test.c:(.text+0x140 ): 对 `__intel_new_proc_init_R' 的未定义引用

有没有人可以帮我解决这个问题?

测试.c:

0 投票
1 回答
1272 浏览

c - 在 Xeon-Phi 上运行 Haskell

有没有办法编译 Haskell 以在 Xeon Phi 协处理器上运行?

英特尔的一些研究人员最近报告了Haskell 研究编译器 (该编译器未公开,这使得他们的结果基本上无法重现)并测量了Haskell 差距(表明在某些情况下 Haskell 性能超过 C)。他们通过称为Pillar的中间语言(类似于C--)描述编译路线并将其编译为 C,然后他们可以使用icc创建可在 Phi 上执行的目标代码。

GHC 支持编译到 LLVM 或直接生成本机代码 (NCG)。据我所知,既没有针对 Phi 的 NCG,也没有针对 Phi 的 LLVM 后端。可以访问icc,通过C的路由似乎是可能的,但是我不确定它目前有多现实(我认为 GHC 中的 C 代码生成器不再受支持,LLVM IR-to-C 后端也是如此,如我错了请纠正我)。

于是想到了三种路线:

  1. 在未注册模式下编译 GHC ,-fvia-c 然后使用icc编译

  2. 使用较旧的 GHC 版本生成 C 代码,然后使用icc

  3. 使用较旧的 LLVM 版本通过 GHC LLVM,然后从 LLVM 生成 C,然后使用icc

哪条路线最可行(为什么/为什么不)?是否还有其他可能性(我驳回了 Pillar 路线,因为诸如pillar2c之类的工具(还没有?)公开可用)。

一个相关的问题是关于 Phi 的 x86 兼容性——似乎不支持 SSE/AVX 指令,并且如果使用gccclang编译某些目标代码将无法运行。

更新

在 LLVM 会议上与一些英特尔人员交谈后,他们似乎不太可能发布他们的 Phi LLVM 后端。但是,下一代至强融核将支持 AVX512。

0 投票
0 回答
910 浏览

intel - 英特尔 MIC 卸载编译指示错误

这是什么错误?找不到任何有用的谷歌搜索*:/

编辑 1:这是我的编译指示:

0 投票
1 回答
650 浏览

c++ - 英特尔 MIC 卸载 - 适用于 c++ 对象?

我的问题是卸载区域的代码是否包含 c++ 对象?还是只是 STL?

0 投票
1 回答
3362 浏览

intel - x86 兼容加速器 Intel Xeon Phi 中是否有 SIMD(SSE / AVX) 指令?

x86 兼容加速器 MIC Intel Xeon Phi 中是否有 SIMD(SSE / AVX) 指令?

http://en.wikipedia.org/wiki/Xeon_Phi

0 投票
1 回答
115 浏览

mpi - 将 Xeon-Phi 分配给 MPI 进程

我的系统有两个 xeon-phi 卡连接到一个节点。我正在尝试运行分布式 MPI 代码,该代码在卸载模式下使用 xeon-phi 加速。我想知道如果我每个节点运行两个 MPI 进程,我将如何将 xeon-phi 分配给每个 MPI 进程。如何确保每个 MPI 进程都使用不同的 MIC。

0 投票
1 回答
524 浏览

c++ - 如何将单个应用程序的特定线程卸载到特定的 Xeon Phi 内核?

假设我在主机上运行了一个 c/c++ 应用程序。主机 CPU 上运行的线程很少,Xeon Phi 内核上运行的线程有 50 个。

我如何确保这 50 个中的每一个都在其自己的 Xeon Phi 内核上运行,并且永远不会从内核缓存中清除(假设代码足够小)。

有人可以概述一个非常笼统的想法如何做到这一点以及哪个工具/API更适合(对于C/C++代码)?

在主机线程聚合器和 50 个 Phi 线程之间交换数据的最快方法是什么?

鉴于实际的并行性将非常有限——这个应用程序将更像 51 线程平面应用程序,具有一些基本的多线程数据同步。

我可以使用传统的 C/C++ 编译器来创建这样的应用程序吗?