gpt4 book ai didi

optimization - 如何在 AMD 芯片上使用英特尔编译器优化 C++ 程序

转载 作者:行者123 更新时间:2023-12-01 19:55:06 29 4
gpt4 key购买 nike

这里是新手。我有一个大型有限分析代码,需要使用高性能计算来运行。人们一直告诉我英特尔编译器通常会提供更好的速度(我以前使用过 gcc)。我发现在我们的英特尔集群上确实如此。但最近我们有了一个新的 AMD 集群。我对如何使用icpc的编译选项来优化程序感到困惑。

基本上,我有两个问题:

问题 1

这是带有 AMD 芯片的集群:

processor       : 63
vendor_id : AuthenticAMD
cpu family : 21
model : 2
model name : AMD Opteron(tm) Processor 6378
stepping : 0
cpu MHz : 2399.837
cache size : 2048 KB
physical id : 2
siblings : 16
core id : 7
cpu cores : 8
apicid : 79
initial apicid : 79
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nonstop_tsc extd_apicid amd_dcm aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 popcnt aes xsave avx f16c lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs xop skinit wdt lwp fma4 nodeid_msr tbm topoext perfctr_core cpb npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold
bogomips : 4799.73
TLB size : 1536 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 48 bits physical, 48 bits virtual
power management: ts ttp tm 100mhzsteps hwpstate [9] [10]

当我使用icpc hello.cpp -O3 -xP编译一个小代码时,我不知道到底应该使用什么选项?我发现错误是:

$ /usr/bin/time -p ./a.out
Fatal Error: This program was not built to run on the processor in your system.
The allowed processors are: Intel(R) Pentium(R) 4 and compatible Intel processors with Intel(R) Streaming SIMD Extensions 3 (Intel(R) SSE3) instruction support.

real 0.00
user 0.00
sys 0.00

问题 2

如果我希望二进制文件同时用于 Intel 芯片集群和 AMD 芯片集群,我应该使用不同的选项来编译代码吗?

最佳答案

英特尔编译器并不总是适用于 AMD 芯片,尤其是使用某些标志,如 -xP(现在是 -xSSE3,请参阅 here )。具体来说,-xSSE3/-xP 告诉编译器:可以为英特尔® 处理器生成英特尔® SSE3、SSE2 和 SSE 指令。针对支持英特尔® SSE3 指令的英特尔处理器进行了优化。对于 OS X* 系统,此值仅在 IA-32 架构上受支持。这取代了已弃用的值 P。

该文件还引用了这样一句话:英特尔编译器可能会也可能不会针对非英特尔微处理器进行相同程度的优化,以实现非英特尔微处理器所独有的优化。这些优化包括SSE2、SSE3和SSSE3指令集以及其他优化。英特尔不保证非英特尔制造的微处理器上的任何优化的可用性、功能性或有效性。本产品中与微处理器相关的优化旨在与 Intel 微处理器一起使用。某些非特定于英特尔微架构的优化是为英特尔微处理器保留的。请参阅适用的产品用户和引用指南,了解有关本通知涵盖的特定指令集的更多信息。

您可以尝试使用 icc 和 icpc 进行优化,但我不确定它是否适用于 AMD 芯片。对于 gcc 以外的编译器,您可以查看 clang、PGI 或 Cray 编译器(如果您使用的是 Cray 系统)。

如果您尝试为两种架构创建二进制文件,由于缓存行大小和其他架构特定设置的差异,我不确定您是否能够进行大量优化。

关于optimization - 如何在 AMD 芯片上使用英特尔编译器优化 C++ 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16431886/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com