<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic MKL update 4 protection violation in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-update-4-protection-violation/m-p/806516#M3466</link>
    <description>I am calling dspgvx from the MKL library from Intel Fortan V12. I already mention I was calling from Fortran.&lt;BR /&gt;&lt;BR /&gt;Now that I have converted to string arguments at the end I have now been able to use the f90 generic routine spgvx. I am using mkl95_lapack to get the correct interface. However after two large test runs (each with many eigenvalue solves) I have one run failing with protection violation and the other working well. I will attempt to put together a test case tommorow assuming I can repeat the failure.&lt;BR /&gt;&lt;BR /&gt;I have found that a good practice is to add decoration statements to module interfaces like those in lapack.f90, i.e. !dec$ attributes default :: dspgvx_f95 would define string lengths being passed at the end. Since the supplied lapack.f90 contains no decoration if we use it inside a project with string length passed mixed by default we get wrong interface definitions. I realiize it will be tedious to add this for all of the interfaces in the lapack.f90 module but wouldnt it be a great benefit to prevent users calling routines incorrectly?&lt;BR /&gt;&lt;BR /&gt;By the way I am on Windows XP 64 with a 32 bit application. I also have a 64 bit version which is not having problems.&lt;BR /&gt;&lt;BR /&gt;Andy&lt;BR /&gt;</description>
    <pubDate>Tue, 14 Jun 2011 00:43:53 GMT</pubDate>
    <dc:creator>Andrew_Smith</dc:creator>
    <dc:date>2011-06-14T00:43:53Z</dc:date>
    <item>
      <title>MKL update 4 protection violation</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-update-4-protection-violation/m-p/806512#M3462</link>
      <description>I am attempting to use the latest MKL (update 4) and I find that dspgvx causes protection violation on the second call I make. I added a call to MKL_free_buffers after calling dspgvx and now it protection violates after several hundred calls.&lt;BR /&gt;&lt;BR /&gt;Can you advise me what I need can do to try to isolate a repeatable test case to submit to support?&lt;BR /&gt;&lt;BR /&gt;I will have to go back to update 3 for now but I was also upgrading to Intel Fortran 2011. Can I use MKL update 3 with Intel Fortran 2011 ?&lt;BR /&gt;</description>
      <pubDate>Mon, 13 Jun 2011 11:03:01 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-update-4-protection-violation/m-p/806512#M3462</guid>
      <dc:creator>Andrew_Smith</dc:creator>
      <dc:date>2011-06-13T11:03:01Z</dc:date>
    </item>
    <item>
      <title>MKL update 4 protection violation</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-update-4-protection-violation/m-p/806513#M3463</link>
      <description>I fixed the problem with calling dspgvx by converting my whole exe to pass string lengths after all arguments. It is not something I really wanted to do but it seams to be required by MKL.&lt;BR /&gt;&lt;BR /&gt;With update 3 I had modified the Intel supplied lapack and blass interface source to define passing string lengths at the end but the update 4 overwrote the changes.&lt;BR /&gt;&lt;BR /&gt;I also tried using the pre-compiled blas and lapack modules but they too are not telling the linker how to pass the string lengths properly. I think you should include the correct passing method in your supplied interfaces in future.&lt;BR /&gt;&lt;BR /&gt;Andy&lt;BR /&gt;</description>
      <pubDate>Mon, 13 Jun 2011 13:56:18 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-update-4-protection-violation/m-p/806513#M3463</guid>
      <dc:creator>Andrew_Smith</dc:creator>
      <dc:date>2011-06-13T13:56:18Z</dc:date>
    </item>
    <item>
      <title>MKL update 4 protection violation</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-update-4-protection-violation/m-p/806514#M3464</link>
      <description>Are you really calling the Fortran-77 callable MKL-Lapack routine &lt;B&gt;dspgvx&lt;/B&gt; from C/C++? Or are you calling the recommended &lt;B&gt;LAPACKE_dspgvx &lt;/B&gt;instead?&lt;BR /&gt;&lt;BR /&gt;&lt;I&gt;&amp;gt;I also tried using the pre-compiled blas and lapack modules but they too
 are not telling the linker how to pass the string lengths properly.&lt;/I&gt;&lt;BR /&gt;&lt;BR /&gt;This statement is quite confusing. Fortran modules and object files do not "tell the linker" how to pass arguments. &lt;BR /&gt;&lt;BR /&gt;The old @nn decoration (no longer used as default in Intel Fortran) only checked for the total number of bytes passed; you could still have errors in the individual arguments and, as long the the number of bytes matched, no linker error was caused.&lt;BR /&gt;</description>
      <pubDate>Mon, 13 Jun 2011 16:15:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-update-4-protection-violation/m-p/806514#M3464</guid>
      <dc:creator>mecej4</dc:creator>
      <dc:date>2011-06-13T16:15:54Z</dc:date>
    </item>
    <item>
      <title>MKL update 4 protection violation</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-update-4-protection-violation/m-p/806515#M3465</link>
      <description>Andy,&lt;DIV&gt;&lt;DIV id="_mcePaste"&gt;Can you give us the test case, OS, platform?&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;I did two succesive calls of this routine and the test passed on win64.&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;--Gennady&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 13 Jun 2011 17:15:36 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-update-4-protection-violation/m-p/806515#M3465</guid>
      <dc:creator>Gennady_F_Intel</dc:creator>
      <dc:date>2011-06-13T17:15:36Z</dc:date>
    </item>
    <item>
      <title>MKL update 4 protection violation</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-update-4-protection-violation/m-p/806516#M3466</link>
      <description>I am calling dspgvx from the MKL library from Intel Fortan V12. I already mention I was calling from Fortran.&lt;BR /&gt;&lt;BR /&gt;Now that I have converted to string arguments at the end I have now been able to use the f90 generic routine spgvx. I am using mkl95_lapack to get the correct interface. However after two large test runs (each with many eigenvalue solves) I have one run failing with protection violation and the other working well. I will attempt to put together a test case tommorow assuming I can repeat the failure.&lt;BR /&gt;&lt;BR /&gt;I have found that a good practice is to add decoration statements to module interfaces like those in lapack.f90, i.e. !dec$ attributes default :: dspgvx_f95 would define string lengths being passed at the end. Since the supplied lapack.f90 contains no decoration if we use it inside a project with string length passed mixed by default we get wrong interface definitions. I realiize it will be tedious to add this for all of the interfaces in the lapack.f90 module but wouldnt it be a great benefit to prevent users calling routines incorrectly?&lt;BR /&gt;&lt;BR /&gt;By the way I am on Windows XP 64 with a 32 bit application. I also have a 64 bit version which is not having problems.&lt;BR /&gt;&lt;BR /&gt;Andy&lt;BR /&gt;</description>
      <pubDate>Tue, 14 Jun 2011 00:43:53 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-update-4-protection-violation/m-p/806516#M3466</guid>
      <dc:creator>Andrew_Smith</dc:creator>
      <dc:date>2011-06-14T00:43:53Z</dc:date>
    </item>
    <item>
      <title>MKL update 4 protection violation</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-update-4-protection-violation/m-p/806517#M3467</link>
      <description>The protection violation is quite difficult to repeat but I was able to save a set of data that was used during a protection violation. But the simplified test code using this data works fine.&lt;BR /&gt;&lt;BR /&gt;I can get the protection violation to happen repeatedly but in a way I don't expect to happen in normal use.&lt;BR /&gt;&lt;BR /&gt;I am calling mkl from a number of fortran dll's. The fortran dlls are attached to a Smalltalk exe which can load or unload my fortran dlls as required.&lt;BR /&gt;&lt;BR /&gt;If I do an eigenvalue solve using one of my fortran dll's which calls dspgvx and then unload the fortran dll, load it again and re-run the solve I get the protection violation. This does not happen in the older versions of MKL.&lt;BR /&gt;&lt;BR /&gt;Since the mkl dll is attached to other dlls in my exe it should never unload until I close my exe. But it seams like the mkl dll or maybe the threading dll are getting memory corruption somehow after unloading one of my fortran dlls.</description>
      <pubDate>Tue, 14 Jun 2011 13:19:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-update-4-protection-violation/m-p/806517#M3467</guid>
      <dc:creator>Andrew_Smith</dc:creator>
      <dc:date>2011-06-14T13:19:00Z</dc:date>
    </item>
  </channel>
</rss>

