Error with RTPModelupdate


I am new to Nvidia Optix. I am facing a error for the following snippet of code:
I am using the following configuration of hardware nad software: GeForce 860M, Optix 3.6.2, Cuda 6.0

// Create Optix model for ray tracing
RTPbufferdesc vertsBD;
RTPbufferdesc trisBD;
Optix_error(rtpBufferDescCreate(context, RTP_BUFFER_FORMAT_VERTEX_FLOAT4, bType, verts, &vertsBD));
Optix_error(rtpBufferDescCreate(context, RTP_BUFFER_FORMAT_INDICES_INT3, bType, triangles, &trisBD));
Optix_error(rtpBufferDescSetRange(vertsBD, 0, nVertices));
Optix_error(rtpBufferDescSetRange(trisBD, 0, nTriangles));

Optix_error(rtpModelCreate(context, &model));
Optix_error(rtpModelSetTriangles(model, trisBD, vertsBD));
Optix_error(rtpModelUpdate(model, RTP_MODEL_HINT_ASYNC));
cout<<“\nCreated RT Accel Structures!\n”;

I getting the following error::

Optix: Function “_rtpModelUpdate” caught exception: Encountered a CUDA error: cudaLaunch( kernel->funcPtr ) returned (6): Unknown, [15467202]
Optix: Function “_rtpModelFinish” caught exception: Encountered a CUDA error: cudaEventSynchronize( m_eventEnd ) returned (6): the launch timed out and was terminated, [197066876]


Could you please try a newer OptiX version as well? (OptiX 3.6.3 and OptiX 3.7 beta 2)
There have been multiple changes to the acceleration structure builder and feature additions for OptiX Prime in the later releases.

If that is not helping, what’s the complexity of the model you’re using?
Do the OptiX Prime examples in the SDK work?

Please also list the installed display driver version when reporting problems.


All the samples in SDK-precompiled-samples are working fine for me.
I tried a few things as suggested by you.
Finally, I think I know the bug. I installed CUDA 6.5 and with that my driver for GeForce was downgraded from GeForce 347.09 to a lower one. This made the code to work. However, when I again updated my driver to GeForce 347.09, the same error occurs.

So, I think there is some bug in the new GeForce driver version. Can that be fixed for in the driver or in Optix?


Thanks for the additional tests.
Could you please also report the driver version which was working?

If installing a publicly available display driver from the same branch as the one in the CUDA 6.5 Toolkit works as well, that would ease regression testing. Though unfortunately if the OptiX Prime SDK examples all work with either driver, there would be no method to reproduce your specific error case in our QA unless you would provide the exact reproducer which shows the error.

You are welcome.
The downgraded version is GeForce 340.62
Yes, I agree. But I feel I am using a very simple functionality of rtpModelUpdate function as show in the code snippet.


I can’t make that code snippet fail. I don’t think we’ll be able to track this down without a complete reproducer (all your source code and data). It could be something data dependent, so we’re not likely to be able to guess at a reproducer.

You could also rocord an OAC trace from your application and mail it to us. Here’s the info on that:

An OptiX API Capture (OAC) trace contains all OptiX and OptiX Prime API calls made by the application, across the whole run of the application, together with their input data and return values. Traces are most often used for sending bug reproducers to Nvidia, but can also be used to make application benchmarks and for developers to analyze and debug their applications.

To create a trace, set the environment variable OPTIX_API_CAPTURE to 1 and run the application. A directory called oac00000 will be created within the current working directory. If that directory already exists, the number will be incremented to avoid overwriting an existing trace.

Zip the trace directory and send it to Nvidia. We can only receive 10MB files by email, and the extension must be renamed to not be .zip. For larger files, use a file sharing service. We recommend contacting us and we will set up a temporary, secure FTP account for you to upload to.

When sending a trace to Nvidia, please put some effort into keeping it small. If the trace is for debugging, use the smallest effective dataset and shortest number of frames necessary to reproduce the bug. If the trace is to become an OptiX benchmark, the dataset will be larger, but be very precise in the number of frames recorded.

The OAC trace directory contains a trace.oac file, which is a text file containing information about your platform, followed by all OptiX API calls, with their parameters and return values. You can, for example, search for occurrences of “rtContextLaunch” in this file to see all OptiX calls that are made per frame to make sure you’re not doing redundant setup work. The “oac.buf." files in the trace directory contain binary buffer contents, both input and output. Each time a buffer is mapped its contents are stored to a new file. The "oac.ptx.” files contain PTX text of application-provided program code.

Since OAC traces contain contents of all OptiX buffers, they contain the PTX form of the application’s shaders and other user program code, as well as the geometry and texture maps given to OptiX. While Nvidia will keep these secure and never share them, you will want to make sure that sharing a trace with Nvidia meets your institution’s policies.