我开发了一个 asp.net core 1.1 应用程序,它可以进行一些非常密集的数据处理。我想:
- GPU 加速数据处理(最好是 opencl 而不是 cuda,因为我的开发笔记本电脑没有 nvidia gpu,但这不是一个显示停止器)
- 将数据处理卸载到另一台服务器,这样 Web 服务器就不会陷入处理数据的困境。
- 坚持使用 C# 语言并尽可能避免使用 C++/C。
- 在 linux 机器/虚拟机上运行一切
执行分析所需的所有数据都存储在 PostgreSQL 数据库中(我使用 npgsql 访问它),但计算结果保存在内存中。应用程序输出动态创建的切片,这些切片被添加为 Bing 地图图层,因此如果我执行 #2(卸载数据处理),它还需要处理切片的 Web 请求,因为我希望该部分也能够进行 GPU 加速。
有没有推荐的方向来完成这个?我查看了 Cudafy.Net,但它与 .Net Core 1.1(或者我所知道的 1.0)不兼容。所以我认为在 Linux 上使用 Mono 的 asp.net 可能是最好的做法?我真的不知道..我只是一个程序员的黑客。
更新:
第 1 项和第 3 项是可能的。创建一个面向 .NET Framework 的 ASP.NET Core Web 应用程序,并通过 NuGet 添加 Cudafy.NET。安装您选择的 CUDA/OpenCL 驱动程序。
4 的前半部分是可能的,因为我使用 AMD APP SDK 3.0 在 Ubuntu VM 上成功运行了 OpenCL 测试。但是,后半部分是有问题的,因为从 VM 访问 GPU 似乎非常困难(需要 PCI-Passthrough)。当没有可用的 GPU 时,AMD 驱动程序使用 CPU,所以至少我有 CPU 加速。我想当我弄清楚如何做第 2 项时,我最好不要尝试虚拟化 GPU 加速的应用程序。