Error while installing Optix 7.7: Could NOT find Vulkan (missing: VULKAN_LIBRARY)

I am trying to install Optix 7.7 on windows 10.
When trying to run the “configure” in the CMake-gui I get:

Could NOT find Vulkan (missing: VULKAN_LIBRARY)

I have already installed the Vulkan SDK and the env variables I have are:
VULKAN_SDK
VK_SDK_PATH

How can I solve this problem?
Thanks!

That’s just a warning and shouldn’t matter when generating and building the OptiX SDK 7.7.0 examples.

I have the same message. Only the VULKAN_INCLUDE_DIR is found.
The VULKAN_LIBRARY isn’t used in any of the SDK’s CMakeList.txt files and the only place where the VULKAN_STATIC_LIBRARY is used is inside SDK\support\GLFW\CMakeLists.txt as an optional link library.

The examples are using OpenGL anyway.
Have you tried continuing with generating and building the solution?

Thanks for your quick reply :)
I had messed up my previous installation of optix, so I am starting over. I found this warning and I thought that it could be a reason for future problems. Thanks for clearing out that it does not affect the optix samples.

I followed the installation process, and I can run most of the samples ( hello, triangle, sphere, etc)
However in some samples like Meshviewer and Whitted I get the following error:

Caught exception: GL interop is only available on display device, please use display device for optimal performance. Alternatively you can disable GL interop with --no-gl-interop and run with degraded performance.

Any ideas?

Yes, some of the applications are using CUDA-OpenGL interoperability by default to speed up the display of the raytraced images inside the client window which is done with an OpenGL texture blit.

That error means that your device on which you’re running the CUDA and OptiX context is either not the primary display device or you’re not running an NVIDIA OpenGL implementation on your system at all.

For example, if you’re having multiple GPUs installed and the one running the OpenGL implementation on the primary display GPU is not the same GPU used for OptiX/CUDA, you cannot do CUDA-OpenGL interop

The other case is that you’re not running an NVIDIA OpenGL implementation on your system at all, e.g. like Mesa under Linux.

In that case you must disable the CUDA-OpenGL interop path inside the resp. application to let the display work. This will copy the raytraced image to the host and then upload it to the resp. OpenGL implementation either on the other GPU, resp. the non-NVIDIA OpenGL implementation.

Check what the command line options of the OptiX SDK examples offer by starting them from the command line with --help and if there is an option to disable the CUDA-OpenGL interop, like with --no-gl-interop try if that lets the programs display their rendered images.

If you only have one GPU installed and that is display capable, check if you have installed the NVIDIA graphics drivers correctly.

To answer what case you’re having you’d need to provide more information on your system configuration.
OS version, installed GPU(s), VRAM amount, display driver version, OptiX major.minor.micro version, CUDA toolkit version used to generate the input PTX, host compiler version.

Hi, my system is as follows:
OS version: Windows 10 Pro 21H2
installed GPU(s): NVIDIA GeForce RTX 3500, integrated ATI Radeon HD 4290 graphics
(GA-890GPA-UD3H)
VRAM amount: 8192MB
display driver version: 31.0.15.3179
OptiX major.minor.micro version: OptiX SDK 7.7.0
CUDA toolkit version used to generate the input PTX, host compiler version: 12.1

I assume that is a GeForce RTX 3050?
Otherwise the GA-890GPA-UD3H motherboard wouldn’t make sense.

OK, so you’re running Windows 10 and 531.79 NVIDIA drivers.

Is the integrated ATI Radeon HD 4290 graphics activated in any way?

What outlet is your monitor connected to?
Should be the RTX board, not any monitor outlet of the motherboard.

Has the command line argument --no-gl-interop helped on the programs which complained and support that option?

You could easily check what OpenGL implementation is running by adding glGetString calls to any of the OptiX SDK apps you have trouble with. Just query the GL_VENDOR, GL_RENDERER, GL_VERSION with glGetsString somewhere where the OptiX SDK examples use OpenGL calls (means where an OpenGL context is current) and look at the result.
https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetString.xhtml

If the GL_VENDOR is not containing NVIDIA that would exaplin the behavior.
You would then need to change your system configuration to make the NVIDIA device the primary display device.

Hi,
thanks for your answer! my card is a GeForce RTX 3050.
The integrated ATI card is not activated in any way, it does even show up in Device Manager (I had to click on show hidden/disconnected devices)
I have 2 monitors both connected connected to RTX 3050.
I can get the optixWhitted.exe running when I set --no-gl-interop from cmd
Running the suggested glGetString queries I get:

  • GL_RENDERER: NVIDIA GeForce RTX 3050/PCIe/SSE2
  • GL_VENDOR: NVIDIA Corporation
  • GL_VERSION: 3.3.0 NVIDIA 531.79

I have changed the 3D options (or any other available) to RTX 3050 in NVidia Control Panel.
Why am I getting this error when I run optixWhitted for example?

This looks all perfectly fine and similar to what I get on my systems running different older and newer drivers.
If your RTX 3050 is the primary device, I cannot say why it’s not doing CUDA-OpenGL interop correctly with the given information.

In case this is somehow a broken display driver installation, you could try checking if all display driver modules are from the correct version.
For that open the NVIDIA Display Control Panel and click on the System Information link in the bottom left, then save that as text file, open it in some editor and check if all the listed driver modules, esp. OpenGL and CUDA are from the same version.
If not, something went wrong with the display driver installation.

In that case you could try uninstalling the current NVIDIA graphics driver via “Add or Remove Programs”, then reboot.
On reboot Microsoft Windows sometimes installs a last working default display driver automatically, maybe something like the 528.xy driver version. That version is not supporting OptiX 7.7.0, but 7.6.0.
If that happens wait until the installation is done, open the NVIDIA Control Panel and check the module versions again.

Now install the 531.79 display driver again and select the Custom radio button and on the next page check the Clean Installation checkbox.
Wait until the display driver is installed, then check the module versions inside the NVIDIA Control Panel system information text file again.
Check if anything changed compared to the original failing configuration.

Then run the optixWhitted program again to see if the CUDA-OpenGL interop works now.

If everything fails, you could check if unplugging the secondary monitor has any effect, but that shouldn’t change anything. I’m grasping at straws here.