SMP Kernel Problem -> nicht mehr als 39 Cores (Solved)

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Neon03
Beiträge: 90
Registriert: 13.03.2006 16:15:15

SMP Kernel Problem -> nicht mehr als 39 Cores (Solved)

Beitrag von Neon03 » 20.05.2011 17:11:27

Hallo liebe Debian Gemeinde,

ich betreibe einige Rechencluster. Nun besteht folgendes Problem. Ich lasse ein MPI Programm laufen (Testprogramm). Das Programm ist ein Beispielprogramm der MPI Suite. Jedoch weigert sich das Programm zu starten, ab einer Zahl von 39 Cores.

Nun habe ich mich etwas mit den Kernel Optionen beschaeftigt und bin auf folgenden Parameter gestossen, der aber mein Problem keinesfalls behebt:
maxcpus= [SMP] Maximum number of processors that an SMP kernel should make use of
Kann mir jemand weiterhelfen

Danke
Zuletzt geändert von Neon03 am 25.05.2011 09:14:12, insgesamt 2-mal geändert.

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: SNMP Kernel Problem -> nicht mehr als 39 Cores

Beitrag von syssi » 20.05.2011 21:10:31

Korrigier mal das "SNMP" zu einem "SMP", dann stehen die Chancen etwas besser, dass dir jemand hilft. :-)

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: SNMP Kernel Problem -> nicht mehr als 39 Cores

Beitrag von rendegast » 21.05.2011 12:11:59

Die amd64-Kernel 2.6.38-2 und 2.6.32-5 haben
CONFIG_NR_CPUS=512

Die 686[-bigmem] haben
CONFIG_NR_CPUS=32

sparc, sparc64 ?

http://www.mcs.anl.gov/research/project ... suite.html
welches?
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Neon03
Beiträge: 90
Registriert: 13.03.2006 16:15:15

Re: SMP Kernel Problem -> nicht mehr als 39 Cores

Beitrag von Neon03 » 24.05.2011 14:05:17

Maschine mit 48 Cores

Code: Alles auswählen

:> uname -a

2.6.34.7-0.7-default #1 SMP 2010-12-13 11:13:53 +0100 x86_64 x86_64 x86_64 GNU/Linux

Code: Alles auswählen

:> cat /boot/config-2.6.5_H_01_04  |grep CONFIG_NR_CPUS
CONFIG_NR_CPUS=512

Nun mein testlauf mit einem MPI Testprogramm

Code: Alles auswählen

:> mpicc -o cpi cpi.c 

Code: Alles auswählen

mpirun -np 39 ./cpi 
-> laeuft
pi is approximately 3.1416009869231245, Error is 0.0000083333333314
wall clock time = 0.021516

Code: Alles auswählen

mpirun -np 39 ./cpi 
-> programm laeuft zwar aber spuckt folgenden Fehler aus
mpirun.ch_shmem: line 91: 6310 Abgebrochen

Code: Alles auswählen

mpirun -np 40 ./cpi 
-> fehler
exceeding max num of p4 semids
8
/usr/local/mpich-smp/1.2.7p1/intel/bin/mpirun.ch_shmem: line 91: 5071 Abgebrochen

Hat noch jemand eine Idee?

Danke

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: SMP Kernel Problem -> nicht mehr als 39 Cores

Beitrag von rendegast » 24.05.2011 15:34:06

exceeding max num of p4 semids
8
/usr/local/mpich-smp/1.2.7p1/intel/bin/mpirun.ch_shmem: line 91: 5071 Abgebrochen
(1.2.7 gibt es auch von debian, Jul 2009)
Dazu:
http://compbio.cs.toronto.edu/repos/sno ... p2psemop.c

Code: Alles auswählen

/* This is the SYSV_IPC from p4.  This is needed under SunOS 4.x, since 
   SunOS has no mutex/msem routines */
...
...
#ifndef P2_MAX_SYSV_SEMIDS 
#define P2_MAX_SYSV_SEMIDS 8
#endif
/* Information on the semaphores is in shared memory */
/* sysv_semid0 is the semaphore id used to manage the assignment of semaphore
   ids in p2p_lock_init, and is the one lock that must be allocated before
   p2p_lock_init is called.  

   A previous version used this same "lock" (semaphore id) to manage the
   xx_shmalloc critical section, thus reducing by one the use of scarce
   Sysv ipc's.  
 */
...
...
    p2p_lock(&(p2_global->slave_lock));
    setnum = p2_global->sysv_next_lock / 10;
    if (setnum > P2_MAX_SYSV_SEMIDS)
    {
	p2p_error("exceeding max num of p4 semids\n",P2_MAX_SYSV_SEMIDS);
    }
Also mutexe / semaphoren,
dazu http://git.kernel.org/?p=linux/kernel/g ... design.txt

Bei Dir in der config irgendwas mit MUTEX ?
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Neon03
Beiträge: 90
Registriert: 13.03.2006 16:15:15

Re: SMP Kernel Problem -> nicht mehr als 39 Cores

Beitrag von Neon03 » 24.05.2011 17:26:27

Code: Alles auswählen

:> cat config-2.6.34.7-0.7-default |grep MUTEX
CONFIG_RT_MUTEXES=y
CONFIG_MUTEX_SPIN_ON_OWNER=y
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_MUTEXES is not set

den Auszug aus dem Quellcode hab ich auch schon gefunden. Jedoch nutzt er mir nichts. Leider

Neon03
Beiträge: 90
Registriert: 13.03.2006 16:15:15

Re: SMP Kernel Problem -> nicht mehr als 39 Cores

Beitrag von Neon03 » 25.05.2011 09:07:39

wuerde nochmals versuchen mpich smp zu kompilieren und am source code eine kleine aenderung vorzunehmen

Code: Alles auswählen

/* This is the SYSV_IPC from p4.  This is needed under SunOS 4.x, since 
   SunOS has no mutex/msem routines */
...
...
#ifndef P2_MAX_SYSV_SEMIDS 
#define P2_MAX_SYSV_SEMIDS 8 //AENDERUNG VORNEHMEN
#endif
/* Information on the semaphores is in shared memory */
/* sysv_semid0 is the semaphore id used to manage the assignment of semaphore
   ids in p2p_lock_init, and is the one lock that must be allocated before
   p2p_lock_init is called.  

   A previous version used this same "lock" (semaphore id) to manage the
   xx_shmalloc critical section, thus reducing by one the use of scarce
   Sysv ipc's.  
*/
...
...
    p2p_lock(&(p2_global->slave_lock));
    setnum = p2_global->sysv_next_lock / 10;
    if (setnum > P2_MAX_SYSV_SEMIDS)
    {
   p2p_error("exceeding max num of p4 semids\n",P2_MAX_SYSV_SEMIDS);
    }
]

Neon03
Beiträge: 90
Registriert: 13.03.2006 16:15:15

Re: SMP Kernel Problem -> nicht mehr als 39 Cores

Beitrag von Neon03 » 25.05.2011 09:13:44

Die Aenderung hat tatsaelich mein Problem geloesst. (mpich-1.2.x/mpid/ch_shmem/p2psemop.c

Code: Alles auswählen

/* This is the SYSV_IPC from p4.  This is needed under SunOS 4.x, since 
   SunOS has no mutex/msem routines */
...
...
#ifndef P2_MAX_SYSV_SEMIDS 
#define P2_MAX_SYSV_SEMIDS 64 //AENDERUNG VON 8 AUF 64
#endif
/* Information on the semaphores is in shared memory */
/* sysv_semid0 is the semaphore id used to manage the assignment of semaphore
   ids in p2p_lock_init, and is the one lock that must be allocated before
   p2p_lock_init is called.  

   A previous version used this same "lock" (semaphore id) to manage the
   xx_shmalloc critical section, thus reducing by one the use of scarce
   Sysv ipc's.  
*/
...
...
    p2p_lock(&(p2_global->slave_lock));
    setnum = p2_global->sysv_next_lock / 10;
    if (setnum > P2_MAX_SYSV_SEMIDS)
    {
   p2p_error("exceeding max num of p4 semids\n",P2_MAX_SYSV_SEMIDS);
    }

Benutzeravatar
schorsch_76
Beiträge: 2612
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: SMP Kernel Problem -> nicht mehr als 39 Cores (Solved)

Beitrag von schorsch_76 » 25.05.2011 09:33:32

Kleine Frage, da es mich interessiert: Was hast du da für ein System mit 48 Cores?

Gruß
schorsch

Liffi
Beiträge: 2345
Registriert: 02.10.2004 01:33:05

Re: SMP Kernel Problem -> nicht mehr als 39 Cores (Solved)

Beitrag von Liffi » 25.05.2011 09:37:11

Ich rate mal: ein (sehr) kleines Intel Paragon System?

Neon03
Beiträge: 90
Registriert: 13.03.2006 16:15:15

Re: SMP Kernel Problem -> nicht mehr als 39 Cores (Solved)

Beitrag von Neon03 » 25.05.2011 10:16:16

ein SMP Maschine -> 8x6 Core Opteron Processor 8439
512 GB Ram. Davon 4 via Infiniband zusammengeschalten....

Benutzeravatar
schorsch_76
Beiträge: 2612
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: SMP Kernel Problem -> nicht mehr als 39 Cores (Solved)

Beitrag von schorsch_76 » 25.05.2011 12:45:27

Was ist denn das für ein Mainboard? Oder ist das ein fertiger Server?

Neon03
Beiträge: 90
Registriert: 13.03.2006 16:15:15

Re: SMP Kernel Problem -> nicht mehr als 39 Cores (Solved)

Beitrag von Neon03 » 30.05.2011 09:16:00

fertiger server

Antworten