optixPipelineCreate failed - Potential reasons?

Hi,

I have the same host code on windows and linux. Ptx files are prepared on windows and then used with linux. Program inputs are the same on both systems. Hardware is the same (the same laptop, gtx 1060). Windows version runs fine, while I get an error under linux.

Log message from optixPipelineCreate is:

Windows, driver 442.59:
[ 4][COMPILE FEEDBACK]: Info: Pipeline has 5 module(s), 6 entry function(s), 4 trace call(s), 0 continuation callable call(s), 0 direct callable call(s), 221 basic block(s) in entry functions, 3408 instruction(s) in entry functions, 30 non-entry function(s), 85 basic block(s) in non-entry functions, 1070 instruction(s) in non-entry functions

Ubuntu 18.04, driver 435.21:
`[ 2][COMPILE FEEDBACK]: COMPILE ERROR: failed to create pipeline
Info: Pipeline has 5 module(s), 6 entry function(s), 4 trace call(s), 0 continuation callable call(s), 0 direct callable call(s), 221 basic block(s) in entry functions, 3405 instruction(s) in entry functions, 0 non-entry function(s), 0 basic block(s) in non-entry functions, 0 instruction(s) in non-entry functions

OPTIX_ERROR_PIPELINE_LINK_ERROR: Optix call ‘optixPipelineCreate( state.context, &_pipeline_compile_options, &pipeline_link_options, program_groups.data(), program_groups.size(), log, &sizeof_log, &state.pipeline )’ failed: PathTracer.cpp:2138)`

What are typical reasons for optixPipelineCreate failing?

Thanks for hints!

Hi, I’m sorry you’re getting a link error and that the feedback isn’t reporting the specific issue. Better reporting for link errors is something we are actively working on. Have you also tried compiling the PTX on linux? Do you still get the link error in that case?

Because it’s a link error, I would start with the most likely suspects - the most common cause of a link error is that a symbol is missing, so a function or variable is referenced but not defined (at least from the point of view of the linker). If you are combining multiple .cu files, or multiple PTX files, or if you have something that is not in the PTX but should be, that could cause this error. It’s also possible that this is a genuine cross-platform bug, so if you try preparing the PTX on linux and you still get the link error, and your search for missing symbols doesn’t turn up anything, then it will help if you send us a way to reproduce the problem so we log a bug report and get it fixed.

One way to chase down these kinds of errors is to “bisect” your code by disabling as much as you can while still keeping it running. Comment out the working parts until you’re left with the smallest broken bit possible, it might help you narrow down where the issue is. It can be a little tedious, but at least keep you moving forward.


David.

Oh, another big one is duplicate symbol definitions, so it might be there but included twice.


David.

Thanks for the directions!

Yes, I tried, resulting ptx’s are slightly different, but the error is still present.

I’ll try to put everything in a single ptx and narrow down the problem. Will let you know!

When I get this it’s always from a missing “inline” on a function defined in a header causing duplicate symbols.

Solved. This was kind of “duplicate” case. I had two programs used in the independent groups. These two programs live in a single ptx. The problem was that two modules were created from the same ptx. Somehow linking in Windows can handle such configuration but Linux not.

Thanks again for your help!