2015-02-05 2 views
-1

Я пытаюсь использовать mkl dsev для вычисления собственных значений и векторов. Я нашел this example from intel.valgrind сообщает о утечке памяти mkl dsyev

Это работает, но когда я использую valgrind для его проверки, он дает 1665 строк ошибок.

Это слишком много, поэтому я отправлю его в конце.

Большинство из них являются неинициализированными значениями, которые не имеют значения до тех пор, пока результат будет правильным (исправьте меня, если я ошибаюсь). Что касается меня, это утечка памяти, проявленная valgrind. Я последовал примеру и использовал dsyev в своей собственной программе, и valgrind действовал точно так же.

Я боюсь, что это вызовет проблему, если моя программа будет работать в течение длительного времени.

I in on Ubuntu 14.04, компиляция с icc 13.1.1 с опцией -O0.

Это результат 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) 
+0

У меня нет большого опыта работы с valgrind, но разве сводка утечек не говорит о том, что нет утечки памяти? – dmg

+0

@dmg Я не был уверен, почему это происходит. Прочитав ответ Себастьяна Стиглера, я знаю, что mkl не освобождает свою память сразу, но ждет, пока программа не закончится. Таким образом, будет казаться, что утечка памяти во время работы программы, но в конце их не будет. –

ответ

1

Посмотрите memory leak when using intel mkl. Суть его в том, что библиотекарь управляет своей памятью сама по себе, которая может использовать инструменты, такие как valgrind, чтобы сообщать о памяти, хотя их нет.

+0

спасибо. Я новичок в mkl, поэтому есть много вещей, которые я не знаю. –