Link Copied
Hi,
Well, we went ahead and purchased VTune - mainly for the profiling tool. But we still are unable to load our main program through Inspector.
I've tried turning off pretty much everything except access violations (which is what we are looking for). The program does not hang when run in isolation. And the threads are already optimised. It seems to hang trying to upload a texture to the GPU. So my first question is whether there is anything I should be aware of when trying to analyse threaded OpenGL/Cuda programs? Or should this 'just work'?
Is there anything I can do to determine where the system is hanging?
Cheers
Steve
>>>It seems to hang trying to upload a texture to the GPU>>>
If I understood it correctly your program hangs while try to upload texture to the GPU or Inspector hangs?
Apologies for delay - I've been involved in other issues up to now.
To answer your question.
Our program hangs.......
As in "The program does not hang when run in isolation.....It seems to hang trying to upload a texture to the GPU"
My experience of using memory debuggers and profilers with OpenGL multi-threaded applications has not been great - in fact I've never found one yet that works.
That is why I asked the questions:
"Is anything I should be aware of when trying to analyse threaded OpenGL/Cuda programs? Or should this 'just work'?"
"Is there anything I can do to determine where the system is hanging?"
Steve
Latest Inspector XE 2015 only support native code(C/C++, Fortran), one exception is C# on Windows*. Please see releasenotes.
>>>To answer your question.
Our program hangs.......
As in "The program does not hang when run in isolation.....It seems to hang trying to upload a texture to the GPU">>>
What about trying to use Xperf in order to find which function hogs the CPU?
I've noticed that sometimes the graphics driver version can be important in a case like this. Is there an update there perhaps that you could apply? I didn't see that you specified whether or not this is high or low cpu? I think in a possible scenario such as Mark is suggesting, you would likely see high cpu, or at least some activity. Whereas, if it's a driver issue, maybe no cpu (i.e. deadlock)?
Do we know which it is, high or low cpu?
Since you have reduced to just AV and still get a repro, I'm guessing low-cpu hang ... possible graphics card driver issue?
Otherwise, to answer one of the previous questions, there is a tool from sysinternals that you can use to get a quick call stack sometimes. In Process Explorer, do a right-click -> properties -> threads (tab). From there, find a thread of interest and use the buttons on the bottom to suspend/resume and view the call stack.
There is a 'configure symbols' item under the 'options' menu as well, which will make use of the Microsoft* symbol server, if need be, or your own local symbol store/cache.
http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
Could you post a call stack using the above tool? You may be able to suspend the thread and still get a stack, if it's a high-cpu, too.
For more complete information about compiler optimizations, see our Optimization Notice.