Tal Angel
Tal Angel

Reputation: 1788

How to force exe file to run on Nvidia GPU on windows

I have a program written in C++ language. My whole code contains only 3 files: a header file for my own class, a cpp file with code implementation for the class and a 3rd cpp file where I have the main() method.

I need to make very complicated calculations, and on a normal CPU my code takes about 3 months to complete the execution. That's why I tried to run the program on my Nvidia GPU. The code was developed on Visual Studio IDE and I made an EXE file.

This is what I tried to do:

  1. Went to graphics settings -> Choose the relevant Exe file -> set the file for high performance with Nvidia card. This did Not work.
  2. I open Nvidia Control Panel -> apps settings -> again, picked the relevant Exe file -> select Nvidia GPU for high performance. Also, no luck here.

Both ways failed, my code is running on my Intel GPU and not on my Nvidia card.

How can I force the execution of the Exe file to run on the Nvidia card?

Is three a way via the command line (or any other way) to make my C++ code to be compiled and run on my Nvidia GPU?

Upvotes: 1

Views: 3559

Answers (2)

AlexCL
AlexCL

Reputation: 432

As far as I know, there is no easy and/or automatic way to compile general C++ code to be executed in a GPU. You have to use some specific API for GPU computing or implement the code in a way that some tool is able to automatically generate the code for a GPU.

The C++ APIs that I know for GPU programming are:

Unfortunately, you will need to rewrite some parts of your code if you want to use one of these options. I believe that SYCL will be the easier choice and the one that will require less modifications in the C++ code (I really encourage you to take a look at the tutorial, SYCL is pretty easy to use). Also, it seems that Visual Studio already supports SYCL: https://developer.codeplay.com/products/computecpp/ce/guides/platform-support/targeting-windows

Upvotes: 2

Markus Schumann
Markus Schumann

Reputation: 8274

NVIDIA offers a high performance C++ compiler that will generate code moving some of your workload onto the GPU. This works best using C++17 parallel algorithm.

Likely - you have to re-write some your existing C++ code and then compile it using NVIDIA's C++ compiler.

Your code/algorithm must support some form of parallelism.

Here are some links with information about NVIDIA's HPC C++ compiler.

https://developer.nvidia.com/hpc-compilers

https://developer.nvidia.com/hpc-sdk

https://developer.nvidia.com/nvidia-hpc-sdk-downloads

Upvotes: 1

Related Questions