问题标签 [amd-processor]

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 投票
1 回答
131 浏览

intel - 对于 Intel 和 AMD 架构,将 32 位整数转换为 double 的成本是多少?

我的印象是这两种表示之间的来回转换在现代硬件上并不是昂贵的操作,这是真的吗?

0 投票
3 回答
3455 浏览

assembly - 这是“不应该发生”的崩溃 AMD Fusion CPU 错误吗?

我的公司已经开始有一些客户来电,因为我们的程序在他们的系统上出现访问冲突而崩溃。

崩溃发生在我们作为应用程序的一部分发布的 SQLite 3.6.23.1 中。(我们发布了一个自定义版本,以便使用与应用程序的其余部分相同的 VC++ 库,但它是库存的 SQLite 代码。)

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

C代码的相关行是:

编译器 inlines sqlite3BeginBenignMalloc,其定义为:

为此的组装是:

寄存器是:

如果eax是 0(它是),零标志应该由 设置test eax, eax,但它是非零的。因为零标志没有设置,je不会跳转,然后应用程序在尝试执行时崩溃call eax (00000000)

更新eax这里应该始终为 0,因为sqlite3Hooks.xBenignBegin在我们的代码构建中没有设置。我可以用定义重建 SQLite SQLITE_OMIT_BUILTIN_TEST,这将#define sqlite3BeginBenignMalloc()在代码中打开并完全省略此代码路径。这可能会解决问题,但感觉不像是“真正的”修复;什么会阻止它在其他代码路径中发生?

到目前为止,共同因素是所有客户都在运行“Windows 7 Home Premium 64-bit (6.1, Build 7601) Service Pack 1”并拥有以下 CPU 之一(根据 DxDiag):

  • AMD A6-3400M APU,带 Radeon(tm) 高清显卡(4 个 CPU),~1.4GHz
  • AMD A8-3500M APU,带 Radeon(tm) 高清显卡(4 个 CPU),~1.5GHz
  • AMD A8-3850 APU 带 Radeon(tm) 高清显卡(4 个 CPU),~2.9GHz

根据维基百科的AMD Fusion 文章,这些都是基于 K10 内核的“Llano”型号 AMD Fusion 芯片,发布于 2011 年 6 月,也就是我们第一次得到报道的时候。

最常见的客户系统是东芝 Satellite L775D,但我们也有来自 HP Pavilion dv6 & dv7 和 Gateway 系统的崩溃报告。

此崩溃可能是由 CPU 错误引起的(请参阅AMD 系列 12h 处理器的勘误表),还是我忽略了其他一些可能的解释?(根据 Raymond 的说法,这可能是超频,但奇怪的是,如果是这样的话,只有这个特定的 CPU 型号会受到影响。)

老实说,这似乎不太可能真的是 CPU 或操作系统错误,因为客户在其他应用程序中没有遇到蓝屏或崩溃。肯定有其他的、更有可能的解释——但是什么?

8 月 15 日更新:我购买了一台配备 AMD A6-3400M 处理器的东芝 L745D 笔记本电脑,并且在运行该程序时可以始终如一地重现崩溃。崩溃总是在同一条指令上;.time报告崩溃前 1m30s 到 7m 的用户时间。我在原帖中没有提及的一个事实(可能与该问题有关)是该应用程序是多线程的,并且 CPU 和 I/O 使用率都很高。该应用程序默认生成四个工作线程并发布 80+% 的 CPU 使用率(在 SQLite 代码中存在一些 I/O 和互斥锁阻塞),直到它崩溃。我将应用程序修改为仅使用两个线程,但它仍然崩溃(尽管需要更长的时间才能发生)。我现在只用一个线程运行测试,它还没有崩溃。

另请注意,这似乎并不是纯粹的 CPU 负载问题。我可以在系统上毫无错误地运行 Prime95,它会将 CPU 温度提高到 >70°C,而我的应用程序在运行时几乎不会超过 50°C。

8 月 16 日更新:稍微扰乱说明会使问题“消失”。例如,将内存负载 ( mov eax,dword ptr [SQLite_Interop!sqlite3Hooks (71a7813c)])替换为xor eax, eax可防止崩溃。修改原始 C 代码以在语句中添加额外的检查会if( createFlag==1 )更改编译代码中各种跳转的相对偏移量(以及test eax, eaxandcall eax语句的位置),并且似乎也可以防止出现问题。

到目前为止我发现的最奇怪的结果是,将jneat更改719f9fa0为两条nop指令(这样控制总是落入test eax, eax指令,无论createFlag/的值esi是多少)允许程序运行而不会崩溃。

0 投票
1 回答
96 浏览

asp.net - 是否考虑将 ASP.NET 应用程序从 Intel 机器转移到 AMD?

我有一个工作的 ASP.NET 应用程序,它广泛使用内存,最近我计划转移到 AMD 机器。有什么我应该注意的吗(即我在Bin文件夹中使用的库、SQL Server 2008 等...)

0 投票
3 回答
5978 浏览

intel - AMD 与 Intel 处理器制作可执行文件

可能是一个愚蠢的问题,但我处于以下情况:

我们的开发机器目前都是基于 Intel 的 64 位系统,我们在其中生产 32 位和 64 位版本的应用程序。我们还建议我们的客户使用基于 Intel 的系统(而不是基于 AMD 的系统)。

现在,我们的 IT 经理想要购买一些新的开发系统并削减他正在考虑购买(64 位)基于 AMD 的系统的成本。Visual Studio (2010) 可能不关心它在哪个处理器上运行,生成的代码可能是相同的,但只是为了确定:对于在哪个处理器上生成的可执行文件(AMD 与 Intel)有什么不同吗?它建成了吗?

0 投票
2 回答
448 浏览

c++ - What could cause my program to not use all cores after a while?

I have written a program that captures and displays video from three video cards. For every frame I spawn a thread that compresses the frame to Jpeg and then puts it in queue for writing to disk. I also have other threads that read from these files and decodes them in their own threads. Usually this works fine, it's a pretty CPU intensive program using about 70-80 percent of all six CPU cores. But after a while the encoding suddenly slows down and the program can't handle the video fast enough and starts dropping frames. If I check the CPU utilization I can see that one core (usually core 5) is not doing much anymore.

When this happens, it doesn't matter if I quit and restart my program. CPU 5 will still have a low utilization and the program starts dropping frames immediately. Deleting all saved video doesn't have any effect either. Restarting the computer is the only thing that helps. Oh, and if I set the affinity of my program to use all but the semi-idling core, it works until the same happens to another core. Here is my setup:

  • AMD X6 1055T (Cool & Quiet OFF)
  • GA-790FX-UD5 motherboard
  • 4Gig RAM unganged 1333Mhz'
  • Blackmagic Decklink DUO capture cards (x2)
  • Linux - Ubuntu x64 10.10 with kernel 2.6.32.29

My app uses:

  • libjpeg-turbo
  • posix threads
  • decklink api
  • Qt
  • Written in C/C++
  • All libraries linked dynamically

It seems to me like it would be some kind of problem with the way Linux schedules threads on the cores. Or is there some way my program can mess up so bad that it doesn't help to restart the program?

Thank you for reading, any and all input is welcome. I'm stuck :)

0 投票
3 回答
860 浏览

.net - AMD 处理器上的 .NET 性能

我们正在.NET 4 中编写一个数据处理应用程序,最近尝试将我们的应用程序部署到 AMD 6174(12 核)处理器。从历史上看,我们使用过英特尔,一切都很好。该应用程序非常并行,我们在英特尔上获得了多线程性能提升。然而,在 AMD 上并没有像人们预期的那样线性性能提升。我怀疑一个问题,因为 CPU 利用率没有达到最大值。闻起来像争用,但我不知道该去哪里寻找,因为这是一个非常特定于平台的问题。想法从哪里开始?

0 投票
1 回答
996 浏览

opencl - OpenCL 芯片:为 GPGPU 选择哪一个,如何在一台机器上同时拥有 AMD 和 nVidia

我将使用 OpenCL(双精度)开发 GPGPU 模拟。我想在我的新工作站中同时安装 nVidia 和 AMD 芯片进行测试。

  1. Linux 下是否支持这样的配置(AMD 和 nVidia)?我假设我必须使用专有驱动程序才能获得不错的性能,我不确定它们是否会以某种方式发生冲突?

  2. 是否可以使用其中一张卡来驱动图形显示,同时它也可用于 OpenCL 代码?(我假设是这样,但最好确定一下)

  3. 你会推荐什么硬件?我不需要非常昂贵的(特斯拉超出了我的预算),但它必须支持双精度。我发现 nVidia 的 GTX560 可以很好,不会太贵,但仍然很有特色。这是一个不错的选择吗?

  4. 对于 AMD 硬件,我应该选择面向游戏玩家的 Radeon HD 6970(根据维基百科,只有 >= HD6950 支持双精度 FP),还是 FirePro 系列——FV5900 或 FV7900?

0 投票
2 回答
184 浏览

c# - 为什么多个核心参与顺序算法?

当我在 C# 中运行冒泡排序、鸡尾酒排序和快速排序时,我可以看到所有 3 个内核都在我的 AMD X3 上使用(X4 附带 1 个损坏的内核)。

为什么会这样?我的算法是顺序的,我的代码没有任何线程标签。尤其是排序算法,它是一种高度顺序的算法,不,一个事件在下一个事件完成之前不会发生。它是如何拆分算法的?

例如应要求的冒泡排序:

0 投票
2 回答
405 浏览

performance - 现代处理器的性能

在现代处理器 (AMD Phenom II 1090T) 上执行时,以下代码更有可能消耗多少时钟滴答:3 还是 11?

问题是,当我对此类代码执行多次迭代时,每次迭代的结果不时变化接近 3 或 11 个滴答声。我无法决定“谁是谁”。

UPD 根据指令延迟表 (PDF),我的一段代码在 AMD K10 微架构上至少需要 10 个时钟周期。因此,每次迭代不可能有 3 个刻度是由测量中的错误引起的。

已解决 @Atom注意到,现代处理器 中的循环频率不是恒定的。当我在 BIOS 中禁用三个选项时 -和Core Performance Boost,我的“六条指令”的消耗稳定在3 个时钟周期:-)AMD C1E SupportAMD K8 Cool&Quiet Control

0 投票
1 回答
394 浏览

opencl - OpenCL 编译器之间的语法差异

以下代码使用 intel/nVidia OpenCL 编译器(均基于 LLVM)进行编译:

AMD 编译器说invalid type conversion, 并且只接受具有以下条件的代码global

根据规范,其中哪一个是正确的?(并且:我应该在某处报告不合格的编译器吗?)