在C++中使用一个而不是另一个有什么优缺点?
在我看到的大多数代码double中float,即使不需要高精度也是最受欢迎的代码.  
由于使用双重类型(CPU/GPU /内存/总线/缓存/ ...)时存在性能损失,这种双重过度使用的原因是什么?
示例:在计算流体动力学中,我使用的所有软件都使用了双打.在这种情况下,高精度是无用的(因为数学模型中的近似引起的误差),并且有大量的数据需要移动,使用浮点数可以减少一半.
今天的计算机功能强大这一事实毫无意义,因为它们被用来解决越来越复杂的问题.
的__fp16浮点数据类型是一个众所周知的扩展上的ARM处理器特别是所使用的C标准.我想在我的x86_64处理器上运行它们的IEEE版本.虽然我知道他们通常没有这个,但我可以用"无符号短"存储(它们具有相同的对齐要求和存储空间)和(硬件)浮点算法来模拟它们.
有没有办法在gcc中请求?
我认为舍入可能稍微"不正确",但这对我来说没问题.
如果这也适用于C++,那将是理想的.
如何在 C++ 中从 float(1 位符号、8 位 exp、23 位尾数)转换为 Bfloat16(1 位符号、8 位 exp、7 位尾数)?
https://www.tensorflow.org/versions/r0.12/api_docs/python/framework/tensor_types中列出的tf.float16和tf.bfloat16有什么区别?
另外,"量化整数"是什么意思?
英特尔内在函数的名称中内置了向量的子类型。例如,_mm_set1_ps是 a ps,即packed single-precisionaka。A float。尽管它们中的大多数的含义是明确的,但它们的“全名”packed single-precision从功能描述中并不总是清晰的。我创建了下表。不幸的是,有些条目丢失了。它们有何价值?其他问题见表下方。
| 缩写 | 全名 | C/++ 等效项 | 
|---|---|---|
| 附注 | 压缩单精度 | 漂浮 | 
| 酸碱度 | 压缩半精度 | 没有任何** | 
| PD | 压缩双精度 | 双倍的 | 
| 个人电脑 | 压缩半精度复数 | 没有任何** | 
| pi8 | ??? | int8_t | 
| PI16 | ??? | int16_t | 
| pi32 | ??? | int32_t | 
| Epi8 | ??? | int8_t | 
| 表观16 | ??? | int16_t | 
| 表观32 | ??? | int32_t | 
| 表观64 | ??? | int64_t | 
| 外延64x | ??? | int64_t | 
附加问题:
epiX和 和有什么区别piX?pi64存在?epi64和 和有什么区别epi64x?** 我发现了这个,但似乎没有标准方法来表示 C/++ 中的半精度(复数)值。如果这有任何改变,请纠正我。
c++ ×4
c ×1
double ×1
gcc ×1
intel ×1
intrinsics ×1
mmx ×1
performance ×1
sse ×1
sse2 ×1
tensorflow ×1
types ×1
x86 ×1