标签: amd-processor

这是"不应该发生"崩溃AMD Fusion CPU的错误吗?

我的公司已经开始让许多客户打电话,因为我们的程序因其系统上的访问冲突而崩溃.

崩溃发生在SQLite 3.6.23.1中,我们将其作为应用程序的一部分提供.(我们提供自定义构建,以便使用与应用程序其余部分相同的VC++库,但这是SQLite代码库存.)

pcache1Fetch执行时发生崩溃call 00000000,如WinDbg调用堆栈所示:

0b50e5c4 719f9fad 06fe35f0 00000000 000079ad 0x0
0b50e5d8 719f9216 058d1628 000079ad 00000001 SQLite_Interop!pcache1Fetch+0x2d [sqlite3.c @ 31530]
0b50e5f4 719fd581 000079ad 00000001 0b50e63c SQLite_Interop!sqlite3PcacheFetch+0x76 [sqlite3.c @ 30651]
0b50e61c 719fff0c 000079ad 0b50e63c 00000000 SQLite_Interop!sqlite3PagerAcquire+0x51 [sqlite3.c @ 36026]
0b50e644 71a029ba 0b50e65c 00000001 00000e00 SQLite_Interop!getAndInitPage+0x1c [sqlite3.c @ 40158]
0b50e65c 71a030f8 000079ad 0aecd680 071ce030 SQLite_Interop!moveToChild+0x2a [sqlite3.c @ 42555]
0b50e690 71a0c637 0aecd6f0 00000000 0001edbe SQLite_Interop!sqlite3BtreeMovetoUnpacked+0x378 [sqlite3.c @ 43016]
0b50e6b8 71a109ed 06fd53e0 00000000 071ce030 SQLite_Interop!sqlite3VdbeCursorMoveto+0x27 [sqlite3.c @ 50624]
0b50e824 71a0db76 071ce030 …
Run Code Online (Sandbox Code Playgroud)

crash x86 assembly windbg amd-processor

68
推荐指数
1
解决办法
3261
查看次数

在AMD处理器上运行Android studio模拟器

Android新手.我的处理器是AMD,而不是英特尔,所以我无法在Android工作室中打开模拟器.

这个答案有评论:'你可以运行ARM(非英特尔)模拟器映像.从您的列表中,只需选择非英特尔仿真即可.他们没有解释这可以找到的地方.有任何想法吗?谢谢

Android Studio模拟器和AMD CPU

android android-emulator amd-processor

49
推荐指数
5
解决办法
17万
查看次数

为什么带有 Ryzen Threadripper 的 Numpy 比 Xeon 慢这么多?

我知道 Numpy 可以使用不同的后端,如 OpenBLAS 或 MKL。我还读到 MKL 针对英特尔进行了大量优化,所以通常人们建议在 AMD 上使用 OpenBLAS,对吗?

我使用以下测试代码:

import numpy as np

def testfunc(x):
    np.random.seed(x)
    X = np.random.randn(2000, 4000)
    np.linalg.eigh(X @ X.T)

%timeit testfunc(0)
Run Code Online (Sandbox Code Playgroud)

我已经使用不同的 CPU 测试了这段代码:

  • 英特尔至强 E5-1650 v3 上,此代码使用12 个内核中的 6 个0.7 秒内执行。
  • AMD Ryzen 5 2600 上,此代码使用所有 12 个内核1.45 秒内执行。
  • AMD Ryzen Threadripper 3970X 上,此代码使用所有 64 个内核1.55 秒内执行。

我在所有三个系统上都使用相同的 Conda 环境。根据np.show_config(),Intel 系统为 Numpy …

python performance numpy intel amd-processor

45
推荐指数
1
解决办法
6995
查看次数

我的基于AMD的机器是使用小端还是大端?

我正在进行一个计算机系统课程,我试图确定,如果我的基于AMD的计算机是一个小端机器?我相信这是因为它与英特尔兼容.

具体来说,我的处理器是AMD 64 Athlon x2.

我知道这在C编程中很重要.我正在编写C程序,我正在使用的方法会受此影响.我试图弄清楚如果我在基于Intel的机器上运行程序我会得到相同的结果(假设这小端机器).

最后,让我问一下:任何能够运行Windows(XP,Vista,2000,Server 2003等)以及Ubuntu Linux桌面的机器都是小端吗?

谢谢,
弗兰克

c intel endianness amd-processor

30
推荐指数
4
解决办法
3万
查看次数

我应该担心英特尔C++编译器为AMD发出次优代码?

我们一直是英特尔商店.所有开发人员都使用英特尔机器,最终用户的推荐平台是英特尔,如果最终用户希望在AMD上运行,那就是他们的了望.也许测试部门有一台AMD机器在哪里检查我们没有运送任何完全损坏的东西,但那是关于它的.

直到几年前我们才使用MSVC编译器,因为它并没有真正提供超出SSE级别的许多处理器调优选项,所以没有人担心代码是否有利于x86供应商而不是另一个.但是,最近我们一直在使用英特尔编译器.我们的东西肯定会从它(在我们的英特尔硬件上)获得一些显着的性能优势,并且它的矢量化功能意味着更少需要去asm/intrinsics.然而,人们开始对英特尔编译器是否真的不能为AMD硬件做得如此出色而感到有些紧张.当然,如果你进入英特尔CRT或IPP库,你会看到许多cpuid查询显然设置跳转表到优化的功能.看起来英特尔似乎不太可能为AMD芯片做任何好事.

任何有这方面经验的人都可以评论这在实践中是否是一个大问题?(我们还没有真正对AMD进行任何性能测试).

更新2010-01-04:支持AMD的需求从来没有变得足够让我自己做任何测试.还有在这个问题上一些有趣的阅读在这里,这里这里虽然.

更新2010-08-09:看来英特尔-FTC和解有话要说这个问题-请参阅"编译器和肮脏的把戏"的部分文章.

c++ compiler-construction optimization intel amd-processor

28
推荐指数
3
解决办法
3676
查看次数

今天x86上有多少指令?

我试图通过迄今为止所有的sse补充,从旧的386基本指令学习最新的x86汇编.

我读了一些像SSE5这样的东西有170个新指令 - 我被催促知道它们目前有多少.

有些人可能会说它很难计算(因为它们中的一些很接近,但是在不同的类型参数上工作),但我认为它们可以通过一些合理的假设来计算如何将倍数计算为1.那么有人可以提供答案吗?

最好的答案是每个处理器扩展中有多少指令的表.

64-bit x86 assembly intel amd-processor

25
推荐指数
1
解决办法
8921
查看次数

使用AMD处理器在计算机上运行Android模拟器

无论如何在使用AMD处理器时通过Eclipse运行Android虚拟设备?我有一段时间的Genymotion,尽管它起作用,但是涉及到太多的麻烦.

java android emulation amd-processor

24
推荐指数
2
解决办法
4万
查看次数

英特尔MKL与AMD数学核心库

有没有人有为英特尔数学核心库AMD数学核心库编程的经验?我正在构建一台用于高性能统计计算的个人计算机,并且正在讨论要购买的组件.AMD数学核心库的吸引力在于它是免费的,但我在学术界,所以MKL并不昂贵.但我有兴趣听到以下的想法:

  1. 哪个提供更好的API?
  2. 这平均每美元提供更好的性能,包括许可和硬件成本.
  3. AMCL-GPU,我应该考虑的一个因素?

math optimization hpc intel amd-processor

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

如何解释 Xeon 处理器在具有顺序复制和分散存储的循环中性能不佳?

c++在某些英特尔至强处理器上运行以下代码时,我偶然发现了一个特殊的性能问题:

// array_a contains permutation of [0, n - 1]
// array_b and inverse are initialized arrays
for (int i = 0; i < n; ++i) {
  array_b[i] = array_a[i];
  inverse[array_b[i]] = i;
}
Run Code Online (Sandbox Code Playgroud)

循环的第一行按顺序复制array_aarray_b(预期很少有缓存未命中)。第二行计算array_b(许多缓存未命中,因为array_b是随机排列)的倒数。我们也可以将代码分成两个单独的循环:

for (int i = 0; i < n; ++i)
  array_b[i] = array_a[i];
for (int i = 0; i < n; ++i)
  inverse[array_b[i]] = i;
Run Code Online (Sandbox Code Playgroud)

我原以为这两个版本(单循环与双循环)在相对现代的硬件上的性能几乎相同。但是,在执行单循环版本时,某些 Xeon 处理器似乎非常慢。

您可以在下方看到以纳秒为单位n的挂机时间除以在一系列不同处理器上运行代码段的时间。出于测试目的,代码是使用 GCC 7.5.0 编译的,并-O3 -funroll-loops -march=native …

performance intel cpu-architecture cpu-cache amd-processor

14
推荐指数
1
解决办法
408
查看次数

使用xmm寄存器而不是ymm时,vxorps在AMD Jaguar/Bulldozer/Zen上的归零速度是否更快?

AMD CPU通过解码为两个128b操作来处理256b AVX指令.例如,vaddps ymm0, ymm1,ymm1在AMD上,Steamroller解码为2个宏操作,吞吐量的一半vaddps xmm0, xmm1,xmm1.

XOR归零是一种特殊情况(没有输入依赖性,并且在Jaguar上至少避免消耗物理寄存器文件条目,并且使得来自该寄存器的movdqa在发出/重命名时被消除,就像Bulldozer一直在做非零的REG)中. 但它是否足够vxorps ymm0,ymm0,ymm0早被检测到仍然只能解码为1个具有相同性能的宏操作 vxorps xmm0,xmm0,xmm0?(不像vxorps ymm3, ymm2,ymm1)

或者,在已经解码为两个uop之后,独立检测是否会发生?此外,AMD CPU上的向量xor-zeroing是否仍然使用执行端口?在Intel-CPU上,Nehalem需要一个端口,但Sandybridge系列在发布/重命名阶段处理它.

Agner Fog的指令表没有列出这个特例,他的微指南没有提到uop的数量.


这可能意味着vxorps xmm0,xmm0,xmm0更好的实施方式_mm256_setzero_ps().

对于AVX512 _mm512_setzero_ps(),如果可能的话,也只使用VEX编码的归零惯用语而不是EVEX来保存字节.(即对于zmm0-15. vxorps xmm31,xmm31,xmm31仍然需要EVEX).gcc/clang目前使用他们想要的任何寄存器宽度的xor-zeroing习语,而不是总是使用AVX-128.

报告为clang bug 32862和gcc bug 80636.MSVC已经使用了xmm.尚未向ICC报告,ICC也使用zmm regs进行AVX512归零.(虽然英特尔可能不会改变,因为目前任何英特尔CPU都没有任何好处,只有AMD.如果他们发布的低功耗CPU将矢量分成两半,他们可能.他们目前的低功耗设计(Silvermont)没有t支持AVX,只支持SSE4.)


我知道使用AVX-128指令清零256b寄存器唯一可能的缺点是它不会触发Intel CPU上256b执行单元的预热.可能会破坏试图加热它们的C或C++黑客攻击.

(在第一个256b指令之后的第一个~56k周期内,256b向量指令较慢.请参阅Agner Fog微格式pdf中的Skylake部分).如果调用noinline返回的函数_mm256_setzero_ps不是预热执行单元的可靠方法,那可能没问题.(一个仍然可以在没有AVX2的情况下工作,并且避免任何负载(可以缓存未命中)是__m128 onebits = _mm_castsi128_ps(_mm_set1_epi8(0xff));
return _mm256_insertf128_ps(_mm256_castps128_ps256(onebits), onebits)应该编译为pcmpeqd xmm0,xmm0,xmm0/ vinsertf128 ymm0,xmm0,1.对于你曾经呼叫一次预热(或保持)执行单元的事情,这仍然是非常微不足道的.关键循环.如果你想要内联的东西,你可能需要inline-asm.)


我没有AMD硬件所以我无法测试这个.

如果有人拥有AMD硬件但不知道如何测试,请使用perf计数器来计算周期(最好是m-ops或uops或AMD称之为的任何内容).

这是我用来测试短序列的NASM/YASM源:

section .text
global _start …
Run Code Online (Sandbox Code Playgroud)

x86 assembly avx micro-optimization amd-processor

11
推荐指数
1
解决办法
691
查看次数