[SCore-users-jp] MPICH-SCoreでのメモリ獲得について

Mitsugu Kawaguchi m-kawaguchi @ pst.fujitsu.com
2004年 1月 8日 (木) 10:10:59 JST


This is a multi-part message in MIME format.

------=_NextPart_000_0015_01C3D5CF.B8EEF340
Content-Type: text/plain;
	charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit

SCore開発関係者様

富士通プライムソフトテクノロジの川口です。
いつもお世話になっております。

SCore環境で添付したプログラムを実行したところ、
メモリ獲得が意図通りにできない問題が起きています。
何か原因が分かりますでしょうか?

【現象】
 下記のようなプログラムを実施。
  (1) malloc()で1GB程度のメモリを獲得。
  (2) 続けてmalloc()で1MB程度のメモリを獲得。
    → 獲得に失敗。
  但し、(1)で1GB未満(900MB程度を確認)では発生せず。

  そのほかの条件として、
   −MPICH-SCoreを利用すると発生。フリーのMPICHでは発生しない。
   −1x1の場合は発生しない。並列ジョブでは発生。

実行環境はRedHatLinux8.0+SCore5.6.1 です。
実行プログラム(ソース)と実行結果を添付します。

以上、宜しくお願いします。

---
川口 ==> m-kawaguchi @ pst.fujitsu.com

------=_NextPart_000_0015_01C3D5CF.B8EEF340
Content-Type: application/octet-stream;
	name="malloc.c"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="malloc.c"

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include "mpi.h"

int
main(int argc, char *argv[])
{
        int     rank, size, root;
        int     data, result;

        result =3D -100;

        MPI_Init(&argc, &argv);
        MPI_Comm_rank(MPI_COMM_WORLD, &rank);
        MPI_Comm_size(MPI_COMM_WORLD, &size);

        data =3D rank;

{
int n;
void *p;
/*n=3D900000000;*/
n=3D1000000000;
printf("%d  %08lx\n",n,p=3Dmalloc(n));
n=3D1048576;
printf("%d  %08lx\n",n,p=3Dmalloc(n));
n=3D1048576/2;
printf("%d  %08lx\n",n,p=3Dmalloc(n));
n=3D1048576/2;
printf("%d  %08lx\n",n,p=3Dmalloc(n));
n=3D1048576/2;
printf("%d  %08lx\n",n,p=3Dmalloc(n));
n=3D1048576/2;
printf("%d  %08lx\n",n,p=3Dmalloc(n));
}
        if (rank =3D=3D 0) {
                fprintf(stdout, "MPI communication start. size=3D%d\n", =
size);
                fflush(stdout);
        }

        root =3D 0;
        MPI_Reduce(&data, &result, 1, MPI_INT, MPI_SUM, root, =
MPI_COMM_WORLD);

        if (rank =3D=3D 0) {
                fprintf(stdout, "MPI communication end\n");
                fprintf(stdout, "result is 0+1+...size-1.check =
result(%d)\n",
                    result);
                fflush(stdout);
        }

        MPI_Finalize();
        return 0;
}

------=_NextPart_000_0015_01C3D5CF.B8EEF340
Content-Type: text/plain;
	name="log.txt"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="log.txt"

(1)=90=E6=82=C91GB=8Al=93=BE=81i1x1=82=C5=8E=C0=8E{)=81@=96=E2=91=E8=82=C8=
=82=B5=81B
$ scrun -group=3Dall,nodes=3D1x1 ./c.out.1G
SCOUT: Spawning done.
SCore-D 5.7.0 connected.
<0:0> SCORE: One node ready.
1000000000  40013008
1048576  7b9c1008          <----- =
=8Al=93=BE=82=C5=82=AB=82=C4=82=A2=82=E9=81B
524288  7bac2008
524288  7bb43008
524288  7bbc4008
524288  7bc45008
MPI communication start. size=3D1
MPI communication end
result is 0+1+...size-1.check result(0)
SCOUT: Session done.

(2)=90=E6=82=C91GB=8Al=93=BE (1x2=82=C5=8E=C0=8E{) =
=96=E2=91=E8=82=A0=82=E8=81B
$ scrun -group=3Dall,nodes=3D1x2 ./c.out.1G
SCOUT: Spawning done.
SCore-D 5.7.0 connected.
<0:0> SCORE: 2 nodes (1x2) ready.
1000000000  40034008
1048576  00000000          <----- =
=8Al=93=BE=82=C5=82=AB=82=C4=82=A2=82=C8=82=A2=81B
524288  7ba00490
524288  7bb00018
524288  7bc00018
524288  7bd00018
MPI communication start. size=3D2
1000000000  40034008
1048576  00000000
524288  7ba00490
524288  7bb00018
524288  7bc00018
524288  7bd00018
MPI communication end
result is 0+1+...size-1.check result(1)
SCOUT: Session done.

(3)=90=E6=82=C91GB=8Al=93=BE (2x1=82=C5=8E=C0=8E{) =
=96=E2=91=E8=82=A0=82=E8=81B
$ scrun -group=3Dall,nodes=3D2x1 ./c.out.1G
SCOUT: Spawning done.
SCore-D 5.7.0 connected.
<0:0> SCORE: 2 nodes (2x1) ready.
1000000000  4005a008
1048576  00000000=81@=81@=81@=81@=81@<------- =
=8Al=93=BE=82=C5=82=AB=82=C4=82=A2=82=C8=82=A2=81B
524288  7bb00490
524288  7bc00018
524288  7bd00018
524288  7be00018
1000000000  4005a008
1048576  00000000
524288  7bb00490
524288  7bc00018
524288  7bd00018
524288  7be00018
MPI communication start. size=3D2
MPI communication end
result is 0+1+...size-1.check result(1)
SCOUT: Session done.


(4)=90=E6=82=C9900MB=8Al=93=BE (1x1=82=C5=8E=C0=8E{) =
=96=E2=91=E8=82=C8=82=B5=81B
[hagi @ B4 2003.12.29_malloc]$ scrun -group=3Dall,nodes=3D1x1 ./c.out.900
SCOUT: Spawning done.
SCore-D 5.7.0 connected.
<0:0> SCORE: One node ready.
900000000  40013008
1048576  75a63008=81@       <----------- =
=8Al=93=BE=82=C5=82=AB=82=C4=82=A2=82=E9=81B
524288  75b64008
524288  75be5008
524288  75c66008
524288  75ce7008
MPI communication start. size=3D1
MPI communication end
result is 0+1+...size-1.check result(0)
SCOUT: Session done.

(5)=90=E6=82=C9900MB=8Al=93=BE (1x2=82=C5=8E=C0=8E{) =
=96=E2=91=E8=82=C8=82=B5=81B
$ scrun -group=3Dall,nodes=3D1x2 ./c.out.900
SCOUT: Spawning done.
SCore-D 5.7.0 connected.
<0:0> SCORE: 2 nodes (1x2) ready.
900000000  08575268
1048576  3dfc3b70=81@       <----------- =
=8Al=93=BE=82=C5=82=AB=82=C4=82=A2=82=E9=81B
524288  3e0c3b78
524288  3e143b80
524288  3e1c3b88
524288  3e243b90
MPI communication start. size=3D2
MPI communication end
result is 0+1+...size-1.check result(1)
900000000  08575268
1048576  3dfc3b70
524288  3e0c3b78
524288  3e143b80
524288  3e1c3b88
524288  3e243b90
SCOUT: Session done.

(6)=90=E6=82=C9900MB=8Al=93=BE (2x1=82=C5=8E=C0=8E{) =
=96=E2=91=E8=82=C8=82=B5=81B
$ scrun -group=3Dall,nodes=3D2x1 ./c.out.900
SCOUT: Spawning done.
SCore-D 5.7.0 connected.
<0:0> SCORE: 2 nodes (2x1) ready.
900000000  085756c0
1048576  3dfc3fc8=81@       <----------- =
=8Al=93=BE=82=C5=82=AB=82=C4=82=A2=82=E9=81B
524288  3e0c3fd0
524288  3e143fd8
524288  3e1c3fe0
524288  3e243fe8
MPI communication start. size=3D2
MPI communication end
result is 0+1+...size-1.check result(1)
900000000  085756c0
1048576  3dfc3fc8
524288  3e0c3fd0
524288  3e143fd8
524288  3e1c3fe0
524288  3e243fe8
SCOUT: Session done.

------=_NextPart_000_0015_01C3D5CF.B8EEF340--




SCore-users-jp メーリングリストの案内