.net - 如何使用硬件加速将 .NET 中的 Half 转换为 Single?

标签 .net performance precision unmanaged

我有一个 .NET 应用程序,其中 half precision类型非常适合。有一个"old" C# project来处理这种数据类型。但是,Intel CPU 现在提供硬件加速 half to single conversion .有谁知道如何在 .NET 中利用这种硬件加速?

最佳答案

为了能够在 C# 中使用 CPU 对 float16 的内置支持,您必须使用非托管程序集(即 C/C++ dll)来处理数据类型本身和/或依赖于 float16 类型的算法.使用 PInvoke 可以很容易地调用非托管代码,但除非您拥有英特尔编译器,否则您必须以汇编代码编写部分非托管库,因为 MSVC 不直接支持编译器生成 float16 类型所需的 x86-64 汇编代码所需的编译指示。

假设你做了所有这些,你可能仍然对结果感到失望,因为准备你的数据结构和调用非托管代码可能会产生大量的 CPU 开销,这可能会抵消你从 float16 中获得的性能。

关于.net - 如何使用硬件加速将 .NET 中的 Half 转换为 Single?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34119454/

相关文章:

.net - 如何使用不是 SystemSecuredString 的密码创建新的 PSDrive?

c# - ef4 导致 Web 服务中的循环引用

java - JDBC 以 block 的形式检索 Oracle 数据

java - Java 中使用 double 保持精度

math - 查找模拟时钟中时针和分针之间的角度

c# - 带有 GridSplitter 的 WPF 扩展器

asp.net - 如何在 GridView 中隐藏 TemplateField 列

.net - .Net 3.5 中通过字符串名称调用方法的最快方法是什么?

performance - 如何使用 Delphi 创建 Windows 性能计数器?

python - 如何在Python中四舍五入到最接近的较低 float ?