Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

- Intel Community
- Software
- Software Development SDKs and Libraries
- Intel® oneAPI Math Kernel Library
- Problem with MKL DSS single precision version

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page

Zhanghong_T_

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

09-02-2010
06:39 AM

91 Views

Problem with MKL DSS single precision version

I have problem to call the MKL DSS in single precision. I have the following code:

...

COMPLEX*8::X8(1),B8(1),A8(1)

...

OPT = MKL_DSS_SINGLE_PRECISION

ierror = dss_create( handle, OPT )

ierror = dss_define_structure(handle,MKL_DSS_SYMMETRIC_COMPLEX,IROW,N,N,ICOL,NK)

ierror = dss_reorder( handle, MKL_DSS_DEFAULTS, perm )

ierror = dss_factor_complex( handle,MKL_DSS_INDEFINITE, A8)

ierror = dss_solve_complex( handle, MKL_DSS_REFINEMENT_OFF,B8, NRHS, X8)

...

When compiling, the following errors displayed:

error #6633: The type of the actual argument differs from the type of the dummy argument. [A8]

error #6633: The type of the actual argument differs from the type of the dummy argument. [B8]

error #6633: The type of the actual argument differs from the type of the dummy argument. [X8]

I built the code in Win7 x64 + VS2008 + Intel Visual Fortran 11.1.065 + Intel MKL 10.2.6.037.

Could anyone tell me what did I miss?

Thanks,

Zhanghong Tang

Link Copied

15 Replies

mecej4

Black Belt

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

09-02-2010
07:02 AM

91 Views

The error messages are the result of your attempting to use COMPLEX*8 (which is equivalent to COMPLEX(KIND=4)) argument arrays.

Zhanghong_T_

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

09-02-2010
07:15 AM

91 Views

Thank you very much for your kindly reply. Do you mean that the DSS changed the data type for Pardiso solver automatically? I tried to modify the code to declare the data as COMPLEX*16, the program crashed in the subroutine "dss_factor_complex".

Thanks,

Zhanghong Tang

mecej4

Black Belt

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

09-02-2010
07:29 AM

91 Views

It is not surprising that a crash occurred, if you called the DSS routines with improperly set arguments. For example, you declare the arrays with

COMPLEX*8::X8(1),B8(1),A8(1)

If N, NK, etc., happen to be different from 1, this declaration could be in error.

Please post a small, complete example code demonstrating the problem. The MKL installation has an example, dss_sym_f90.f90, that you may want to try first and adapt to your purposes next.

Zhanghong_T_

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

09-02-2010
07:47 AM

91 Views

For the example case, if I change the code from

error = DSS_CREATE( handle, MKL_DSS_DEFAULTS )

to

error = DSS_CREATE( handle, MKL_DSS_SINGLE_PRECISION )

The following error displayed:

MKL-DSS-DSS-Error, Zero Pivot detected

TimP

Black Belt

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

09-02-2010
08:07 AM

91 Views

Zhanghong_T_

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

09-02-2010
08:16 AM

91 Views

Thank you very much for your kindly reply.

Even I declare the X8(N), B8(N), the program still crash.

For the example program "dss_sym_f90.f90", what should I do to let it work on single precision? I modified the following code:

error = DSS_CREATE( handle, MKL_DSS_SINGLE_PRECISION )

or

error = DSS_CREATE( handle, MKL_DSS_SINGLE_PRECISION+MKL_DSS_MSG_LVL_WARNING + MKL_DSS_TERM_LVL_ERROR )

Both give the same error I shown above.

Thanks,

Zhanghong Tang

mecej4

Black Belt

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

09-02-2010
09:59 AM

91 Views

When a library provides only a double-precision version of a routine, you cannot expect the routine work with arguments of the wrong type (single-precision). Specifying single-precision with a flag (MKL_DSS_SINGLE_PRECISION) is of no use when the library has no capability for obeying that demand.

Zhanghong_T_

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

09-02-2010
04:09 PM

91 Views

Konstantin_A_Intel

Employee

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

09-03-2010
01:09 AM

91 Views

To run your program in single precision mode you should declare all your REAL data as REAL*4, but in your example all arrays are double precision.

So, you may simply use

INTEGER, PARAMETER :: dp = KIND(1.0E0)

instead of

INTEGER, PARAMETER :: dp = KIND(1.0D0)Regards,

Konstantin

Zhanghong_T_

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

09-03-2010
04:05 AM

90 Views

Thank you very much for your kindly reply. After I changed the code as you said, the following errors displayed:

dss_sym_f90.f90(78): error #6633: The type of the actual argument differs from the type of the dummy argument. [VALUES]

dss_sym_f90.f90(82): error #6633: The type of the actual argument differs from the type of the dummy argument. [RHS]

dss_sym_f90.f90(82): error #6633: The type of the actual argument differs from the type of the dummy argument. [SOLUTION]

dss_sym_f90.f90(89): error #6633: The type of the actual argument differs from the type of the dummy argument. [STATOUT]

Could you please provide me a whole project that you have successfully run?

Thanks,

Zhanghong Tang

Gennady_F_Intel

Moderator

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

09-03-2010
06:03 AM

90 Views

Yes, this is a
known problem with support single precision of f90 interfaces for DSS function.
We are working on that problem at this moment.

As a temporarily workaround, I 'd recommend you to manually change the API of these functions by replacingREAL(KIND=8) byREAL(KIND=4).

I mean the following list of functions:DSS_FACTOR_REAL,DSS_SOLVE_REAL,DSS_STATISTICS

and if you call DSS_CREATE( handle, MKL_DSS_SINGLE_PRECISION)

then all stuff should be Compliable and run well.

--Gennady

Gennady_F_Intel

Moderator

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

09-03-2010
06:11 AM

90 Views

Zhanghong_T_

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

09-03-2010
06:44 AM

90 Views

Gennady_F_Intel

Moderator

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

09-03-2010
07:26 AM

90 Views

Here is a bug tracking number for your reference:**DPD200192258**

Gennady_F_Intel

Moderator

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

12-18-2010
12:07 PM

90 Views

the problem has been fixed in the latest version of MKL 10.2 Update 7. Could you please check if the problem is still there and let us know.

--Gennady

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

For more complete information about compiler optimizations, see our Optimization Notice.