Using CUDA with IGOR?

Hi there,

I've been running IGOR on some simulations/calculations. However, these calculations can take quite a long time to process. I started looking into GPU computing and decided to give it a try.

In Windows, it appeared to be a simple matter of adding IGOR to the list of programs that could use CUDA that is present in the NVIDIA Control Panel. Upon doing this, the calculations went from taking about 2 hours or so to about 5 minutes!

The problem I have is that for some reason CUDA is not always enabled when carrying out the calculations.

My question is: What is the proper way to set up CUDA to work with IGOR?

Thank you!
CUDA-IGOR.png (95.32 KB)
vmmr5596 wrote:
In Windows, it appeared to be a simple matter of adding IGOR to the list of programs that could use CUDA that is present in the NVIDIA Control Panel. Upon doing this, the calculations went from taking about 2 hours or so to about 5 minutes!


Unless your calculations are preformed using some 3rd party XOP, you are unlikely to find any difference between IGOR's performance with or without CUDA. Specifically, IGOR's use of the GPU is only in Gizmo where OpenGL is used to compute and display 3D objects. The fact that the OS or some driver appear to enable CUDA for an application does not imply that the application is actually using CUDA. IGOR 6.x does not use CUDA.

A.G.
WaveMetrics, Inc.
I might add to AG's comments in this way.

What happens to your processing time when you shut down all graphics-related actions in your procedures? IOW, what happens when you turn off all function calls or disable all routines that do updates to graphs, put up interactive dialogs, print or display output information, or do anything that "shows" some response?

--
J. J. Weimer
Chemistry / Chemical & Materials Engineering, UAH
My original reply only addressed the CUDA issue so I should probably comment on general simulations/calculations performance. First, if you want to use the GPU you might want to take a look at http://www.igorexchange.com/project/IgorCL. This approach could work for you if you are comfortable with C++. Otherwise, as you may have seen on the Igor Exchange, you can often modify your IGOR code to squeeze significantly better performance. Feel free to post or to email support the relevant sections of the code that could use some improvement.

A.G.
WaveMetrics, Inc.