英特尔最新版C/C++编译器采用LLVM架构,性能提升明显

{"type":"doc","content":[{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"下一代英特尔C\/C++编译器的表现会更加出色,因为它们将使用LLVM开源基础架构。"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"LLVM帮助我们实现了为英特尔架构提供更加优秀的C\/C++编译器这一目标。最新的英特尔C\/C++编译器使用LLVM架构,可提供更快的编译时间、更好的优化、增强的标准支持以及对GPU和FPGA负载转移(offloading)的支持。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在这篇文章中,我将分享我们采用LLVM的相关信息。我将讨论这对编译器的用户有哪些意义、我们为什么这样做以及未来的光明前景。英特尔C\/C++编译器采用LLVM的工作已经完成,我还会分享关于英特尔Fortran编译器采用LLVM这一重要(但尚未完成)计划的更新信息。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"采用LLVM的好处有很多。我会建议大家从经典编译器升级到基于LLVM的编译器。我们正努力让这一过程尽可能无缝平滑,同时为使用英特尔编译器的开发人员提供大量收益。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"采用LLVM的好处"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"LLVM开源项目是模块化和可重用的编译器和一系列工具链技术的集合,整个项目支持多种处理器架构和编程语言。Clang开源项目提供了一个C\/C++前端,为LLVM项目支持了最新的语言标准。包括Clang在内,LLVM是由一个庞大且非常活跃的开发社区维护的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/c6\/c6f5d248b3849763f8fb2717ec03c1f7.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"采用LLVM的好处有很多,第一条要说的是"},{"type":"text","marks":[{"type":"strong"}],"text":"更快的构建时间"},{"type":"text","text":"。众所周知,Clang是很快的!我们使用英特尔oneAPI 2021.3"},{"type":"link","attrs":{"href":"https:\/\/software.intel.com\/content\/www\/us\/en\/develop\/tools\/oneapi.html","title":null,"type":null},"content":[{"type":"text","text":"工具包"}]},{"type":"text","text":"中的英特尔C\/C++编译器时,测得构建时间减少了14%。除了减少构建时间外,采用Clang使我们可以从社区支持最新C++语言标准的一系列成果中受益,并贡献成果来反哺社区。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"英特尔为开源项目提供贡献和支持的历史颇为悠久,其中我们向LLVM做出贡献就有十年时间了。我们今天的主动合作行为包括了优化报告补充、扩大的浮点模型支持,以及向量增强。英特尔直接对LLVM项目做出贡献,我们也有一个临时区域(英特尔LLVM技术"},{"type":"link","attrs":{"href":"https:\/\/github.com\/intel\/llvm","title":null,"type":null},"content":[{"type":"text","text":"项目"}]},{"type":"text","text":"),针对SYCL支持。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在英特尔架构上,英特尔C\/C++编译器预期能提供比基础Clang+LLVM编译器更高的性能。接下来英特尔C\/C++编译器都会是采用了LLVM开源基础架构的版本(icx)。我们会继续之前的长期努力,持续为Clang和LLVM项目做出贡献,包括为它们提供优化。并非所有的优化技术都会被上游采纳,有时是因为它们太新了,有时因为它们过于针对英特尔架构。这是可以预料的,并且与其他已经采用LLVM的编译器是同样的情况。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/66\/00\/66539cc4fb03ee30fbf36c7c83073700.jpg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我们使用英特尔oneAPI工具包2021.3版本中发布的最新英特尔C\/C++编译器进行了一系列的性能测试。我们的目标是为英特尔架构提供一流的C\/C++编译器,而我们的测试结果证明了这一点,表明英特尔C\/C++编译器击败了其他所有对手。我们也战胜了自己:新的基于LLVM的英特尔C\/C++编译器在性能上打平或超越了经典版本。现在是时候升级你使用的编译器了!我在这里先分享一个例子,文末提供了更多测试结果。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"英特尔C\/C++编译器一直都在提供最优秀的性能。经典版本的英特尔C\/C++编译器取得了对GCC "},{"type":"link","attrs":{"href":"https:\/\/software.intel.com\/content\/www\/us\/en\/develop\/blogs\/adoption-of-llvm-complete-icx.html#CoreMark-Pro-i7-8700K","title":null,"type":null},"content":[{"type":"text","text":"18%的优势"}]},{"type":"text","text":",而基于LLVM的英特尔C\/C++编译器取得了"},{"type":"link","attrs":{"href":"https:\/\/software.intel.com\/content\/www\/us\/en\/develop\/blogs\/adoption-of-llvm-complete-icx.html#CoreMark-Pro-i7-8700K","title":null,"type":null},"content":[{"type":"text","text":"41%的优势"}]},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"为支持英特尔不断发展的众多平台,我们在基于LLVM的编译器中重点关注了新特性和新硬件支持。除了继续提供业界一流的CPU优化之外,我们还加入了对GPU和FPGA的高度优化的支持。我们基于LLVM的编译器将提供对SYCL、C++20、OpenMP 5.1和OpenMP GPU目标设备的支持。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我们鼓励用户现在就转向基于LLVM的C\/C++编译器,享用更快的构建时间、更高级别的优化和新功能等收益。英特尔会长期坚持使用LLVM,在这条道路上不断创新、持续追求业界一流的优化成果。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Parallel Studio XE编译器发生了什么变化?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2007年,我们开始使用“Parallel Studio”这个新名字,强调这款工具对并行性的支持。彼时世界正在发生变革,并行编程注定要伴随多核处理器的普及而得到全面推广。一开始是单核处理器被双核处理器取代。如今,处理器核心数量已经达到了几十个的水平,且仍在持续增长。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"就像针对同构系统的并行编程广泛普及一样,我们看到针对异构系统的并行编程也走上了类似的道路。与多核并行性不同的是,异构编程会利用来自多个供应商的计算能力。这带来了让编程碎片化的风险,除非我们共同努力来支持开放的多源方法,为软件开发人员提供编译器、库、框架和整套工具链。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我们给这款流行工具的下一代版本取的新名字是为了强调针对异构并行的单一API开放方法。这些工具依旧具备获得行业数十年信赖的产品品质,并通过拥抱oneAPI"},{"type":"link","attrs":{"href":"https:\/\/www.oneapi.com\/","title":null,"type":null},"content":[{"type":"text","text":"规范"}]},{"type":"text","text":"和SYCL"},{"type":"link","attrs":{"href":"https:\/\/www.khronos.org\/sycl\/","title":null,"type":null},"content":[{"type":"text","text":"标准"}]},{"type":"text","text":"提供了对异构编程的支持。现在你就可以免费下载并开始使用这些工具了!英特尔社区"},{"type":"link","attrs":{"href":"https:\/\/community.intel.com\/t5\/Software-Development-Tools\/ct-p\/software-dev-tools","title":null,"type":null},"content":[{"type":"text","text":"论坛"}]},{"type":"text","text":"提供了社区支持。英特尔将继续为提交的问题,疑难和其他技术支持问题提供"},{"type":"link","attrs":{"href":"https:\/\/software.intel.com\/content\/www\/us\/en\/develop\/support\/priority-support.html","title":null,"type":null},"content":[{"type":"text","text":"优先支持"}]},{"type":"text","text":"。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"C\/C++已就绪"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我们建议所有的新项目直接使用基于LLVM的英特尔C\/C++编译器,而所有现有项目应该制定一个计划,在今年迁移到新的编译器。在未来的某个时候,经典C\/C++编译器将进入“旧版产品支持”模式,意味着对经典编译器代码库的更新终结,且它们不会再出现在oneAPI工具包中。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/7a\/1d\/7a11359f2f4d05df8cce919ca507471d.jpg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"新的基于LLVM的英特尔C\/C++编译器已经取得了与经典版本相当的表现,前者也提供了我们已有的最佳优化技术。我们建议所有用户都应该立即尝试新的C\/C++编译器,享受它带来的好处,并提供反馈。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"这里有一份很棒的"},{"type":"link","attrs":{"href":"https:\/\/software.intel.com\/content\/www\/us\/en\/develop\/articles\/porting-guide-for-icc-users-to-dpcpp-or-icx.html","title":null,"type":null},"content":[{"type":"text","text":"指南"}]},{"type":"text","text":"来帮助你从经典的C\/C++编译器转向基于LLVM的编译器。你会注意到的第一件事是新编译器改了名字(icx)。这可以让你同时安装经典版本和新版本,并在它们之间自由切换。许多用户已经决定在未来产品中只使用基于LLVM的英特尔C\/C++编译器。最新的发行"},{"type":"link","attrs":{"href":"https:\/\/software.intel.com\/content\/www\/us\/en\/develop\/articles\/intel-oneapi-dpc-c-compiler-release-notes.html","title":null,"type":null},"content":[{"type":"text","text":"说明"}]},{"type":"text","text":"提供了更多关于已知问题和限制的细节(这里则是针对经典C\/C++编译器版本的"},{"type":"link","attrs":{"href":"https:\/\/software.intel.com\/content\/www\/us\/en\/develop\/articles\/oneapi-c-compiler-release-notes.html","title":null,"type":null},"content":[{"type":"text","text":"说明"}]},{"type":"text","text":")。你还可以观看我们的网络研讨会(“"},{"type":"link","attrs":{"href":"https:\/\/software.intel.com\/content\/www\/us\/en\/develop\/blogs\/adoption-of-llvm-complete-icx.html#TalkToExperts","title":null,"type":null},"content":[{"type":"text","text":"与专家对话"}]},{"type":"text","text":"”),观看专家直播或通过点播观看先前录制的会议。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"基于LLVM的英特尔Fortran编译器正在开发中"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"众所周知,英特尔Fortran编译器一直都在提供广泛的标准支持和优越的性能表现。当我们完成基于LLVM的英特尔Fortran编译器测试计划时,这一传统也会得到延续。我们欢迎大家提供反馈。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"基于LLVM的Fortran编译器测试版提供了对Fortran语言的广泛支持,但有些功能仍在开发中。你可以查看具体特性的开发状态,看它是否已准备就绪:在我们的"},{"type":"link","attrs":{"href":"https:\/\/software.intel.com\/content\/www\/us\/en\/develop\/articles\/fortran-language-and-openmp-features-in-ifx.html","title":null,"type":null},"content":[{"type":"text","text":"Fortran和OpenMP特性状态表"}]},{"type":"text","text":"中可以找到基于LLVM的Fortan编译器中各个特性的发布状态。这里是Fortran编译器发行"},{"type":"link","attrs":{"href":"https:\/\/software.intel.com\/content\/www\/us\/en\/develop\/articles\/intel-fortran-compiler-release-notes.html","title":null,"type":null},"content":[{"type":"text","text":"说明"}]},{"type":"text","text":",同时提供了经典版本和基于LLVM测试版本的说明。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"今年晚些时候我会发布一篇博文,更新我们基于LLVM的Fortran编译器的开发进度。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"英特尔编译器开启全新篇章"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"英特尔C\/C++和Fortran编译器产品的历史源远流长,它们始于20世纪90年代早期的Unix System V编译器,并在90年代中期加入了来自Multiflow的编译器技术。我们在2000年代获得了来自DEC\/康柏的Fortran团队,和Kuck and Associates Inc.(KAI)的OpenMP和并行性专业知识。随着英特尔编译器进入第四个十年,它们会在LLVM编译器技术的帮助下继续这一旅程。英特尔编译器的用户将继续看到强大的标准支持、可靠的代码优化和满足用户需求的积极态度。我们还会提供对异构编程的一流支持。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我们会继续努力将英特尔C\/C++和Fortran编译器打造成为重要和有用的工具,帮助你构建改变世界的应用程序。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"英特尔编译器下载方式"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"英特尔编译器的用户现在可以充分利用英特尔数十年来针对英特尔架构和OpenMP的专业优化成果与LLVM的优势。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"请从oneAPI工具包"},{"type":"link","attrs":{"href":"https:\/\/software.intel.com\/content\/www\/us\/en\/develop\/tools\/oneapi\/all-toolkits.html","title":null,"type":null},"content":[{"type":"text","text":"网站"}]},{"type":"text","text":"下载新版。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有任何思考、反馈和建议,请在英特尔社区James-Reinders博客"},{"type":"link","attrs":{"href":"https:\/\/community.intel.com\/t5\/James-Reinders-Blog\/Intel-C-C-compilers-complete-adoption-of-LLVM\/ba-p\/1305373","title":null,"type":null},"content":[{"type":"text","text":"发表评论"}]},{"type":"text","text":"。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"更多基准测试结果和配置细节"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"总的来说,这些基准测试显示已经达到了一个临界点,标志着基于LLVM的编译器已准备好成为所有用户的首选编译器。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"更快的编译速度"}]},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/08\/a3\/08fa90513066d86e746cc898dac69da3.jpg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/8c\/a1\/8c69e77ac4186c5fd07bfb445ab232a1.jpg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"SPEC CPU 2017基准测试包中包含了一系列行业标准的CPU密集型测试套件,用于测试和对比计算密集型性能表现,考验系统的处理器、内存子系统和编译器。关于SPEC基准测试的更多信息可以在"},{"type":"link","attrs":{"href":"http:\/\/www.spec.org\/","title":null,"type":null},"content":[{"type":"text","text":"这里"}]},{"type":"text","text":"找到。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"配置:测试由英特尔在2021年6月10日完成。Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz, 16G x2 DDR4 2666. Red Hat Enterprise Linux release 8.0 (Ootpa), 4.18.0-80.el8.x86_64. 软件:Intel(R) 64 Compiler Classic for applications running on Intel(R) 64, Version 2021.3.0 Build 20210604_000000. Intel(R) oneAPI DPC++\/C++ Compiler for applications running on Intel(R) 64, Version 2021.3.0 Build 20210604. 编译器开关:Intel(R) 64 Compiler Classic: -O2 -xCORE-AVX512, Intel(R) oneAPI DPC++\/C++ Compiler: -O2 -xCORE-AVX512"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"优化的性能表现"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"SPECrate 2017(Estimated)"}]},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/60\/23\/607649bc76b65bd6be34d3e505bc6023.jpg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/8c\/80\/8c323b9167e5330b23cc5cf95702fa80.jpg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"SPEC CPU 2017基准测试包中包含了一系列行业标准的CPU密集型测试套件,用于测试和对比计算密集型性能,考验系统的处理器,内存子系统和编译器。关于SPEC基准测试的更多信息可以在"},{"type":"link","attrs":{"href":"http:\/\/www.spec.org\/","title":null,"type":null},"content":[{"type":"text","text":"这里"}]},{"type":"text","text":"找到。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"配置:测试由英特尔在2021年6月10日完成。Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz, 2 socket, Hyper Thread on, Turbo on, 32G x16 DDR4 3200 (1DPC). Red Hat Enterprise Linux release 8.2 (Ootpa), 4.18.0-193.el8.x86_64. 软件:Intel(R) oneAPI DPC++\/C++ Compiler for applications running on Intel(R) 64, Version 2021.3.0 Build 20210604. Intel(R) C++ Intel(R) 64 Compiler Classic for applications running on Intel(R) 64, Version 2021.3.0 Build 20210604_000000, GCC 11.1, Clang\/LLVM 12.0.0. SPECint®_rate_base_2017 编译器开关:Intel(R) oneAPI DPC++\/C++ Compiler: -xCORE-AVX512 -O3 -ffast-math -flto -mfpmath=sse -funroll-loops -qopt-mem-layout-trans=4. Intel(R) C++ Intel(R) 64 Compiler Classic: -xCORE-AVX512 -ipo -O3 -no-prec-div -qopt-mem-layout-trans=4 -qopt-multiple-gather-scatter-by-shuffles. GCC: -march=skylake-avx512 -mfpmath=sse -Ofast -funroll-loops -flto -mprefer-vector-width=128. LLVM: -march=skylake-avx512 -mfpmath=sse -Ofast -funroll-loops -flto. qkmalloc used for intel compiler. jemalloc 5.0.1 used for gcc and llvm. SPECfp®_rate_base_2017 编译器开关:Intel(R) oneAPI DPC++\/C++ Compiler: -xCORE-AVX512 -Ofast -ffast-math -flto -mfpmath=sse -funroll-loops -qopt-mem-layout-trans=4. Intel(R) C++ Intel(R) 64 Compiler Classic: -xCORE-AVX512 -ipo -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-multiple-gather-scatter-by-shuffles -qopt-mem-layout-trans=4. GCC: -march=skylake-avx512 -mfpmath=sse -Ofast -fno-associative-math -funroll-loops -flto. LLVM: -march=skylake-avx512 -mfpmath=sse -Ofast -funroll-loops -flto. "}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"SPECspeed 2017(Estimated)"}]},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/9f\/4e\/9f33494a05ec0cb6c2de4aed9333434e.jpg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/08\/2f\/081c487e1460e3d2yy851b480d91f02f.jpg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"SPEC CPU 2017基准测试包中包含了一系列行业标准的CPU密集型测试套件,用于测试和对比计算密集型性能,考验系统的处理器,内存子系统和编译器。关于SPEC基准测试的更多信息可以在"},{"type":"link","attrs":{"href":"http:\/\/www.spec.org\/","title":null,"type":null},"content":[{"type":"text","text":"这里"}]},{"type":"text","text":"找到。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"配置:测试由英特尔在2021年6月10日完成。Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz, 2 socket, Hyper Thread on, Turbo on, 32G x16 DDR4 3200 (1DPC). Red Hat Enterprise Linux release 8.2 (Ootpa), 4.18.0-193.el8.x86_64. 软件:Intel(R) oneAPI DPC++\/C++ Compiler for applications running on Intel(R) 64, Version 2021.3.0 Build 20210604. Intel(R) C++ Intel(R) 64 Compiler Classic for applications running on Intel(R) 64, Version 2021.3.0 Build 20210604_000000, GCC 11.1, Clang\/LLVM 12.0.0. SPECint®_speed_base_2017 编译器开关:Intel(R) oneAPI DPC++\/C++ Compiler: -xCORE-AVX512 -O3 -ffast-math -flto -mfpmath=sse -funroll-loops -qopt-mem-layout-trans=4 -fiopenmp. Intel(R) C++ Intel(R) 64 Compiler Classic: -xCORE-AVX512 -ipo -O3 -no-prec-div -qopt-mem-layout-trans=4 -qopt-GCC: -march=skylake-avx512 -mfpmath=sse -Ofast -funroll-loops -flto –fopenmp. LLVM: -march=skylake-avx512 -mfpmath=sse -Ofast -funroll-loops -flto -fopenmp=libomp. multiple-gather-scatter-by-shuffles -qopenmp. jemalloc 5.0.1 used for intel compiler, gcc and llvm. SPECfp®_speed_base_2017 编译器开关:Intel(R) oneAPI DPC++\/C++ Compiler: -xCORE-AVX512 -Ofast -ffast-math -flto -mfpmath=sse -funroll-loops -qopt-mem-layout-trans=4 -fiopenmp. Intel(R) C++ Intel(R) 64 Compiler Classic: -xCORE-AVX512 -ipo -O3 -no-prec-div -qopt-prefetch -ffinite-math-only -qopt-multiple-gather-scatter-by-shuffles -qopenmp. GCC: -march=skylake-avx512 -mfpmath=sse -Ofast -fno-associative-math -funroll-loops -flto –fopenmp. LLVM: -march=skylake-avx512 -mfpmath=sse -Ofast -funroll-loops -flto -fopenmp=libomp. jemalloc 5.0.1 used for intel compiler, gcc and llvm."}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"CoreMark-Pro,基于英特尔®酷睿i7-8700K处理器测试"}]},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/a1\/07\/a11995963eba12b3be433fc6c9965907.jpg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/1a\/9c\/1a9b801092dac602103bcd2d782d9a9c.jpg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"CoreMark-Pro旨在测试处理器整体表现,其充分支持多核技术,提供了整数和浮点负载组合,并为内存子系统压力测试提供了测试数据集。CoreMark-Pro来自嵌入式微处理器基准测试集(EEMBC),更多信息可访问"},{"type":"link","attrs":{"href":"https:\/\/www.eembc.org\/coremark-pro\/","title":null,"type":null},"content":[{"type":"text","text":"这里"}]},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在这些基准测试结果中,英特尔编译器选项都已关闭,但成绩显示基于LLVM的英特尔编译器与经典版本还有一些差距。我希望你也能认同这点差距并不算大,毕竟其他结果显示我们的基于LLVM的编译器有着优异的表现。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"配置:测试由英特尔在2021年6月10日完成。Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz, 16G x2 DDR4 2666. 软件:Intel(R) C++ Compiler Classic for applications running on Intel(R) 64, Version 2021.3.0 Build 20210604_000000, GCC 11.1, Clang\/LLVM 12.0.0. Red Hat Enterprise Linux release 8.0 (Ootpa), 4.18.0-80.el8.x86_64. 编译器开关: Intel(R) C++ Compiler Classic for applications running on Intel(R) 64, Version 2021.1 Build 20201112_000000: icc -xCORE-AVX2 -mtune=skylake -ipo -O3 -no-prec-div -qopt-prefetch. GCC 11.1: gcc -march=native -mfpmath=sse -Ofast -funroll-loops -flto. LLVM 12.0.0: clang -Ofast -funroll-loops -flto -static -mfpmath=sse -march=native."}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"CoreMark-Pro,基于英特尔®Atom C3850处理器测试"}]},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/97\/54\/972d1bc694a445c858c59be82cf28d54.jpg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/e2\/7b\/e26yy0a549f2c801f40b3903a4fyy27b.jpg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"CoreMark-Pro旨在测试处理器整体表现,其充分支持多核技术,提供了整数和浮点负载组合,并为内存子系统压力测试提供了测试数据集。CoreMark-Pro来自嵌入式微处理器基准测试集(EEMBC),更多信息可访问"},{"type":"link","attrs":{"href":"https:\/\/www.eembc.org\/coremark-pro\/","title":null,"type":null},"content":[{"type":"text","text":"这里"}]},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在这些基准测试结果中,英特尔编译器选项都已关闭,但成绩显示基于LLVM的英特尔编译器与经典版本还有一些差距。我希望你也能认同这点差距并不算大,毕竟其他结果显示我们的基于LLVM的编译器有着优异的表现。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"配置:测试由英特尔在2021年6月10日完成。Intel(R) Atom(TM) CPU C3850 @ 2.10GHz, 16G x2 DDR4 2400. 软件:Intel(R) C Intel(R) 64 Compiler Classic for applications running on Intel(R) 64, Version 2021.1 Build 20201112_000000, GCC 11.1, Clang\/LLVM 12.0.0. Red Hat Enterprise Linux release 8.0 (Ootpa), 4.18.0-80.el8.x86_64. 编译器开关: Intel(R) C++ Compiler Classic for applications running on Intel(R) 64, Version 2021.1 Build 20201112_000000: icc -xATOM_SSE4.2 -mtune=goldmont -ipo -O3 -no-prec-div -qopt-prefetch. GCC 11.1: gcc -march=native -mfpmath=sse -Ofast -funroll-loops -flto. LLVM 12.0.0: clang -Ofast -funroll-loops -flto -static -mfpmath=sse -march=native."}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"Lore:用于评估编译器基准测试的循环存储库"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/74\/74fb2ea74481adc93ec4ade1ce314ce9.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"LORE从流行的基准测试、库和真实应用中提取的循环嵌套来测试C语言的性能表现。循环涵盖了各种可以由编译器社区被用来评估循环优化的属性。测试包含了65个基准测试和负载。欲了解更多信息,请参见"},{"type":"link","attrs":{"href":"https:\/\/vectorization.computer\/","title":null,"type":null},"content":[{"type":"text","text":"这里"}]},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"配置:测试由英特尔在2021年6月9日完成。Intel(R) Xeon(R) Platinum 8180CPU @ 2.50GHz, 2 socket, 28 cores, HT enabled, Turbo enabled, 384GB RAM. 软件:Intel(R) oneAPI DPC++\/C++ Compiler for applications running on Intel(R) 64, Version 2021.2.0 Build 20210607, Intel(R) C++ Compiler Classic for applications running on Intel(R) 64, Version 2021.3.0 Build 20210607. Ubuntu 18.04.1 with GCC 10.2.0. 编译器开关: Intel(R) C++ Compiler Classic for applications running on Intel(R) 64, Version 2021.3.0 Build 20210607: ICC OPT - OPT=\"-Ofast -qopt-prefetch -unroll-aggressive -restrict -xHost -w\". ICC OPT512 - OPT=\"-Ofast -qopt-prefetch -unroll-aggressive -restrict -xHost -w -qopt-zmm-usage=high”. Intel(R) oneAPI DPC++\/C++ Compiler for applications running on Intel(R) 64, Version 2021.2.0 Build 20210607: ICX OPT - OPT=\"-Ofast -qopt-prefetch -unroll-aggressive -restrict -xHost -w\". ICX OPT512 - OPT=\"-Ofast -qopt-prefetch -unroll-aggressive -restrict -xHost -w -mprefer-vector-width=512\". ICX OPTm - OPT=\"-Ofast -qopt-prefetch -unroll-aggressive -restrict -march=skylake-avx512 -w\". ICX OPT512m - OPT=\"-Ofast -qopt-prefetch -unroll-aggressive -restrict -march=skylake-avx512 -w -mprefer-vector-width=512."}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"RAJA性能套件(RAJAPerf)"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/4b\/4b8865949cd3cdc3aef894aee051b590.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"RAJA性能套件旨在探索HPC应用中基于循环的计算内核的性能。"},{"type":"link","attrs":{"href":"https:\/\/github.com\/LLNL\/RAJAPerf","title":null,"type":null},"content":[{"type":"text","text":"这里"}]},{"type":"text","text":"有更多关于RAJA性能套件的信息。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"你可能会注意到,这一高压力基准测试中基于LLVM的编译器表现与我们的经典版本相当。这样的结果依旧称得上稳健和出色。我之所以毫不犹豫把它加了进来,是因为我们要证明新版本已经完全值得大家选择了。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"配置:测试由英特尔在2021年6月9日完成。Intel(R) Xeon(R) Platinum 8180CPU @ 2.50GHz, 2 socket, 28 cores, HT enabled, Turbo enabled, 384GB RAM. 软件:Intel(R) oneAPI DPC++\/C++ Compiler for applications running on Intel(R) 64, Version 2021.2.0 Build 20210607, Intel(R) C++ Compiler Classic for applications running on Intel(R) 64, Version 2021.3.0 Build 20210607. Ubuntu 18.04.1 with GCC 10.2.0. 编译器开关: Intel(R) C++ Compiler Classic for applications running on Intel(R) 64, Version 2021.3.0 Build 20210607: ICC OPT OPT=\"-Ofast -ansi-alias -xCORE-AVX512\", ICC OPT512 OPT=\"-Ofast -ansi-alias -xCORE-AVX512 -qopt-zmm-usage=high\", setenv KMP_AFFINITY compact,granularity=fine. Intel(R) oneAPI DPC++\/C++ Compiler for applications running on Intel(R) 64, Version 2021.2.0 Build 20210607: ICX OPT OPT=\"-Ofast -ansi-alias -xCORE-AVX512\", ICX OPT512 OPT=\"-Ofast -ansi-alias -xCORE-AVX512 -qopt-zmm-usage=high\", setenv KMP_AFFINITY compact,granularity=fine"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"性能表现会受使用情况、配置和其它因素的影响。如需了解更多信息,请访问"},{"type":"link","attrs":{"href":"https:\/\/www.intel.com\/PerformanceIndex","title":null,"type":null},"content":[{"type":"text","text":"这里"}]},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"原文链接:"},{"type":"link","attrs":{"href":"https:\/\/software.intel.com\/content\/www\/us\/en\/develop\/blogs\/adoption-of-llvm-complete-icx.html","title":null,"type":null},"content":[{"type":"text","text":"https:\/\/software.intel.com\/content\/www\/us\/en\/develop\/blogs\/adoption-of-llvm-complete-icx.html"}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章