Я пытаюсь использовать 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)
У меня нет большого опыта работы с valgrind, но разве сводка утечек не говорит о том, что нет утечки памяти? – dmg
@dmg Я не был уверен, почему это происходит. Прочитав ответ Себастьяна Стиглера, я знаю, что mkl не освобождает свою память сразу, но ждет, пока программа не закончится. Таким образом, будет казаться, что утечка памяти во время работы программы, но в конце их не будет. –