我有一个 .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/