问题标签 [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 投票
2 回答
1627 浏览

c++ - 是否有 Xeon Phi 的模拟器/模拟器?

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

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

0 投票
1 回答
1903 浏览

c++ - 无法使用英特尔编译器强制内联 C++ 函数

我有一个定义为的函数

(这__m512d是在英特尔 MIC 架构上映射到 SIMD 寄存器的本机数据类型)

由于这个函数相当短并且经常被调用,我希望它在每次调用时都被内联。但是英特尔的编译器似乎不愿意内联这个函数,即使在我使用了-inline-forceinlineand-O3选项之后。它在编译时报告“Forceinline 不接受调用 ...”。由于我必须使用一些编译器特定的功能,例如__m512d类型,英特尔编译器是我唯一的选择。

更多信息:

文件结构非常简单。该函数vec_add在一个头文件中定义,该文件mic.h包含在另一个文件中test.cc。函数vec_add只是在循环中重复调用,不涉及函数指针。代码的简化版本test.cc如下所示

我尝试了各种提示,例如__attribute__((always_inline)),__forceinline和 compiler option -inline-forceinline,但都没有奏效。

完整代码

我以简化的形式将所有相关代码放在一起。如果您有英特尔编译器,您可以尝试一下。使用选项-Winline查看内联报告并-inline-forceinline强制内联。

配置

  • 编译器:英特尔编译器(ICC)14.0.2
  • 编译选项:-O3 -inline-forceinline -Winline

你知道为什么这个函数不能被内联吗?毕竟我怎样才能让它内联(我不想转向宏)?

0 投票
2 回答
1060 浏览

c - 英特尔至强融核使用的内在函数是否比自动矢量化获得更好的性能?

Intel Xeon Phi 提供使用“IMCI”指令集,
我用它来做“c = a*b”,像这样:

并测试它的性能,当 N SIZE 为 1048576 时,
它需要花费 0.083317 秒,我想将性能与自动矢量化进行比较,
所以其他版本代码如下:

这个版本花费 0.025475 秒(但有时花费 0.002285 或更少,我不知道为什么?)
如果我将 _Cilk_for 更改为 #pragma omp parallel for,性能会很差。

那么,如果答案是这样的,为什么我们需要使用内在函数?
我在哪里犯错了吗?
有人可以给我一些优化代码的好建议吗?

0 投票
1 回答
189 浏览

c++ - 英特尔 C++ 编译器给出“此平台不支持卸载构造”错误

_Cilk_offload在使用关键字的Windows(使用 Visual Studio)上编译基本代码段时,编译器会error : offload constructs are not supported on this platform在所有带有_Cilk_offloadand的行上抛出_Cilk_shared(使用 \Qoffload 编译)

平台或设置的具体问题是什么?

编辑:代码在编译时失败,编译机和目标机不同

以下是我的代码的基本大纲

主文件

卸载.h

卸载.cpp

0 投票
1 回答
65 浏览

intel - 如何分析在英特尔 MIC 架构上本机运行的应用程序的缓存性能

如何检查应用程序的给定数据是否适合在 MIC 上本地运行的应用程序的 L1 缓存或 L2 缓存。我一直在寻找它,因为我必须尝试适合 L1 缓存、L2 缓存和任何一个缓存的各种数据?

0 投票
1 回答
945 浏览

hpc - 如何区分英特尔至强融核协处理器 7120P、7120X、7120D、7120A

我有一个 Xeon phi 协处理器 7120P。
当我运行 micinfo 时,我看到主板 SKU 是 C0PRQ-7120 P/A/X/D。
我注意到 SMC HW 修订版声明 Product 300W Passive CS,我在 tomshardware 上读到 P 代表英特尔至强 phi 系列设备的被动冷却。这是它还是有任何其他方法可以判断我的系统 7120 P/A/X 或 D 上有哪个设备?

从 ark.intel.com 上给出的规格来看,所有四款设备似乎都是相同的。有人可以详细说明这些设备之间的实际区别是什么。

0 投票
0 回答
368 浏览

intrinsics - _mm512_mask_prefetch_i32gather_ps() 会为每个元素预取整个缓存行吗?

收集预取内在函数_mm512_mask_prefetch_i32gather_ps可用于在 Knights Corner 上预取 32 位浮点数。

由于不存在对应的双精度内在函数,如何将这个内在函数用于预取 64 位或 128 位元素?

是否需要显式预取每个 4 字节块,或者我们是否可以假设每个 32 位变量的预取实际上会预取它占用的整个 64 字节缓存行?

例子:

我想在{1,2,10,12}基地址的偏移量处预取 4 个双精度0xf0000000的偏移量处预取 4 个双精度数。

这对应于 的地址{0xf0000008, 0xf0000010, 0xf0000050, 0xf0000060}

这些占用从 开始的两个缓存行{0xf0000000, 0xf0000040}

_mm512_mask_prefetch_i32gather_ps使用这两个缓存行的基地址就足够了吗?

我最初在英特尔 MIC 论坛上发布了这个问题,但没有成功。

0 投票
2 回答
377 浏览

intel - 如何在英特尔 MIC 上本地分析 openmp 代码?

我有一个用 C 编写的 openmp 代码。我在 Stampede 上的 Intel MIC 上执行了代码。我想分析代码以找到代码中的热点,以便对我进一步优化代码有所帮助。我尝试使用分析器 gprof,但我在某处读到 gprof 不能直接在 MIC 上使用。我尝试通过教程来使用 perf。我可以走到某个步骤,然后当 perf annotate 步骤到来并执行代码时,它给了我意外的错误“)”。所以我不知道如何继续分析我的代码。有人可以帮忙吗??这是我参考 perf 教程的站点:sandsoftwaresound.net/perf/perf-tutorial-hot-spots/。

0 投票
3 回答
216 浏览

hpc - 在 Xeon CPU、GPU 和 Xeon Phi 上加速减少操作的方法

我有一个应用程序,其中大型矩阵上的减少操作(如求和、最大值)是瓶颈。我需要尽可能快地做到这一点。mkl 中是否有向量指令可以做到这一点?

在至强 cpu、gpu 或 mic 上是否有特殊的硬件单元来处理它?

通常如何在这些硬件中实现 reduce 操作?

0 投票
1 回答
165 浏览

intel-mic - Streaming Stores Segmentation Fault on Intel MIC

I want to implement streaming stores in my code on Intel MIC. I have a force_array and 3 variables tempx, tempy and tempz. I need to do some computation and then store them in another array which won't be used in near future. So I felt streaming stores would be a better choice to improve the performance. But I see that I am getting a segmentation fault and I am not sure if it is because of the load or the store. This code is preceded and succeeded by a few lines of code and the entire piece of code is inside two for loops which is preceded by openmp directives. As it is a parallel program, I am not able to debug it well. Can anyone help me by finding out the mistake(s) ?

Thanks in advance !!! The code is given below: