Even setting the device does not work. The pre-compiled libraries work but when I compile the source they do not work. How is that possible? The last line where I compile the context does not work and the error string is:
Unknown error (Details: Function “_rtContextLaunch1D” caught exception: En
countered a CUDA error: cudaFree( 0 ) returned (46): all CUDA-capable devices ar
e busy or unavailable, [3735717])
Also rtContextGetDevices() returns both the devices.
Context creation:
const char *ptx_filename = “Debug/SubdivisionStructure_3GP.cu.ptx”;
Optix_error(rtContextCreate(&context));
Optix_error(rtContextSetPrintEnabled(context, 1));
Optix_error(rtContextSetPrintBufferSize(context, 4096));
Optix_error(rtContextSetEntryPointCount(context, 2));
Optix_error(rtContextSetRayTypeCount(context, 2));
Optix_error(rtProgramCreateFromPTXFile(context, ptx_filename, “CountHits”, &countHits));
Optix_error(rtProgramCreateFromPTXFile(context, ptx_filename, “Visibility”, &visibility));
Optix_error(rtProgramCreateFromPTXFile(context, ptx_filename, “ExceptionIntersectionCheck”, &exceptionIntersectionCheck));
Optix_error(rtProgramCreateFromPTXFile(context, ptx_filename, “ExceptionInteriorCheck”, &exceptionInteriorCheck));
Optix_error(rtProgramCreateFromPTXFile(context, ptx_filename, “bounding_box_program”, &bounding_box));
Optix_error(rtProgramCreateFromPTXFile(context, ptx_filename, “closest_hit_visible”, &closestHit));
Optix_error(rtProgramCreateFromPTXFile(context, ptx_filename, “any_hit_program”, &anyHit));
Optix_error(rtProgramCreateFromPTXFile(context, ptx_filename, “intersection_program”, &intersection));
Optix_error(rtBufferCreate(context, RT_BUFFER_INPUT, &optVertices));
Optix_error(rtBufferCreate(context, RT_BUFFER_INPUT, &optTriangles));
Optix_error(rtBufferSetFormat(optVertices, RT_FORMAT_FLOAT3));
Optix_error(rtBufferSetFormat(optTriangles, RT_FORMAT_UNSIGNED_INT3));
Optix_error(rtContextSetRayGenerationProgram(context, 0, countHits));
Optix_error(rtContextSetRayGenerationProgram(context, 1, visibility));
Optix_error(rtContextSetExceptionProgram(context, 0, exceptionInteriorCheck));
Optix_error(rtContextSetExceptionProgram(context, 1, exceptionIntersectionCheck));
int ndevs = {1};
Optix_error(rtContextSetDevices(context, 1, ndevs));
Optix_error(rtContextValidate(context));
Optix_error(rtContextCompile(context));