<?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 PDSYEVR (ScaLAPACK, LP64) returns INFO=0 with M=0 on a single MPI rank, and prints &amp;quot;DSTEGR2 paramete in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PDSYEVR-ScaLAPACK-LP64-returns-INFO-0-with-M-0-on-a-single-MPI/m-p/1754249#M37635</link>
    <description>&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;I've hit what looks like a defect in MKL's ScaLAPACK &lt;/SPAN&gt;&lt;SPAN&gt;`pdsyevr`&lt;/SPAN&gt;&lt;SPAN&gt; on a single MPI rank. A self-contained reproducer (two small Fortran programs + the stored matrices) is attached as mkl_pdsyevr_dstegr2_report.zip; REPORT.md inside has the full write-up.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;**Summary**&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;`pdsyevr`&lt;/SPAN&gt;&lt;SPAN&gt; ("V", "A", "L"), called on a specific 240x240 real symmetric standard-form matrix on a 1x1 BLACS grid (one MPI process, &lt;/SPAN&gt;&lt;SPAN&gt;`OMP_NUM_THREADS=1`&lt;/SPAN&gt;&lt;SPAN&gt;), prints an internal diagnostic&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;```&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{ 0, 0}: On entry to&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;DSTEGR2 parameter number -202 had an illegal value&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;```&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;and then returns &lt;/SPAN&gt;&lt;SPAN&gt;`INFO = 0`&lt;/SPAN&gt;&lt;SPAN&gt; with the eigenvalue count &lt;/SPAN&gt;&lt;SPAN&gt;`M = 0`&lt;/SPAN&gt;&lt;SPAN&gt; instead of &lt;/SPAN&gt;&lt;SPAN&gt;`M = 240`&lt;/SPAN&gt;&lt;SPAN&gt;. The eigenvalues written to &lt;/SPAN&gt;&lt;SPAN&gt;`W`&lt;/SPAN&gt;&lt;SPAN&gt; are nevertheless correct (they agree to machine precision with 2- and 4-process runs of the same matrix), so the computation itself completes; only the returned count &lt;/SPAN&gt;&lt;SPAN&gt;`M`&lt;/SPAN&gt;&lt;SPAN&gt; is wrong and an unexpected PXERBLA-style message is emitted for an internal routine. The same call on the same matrix at 2 and 4 processes is clean (&lt;/SPAN&gt;&lt;SPAN&gt;`INFO = 0`&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;`M = 240`&lt;/SPAN&gt;&lt;SPAN&gt;, no message). The single-rank failure is deterministic — 20 of 20 runs.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;**Why I think this is a defect**&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;1.&lt;/SPAN&gt;&lt;SPAN&gt; For &lt;/SPAN&gt;&lt;SPAN&gt;`RANGE = "A"`&lt;/SPAN&gt;&lt;SPAN&gt;, a successful &lt;/SPAN&gt;&lt;SPAN&gt;`pdsyevr`&lt;/SPAN&gt;&lt;SPAN&gt; (&lt;/SPAN&gt;&lt;SPAN&gt;`INFO = 0`&lt;/SPAN&gt;&lt;SPAN&gt;) should return &lt;/SPAN&gt;&lt;SPAN&gt;`M = N`&lt;/SPAN&gt;&lt;SPAN&gt;. Returning &lt;/SPAN&gt;&lt;SPAN&gt;`M = 0`&lt;/SPAN&gt;&lt;SPAN&gt; with &lt;/SPAN&gt;&lt;SPAN&gt;`INFO = 0`&lt;/SPAN&gt;&lt;SPAN&gt; gives the caller no way to detect the failure. A caller that sizes downstream work from &lt;/SPAN&gt;&lt;SPAN&gt;`M`&lt;/SPAN&gt;&lt;SPAN&gt; — e.g. the number of eigenvector columns to back-transform in a generalized problem — then silently processes zero eigenvectors with no error indication. That is exactly how it first surfaced for me (in a generalized eigenproblem inside a larger application).&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;2.&lt;/SPAN&gt;&lt;SPAN&gt; The parameter index &lt;/SPAN&gt;&lt;SPAN&gt;`-202`&lt;/SPAN&gt;&lt;SPAN&gt; is not a valid argument position for &lt;/SPAN&gt;&lt;SPAN&gt;`DSTEGR2`&lt;/SPAN&gt;&lt;SPAN&gt; (it has far fewer than 202 arguments), so this is not a caller-facing argument error; it indicates MKL's internal MRRR path invoked &lt;/SPAN&gt;&lt;SPAN&gt;`DSTEGR2`&lt;/SPAN&gt;&lt;SPAN&gt; with an argument that failed the routine's own validation. Because the public &lt;/SPAN&gt;&lt;SPAN&gt;`pdsyevr`&lt;/SPAN&gt;&lt;SPAN&gt; arguments are valid and documented — byte-identical to the 2- and 4-process calls that succeed — the inconsistency is internal to the single-process MRRR code path.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;**Environment**&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt; MKL 2025.3, Product Build 20251007, LP64 interface (&lt;/SPAN&gt;&lt;SPAN&gt;`libmkl_scalapack_lp64`&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;`libmkl_blacs_intelmpi_lp64`&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;`libmkl_intel_lp64`&lt;/SPAN&gt;&lt;SPAN&gt;).&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt; Threading layer &lt;/SPAN&gt;&lt;SPAN&gt;`libmkl_intel_thread`&lt;/SPAN&gt;&lt;SPAN&gt; with &lt;/SPAN&gt;&lt;SPAN&gt;`OMP_NUM_THREADS=1`&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt; Intel MPI (oneAPI 2025.3), &lt;/SPAN&gt;&lt;SPAN&gt;`ifx`&lt;/SPAN&gt;&lt;SPAN&gt; via &lt;/SPAN&gt;&lt;SPAN&gt;`mpiifx`&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt; Host: 2x AMD EPYC 9654 (Genoa), Linux.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;**Reproducing (from the attached zip)**&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;```&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;./build.sh&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;export OMP_NUM_THREADS=1&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;mpiexec -n 1 ./mrrr_repro_evr mrrr_aprime.bin # message + INFO=0, M=0&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;mpiexec -n 2 ./mrrr_repro_evr mrrr_aprime.bin # clean, INFO=0, M=240&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;mpiexec -n 4 ./mrrr_repro_evr mrrr_aprime.bin # clean, INFO=0, M=240&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;```&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;`mrrr_repro_evr`&lt;/SPAN&gt;&lt;SPAN&gt; reads one stored 240x240 matrix and makes a single &lt;/SPAN&gt;&lt;SPAN&gt;`pdsyevr`&lt;/SPAN&gt;&lt;SPAN&gt; call (workspace sized from the &lt;/SPAN&gt;&lt;SPAN&gt;`LWORK = -1`&lt;/SPAN&gt;&lt;SPAN&gt; / &lt;/SPAN&gt;&lt;SPAN&gt;`LIWORK = -1`&lt;/SPAN&gt;&lt;SPAN&gt; query, then zero-initialized). Call arguments: &lt;/SPAN&gt;&lt;SPAN&gt;`JOBZ="V"`&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;`RANGE="A"`&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;`UPLO="L"`&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;`N=240`&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;`IA=JA=IZ=JZ=1`&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;`VL=VU=0.0`&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;`IL=1`&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;`IU=240`&lt;/SPAN&gt;&lt;SPAN&gt;, block size &lt;/SPAN&gt;&lt;SPAN&gt;`MB=NB=32`&lt;/SPAN&gt;&lt;SPAN&gt;. A second program, &lt;/SPAN&gt;&lt;SPAN&gt;`mrrr_repro`&lt;/SPAN&gt;&lt;SPAN&gt;, runs the full &lt;/SPAN&gt;&lt;SPAN&gt;`pdsygst(1,"L")`&lt;/SPAN&gt;&lt;SPAN&gt; -&amp;gt; &lt;/SPAN&gt;&lt;SPAN&gt;`pdsyevr("V","A","L")`&lt;/SPAN&gt;&lt;SPAN&gt; sequence from the stored Hamiltonian and Cholesky factor and prints the identical message.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;Observed &lt;/SPAN&gt;&lt;SPAN&gt;`np = 1`&lt;/SPAN&gt;&lt;SPAN&gt; output:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;```&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Intel(R) oneAPI Math Kernel Library Version 2025.3-Product Build 20251007 for Intel(R) 64 architecture applications&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;n=240 mb=32 nb=32 nproc=1&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;pdsyevr query info=0&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{ 0, 0}: On entry to&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;DSTEGR2 parameter number -202 had an illegal value&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;pdsyevr info=0 m=0&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;w(1)= -9.252989077474355E-01 w(n)= 9.457626123323363E-01&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;```&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;The eigenvalues match the &lt;/SPAN&gt;&lt;SPAN&gt;`np = 2`&lt;/SPAN&gt;&lt;SPAN&gt; run in the leading digits, confirming the spectrum is computed correctly; only &lt;/SPAN&gt;&lt;SPAN&gt;`M`&lt;/SPAN&gt;&lt;SPAN&gt; and the spurious message are wrong. The matrix has tightly clustered eigenvalues in this case, which is the regime that stresses the MRRR algorithm &lt;/SPAN&gt;&lt;SPAN&gt;`DSTEGR2`&lt;/SPAN&gt;&lt;SPAN&gt; implements.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;**Question / requested resolution**&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;Is this a known issue, or is there something in the single-process argument setup I should be doing differently? If it is a defect, I'd expect either (a) &lt;/SPAN&gt;&lt;SPAN&gt;`pdsyevr`&lt;/SPAN&gt;&lt;SPAN&gt; to return the correct &lt;/SPAN&gt;&lt;SPAN&gt;`M = N`&lt;/SPAN&gt;&lt;SPAN&gt; on the 1x1 grid and suppress the spurious message, or (b) if the internal argument inconsistency is genuine, for it to surface as a non-zero &lt;/SPAN&gt;&lt;SPAN&gt;`INFO`&lt;/SPAN&gt;&lt;SPAN&gt; rather than &lt;/SPAN&gt;&lt;SPAN&gt;`INFO = 0`&lt;/SPAN&gt;&lt;SPAN&gt; with &lt;/SPAN&gt;&lt;SPAN&gt;`M = 0`&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;Happy to provide any further detail. Thanks.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Sat, 18 Jul 2026 02:03:18 GMT</pubDate>
    <dc:creator>rizzo</dc:creator>
    <dc:date>2026-07-18T02:03:18Z</dc:date>
    <item>
      <title>PDSYEVR (ScaLAPACK, LP64) returns INFO=0 with M=0 on a single MPI rank, and prints "DSTEGR2 paramete</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PDSYEVR-ScaLAPACK-LP64-returns-INFO-0-with-M-0-on-a-single-MPI/m-p/1754249#M37635</link>
      <description>&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;I've hit what looks like a defect in MKL's ScaLAPACK &lt;/SPAN&gt;&lt;SPAN&gt;`pdsyevr`&lt;/SPAN&gt;&lt;SPAN&gt; on a single MPI rank. A self-contained reproducer (two small Fortran programs + the stored matrices) is attached as mkl_pdsyevr_dstegr2_report.zip; REPORT.md inside has the full write-up.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;**Summary**&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;`pdsyevr`&lt;/SPAN&gt;&lt;SPAN&gt; ("V", "A", "L"), called on a specific 240x240 real symmetric standard-form matrix on a 1x1 BLACS grid (one MPI process, &lt;/SPAN&gt;&lt;SPAN&gt;`OMP_NUM_THREADS=1`&lt;/SPAN&gt;&lt;SPAN&gt;), prints an internal diagnostic&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;```&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{ 0, 0}: On entry to&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;DSTEGR2 parameter number -202 had an illegal value&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;```&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;and then returns &lt;/SPAN&gt;&lt;SPAN&gt;`INFO = 0`&lt;/SPAN&gt;&lt;SPAN&gt; with the eigenvalue count &lt;/SPAN&gt;&lt;SPAN&gt;`M = 0`&lt;/SPAN&gt;&lt;SPAN&gt; instead of &lt;/SPAN&gt;&lt;SPAN&gt;`M = 240`&lt;/SPAN&gt;&lt;SPAN&gt;. The eigenvalues written to &lt;/SPAN&gt;&lt;SPAN&gt;`W`&lt;/SPAN&gt;&lt;SPAN&gt; are nevertheless correct (they agree to machine precision with 2- and 4-process runs of the same matrix), so the computation itself completes; only the returned count &lt;/SPAN&gt;&lt;SPAN&gt;`M`&lt;/SPAN&gt;&lt;SPAN&gt; is wrong and an unexpected PXERBLA-style message is emitted for an internal routine. The same call on the same matrix at 2 and 4 processes is clean (&lt;/SPAN&gt;&lt;SPAN&gt;`INFO = 0`&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;`M = 240`&lt;/SPAN&gt;&lt;SPAN&gt;, no message). The single-rank failure is deterministic — 20 of 20 runs.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;**Why I think this is a defect**&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;1.&lt;/SPAN&gt;&lt;SPAN&gt; For &lt;/SPAN&gt;&lt;SPAN&gt;`RANGE = "A"`&lt;/SPAN&gt;&lt;SPAN&gt;, a successful &lt;/SPAN&gt;&lt;SPAN&gt;`pdsyevr`&lt;/SPAN&gt;&lt;SPAN&gt; (&lt;/SPAN&gt;&lt;SPAN&gt;`INFO = 0`&lt;/SPAN&gt;&lt;SPAN&gt;) should return &lt;/SPAN&gt;&lt;SPAN&gt;`M = N`&lt;/SPAN&gt;&lt;SPAN&gt;. Returning &lt;/SPAN&gt;&lt;SPAN&gt;`M = 0`&lt;/SPAN&gt;&lt;SPAN&gt; with &lt;/SPAN&gt;&lt;SPAN&gt;`INFO = 0`&lt;/SPAN&gt;&lt;SPAN&gt; gives the caller no way to detect the failure. A caller that sizes downstream work from &lt;/SPAN&gt;&lt;SPAN&gt;`M`&lt;/SPAN&gt;&lt;SPAN&gt; — e.g. the number of eigenvector columns to back-transform in a generalized problem — then silently processes zero eigenvectors with no error indication. That is exactly how it first surfaced for me (in a generalized eigenproblem inside a larger application).&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;2.&lt;/SPAN&gt;&lt;SPAN&gt; The parameter index &lt;/SPAN&gt;&lt;SPAN&gt;`-202`&lt;/SPAN&gt;&lt;SPAN&gt; is not a valid argument position for &lt;/SPAN&gt;&lt;SPAN&gt;`DSTEGR2`&lt;/SPAN&gt;&lt;SPAN&gt; (it has far fewer than 202 arguments), so this is not a caller-facing argument error; it indicates MKL's internal MRRR path invoked &lt;/SPAN&gt;&lt;SPAN&gt;`DSTEGR2`&lt;/SPAN&gt;&lt;SPAN&gt; with an argument that failed the routine's own validation. Because the public &lt;/SPAN&gt;&lt;SPAN&gt;`pdsyevr`&lt;/SPAN&gt;&lt;SPAN&gt; arguments are valid and documented — byte-identical to the 2- and 4-process calls that succeed — the inconsistency is internal to the single-process MRRR code path.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;**Environment**&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt; MKL 2025.3, Product Build 20251007, LP64 interface (&lt;/SPAN&gt;&lt;SPAN&gt;`libmkl_scalapack_lp64`&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;`libmkl_blacs_intelmpi_lp64`&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;`libmkl_intel_lp64`&lt;/SPAN&gt;&lt;SPAN&gt;).&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt; Threading layer &lt;/SPAN&gt;&lt;SPAN&gt;`libmkl_intel_thread`&lt;/SPAN&gt;&lt;SPAN&gt; with &lt;/SPAN&gt;&lt;SPAN&gt;`OMP_NUM_THREADS=1`&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt; Intel MPI (oneAPI 2025.3), &lt;/SPAN&gt;&lt;SPAN&gt;`ifx`&lt;/SPAN&gt;&lt;SPAN&gt; via &lt;/SPAN&gt;&lt;SPAN&gt;`mpiifx`&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt; Host: 2x AMD EPYC 9654 (Genoa), Linux.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;**Reproducing (from the attached zip)**&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;```&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;./build.sh&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;export OMP_NUM_THREADS=1&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;mpiexec -n 1 ./mrrr_repro_evr mrrr_aprime.bin # message + INFO=0, M=0&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;mpiexec -n 2 ./mrrr_repro_evr mrrr_aprime.bin # clean, INFO=0, M=240&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;mpiexec -n 4 ./mrrr_repro_evr mrrr_aprime.bin # clean, INFO=0, M=240&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;```&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;`mrrr_repro_evr`&lt;/SPAN&gt;&lt;SPAN&gt; reads one stored 240x240 matrix and makes a single &lt;/SPAN&gt;&lt;SPAN&gt;`pdsyevr`&lt;/SPAN&gt;&lt;SPAN&gt; call (workspace sized from the &lt;/SPAN&gt;&lt;SPAN&gt;`LWORK = -1`&lt;/SPAN&gt;&lt;SPAN&gt; / &lt;/SPAN&gt;&lt;SPAN&gt;`LIWORK = -1`&lt;/SPAN&gt;&lt;SPAN&gt; query, then zero-initialized). Call arguments: &lt;/SPAN&gt;&lt;SPAN&gt;`JOBZ="V"`&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;`RANGE="A"`&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;`UPLO="L"`&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;`N=240`&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;`IA=JA=IZ=JZ=1`&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;`VL=VU=0.0`&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;`IL=1`&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;`IU=240`&lt;/SPAN&gt;&lt;SPAN&gt;, block size &lt;/SPAN&gt;&lt;SPAN&gt;`MB=NB=32`&lt;/SPAN&gt;&lt;SPAN&gt;. A second program, &lt;/SPAN&gt;&lt;SPAN&gt;`mrrr_repro`&lt;/SPAN&gt;&lt;SPAN&gt;, runs the full &lt;/SPAN&gt;&lt;SPAN&gt;`pdsygst(1,"L")`&lt;/SPAN&gt;&lt;SPAN&gt; -&amp;gt; &lt;/SPAN&gt;&lt;SPAN&gt;`pdsyevr("V","A","L")`&lt;/SPAN&gt;&lt;SPAN&gt; sequence from the stored Hamiltonian and Cholesky factor and prints the identical message.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;Observed &lt;/SPAN&gt;&lt;SPAN&gt;`np = 1`&lt;/SPAN&gt;&lt;SPAN&gt; output:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;```&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Intel(R) oneAPI Math Kernel Library Version 2025.3-Product Build 20251007 for Intel(R) 64 architecture applications&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;n=240 mb=32 nb=32 nproc=1&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;pdsyevr query info=0&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{ 0, 0}: On entry to&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;DSTEGR2 parameter number -202 had an illegal value&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;pdsyevr info=0 m=0&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;w(1)= -9.252989077474355E-01 w(n)= 9.457626123323363E-01&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;```&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;The eigenvalues match the &lt;/SPAN&gt;&lt;SPAN&gt;`np = 2`&lt;/SPAN&gt;&lt;SPAN&gt; run in the leading digits, confirming the spectrum is computed correctly; only &lt;/SPAN&gt;&lt;SPAN&gt;`M`&lt;/SPAN&gt;&lt;SPAN&gt; and the spurious message are wrong. The matrix has tightly clustered eigenvalues in this case, which is the regime that stresses the MRRR algorithm &lt;/SPAN&gt;&lt;SPAN&gt;`DSTEGR2`&lt;/SPAN&gt;&lt;SPAN&gt; implements.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;**Question / requested resolution**&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;Is this a known issue, or is there something in the single-process argument setup I should be doing differently? If it is a defect, I'd expect either (a) &lt;/SPAN&gt;&lt;SPAN&gt;`pdsyevr`&lt;/SPAN&gt;&lt;SPAN&gt; to return the correct &lt;/SPAN&gt;&lt;SPAN&gt;`M = N`&lt;/SPAN&gt;&lt;SPAN&gt; on the 1x1 grid and suppress the spurious message, or (b) if the internal argument inconsistency is genuine, for it to surface as a non-zero &lt;/SPAN&gt;&lt;SPAN&gt;`INFO`&lt;/SPAN&gt;&lt;SPAN&gt; rather than &lt;/SPAN&gt;&lt;SPAN&gt;`INFO = 0`&lt;/SPAN&gt;&lt;SPAN&gt; with &lt;/SPAN&gt;&lt;SPAN&gt;`M = 0`&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;Happy to provide any further detail. Thanks.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Sat, 18 Jul 2026 02:03:18 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PDSYEVR-ScaLAPACK-LP64-returns-INFO-0-with-M-0-on-a-single-MPI/m-p/1754249#M37635</guid>
      <dc:creator>rizzo</dc:creator>
      <dc:date>2026-07-18T02:03:18Z</dc:date>
    </item>
  </channel>
</rss>

