Articles of intel

可能的编译器错误:在两台机器之间使用英特尔编译器使用boost bessel函数的奇怪结果?

我正在尝试在项目中使用boost的bessel函数(cyl_bessel_j)。 但是,我发现该函数在2000年左右调用它之后会返回带有错误符号的结果。 我已经在两台机器之间进行了testing,其中一台是CentOS 5.8(Final)机器,奇怪的是它工作的很好,另一台是RHEL 6.3(圣地亚哥)的机器。 两台机器都使用Boost 1.50.0和13.1.3 20130607 Intel编译器。 CentOS机器使用gcc 4.1.2 20080704,而RHEL机器使用gcc 4.4.6 20120305。 这是我的代码: template<typename FloatType> FloatType funcT(FloatType z, FloatType phi, int n, int m, int p) { using namespace boost::math; FloatType sqrt2PiZ = sqrt((2 * M_PI)/z); FloatType nrmLeg = normalizedLegendre(n,m,-sin(phi)); FloatType besselJ = cyl_bessel_j(p + 0.5, z); std::cout << " " << p […]

测量时间:gettimeofday,TSC和时钟滴答声之间的差异

我正在为我的部分程序做一些性能分析。 我尝试用以下四种方法来衡量执行情况。 有趣的是,他们显示出不同的结果,我不完全了解他们的差异。 我的CPU是Intel(R)Core(TM)i7-4770。 系统是Ubuntu 14.04。 预先感谢任何解释。 方法1:使用gettimeofday()函数,结果以秒为单位 方法2:使用类似于https://stackoverflow.com/a/14019158/3721062的rdtsc指令 方法3和4使用英特尔的性能计数器监视器 (PCM)API 方法3:使用PCM的 uint64 getCycles(const CounterStateType & before, const CounterStateType &after) 其描述(我不太明白): Computes the number core clock cycles when signal on a specific core is running (not halted) Returns number of used cycles (halted cyles are not counted). The counter does not advance in the following […]

为什么同一个程序的INST_PTR(指令指针)值为不同的运行而改变?

在英特尔的PinTool中,可以使用IARG_INST_PTR或INS_Address打印程序中每条指令的“指令地址”。 我观察到,在不同时间点运行相同的程序会产生完全相同的指令的不同的指令地址。 但是,我希望这些地址在运行中保持不变。 这种变化的根源是什么? 我附上了两个示例输出,其中显示了执行的前三条指令的操作码和指令地址。 我如何find每条指令的PC? 或通过PinTool在OBJDUMP显示的地址? –RUN1– op: MOV addr:0x00007fac87a8d2d0 op: CALL_NEAR addr:0x00007fac87a8d2d3 op: PUSH addr:0x00007fac87a90a70 –RUN2– op: MOV addr:0x00007fc529f402d0 op: CALL_NEAR addr:0x00007fc529f402d3 op: PUSH addr:0x00007fc529f43a70

linux“as”汇编程序支持intel格式的汇编语言吗?

Linux下的默认汇编程序是“as”。 我知道gdb支持使用AT&T和Intel语法进行反汇编。 我的问题是,我知道“as”支持AT&T格式,它是否支持Intel格式? 比如我有“bs”文件 .global _start _start: mov ax,0 然后 as bs bs: Assembler messages: bs:3: Error: too many memory references for `mov' 如何使“as”编译这个.s文件? 谢谢。

奇怪的performance

在使用*和+我正在使用fmaf函数来降低性能。 我在两台Linux机器上使用g ++ 4.4.3和g ++ 4.6.3 在两个不同的机器上,如果myOut向量被填充而没有使用fmaf则以下代码运行得更快。 服务器使用g ++ 4.6.3和Intel(R)Xeon(R)CPU E5-2650 @ 2.00GHz $ ./a.out fmaf Time: 1.55008 seconds. $ ./a.out muladd Time: 0.403018 seconds. 带有g ++ 4.4.3和Intel(R)Xeon(R)CPU X5650 @ 2.67GHz的服务器 $ ./a.out fmaf Time: 0.547544 seconds. $ ./a.out muladd Time: 0.34955 seconds. 不应该fmaf版本(除了避免额外的综合,然后更精确)是否更快? #include <stddef.h> #include <iostream> #include <math.h> #include <string.h> #include <stdlib.h> #include […]

用于Linux的分析工具和ARM的性能监视计数器

问题主要是关于ARM处理器可用的profiling tools – 特别是ARM v7 ; 我正在使用Linux 我玩过英特尔和AMD处理器,我知道他们有各种分析工具,如Perf , perfmon和valgrind ,这将允许我监视各种计数器,如retired instructions, cache misses, floating point unit, integral units, etc. 但是,我不知道ARM也支持这些types的分析工具。 你知道任何可以在ARM处理器上使用的工具吗? 我search了ARM 参考手册,但是我没有find性能计数器列表。 例如,在Intel处理器中,您可以在ref. manualfind它们ref. manual ref. manual和OProfile网页。 是否有手册或网页列出了ARM的performance monitoring counters列表。 谢谢。

beignet OpenCL xorg连接失败

我发现这个opencl示例代码: /* * Simple OpenCL demo program * * Copyright (C) 2009 Clifford Wolf <clifford@clifford.at> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * […]

用代码中的turboboost测量CPU频率

我正在用三种不同的频率在三台不同的计算机上分析一些代码。 我需要测量GFLOPs / s的频率。 我有一些代码这样做,但它不占Turboboost。 例如,在我的2600k CPU上,它报告的是3.4 GHz,但我可以看到当我运行CPUz时,我的CPU在4.3 GHz(超频)下运行,用于使用所有内核的代码。 #include "stdint.h" #include "stdio.h" #include "omp.h" int main() { int64_t cycles = rdtsc(); double dtime = omp_get_wtime(); //run some code which uses all cores for a while (few ms) dtime = omp_get_wtime() – dtime; cycles = rdtsc() – cycles; double freq = (double)cycles/dtime*1E-9; printf("freq %.2f GHz\n", […]

英特尔GPU只计算模式?

我想知道是否有可能强制英特尔GPU在Linux环境中处于“仅OpenCL”模式,只能使OpenCL正常工作。 我们已经禁用了X服务器和graphics软件,但是我们希望完全禁用此卡上的“video工作”。

英特尔OpenCL Beignet问题

我正在尝试在使用Intel硬件的Linux上使用OpenCL: 我有3个选项: 在CPU实现上使用Intel的OpenCL – 给我一个testing代码逻辑的机会,因为性能行为是非常不同的。 在GPU上使用英特尔的OpenCL – 但是我从来没有设法运行它,因为它需要定制的内核,它不是想要处理的东西(我错过了什么) 使用英特尔的开源OpenCL来实现GPU – Beignet。 我在两个主要平台上testing了Beignet 1.2.1 OpenCL: 采用英特尔®高清显卡530的i5-6600 – 工作正常,但比使用英特尔OpenCL驱动程序的Windows下使用相同的GPU显着更慢。 采用英特尔®高清显卡2500的i5-3470 – 工作速度也很慢,但是还会立即产生巨大的graphics故障,并说明任何OpenCL程序 – 基本上阻止了我在OpenCL中使用GPU。 我还比较了它在Windows OpenCL GPU实现上运行相同的代码 – 它运行速度更快。 我在内核中注意到的更大的差异使用本地内存进行相当标准和简单的减less – 这会造成显着的性能损失(我读了一些使用全局内存作为本地模拟的begnet OpenCL) 题: 任何人都可以使用Beignet并从中获得好的performance吗? 任何人都可以设法为GPU安装英特尔OpenCL驱动程序,而无需为其编译整个内核? 有支持邮件列表/论坛为Beignet(我发现邮件列表大多与补丁相关)? 使用Beignet的时候有没有人得到graphics故障?