热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

英特尔芯片上的半精度浮点运算

如何解决《英特尔芯片上的半精度浮点运算》经验,为你挑选了1个好方法。

是否可以在英特尔芯片上执行半精度浮点运算?

我知道如何加载/存储/转换半精度浮点数[1],但我不知道如何在不转换为单精度浮点数的情况下添加/相乘它们.

[1] https://software.intel.com/en-us/articles/performance-benefits-of-half-precision-floats



1> Peter Cordes..:

是否可以在英特尔芯片上执行半精度浮点运算?

是的,显然是Skylake的片上GPU以及后来的FP16和FP64以及FP32的硬件支持.使用足够新的驱动程序,您可以通过OpenCL使用它.

在早期的芯片上,您可以获得与FP16相比吞吐量相同的FP32(可能只是快速转换几乎免费),但在SKL/KBL芯片上,您可以获得 GPGPU Mandelbrot FP32吞吐量的两倍(请注意对数刻度)该链接中图表的Mpix/s轴).

FP64(double)性能的提升也是巨大的.


在IA核心(英特尔架构)没有 ; 即使使用AVX512,除了转换它们之外,没有任何硬件支持.

您当然可以实现软件浮点,甚至可能在SIMD寄存器中实现,所以从技术上讲,答案对于您提出的问题仍然是"肯定",但它不会比使用F16C VCVTPH2PS/ VCVTPS2PH指令+打包单vmulps/ vfmadd132ps硬件支持更快.

技术上是肯定但不是有用的,除了GPGPU.使用HW-支持从SIMD转换/ float/ __m256在x86代码.


@PeterCordes:有趣。[Anandtech文章](https://www.anandtech.com/show/14179/intel-manual-updates-bfloat16-for-cooper-lake-xeon-scalable-only)和[Intel文件](https: //software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf),建议BF16仅包含转换说明和点积。
推荐阅读
author-avatar
mobiledu2502852753
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有