Hi Jeff
I used the configure option:

--enable-ptmalloc2-opt-sbrk

To solve a segmentation fault in memory allocation with openmpi.1.2.x and
PGI 7.1-4 and 7.2.

I have a simple source code (Callocrash.c) as example of this (see belowe).

Could you test this code on a node with 8 Gbyte of RAM and RedHat enterprise
4+ openmpi 1.2.x, PGI 7.1-4.

I compiled it with:

 pgcc -o Callocrash Callocreash.c   (it's ok)
 gnu4 -o Callocrash Callocreash.c   (it's ok)
 mpicc -o Callocrash Callocreash.c   (Segmentation fault in sysMALLOC when
it has to allocate 622947588 bytes)

However thanks in advance

greetings


Callocrash.c


#include <stdio.h>
#include <stdlib.h>

int main( int argc, char *argv[])
{
        /*
         *  memory allocations simulation for ~50M nonzeros:
         *  nd=180 md=350 mdy=420
         *
         *  if this program crashes, there is a compiler problem
         */
        printf("memory allocations simulation for ~50M nonzeros:  nd=180
md=350 mdy=420\n");
        printf("if this program crashes, there check your
compiler/environment configuration\n");

        printf("sizeof(int)    %d\n",sizeof(int));
        printf("sizeof(int*)   %d\n",sizeof(int*));
        printf("sizeof(size_t) %d\n",sizeof(size_t));

        if( sizeof(size_t)<8 || sizeof(int*)<8 )
        {
                printf("please compile this program for a 64 bit
environment!\n");
        return -1;
        }

        int *p;

        printf("allocation 1/4..\n");
        p = calloc(47109185,16);
        if(!p)printf("..failed.\n");
        printf("allocation 2/4..\n");
        p = calloc(47109185,4);
        if(!p)printf("..failed.\n");
        printf("allocation 3/4..\n");
        p = calloc(47109185,4);
        if(!p)printf("..failed.\n");
        printf("allocation 4/4..\n");

        p = calloc(622947588,16);
        if(!p)printf("..failed.\n");
        if(!p) return -1;

        printf("allocations test passed (no crash)\n");
        return 0;
}


On 15/10/08 19:42, "Jeff Squyres" <jsquy...@cisco.com> wrote:

> On Oct 15, 2008, at 9:35 AM, Francesco Iannone wrote:
> 
>> I have a cluster of 16 nodes DualCPU DualCore AMD  RAM 16 GB with
>> InfiniBand
>> CISCO HCA and switch InfiniBand.
>> It uses Linux RH Enterprise 4  64 bit , OpenMPI 1.2.7, PGI 7.1-4 and
>> openib-1.2-7.
>> 
>> Hence it means that the option ‹disable-ptmalloc2 is catastrophic in
>> the
>> above configuration.
> 
> Actually, I notice that in your original message, you said "--disable-
> ptmalloc2-opt-sbrk", but here you said "--disable-ptmalloc2".  The
> former is:
> 
>                            Only trigger callbacks when sbrk is used
> for small
>                            allocations, rather than every call to
> malloc/free.
>                            (default: enabled)
> 
> So it should be fine to disable; it shouldn't affect overall MPI
> performance too much.
> 
> The latter disables ptmalloc2 entirely (and you'll likely get lower
> benchmark bandwidth for large messages).
> 
> I'm unaware of either of these options leading to problems with the
> PGI compiler suite; I have tested OMPI v1.2.x with several versions of
> the PGI compiler without problem (although my latest version is PGI
> 7.1-4).

Dr. Francesco Iannone
Associazione EURATOM-ENEA sulla Fusione
C.R. ENEA Frascati
Via E. Fermi 45
00044 Frascati (Roma) Italy
phone 00-39-06-9400-5124
fax 00-39-06-9400-5524
mailto:francesco.iann...@frascati.enea.it
http://www.afs.enea.it/iannone



Reply via email to