Regards,
Greg
--
You received this message because you are subscribed to the Google Groups "gpuocelot" group.
To post to this group, send email to gpuo...@googlegroups.com.
To unsubscribe from this group, send email to gpuocelot+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/gpuocelot?hl=en.
There should be a fix in r581. All systems with version 3.0 of the toolkit installed should expect the following failures:
(1.793s) : /home/normal/checkout/gpuocelot/tests/cuda2.2/FluidsGL : Did not complete.
(16.642s) : /home/normal/checkout/gpuocelot/tests/cuda2.2/SimpleCUBLAS : Did not complete.
(1.467s) : /home/normal/checkout/gpuocelot/tests/cuda2.2/OceanFFT : Did not complete.
(1.613s) : /home/normal/checkout/gpuocelot/tests/cuda2.2/ConvolutionFFT2D : Did not complete.
(1.315s) : /home/normal/checkout/gpuocelot/tests/cuda2.2/SimpleCUFFT : Did not complete.
All systems without an OpenGL 2.0 compliant graphics driver (doesn't have to be nvidia) should expect the additional failures:
(0.332s) : /home/normal/checkout/gpuocelot/tests/cuda2.2/PostProcessGL : Did not complete.
(0.198s) : /home/normal/checkout/gpuocelot/tests/cuda2.2/SimpleGL : Did not complete.
(0.302s) : /home/normal/checkout/gpuocelot/tests/cuda2.2/VolumeRender : Did not complete.
Everything else in cuda2.2 should pass on the emulated, llvm, and nvidia (Tesla not Fermi) devices.
/usr/local/cuda/bin/nvcc -g -cuda src/cuda.cu
g++ -g cuda.cu.cpp `OcelotConfig -l` -o cuda
Regards,
Greg
This is currently not supported and would be extremely difficult to add support for. In short, we would have to write a GDB interface for the emulator, following something like this (http://www.embecosm.com/appnotes/ean3/html/index.html), for example. For LLVM, it may be a bit easier as LLVM has recently been updated to emit debugging information in the JIT, but no one has really looked into this in detail (it was released after the LLVM backend in Ocelot was finished).
Something that will be coming in the more short term will be an attachable kernel-debugger for Ocelot that can be attached to a running kernel and at the very least will allow you to step through instructions and inspect registers, memory, threads, etc.
What is available right now is the ability to get a full or selected instruction trace from a kernel as it is executing. You can do this by setting the debug mode in LLVM to report in configure.ocelot or by changing some of the preprocessor flags in ocelot/executive/implementation/CoopeativeThreadArray.cpp .
Regards,
Greg
----- Original Message -----
From: "Jose Juan" <jjt...@gmail.com>
To: "gpuocelot" <gpuo...@googlegroups.com>
Sent: Tuesday, June 8, 2010 8:56:33 AM GMT -08:00 US/Canada Pacific
Subject: [gpuocelot] Re: Newbie question: getting the memorychecker to work
#include <string>
method();
return 0;
}
--
#0 0x00d8c029 in _Z_ocelotTranslated__Z4initPi ()
#1 0x0052448f in executive::LLVMExecutableKernel::Worker::launchCtaWithoutBarriers (this=0x8ebf440, function=0xd8c010 <_Z_ocelotTranslated__Z4initPi>,
c=0x8ebcf5c) at ocelot/executive/implementation/LLVMExecutableKernel.cpp:1520
#2 0x00524261 in executive::LLVMExecutableKernel::Worker::launchKernelWithoutBarriers (this=0x8ebf440, f=0xd8c010 <_Z_ocelotTranslated__Z4initPi>,
c=0x8ebcf5c, begin=1, end=4, step=2) at ocelot/executive/implementation/LLVMExecutableKernel.cpp:1453
#3 0x005240dc in executive::LLVMExecutableKernel::Worker::execute (this=0x8ebf440) at ocelot/executive/implementation/LLVMExecutableKernel.cpp:1417
#4 0x00429e85 in hydrazine::Thread::_launch (argument=0x8ebf440) at hydrazine/interface/Thread.cpp:261
#5 0x006d396e in start_thread (arg=0xb77e1b70) at pthread_create.c:300
#6 0x008f3a4e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130
But the information such as the file name and correspondence between instructions and line numbers is lost. The reason for this is that we do not emit debugging meta-data when we do PTX to LLVM IR translation. This would be possible to do; there is a nice interface for adding debugging information in LLVM (http://llvm.org/docs/SourceLevelDebugging.html) and PTX includes basic information. We would still lose variable names/values, but we could still tell you which line you were on. That being said, there would be a fair amount of work required to implement this (at least one solid week). Also, I am not sure how useful it would be to tell you which line you were on without the ability to inspect the values of variables. We could probably get that information back by reversing the DWARF information inserted when compiling with nvcc -G, but that would be a much more significant effort (someone could spend months working on that).
I'll add an issue to keep track of this one, but most of the developers on Ocelot are more interested in research projects and only spend time adding debugging features if they are low overhead. Getting a full featured debugger up and running that could inspect variables and step through a kernel one instruction at a time would be extremely high overhead. Finally, this might not even be the right way to go, Ocelot does execution model translations when generating CPU code that results in many CUDA threads getting mapped onto a single CPU thread. Even if we could generate debugging information for every variable in the original CUDA source, it would look like the control flow of the program would jump around randomly between statements similar to if you had full optimization enabled in a regular C++ program. I personally think that a new debugger that could attach to the emulator and inspect the state of different threads would be more useful.