0

我开始了一个新的 VS2017 c# 控制台应用程序项目,并从包管理器中安装了 Alea 和 Alea.Fody。从网站上运行一段示例代码给了我以下异常。

System.TypeInitializationException 发生 HResult=0x80131534 消息='Alea.GlobalImplicitMemoryTracker' 的类型初始化程序引发了异常。Source=Alea StackTrace:在 Alea.GlobalImplicitMemoryTracker.GetInManagedFlag() 在 gptest.Program.DelegateWithClosureGpu() 在 gptest.Program.Main(String[] args) 在 c:\Users\myuser\documents\visual studio 2017\Projects\gputest \gptest\Program.cs:第 14 行

内部异常 1:TypeInitializationException:“A.cf5aded17df9f7cc4c132234dda010fa7”的类型初始化程序引发了异常。

内部异常 2:FileNotFoundException:无法加载文件或程序集 'FSharp.Core,Version=4.4.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。该系统找不到指定的文件。

这是整个程序。

using Alea;
using Alea.Parallel;
using System.Linq;

namespace gputest
{
class Program
{
    private const int Length = 1000000;

    static void Main(string[] args)
    {
        DelegateWithClosureGpu();     
    }

    [GpuManaged]
    public static void DelegateWithClosureGpu()
    {
        var arg1 = Enumerable.Range(0, Length).ToArray();
        var arg2 = Enumerable.Range(0, Length).ToArray();
        var result = new int[Length];

        Gpu.Default.For(0, result.Length, i => result[i] = arg1[i] + arg2[i]);

        var expected = arg1.Zip(arg2, (x, y) => x + y);

        //Assert.That(result, Is.EqualTo(expected));
    }
}
}
4

3 回答 3

2

我必须通过修改 .NET 桌面开发选项来安装 F# 语言支持,为 VS2017 安装 F#,但之后它确实起作用了。将 Alea 用于 C# 需要 F# 支持并不直观。这应该列在安装指南中。

于 2017-09-04T01:34:24.387 回答
1

您需要安装 F# 运行时。在 VS2015 中,选择你的 vs 安装并选择修改,添加 F# 功能。

于 2017-08-25T07:50:49.550 回答
1

我在已经安装 F# 的 VS2017.3 中遇到了类似的错误,从一个干净的项目开始,使用 NuGet 的 Alea GPU 3.0.3。事实证明,该包包含所有引用的 DLL,包括 FSharp.Core.dll(检查 C# 项目的 .../packages/ 子目录)。我将所有 DLL 复制到包含可执行文件的目录(例如 .../bin/Debug),取消选中 C# 程序的“首选 32 位”属性,然后重新构建。然后我的程序运行良好。请注意,我认为可能需要更正 Alea GPU .targets 文件以将所需文件复制到适当的目录。

于 2017-09-04T20:12:31.100 回答