为什么 MathNet.Numerics.Control.UseManaged 需要 Cuda?

Why does MathNet.Numerics.Control.UseManaged require Cuda?

我正在尝试测试一个 ASP API 控制器,它反过来调用一个使用 MathNet.Numerics.LinearAlgebra 的 DLL。我先打电话

MathNet.Numerics.Control.UseManaged();

但是此调用失败并出现错误

Exception thrown: 'System.NotSupportedException' in MathNet.Numerics.dll

Additional information: Cuda Native Provider not found.

当我明确告诉 MathNet 使用托管而非本机时,为什么需要 Cuda?

其实并没有失败,异常是内部处理的。您可以继续调试。

异常实际上并没有在 UseManaged 调用中抛出,而是在 Control class 的静态构造内部抛出,第一次被访问并初始化默认提供者(其中包括探测是否有任何已知的本机提供程序可用)。当然,使用托管提供程序时不需要 Cuda。

启用 "break on all exceptions" 进行调试时,这确实是一个小的可用性问题。我们也许可以通过一个小的重构来避免抛出异常。也许我们应该开一个 GitHub 问题来跟踪这个?