Redian新闻
>
请问这个mpi程序有什么问题?
avatar
请问这个mpi程序有什么问题?# Computation - 科学计算
w*n
1
如果msize, nsize, ksize,都是300, 没有问题,如果改成3000, 就出现
[mpirund] rank 0 has got signal 11
[mpirund] rank 1 has got signal 11
我用了两个节点计算。
#include
#include "mpi.h"
#define msize 3000
#define nsize 3000
#define ksize 3000
#define MTRSIZE msize*nsize
main(int argc, char* argv[]) {
int p;
int my_rank;
double A[MTRSIZE];
double D[MTRSIZE];
MPI_Status status;
MPI_Comm comm;
long int matrix_size=MTRSIZE;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WO
avatar
f*r
2
I think the signal 11 is caused by stack overflow.
If you are running the code under linux, try to change stack limit by
ulimit -s unlimited
and then run your mpi code (since you are running it on different nodes, you
might want to change the stack limit on every node)

【在 w***n 的大作中提到】
: 如果msize, nsize, ksize,都是300, 没有问题,如果改成3000, 就出现
: [mpirund] rank 0 has got signal 11
: [mpirund] rank 1 has got signal 11
: 我用了两个节点计算。
: #include
: #include "mpi.h"
: #define msize 3000
: #define nsize 3000
: #define ksize 3000
: #define MTRSIZE msize*nsize

avatar
g*c
3
3000×3000=9,000,000
any array with default compiler option, each dimension can't be more than
about 25000~32000 element on 32bit system。I test it before, not sure the
exact number.
you need to check compiler option or split one big dimension to several
dimension.

【在 w***n 的大作中提到】
: 如果msize, nsize, ksize,都是300, 没有问题,如果改成3000, 就出现
: [mpirund] rank 0 has got signal 11
: [mpirund] rank 1 has got signal 11
: 我用了两个节点计算。
: #include
: #include "mpi.h"
: #define msize 3000
: #define nsize 3000
: #define ksize 3000
: #define MTRSIZE msize*nsize

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。