问题标签 [aleagpu]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何使用 Alea GPU 设置项目
(对不起,如果这真的很明显,我对 GPU 编程完全陌生。)我已经安装了 Alea GPU 的所有依赖项,并且示例正在编译和运行。但是,我不确定如何设置新的控制台或 Windows 窗体项目以包含 Alea GPU 库。如果我只是尝试按如下方式包含文件:
我得到错误:
“找不到类型或命名空间名称'Alea'(您是否缺少 using 指令或程序集引用?)”。
在创建新项目时,我应该如何包含 Alea GPU 库?(我正在使用 Visual Studio 2015)
f# - 通过 Alea GPU 内核函数
这在带有 Alea GPU 的 F# 中是否可行?
声明一个函数:
传递内核该函数,并在内核中使用它:
我知道另一种方法是简单地静态声明函数,例如:
但我希望能够my_function
根据程序的参数进行更改。
例如:
aleagpu - Alea GPU for loop 无法获取字段
我刚从 ALEA 开始,我很好奇如何在给定的 gpu parallel.for 中访问其他类型和引用。当我执行以下操作时,我收到一个运行时错误,指出“无法随机获取字段。可能的原因:1)不支持静态字段。2)不支持字段类型。3)在闭包类中,该字段没有[GpuParam] 属性。”
这个错误是有道理的,但我不确定正确的实现是什么
c# - 无法将 cuDNN cudnn64_7.dll 文件与 Alea GPU 一起使用(它一直在寻找旧的 dll)
我很难让 Alea 使用更新的 cuDNNcudnn64_7.dll
库。
我已经按照这里的官方指南添加了环境变量,让 Alea 引用更新的 CUDA 9.1 驱动程序。
但问题出在cuDNN 上,它只是一个独立的 .dll,添加到 CUDA bin 文件夹中(连同其头文件和 lib 文件)。
现在,只要我尝试使用CuDnn
类中的一种方法,Alea 就会引发异常。有没有办法明确设置 Alea 引用较新的 dll 而不是它试图找到的旧的?
谢谢!
c# - 由于不明确的原因,Alea GPU 中出现 NullReferenceException
我在我的项目中使用 Alea GPU 时遇到了异常NullReferenceException
,一切正常,直到我添加Parallel.For
了一些代码之后Gpu.Default.For
,这是我可以重现错误的最少代码:
异常详情:
我已经使用控制台和 Windows 窗体对其进行了测试,结果相同。那么,我做错了什么?或者这是一个错误?
c# - .NET Standard 2.0 上的 Alea.Gpu - 这种变通办法有效吗?
我正在编写一个通过 Alea.Gpu 库支持 GPU 加速的库,到目前为止我的设置是:
- 基本 .NET Standard 2.0 二进制文件 (CPU)
- .NET Framework 4.7.1 与 Alea.Gpu (GPU)
这个想法是,您只在 .NET Core/UWP/Whatever 上使用基本 .NET Standard 2.0 库,并且在使用 .NET Framework 应用程序以利用 GPU 支持时还包括 .NET Framework 4.7.1 库。
由于 Alea.Gpu 是跨平台的(根据文档,它也可以与 Mono 和 Xamarin 一起使用),我想我会将所有代码移动到一个 .NET Standard 2.0 库中,然后用户就可以检查如果 GPU 功能在最终使用之前在当前平台上受支持。
问题是目前 Alea.Gpu NuGet 包似乎没有使用新的 PackageReference 设置,因此将其安装在 .NET Standard 2.0 库中会导致包成功添加,但在此过程中会丢失依赖项。 实际上,我安装了 Alea.Gpu,但库中没有任何命名空间(.dll 文件也不存在)。
见这里:https ://github.com/dotnet/standard/issues/481
我找到了一种似乎可行的解决方法,即使仅在 .NET Framework 上,也只需将这些行添加到库 .csproj 文件中:
我的问题是:
- 即使 .dll 文件没有正确添加到库中,它们是否仍会在构建时被下载,因此它们仍会像 .csproj 代码一样在任何其他 PC 上的该文件夹中结束?
- 是否可以肯定地说,无论实际平台如何,VS 在构建时都会将这些 .dll 文件恢复到同一个 net45 子文件夹中?我的意思是,在恢复 .NET Standard 2.0 库的包时,它会自动回退到 net45 吗?
- 在更新 Alea.Gpu 以使用 PackageReference 以便它自动包含这些 .dll 文件之前,还有其他(更好的)解决方法吗?
谢谢!
c# - 在 Alea GPU For 循环上禁用延迟编译
我开始使用 C# 的 Alea GPU 库,并且在熟悉的环境中使用 CUDA 非常有趣。但是,我解决了一个我无法轻易解决的问题。
因此,我使用 Alea GPU 编写了一小部分代码:
以及它在 C# 中使用 Parallel.For 的微不足道的对应物,其中相同的代码块在内部组件上工作。仅供参考,Points.Count 大约等于 270 万,我在 Geforce GT 635M 上运行此代码。
我开始比较这两种方法的性能,并注意到一个意想不到的行为。在第一次运行时,上面发布的代码比其 CPU Parallel.For 对应的代码慢了近 10 倍。每次下一次运行都按预期运行,并且比 C# 代码更快。
我猜想在 CUDA 代码上执行了某种惰性编译(类似于惰性加载),第一次运行所花费的时间也包含实际编译时间。那么有没有一种简单的方法来强制执行这段代码的预编译呢?我注意到内核可以提前编译,但我更愿意使用 Alea.Parallel.GpuExtension.For 循环来保持我的代码简单。
c# - 使用 Alea GPU 加速嵌套循环和按位运算
我正在尝试使用 Alea 来加速我正在开发的程序,但我需要一些帮助。
我需要做的是对存储在两个数组中的值进行大量位计数和按位运算。
对于我的第一个数组的每个元素,我必须对我的第二个数组的每个元素进行按位 & 运算,然后计算 & 结果中设置为 1 的位。
如果结果大于/等于某个值,我需要退出内部 for 并转到我的第一个数组的下一个元素。
第一个数组通常很大,有数百万个元素,第二个数组通常少于 200.000 个元素。
尝试并行执行所有这些操作,这是我的代码:
这按预期工作,但比我在四核 CPU 上并行运行的版本快一点。
我当然在这里遗漏了一些东西,这是我第一次尝试编写 GPU 代码。
顺便说一句,我的 NVIDIA 是 GeForce GT 740M。
编辑
下面的代码比前面的代码快 2 倍,至少在我的 PC 上是这样。非常感谢 Michael Randall 为我指明了正确的方向。
c# - 仅在调试模式下运行 DLL
我正在研究 AI SDK,但我使用 Alea GPU dll。
我的问题是 Alea 在发布模式下有一个错误,我认为这是由于某些编译器条件。那么......是否有任何机会或方式仅在调试模式下运行包含的 dll 而在发布模式下运行应用程序的其余部分?
谢谢