I am developing an application which uses cufftPlanMany, and valgrind run with --leak-check=full --track-origins=yes is reporting a leak of 1200 bytes each time PlanMany is called;
==32752== 1,200 bytes in 6 blocks are definitely lost in loss record 520 of 612
==32752== at 0x4C2CAEE: operator new(unsigned long) (vg_replace_malloc.c:333)
==32752== by 0x6ECDB06: ??? (in /opt/tcbsys/cuda/7.0.28/lib64/libcufft.so.7.0.28)
==32752== by 0x6ECEE56: ??? (in /opt/tcbsys/cuda/7.0.28/lib64/libcufft.so.7.0.28)
==32752== by 0x6ECD199: ??? (in /opt/tcbsys/cuda/7.0.28/lib64/libcufft.so.7.0.28)
==32752== by 0x6ECC692: ??? (in /opt/tcbsys/cuda/7.0.28/lib64/libcufft.so.7.0.28)
==32752== by 0x6ECB12E: ??? (in /opt/tcbsys/cuda/7.0.28/lib64/libcufft.so.7.0.28)
==32752== by 0x6E7DEC6: ??? (in /opt/tcbsys/cuda/7.0.28/lib64/libcufft.so.7.0.28)
==32752== by 0x6E7E086: cufftLockPlan (in /opt/tcbsys/cuda/7.0.28/lib64/libcufft.so.7.0.28)
==32752== by 0x6ED2AA2: cufftMakePlanMany (in /opt/tcbsys/cuda/7.0.28/lib64/libcufft.so.7.0.28)
==32752== by 0x6ED3FA1: cufftPlanMany (in /opt/tcbsys/cuda/7.0.28/lib64/libcufft.so.7.0.28)
I have understood that valgrind may report false leaks in cuda libraries and that I may need to use an appropriate suppression file. Is there such a file readily available, or is this leak “true”? Of course I could make one, but the question is really if these are actual leaks. At no point am I calling new, so I unless I have gravely misunderstood valgrind, this leak occurs inside libcufft, no?
cuda-memcheck does not return any errors or leaks. I am using cuda 7.5 on a GTX980Ti.
Thaks for any suggestions, thoughts or help.