Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

MKL's cblas_saxpy outputs incorrect results

Dee__Nadd
Beginner
630 Views

Hi,

I need to add two arrays in an efficient way, so I tried MKL's saxpy.

When I use the cblas_saxpy function on two dummy arrays with all values initialized to 1 and 2 respectively, I get totally wrong results. And I couldn't figure out what's wrong with my code.

(I omitted other includes)

#include "mkl.h"

#define SIZE 10000

int main()
{

        float* buf_x = (float*) malloc(SIZE * sizeof(float));
        float* buf_y = (float*) malloc(SIZE * sizeof(float));

        for (int i = 0; i<SIZE; i++){

            buf_x = 1.f;

            buf_y = 2.f;

        }

        cblas_saxpy ((MKL_INT)SIZE, 1, buf_x, (MKL_INT)1, buf_y, (MKL_INT)1);

        for (int i = 0; i<SIZE; i++)

            printf("%f, ", buf_y);

        return 0;
}

I get as an output 204 instead of 3.

Can anybody shed a light on this ?

Thank you.

0 Kudos
2 Replies
Gennady_F_Intel
Moderator
630 Views

That's a curious result. At first glance, everything looks correct. How did you link this case? and which version of mkl do you use?

0 Kudos
Gennady_F_Intel
Moderator
630 Views

I validated this case with the latest MKL 2019 u5. 

I see no problems on our side.

compiling as icc -mkl test

MKL_VERBOSE Intel(R) MKL 2019.0 Update 5 Product build 20190808 for Intel(R) 64 architecture Intel(R) Advanced Vector Extensions (Intel(R) AVX) enabled processors, Lnx 2.80GHz lp64 intel_thread
MKL_VERBOSE SAXPY(10000,0x7ffe8f0a1658,0x23b7080,1,0x23c0cd0,1) 6.48ms CNR:OFF Dyn:1 FastMM:1 TID:0  NThr:20

3.000000, 3.000000, 3.000000, 3.000000, ...................

0 Kudos
Reply