如何在 windows 上的 Nvidia GPU 上将 exe 文件强制为 运行
How to force exe file to run on Nvidia GPU on windows
我有一个用 C++
语言编写的程序。我的整个代码只包含 3 个文件:一个我自己 class 的头文件,一个带有 class 代码实现的 cpp 文件和一个我有 main()
方法的第三个 cpp 文件。
我需要进行非常复杂的计算,正常情况下 CPU 我的代码需要大约 3 个月才能完成执行。这就是为什么我尝试 运行 我的 Nvidia GPU 上的程序。代码是在Visual Studio IDE上开发的,我制作了一个EXE文件。
这是我尝试做的:
- 进入图形设置 -> 选择相关的 Exe 文件 -> 将文件设置为 Nvidia 卡的高性能。这没有用。
- 我再次打开 Nvidia 控制面板 -> 应用程序设置 -> 选择相关的 Exe 文件 -> select Nvidia GPU 以获得高性能。另外,这里没有运气。
两种方式都失败了,我的代码 运行ning 在我的 Intel GPU 上而不是在我的 Nvidia 卡上。
如何在 Nvidia 卡上强制执行 Exe 文件到 运行?
是否有三种方法可以通过命令行(或任何其他方式)编译我的 C++ 代码并在我的 Nvidia GPU 上运行?
NVIDIA 提供了一个高性能的 C++ 编译器,它可以生成代码,将您的一些工作负载转移到 GPU 上。
这在使用 C++17 并行算法时效果最佳。
可能 - 您必须 re-write 一些现有的 C++ 代码,然后使用 NVIDIA 的 C++ 编译器对其进行编译。
您的 code/algorithm 必须支持某种形式的并行性。
这里有一些链接,其中包含有关 NVIDIA 的 HPC C++ 编译器的信息。
https://developer.nvidia.com/hpc-compilers
据我所知,没有简单的 and/or 自动编译要在 GPU 中执行的通用 C++ 代码的方法。您必须使用某些特定的 API 进行 GPU 计算,或者以某种工具能够自动为 GPU 生成代码的方式实现代码。
我所知道的用于 GPU 编程的 C++ API是:
CUDA:专为NVIDIA GPU设计,相对简单易用。在这里给大家介绍一下:https://developer.nvidia.com/blog/even-easier-introduction-cuda/
OpenCL:市面上大部分GPU都可以使用,但不如CUDA好用。 OpenCL 一个有趣的特性是生成的代码也可以 运行 in CPU。这里的一个例子:https://www.eriksmistad.no/getting-started-with-opencl-and-gpu-computing/
SYCL:相对较新的 API,用于构建在 OpenCL 之上的异构编程。 SYCL 高度简化了 GPU 编程,我发现了这个有趣的教程,它展示了 SYCL 是多么容易使用:https://tech.io/playgrounds/48226/introduction-to-sycl/introduction-to-sycl-2
不幸的是,如果您想使用这些选项之一,您将需要重写部分代码。我相信 SYCL 将是更容易的选择,并且需要对 C++ 代码进行更少的修改(我真的鼓励你看一下教程,SYCL 非常容易使用)。另外,似乎 Visual Studio 已经支持 SYCL: https://developer.codeplay.com/products/computecpp/ce/guides/platform-support/targeting-windows
我有一个用 C++
语言编写的程序。我的整个代码只包含 3 个文件:一个我自己 class 的头文件,一个带有 class 代码实现的 cpp 文件和一个我有 main()
方法的第三个 cpp 文件。
我需要进行非常复杂的计算,正常情况下 CPU 我的代码需要大约 3 个月才能完成执行。这就是为什么我尝试 运行 我的 Nvidia GPU 上的程序。代码是在Visual Studio IDE上开发的,我制作了一个EXE文件。
这是我尝试做的:
- 进入图形设置 -> 选择相关的 Exe 文件 -> 将文件设置为 Nvidia 卡的高性能。这没有用。
- 我再次打开 Nvidia 控制面板 -> 应用程序设置 -> 选择相关的 Exe 文件 -> select Nvidia GPU 以获得高性能。另外,这里没有运气。
两种方式都失败了,我的代码 运行ning 在我的 Intel GPU 上而不是在我的 Nvidia 卡上。
如何在 Nvidia 卡上强制执行 Exe 文件到 运行?
是否有三种方法可以通过命令行(或任何其他方式)编译我的 C++ 代码并在我的 Nvidia GPU 上运行?
NVIDIA 提供了一个高性能的 C++ 编译器,它可以生成代码,将您的一些工作负载转移到 GPU 上。 这在使用 C++17 并行算法时效果最佳。
可能 - 您必须 re-write 一些现有的 C++ 代码,然后使用 NVIDIA 的 C++ 编译器对其进行编译。
您的 code/algorithm 必须支持某种形式的并行性。
这里有一些链接,其中包含有关 NVIDIA 的 HPC C++ 编译器的信息。
https://developer.nvidia.com/hpc-compilers
据我所知,没有简单的 and/or 自动编译要在 GPU 中执行的通用 C++ 代码的方法。您必须使用某些特定的 API 进行 GPU 计算,或者以某种工具能够自动为 GPU 生成代码的方式实现代码。
我所知道的用于 GPU 编程的 C++ API是:
CUDA:专为NVIDIA GPU设计,相对简单易用。在这里给大家介绍一下:https://developer.nvidia.com/blog/even-easier-introduction-cuda/
OpenCL:市面上大部分GPU都可以使用,但不如CUDA好用。 OpenCL 一个有趣的特性是生成的代码也可以 运行 in CPU。这里的一个例子:https://www.eriksmistad.no/getting-started-with-opencl-and-gpu-computing/
SYCL:相对较新的 API,用于构建在 OpenCL 之上的异构编程。 SYCL 高度简化了 GPU 编程,我发现了这个有趣的教程,它展示了 SYCL 是多么容易使用:https://tech.io/playgrounds/48226/introduction-to-sycl/introduction-to-sycl-2
不幸的是,如果您想使用这些选项之一,您将需要重写部分代码。我相信 SYCL 将是更容易的选择,并且需要对 C++ 代码进行更少的修改(我真的鼓励你看一下教程,SYCL 非常容易使用)。另外,似乎 Visual Studio 已经支持 SYCL: https://developer.codeplay.com/products/computecpp/ce/guides/platform-support/targeting-windows