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

Possible Bug in oneMKL 2025.3

JörgZeiner
Beginner
181 Views

Hi,

I have found a possible bug in oneMKL version 2025.3 using VS 2026. Please let me know, if you need any further information.

 

Version:

Intel(R) oneAPI Math Kernel Library Version 2025.3-Product Build 20251007 for Intel(R) 64 architecture applications

 

Building for x64 on Windows, MKL_ILP64 is _not_ defined.

 

The test (see code below) gives:

1D real create -> status=0, msg=Intel oneMKL DFTI SUCCESS: No error
1D real commit -> status=0, msg=Intel oneMKL DFTI SUCCESS: No error
2D complex create -> status=0, msg=Intel oneMKL DFTI SUCCESS: No error
2D complex commit -> status=9, msg=Intel oneMKL DFTI ERROR: Transforms with number of points N of a non-unit stride dimension exceeding 2^(27-p) - 1 for N a power-of-two, or 2^(23-p) - 1 for N not a power-of-two, are currently not supported, where p=0 for single precision and p=1 for double precision
2D real create -> status=0, msg=Intel oneMKL DFTI SUCCESS: No error
2D real commit -> status=3, msg=Intel oneMKL DFTI ERROR: Inconsistent configuration parameters

 

Code:

static void DebugOut(const char* text)
{
    OutputDebugStringA(text);
}

static void DebugStatus(const char* name, MKL_LONG status)
{
    char buffer[1024];
    _snprintf_s(
        buffer,
        sizeof(buffer),
        _TRUNCATE,
        "%s -> status=%ld, msg=%s\n",
        name,
        status,
        DftiErrorMessage(status));

    OutputDebugStringA(buffer);
}

static void TestDftiMinimal()
{
    MKL_LONG status = 0;
    DFTI_DESCRIPTOR_HANDLE h = nullptr;

    {
        status = DftiCreateDescriptor(&h, DFTI_SINGLE, DFTI_REAL, 1, (MKL_LONG)16);
        DebugStatus("1D real create", status);
        if (status == DFTI_NO_ERROR)
        {
            status = DftiCommitDescriptor(h);
            DebugStatus("1D real commit", status);
            DftiFreeDescriptor(&h);
        }
    }

    {
        MKL_LONG dims[2] = { 16, 16 };
        status = DftiCreateDescriptor(&h, DFTI_SINGLE, DFTI_COMPLEX, 2, dims);
        DebugStatus("2D complex create", status);
        if (status == DFTI_NO_ERROR)
        {
            status = DftiCommitDescriptor(h);
            DebugStatus("2D complex commit", status);
            DftiFreeDescriptor(&h);
        }
    }

    {
        MKL_LONG dims[2] = { 16, 16 };
        status = DftiCreateDescriptor(&h, DFTI_SINGLE, DFTI_REAL, 2, dims);
        DebugStatus("2D real create", status);
        if (status == DFTI_NO_ERROR)
        {
            status = DftiCommitDescriptor(h);
            DebugStatus("2D real commit", status);
            DftiFreeDescriptor(&h);
        }
    }
}

 

0 Kudos
1 Solution
Fengrui
Moderator
128 Views

Hi,

 

Thanks for posting in the forum!

For the 2D complex case, I didn't manage to reproduce it. Could you show more details how it was built? 

For the 2D real case, strides need to be set explicitly. After setting both strides, the code runs with no error.

 

Best,

Fengrui

View solution in original post

2 Replies
Fengrui
Moderator
129 Views

Hi,

 

Thanks for posting in the forum!

For the 2D complex case, I didn't manage to reproduce it. Could you show more details how it was built? 

For the 2D real case, strides need to be set explicitly. After setting both strides, the code runs with no error.

 

Best,

Fengrui

JörgZeiner
Beginner
110 Views

Thanks Fengrui,

 

I solved the problem. I had mkl_intel_ilp64.lib instead of mkl_intel_lp64.lib in AdditionalDependencies.

 

Regards,

Jörg

0 Kudos
Reply