I tried setting MEMORYCHECK_COMMAND to /usr/local/bin/cuda-memcheck, but “ctest -T memcheck” yielded this message:
Do not understand memory checker: /usr/local/cuda/bin/cuda-memcheck
Looking at the code, there are indeed a limited number of possible memory checkers. Is there a way to finesse ctest to run cuda-memcheck? (besides renaming cuda-memcheck to valgrind
If not, it is difficult to add another memory checker?
I think if you also set
Valgrind (case-sensitive), that will force it to be treated as valgrind (I believe the code here is where that decision is made).
Thanks for the tip, Craig. Alas, I see that the argument “–log-file=/path/to/log.file” is unconditionally appended to the “valgrind” command. cuda-memcheck wants “–log-file /path/to/log.file”.
In fact, all of the memory check tools have a mandatory “log-file=/path” style argument! That looks easy enough to patch in my build, though.
You could write a script which replaces
--log-file XXX and then forward on the command to the real
cuda-memcheck command you want to use. Set
MEMORYCHECK_COMMAND to your script and that should work without having to patch CMake.
That’s worked out well. Thank you!
Though maybe we should look at adding
cuda-memcheck as another checker type to avoid this. @robert.maynard