我试图让“简单易用”的 Alea Libary 工作(我有一个 RTX2080,所以这不应该是问题)。
UI 基于 WPF,并在 .NET Core 3.1 项目中实现。它将“GpuCalculator”对象注入“Core.Lib”(.Net Standard 2.1)。
我为执行创建了一个 .Net Standard 2.0 类库(Core.Calculations 项目)。GpuCalculator 在这里实现。我安装了 Alea NuGet 包(版本 3.0.4)以及 Alea 需要的 FSharp.Core(版本 5.0.1)。起初我遇到了这里描述的同样的问题:How to setup project using Alea GPU
这就是为什么我将以下行添加到我的 csproj 文件中:
<ItemGroup>
<Reference Include="Alea">
<HintPath>$(NuGetPackageRoot)\alea\3.0.4\lib\net45\alea.dll</HintPath>
</Reference>
<Reference Include="Alea.IL">
<HintPath>$(NuGetPackageRoot)\alea\3.0.4\lib\net45\Alea.IL.dll</HintPath>
</Reference>
<Reference Include="Alea.Parallel">
<HintPath>$(NuGetPackageRoot)\alea\3.0.4\lib\net45\Alea.Parallel.dll</HintPath>
</Reference>
</ItemGroup>
现在的问题是,每当我想访问“Gpu.Default”时,都会从 F# 代码中引发异常 (NullReferenceException)。即使是对 Default 的简单访问也不起作用:
var gpu = Gpu.Default;
导致这样的错误:
at Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.UnboxGeneric[T](Object source) in D:\workspace\_work\1\s\src\fsharp\FSharp.Core\prim-types.fs:line 647
我还尝试将目标平台从“任何 CPU”切换到“x64”,因为我在某处看到了提示。虽然它没有效果:(
我感谢每一个帮助!
我需要任何其他 NuGet 包吗?我应该改用不同的东西吗?库达菲?OpenGL(通过 OpenTK)计算着色器?火神(C#?)...?
编辑:在我的 Latop 上,当我想访问 Gpu.Default 时出现以下错误:
Method not found: 'System.Reflection.Emit.AssemblyBuilder System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess)'.