我已經寫了一個cuda插件(動態庫),並且我有一個使用dlopen()加載這個插件的C編寫的程序。我正在使用dlsym()從該插件獲取函數。對於我的應用程序來說,任何時候加載插件都非常重要,程序會使用dlopen()調用獲得新的句柄(隨後可能會修改庫文件)。 因此,在使用我的插件中的函數之後,我調用了dlclose()。調用dlopen() - dlsym() - dlclose()發生在我的程序執行期間(在循環中)。CUDA插件dlopen
如果我在使用NVIDIA驅動程序256.35(CUDA 3.0或3.1)的計算機上工作,我有內存泄漏(我在我的插件cudaMemGetInfo()中使用,要求進行診斷)。 如果我在使用NVIDIA驅動程序195.36.15(CUDA 3.0)的計算機上工作,程序執行一段時間後出現錯誤:「NVIDIA:無法打開設備文件/ dev/nvidia0(打開的文件太多)。」
如果我不使用dlclose()調用,程序工作正常,但在這種情況下,我無法在程序執行期間替換新插件上的插件。
任何人都遇到過這個問題? 謝謝。