- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I launched an Memory Error Analysis with Intel Inspector on simple test of the dgemm function and i got this warning: "uninitialized memory access" located on the dgemm call.
Here is my test (really simple !) :
void dgemm_test()
{
double *A,*B,*C;
double alpha, beta;
int m,i;
m = 10;
A = (double*)mkl_malloc((m*m)*sizeof(double),128);
B = (double*)mkl_malloc((m*m)*sizeof(double),128);
C = (double*)mkl_malloc((m*m)*sizeof(double),128);
for(i=0; i<m*m; i++){
A = (double)(rand() % (m*m)) / (double)(m*m);
B = (double)(rand() % (m*m)) / (double)(m*m);
C = 0.0;
}
alpha = 1.0;
beta = 0.0;
cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, m, m, m, alpha, A, m, B, m, beta, C, m);
mkl_free(A);
mkl_free(B);
mkl_free(C);
}
Each buffer seems to be initialized... Do I have to be worried about this warning ? Is it an expected behavior ?
My configuration: Intel Inspector XE 2013. MKL: 11.1.2 (32bit mode). CPU: Xeon E5-1620. OS: W7 64bit (SP1).
Thanks in advance for your help !
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This is a known problem of Intel Inspector. It reports false alarms for some MKL routines.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The problem with partial reports such as yours is that they cannot be verified.
Using the current versions of Intel C (15.0) and MKL (11.2) with the older Inspector 2013, I added a few lines of code to make a complete example as shown below. Note that I have suppressed initialization of C, which should be OK when alpha = 0. I see no reports of uninitialized variables with Inspector XE. However, when I change the value of alpha to a nonzero value, I do get detection of uninitialized variables. Reactivation of the initialization of C made the error go away. All these findings agree with what one expects.
#include <stdio.h>
#include <mkl.h>
void dgemm_test()
{
double *A,*B,*C;
double alpha, beta;
int m,i;
m = 10;
A = (double*)mkl_malloc((m*m)*sizeof(double),128);
B = (double*)mkl_malloc((m*m)*sizeof(double),128);
C = (double*)mkl_malloc((m*m)*sizeof(double),128);
for(i=0; i<m*m; i++){
A = (double)(rand() % (m*m)) / (double)(m*m);
B = (double)(rand() % (m*m)) / (double)(m*m);
// C = 0.0;
}
alpha = 0.0;
beta = 1.0;
cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, m, m, m, alpha, A, m, B, m, beta, C, m);
mkl_free(A);
mkl_free(B);
mkl_free(C);
}
main(){
dgemm_test();
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This is a known problem of Intel Inspector. It reports false alarms for some MKL routines.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
btw, the latest version of Inspector ( Intel(R) Inspector XE 2015) doesn't report such sort of problem.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page