在进入 NIT 时参数编号 9 有一个非法值

On entry to NIT parameter number 9 had an illegal value

我去这个ex1.c file from Intel 11。但是,当我执行它时,它失败了:

gsamaras@pythagoras:~/konstantis$ ../mpich-install/bin/mpicc -o test ex1.c -I../intel/mkl/include  ../intel/mkl/lib/intel64/libmkl_scalapack_ilp64.a -Wl,--start-group ../intel/mkl/lib/intel64/libmkl_intel_ilp64.a ../intel/mkl/lib/intel64/libmkl_core.a ../intel/mkl/lib/intel64/libmkl_sequential.a -Wl,--end-group ../intel/mkl/lib/intel64/libmkl_blacs_intelmpi_ilp64.a -lpthread -lm -ldl
gsamaras@pythagoras:~/konstantis$ mpiexec -n 4 ./test
{    0,    0}:  On entry to 
DESCI{    1,    0}:  On entry to NIT parameter number    9 had an illegal value 
{    0,    0}:  On entry to 
DESCINIT parameter number    4 had an illegal value 
  0  0 vals   1.00000   0.20100   0.50100   0.60100   0.10200   2.00000   0.50200   0.60200   0.10500   0.20500   5.00000   0.60500   0.10600   0.20600   0.50600   6.00000

DESCINIT parameter number    4 had an illegal value 
  0  0 vals   1.00000   0.20100   0.50100   0.60100   0.10200   2.00000   0.50200   0.60200   0.10500   0.20500   5.00000   0.60500   0.10600   0.20600   0.50600   6.00000
{    0,    1}:  On entry to 
DESCINIT parameter number    6 had an illegal value 
{    0,    1}:  On entry to 
DESCINIT parameter number    6 had an illegal value 
  0  1 vals   0.10300   0.20300   0.50300   0.60300   0.10400   0.20400   0.50400   0.60400   0.10700   0.20700   0.50700   0.60700   0.10800   0.20800   0.50800   0.60800
{    1,    1}:  On entry to {   -1,   -1}:  On entry to 
PSGESV
 parameter number  602 had an illegal value 
*** Error in `./test': free(): invalid next size (fast): 0x00000000021a6ae0 ***
DESCINIT parameter number    6 had an illegal value 
{    1,    1}:  On entry to 
DESCINIT parameter number    6 had an illegal value 
  0  1 vals   0.10300   0.20300   0.50300   0.60300   0.10400   0.20400   0.50400   0.60400   0.10700   0.20700   0.50700   0.60700   0.10800   0.20800   0.50800   0.60800
{   -1,   -1}:  On entry to 
PSGESV parameter number  602 had an illegal value 
*** Error in `./test': free(): invalid next size (fast): 0x000000000195dae0 ***

===================================================================================
=   BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
=   PID 13140 RUNNING AT pythagoras
=   EXIT CODE: 6
=   CLEANING UP REMAINING PROCESSES
=   YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
===================================================================================
YOUR APPLICATION TERMINATED WITH THE EXIT STRING: Aborted (signal 6)

为什么?这是我第一次 运行 使用 ScaLAPACK 的示例,我不知道发生了什么。

此回答由英特尔的 Ying 提供,所有功劳归于他!

C中的int应该是32位的,你可以试试lp64模式。

mpicc -o test_lp64 ex1.c -I/opt/intel/mkl/include  /opt/intel/mkl/lib/intel64/libmkl_scalapack_lp64.a -L/opt/intel/mkl/lib/intel64 -Wl,--start-group /opt/intel/mkl/lib/intel64/libmkl_intel_lp64.a /opt/intel/mkl/lib/intel64/libmkl_core.a /opt/intel/mkl/lib/intel64/libmkl_sequential.a -Wl,--end-group /opt/intel/mkl/lib/intel64/libmkl_blacs_intelmpi_lp64.a -lpthread -lm -ldl

[yhu5@prc-mic01 scalapack]$ mpirun -n 4 ./test_lp64                               0  0 vals   1.00000   0.20100   0.50100   0.60100   0.10200   2.00000   0.50200   0.60200   0.10500   0.20500   5.00000   0.60500   0.10600   0.20600   0.50600   6.00000
  1  0 vals   0.30100   0.40100   0.70100   0.80100   0.30200   0.40200   0.70200   0.80200   0.30500   0.40500   0.70500   0.80500   0.30600   0.40600   0.70600   0.80600
  0  1 vals   0.10300   0.20300   0.50300   0.60300   0.10400   0.20400   0.50400   0.60400   0.10700   0.20700   0.50700   0.60700   0.10800   0.20800   0.50800   0.60800
  1  1 vals   3.00000   0.40300   0.70300   0.80300   0.30400   4.00000   0.70400   0.80400   0.30700   0.40700   7.00000   0.80700   0.30800   0.40800   0.70800   8.00000
x=( 0 0)  0.9321  0.3773  0.0444  0.0074
x=( 1 0)  0.1924  0.0999 -0.0190 -0.0388