【问题标题】:valgrind reports mkl's dsyev memory leakvalgrind 报告 mkl 的 dsyev 内存泄漏
【发布时间】:2015-04-05 01:27:51
【问题描述】:

我正在尝试使用 mkl 的 dsyev 来计算特征值和向量。 我找到了this example from intel

它可以工作,但是当我使用 valgrind 对其进行测试时,它给出了 1665 行错误。

太多了,我会在最后贴出来。

它们中的大多数是未初始化的值,只要结果正确就没有关系(如果我错了,请纠正我)。我担心的是 valgrind 显示的内存泄漏。我按照这个例子在我自己的程序中使用了 dsyev,而 valgrind 的行为也是如此。

如果我的程序要运行很长时间,恐怕这会导致问题。

我在 Ubuntu 14.04 上使用带有 -O0 选项的 icc 13.1.1 进行编译。

这是valgrind的结果(我不知道怎么全部格式化,只能看最后几行):

> ==13040== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
> ==13040== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for copyright info
> ==13040== Command: ./a.out
> ==13040== 
> ==13040== Conditional jump or move depends on uninitialised value(s)
> ==13040==    at 0x94278CD: mkl_lapack_ps_avx_xdlansy (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_avx.so)
> ==13040==    by 0x667F3C1: mkl_lapack_ps_xdlansy (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x5C515F4: mkl_lapack_dlansy (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x6ABEEEF: mkl_lapack_dsyev (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x4FCEC58: DSYEV (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_lp64.so)
> ==13040==    by 0x4010D0: main (in /home/usrname/virtualscreen/ConfLib/org/a.out)
> ==13040== 
> ==13040== Conditional jump or move depends on uninitialised value(s)
> ==13040==    at 0x94278D3: mkl_lapack_ps_avx_xdlansy (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_avx.so)
> ==13040==    by 0x667F3C1: mkl_lapack_ps_xdlansy (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x5C515F4: mkl_lapack_dlansy (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x6ABEEEF: mkl_lapack_dsyev (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x4FCEC58: DSYEV (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_lp64.so)
> ==13040==    by 0x4010D0: main (in /home/usrname/virtualscreen/ConfLib/org/a.out)
> ==13040== 
> ==13040== Invalid read of size 16
> ==13040==    at 0x7899C68: __intel_sse2_strlen (in /opt/intel/composer_xe_2013.3.163/compiler/lib/intel64/libiomp5.so)
> ==13040==    by 0x7845F52: __kmp_env_get (kmp_environment.c:127)
> ==13040==    by 0x785EF96: __kmp_register_library_startup() (kmp_runtime.c:7363)
> ==13040==    by 0x78601B4: __kmp_middle_initialize (kmp_runtime.c:7876)
> ==13040==    by 0x7847903: omp_get_num_procs (kmp_ftn_entry.h:497)
> ==13040==    by 0x5662F44: MKL_get_N_Cores (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5662E17: mkl_serv_get_max_threads (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5C6F94C: mkl_lapack_dorgql (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x6A7A25C: mkl_lapack_dorgtr (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x6ABF0D6: mkl_lapack_dsyev (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x4FCEC58: DSYEV (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_lp64.so)
> ==13040==    by 0x4010D0: main (in /home/usrname/virtualscreen/ConfLib/org/a.out)
> ==13040==  Address 0x8811440 is 48 bytes inside a block of size 58 alloc'd
> ==13040==    at 0x4C2AB80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==13040==    by 0x8281C59: __add_to_environ (setenv.c:193)
> ==13040==    by 0x4C3277F: setenv (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==13040==    by 0x7846093: __kmp_env_set (kmp_environment.c:236)
> ==13040==    by 0x785EF8E: __kmp_register_library_startup() (kmp_runtime.c:7361)
> ==13040==    by 0x78601B4: __kmp_middle_initialize (kmp_runtime.c:7876)
> ==13040==    by 0x7847903: omp_get_num_procs (kmp_ftn_entry.h:497)
> ==13040==    by 0x5662F44: MKL_get_N_Cores (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5662E17: mkl_serv_get_max_threads (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5C6F94C: mkl_lapack_dorgql (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x6A7A25C: mkl_lapack_dorgtr (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x6ABF0D6: mkl_lapack_dsyev (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040== 
> ==13040== Invalid read of size 16
> ==13040==    at 0x7899C68: __intel_sse2_strlen (in /opt/intel/composer_xe_2013.3.163/compiler/lib/intel64/libiomp5.so)
> ==13040==    by 0x78464B5: __kmp_env_blk_init (kmp_environment.c:536)
> ==13040==    by 0x786D5B8: __kmp_env_initialize(char const*) (kmp_settings.c:4866)
> ==13040==    by 0x7860419: __kmp_middle_initialize (kmp_runtime.c:7876)
> ==13040==    by 0x7847903: omp_get_num_procs (kmp_ftn_entry.h:497)
> ==13040==    by 0x5662F44: MKL_get_N_Cores (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5662E17: mkl_serv_get_max_threads (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5C6F94C: mkl_lapack_dorgql (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x6A7A25C: mkl_lapack_dorgtr (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x6ABF0D6: mkl_lapack_dsyev (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x4FCEC58: DSYEV (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_lp64.so)
> ==13040==    by 0x4010D0: main (in /home/usrname/virtualscreen/ConfLib/org/a.out)
> ==13040==  Address 0x8811440 is 48 bytes inside a block of size 58 alloc'd
> ==13040==    at 0x4C2AB80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==13040==    by 0x8281C59: __add_to_environ (setenv.c:193)
> ==13040==    by 0x4C3277F: setenv (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==13040==    by 0x7846093: __kmp_env_set (kmp_environment.c:236)
> ==13040==    by 0x785EF8E: __kmp_register_library_startup() (kmp_runtime.c:7361)
> ==13040==    by 0x78601B4: __kmp_middle_initialize (kmp_runtime.c:7876)
> ==13040==    by 0x7847903: omp_get_num_procs (kmp_ftn_entry.h:497)
> ==13040==    by 0x5662F44: MKL_get_N_Cores (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5662E17: mkl_serv_get_max_threads (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5C6F94C: mkl_lapack_dorgql (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x6A7A25C: mkl_lapack_dorgtr (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x6ABF0D6: mkl_lapack_dsyev (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040== 
> ==13040== Invalid read of size 16
> ==13040==    at 0x7899C68: __intel_sse2_strlen (in /opt/intel/composer_xe_2013.3.163/compiler/lib/intel64/libiomp5.so)
> ==13040==    by 0x7846557: __kmp_env_blk_init (kmp_environment.c:536)
> ==13040==    by 0x786D5B8: __kmp_env_initialize(char const*) (kmp_settings.c:4866)
> ==13040==    by 0x7860419: __kmp_middle_initialize (kmp_runtime.c:7876)
> ==13040==    by 0x7847903: omp_get_num_procs (kmp_ftn_entry.h:497)
> ==13040==    by 0x5662F44: MKL_get_N_Cores (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5662E17: mkl_serv_get_max_threads (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5C6F94C: mkl_lapack_dorgql (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x6A7A25C: mkl_lapack_dorgtr (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x6ABF0D6: mkl_lapack_dsyev (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x4FCEC58: DSYEV (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_lp64.so)
> ==13040==    by 0x4010D0: main (in /home/usrname/virtualscreen/ConfLib/org/a.out)
> ==13040==  Address 0x8811440 is 48 bytes inside a block of size 58 alloc'd
> ==13040==    at 0x4C2AB80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==13040==    by 0x8281C59: __add_to_environ (setenv.c:193)
> ==13040==    by 0x4C3277F: setenv (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==13040==    by 0x7846093: __kmp_env_set (kmp_environment.c:236)
> ==13040==    by 0x785EF8E: __kmp_register_library_startup() (kmp_runtime.c:7361)
> ==13040==    by 0x78601B4: __kmp_middle_initialize (kmp_runtime.c:7876)
> ==13040==    by 0x7847903: omp_get_num_procs (kmp_ftn_entry.h:497)
> ==13040==    by 0x5662F44: MKL_get_N_Cores (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5662E17: mkl_serv_get_max_threads (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5C6F94C: mkl_lapack_dorgql (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x6A7A25C: mkl_lapack_dorgtr (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x6ABF0D6: mkl_lapack_dsyev (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040== 
> ==13040== Syscall param sched_setaffinity(mask) points to unaddressable byte(s)
> ==13040==    at 0x833B3E9: syscall (syscall.S:38)
> ==13040==    by 0x7882538: __kmp_affinity_determine_capable (z_Linux_util.c:385)
> ==13040==    by 0x786DB20: __kmp_env_initialize(char const*) (kmp_settings.c:4974)
> ==13040==    by 0x7860419: __kmp_middle_initialize (kmp_runtime.c:7876)
> ==13040==    by 0x7847903: omp_get_num_procs (kmp_ftn_entry.h:497)
> ==13040==    by 0x5662F44: MKL_get_N_Cores (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5662E17: mkl_serv_get_max_threads (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5C6F94C: mkl_lapack_dorgql (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x6A7A25C: mkl_lapack_dorgtr (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x6ABF0D6: mkl_lapack_dsyev (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x4FCEC58: DSYEV (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_lp64.so)
> ==13040==    by 0x4010D0: main (in /home/usrname/virtualscreen/ConfLib/org/a.out)
> ==13040==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
> ==13040== 
> ==13040== Invalid read of size 16
> ==13040==    at 0x7899C68: __intel_sse2_strlen (in /opt/intel/composer_xe_2013.3.163/compiler/lib/intel64/libiomp5.so)
> ==13040==    by 0x78464B5: __kmp_env_blk_init (kmp_environment.c:536)
> ==13040==    by 0x786CE23: __kmp_asat_env_initialize(char const*) (kmp_settings.c:5198)
> ==13040==    by 0x7860497: __kmp_middle_initialize (kmp_runtime.c:7876)
> ==13040==    by 0x7847903: omp_get_num_procs (kmp_ftn_entry.h:497)
> ==13040==    by 0x5662F44: MKL_get_N_Cores (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5662E17: mkl_serv_get_max_threads (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5C6F94C: mkl_lapack_dorgql (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x6A7A25C: mkl_lapack_dorgtr (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x6ABF0D6: mkl_lapack_dsyev (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x4FCEC58: DSYEV (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_lp64.so)
> ==13040==    by 0x4010D0: main (in /home/usrname/virtualscreen/ConfLib/org/a.out)
> ==13040==  Address 0x8811440 is 48 bytes inside a block of size 58 alloc'd
> ==13040==    at 0x4C2AB80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==13040==    by 0x8281C59: __add_to_environ (setenv.c:193)
> ==13040==    by 0x4C3277F: setenv (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==13040==    by 0x7846093: __kmp_env_set (kmp_environment.c:236)
> ==13040==    by 0x785EF8E: __kmp_register_library_startup() (kmp_runtime.c:7361)
> ==13040==    by 0x78601B4: __kmp_middle_initialize (kmp_runtime.c:7876)
> ==13040==    by 0x7847903: omp_get_num_procs (kmp_ftn_entry.h:497)
> ==13040==    by 0x5662F44: MKL_get_N_Cores (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5662E17: mkl_serv_get_max_threads (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5C6F94C: mkl_lapack_dorgql (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x6A7A25C: mkl_lapack_dorgtr (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x6ABF0D6: mkl_lapack_dsyev (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040== 
> ==13040== Invalid read of size 16
> ==13040==    at 0x7899C68: __intel_sse2_strlen (in /opt/intel/composer_xe_2013.3.163/compiler/lib/intel64/libiomp5.so)
> ==13040==    by 0x7846557: __kmp_env_blk_init (kmp_environment.c:536)
> ==13040==    by 0x786CE23: __kmp_asat_env_initialize(char const*) (kmp_settings.c:5198)
> ==13040==    by 0x7860497: __kmp_middle_initialize (kmp_runtime.c:7876)
> ==13040==    by 0x7847903: omp_get_num_procs (kmp_ftn_entry.h:497)
> ==13040==    by 0x5662F44: MKL_get_N_Cores (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5662E17: mkl_serv_get_max_threads (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5C6F94C: mkl_lapack_dorgql (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x6A7A25C: mkl_lapack_dorgtr (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x6ABF0D6: mkl_lapack_dsyev (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x4FCEC58: DSYEV (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_lp64.so)
> ==13040==    by 0x4010D0: main (in /home/usrname/virtualscreen/ConfLib/org/a.out)
> ==13040==  Address 0x8811440 is 48 bytes inside a block of size 58 alloc'd
> ==13040==    at 0x4C2AB80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==13040==    by 0x8281C59: __add_to_environ (setenv.c:193)
> ==13040==    by 0x4C3277F: setenv (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==13040==    by 0x7846093: __kmp_env_set (kmp_environment.c:236)
> ==13040==    by 0x785EF8E: __kmp_register_library_startup() (kmp_runtime.c:7361)
> ==13040==    by 0x78601B4: __kmp_middle_initialize (kmp_runtime.c:7876)
> ==13040==    by 0x7847903: omp_get_num_procs (kmp_ftn_entry.h:497)
> ==13040==    by 0x5662F44: MKL_get_N_Cores (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5662E17: mkl_serv_get_max_threads (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5C6F94C: mkl_lapack_dorgql (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x6A7A25C: mkl_lapack_dorgtr (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x6ABF0D6: mkl_lapack_dsyev (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040== 
> ==13040== Invalid read of size 16
> ==13040==    at 0x7899C68: __intel_sse2_strlen (in /opt/intel/composer_xe_2013.3.163/compiler/lib/intel64/libiomp5.so)
> ==13040==    by 0x7845F52: __kmp_env_get (kmp_environment.c:127)
> ==13040==    by 0x785E88E: __kmp_internal_end_library (kmp_runtime.c:7164)
> ==13040==    by 0x7860B2D: __kmp_internal_end_atexit (kmp_runtime.c:6805)
> ==13040==    by 0x785BCC8: __kmp_internal_end_fini (kmp_runtime.c:6774)
> ==13040==    by 0x4010757: _dl_fini (dl-fini.c:257)
> ==13040==    by 0x8282258: __run_exit_handlers (exit.c:82)
> ==13040==    by 0x82822A4: exit (exit.c:104)
> ==13040==    by 0x4011BB: main (in /home/usrname/virtualscreen/ConfLib/org/a.out)
> ==13040==  Address 0x8811440 is 48 bytes inside a block of size 58 alloc'd
> ==13040==    at 0x4C2AB80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==13040==    by 0x8281C59: __add_to_environ (setenv.c:193)
> ==13040==    by 0x4C3277F: setenv (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==13040==    by 0x7846093: __kmp_env_set (kmp_environment.c:236)
> ==13040==    by 0x785EF8E: __kmp_register_library_startup() (kmp_runtime.c:7361)
> ==13040==    by 0x78601B4: __kmp_middle_initialize (kmp_runtime.c:7876)
> ==13040==    by 0x7847903: omp_get_num_procs (kmp_ftn_entry.h:497)
> ==13040==    by 0x5662F44: MKL_get_N_Cores (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5662E17: mkl_serv_get_max_threads (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x5C6F94C: mkl_lapack_dorgql (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_intel_thread.so)
> ==13040==    by 0x6A7A25C: mkl_lapack_dorgtr (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040==    by 0x6ABF0D6: mkl_lapack_dsyev (in /opt/intel/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_core.so)
> ==13040== 
>  DSYEV Example Program Results
> 
>  Eigenvalues
>  -11.07  -6.23   0.86   8.87  16.09
> 
>  Eigenvectors (stored columnwise)
>   -0.30  -0.61   0.40  -0.37   0.49
>   -0.51  -0.29  -0.41  -0.36  -0.61
>   -0.08  -0.38  -0.66   0.50   0.40
>   -0.00  -0.45   0.46   0.62  -0.46
>   -0.80   0.45   0.17   0.31   0.16
> ==13040== 
> ==13040== HEAP SUMMARY:
> ==13040==     in use at exit: 38,628 bytes in 8 blocks
> ==13040==   total heap usage: 29 allocs, 21 frees, 44,066 bytes allocated
> ==13040== 
> ==13040== LEAK SUMMARY:
> ==13040==    definitely lost: 0 bytes in 0 blocks
> ==13040==    indirectly lost: 0 bytes in 0 blocks
> ==13040==      possibly lost: 0 bytes in 0 blocks
> ==13040==    still reachable: 38,628 bytes in 8 blocks
> ==13040==         suppressed: 0 bytes in 0 blocks
> ==13040== Reachable blocks (those to which a pointer was found) are not shown.
> ==13040== To see them, rerun with: --leak-check=full --show-leak-kinds=all
> ==13040== 
> ==13040== For counts of detected and suppressed errors, rerun with: -v
> ==13040== ERROR SUMMARY: 9 errors from 9 contexts (suppressed: 0 from 0)

【问题讨论】:

  • 我对valgrind没有太多经验,但是泄漏总结不是说没有内存泄漏吗?
  • @dmg 我不知道为什么会这样。在阅读了 Sebastian Stigler 的回答后,我知道 mkl 不会立即释放它的内存,而是等到程序结束。所以在程序运行的时候似乎会出现内存泄漏,但最终不会有。

标签: c linux memory-leaks valgrind


【解决方案1】:

看看memory leak when using intel mkl。它的要点是,图书馆自己管理它的内存,这可能会导致像 valgrind 这样的工具报告内存泄漏,尽管没有。

【讨论】:

  • 谢谢。我是 mkl 新手,所以有很多东西我不知道。
猜你喜欢
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-17
相关资源
最近更新 更多