Differences between revisions 2 and 3
Revision 2 as of 2008-03-14 09:25:25
Size: 931
Editor: mohacsi
Comment:
Revision 3 as of 2008-03-14 10:43:54
Size: 8457
Editor: mohacsi
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
#pragma section-numbers on
#acl All:read
[[TableOfContents]]
Line 10: Line 14:
tartalmaz semmilyen IPv6-al kapcsolatos forráskódot. A ./configure
programhoz viszont tartozik egy IPv6 kikapcsolo opció: --disable-ipv6, ami
tartalmaz semmilyen IPv6-al kapcsolatos forráskódot. A {{{./configure}}}
programhoz viszont tartozik egy IPv6 kikapcsoló opció: {{{--disable-ipv6}}}, ami
Line 17: Line 21:
Nagy meglepetés ért minket, amikor felfedeztük, hogy az OpenMPI legfrissebb
svn verziója már tartalmaz IPv6-os függvényhívásokat, például ezt:
sockaddr_storage.
== OpenMPI trunk változat ==

Tovább kutatva felfedeztük azonban, ho
gy az OpenMPI legfrissebb
subversion verziója már tartalmaz IPv6-os függvényhívásokat és IPv6 kompatbilis {{{struct}}} deklarációkat, például ezt:
{{{sockaddr_storage}}}.
Line 22: Line 28:
{{{
svn co http://svn.open-mpi.org/svn/ompi/trunk ompi-trunk
}}}

Fordítás után nem sikerült egyből tesztelni, mert elő jött egy hiba:

{{{
mca: base: component_find: unable to open vprotocol pessimist:
/usr/local/lib/openmpi/mca_vprotocol_pessimist.so: undefined symbol:
mca_pml_v (ignored)
}}}

A következő módosítás megoldotta a problémát:

{{{
--- opal/libltdl/ltdl.c.old 2008-03-07 13:47:39.000000000 +0100
+++ opal/libltdl/ltdl.c 2008-03-07 13:48:05.000000000 +0100
@@ -1096,7 +1096,7 @@
      lt_user_data loader_data;
      const char *filename;
 {
- lt_module module = dlopen (filename, LT_LAZY_OR_NOW);
+ lt_module module = dlopen (filename, RTLD_GLOBAL | LT_LAZY_OR_NOW);

   if (!module)
     {

}}}

=== Tesztelés ===

A OpenMPI telepítője tartalmaz egy examples könyvtárat, az ebben található
programot használtuk fel tesztelésre.

==== Fordítás ====

roczei@knowarc1:~/openmpi/ompi-trunk/examples$ mpicc -o hello_c
hello_c.c
roczei@knowarc1:~/openmpi/ompi-trunk/examples$

==== Konfiguráció ====

Machinefile létrehozása (ez a fájl tartalmazza, hogy mely gépeken fusson
majd a program):

{{{
roczei@knowarc1:~/openmpi/ompi-trunk/examples$ cat ipv6-hosts
knowarc2-ipv6
knowarc1-ipv6
roczei@knowarc1:~/openmpi/ompi-trunk/examples$
}}}

==== Program futtatása ====
{{{
roczei@knowarc1:~/openmpi/ompi-trunk/examples$ mpirun -np 10 -machinefile ipv6-hosts hello_c
Hello, world, I am 3 of 10
Hello, world, I am 0 of 10
Hello, world, I am 4 of 10
Hello, world, I am 6 of 10
Hello, world, I am 1 of 10
Hello, world, I am 5 of 10
Hello, world, I am 7 of 10
Hello, world, I am 2 of 10
Hello, world, I am 8 of 10
Hello, world, I am 9 of 10
roczei@knowarc1:~/openmpi/ompi-trunk/examples$
}}}

A {{{-np}}} kapcsolóval lehet azt megadni, hogy az adott gépen hány példányban
induljon el a program.

==== Teszt eredmény ====

A knowarc2-ipv6-os gépen a netstat a következő eredményt adta alap állapotban
(ekkor nem futott OpenMPI program):

{{{
roczei@knowarc2:~/openmpi/ompi-trunk$ netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:2049 *:* LISTEN
tcp 0 0 *:1859 *:* LISTEN
tcp 0 0 localhost.localdoma:902 *:* LISTEN
tcp 0 0 *:sge_execd *:* LISTEN
tcp 0 0 *:sunrpc *:* LISTEN
tcp 0 0 *:auth *:* LISTEN
tcp 0 0 *:949 *:* LISTEN
tcp 0 0 localhost.localdom:smtp *:* LISTEN
tcp6 0 0 *:ssh *:* LISTEN
udp 0 0 *:1024 *:*
udp 0 0 *:2049 *:*
udp 0 0 *:910 *:*
udp 0 0 *:946 *:*
udp 0 0 *:sunrpc *:*
udp 0 0 knowarc2.grid.niif.:ntp *:*
udp 0 0 localhost.localdoma:ntp *:*
udp 0 0 *:ntp *:*
udp6 0 0 ip6-localhost:ntp *:*
udp6 0 0 *:ntp *:*
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 3358 /var/run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 3478 /dev/printer
roczei@knowarc2:~/openmpi/ompi-trunk$
}}}

Az OpenMPI-os program 10 példányban elindul:
{{{
roczei@knowarc2:~/openmpi/ompi-trunk$ netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:2049 *:* LISTEN
tcp 0 0 *:1859 *:* LISTEN
tcp 0 0 *:2981 *:* LISTEN
tcp 0 0 *:1190 *:* LISTEN
tcp 0 0 localhost.localdoma:902 *:* LISTEN
tcp 0 0 *:3144 *:* LISTEN
tcp 0 0 *:1450 *:* LISTEN
tcp 0 0 *:2476 *:* LISTEN
tcp 0 0 *:3148 *:* LISTEN
tcp 0 0 *:4077 *:* LISTEN
tcp 0 0 *:sge_execd *:* LISTEN
tcp 0 0 *:sunrpc *:* LISTEN
tcp 0 0 *:auth *:* LISTEN
tcp 0 0 *:949 *:* LISTEN
tcp 0 0 *:2422 *:* LISTEN
tcp 0 0 *:3801 *:* LISTEN
tcp 0 0 *:3417 *:* LISTEN
tcp 0 0 localhost.localdom:smtp *:* LISTEN
tcp 0 0 *:2078 *:* LISTEN
tcp6 0 0 *:3456 *:* LISTEN
tcp6 0 0 *:4131 *:* LISTEN
tcp6 0 0 *:2694 *:* LISTEN
tcp6 0 0 *:3590 *:* LISTEN
tcp6 0 0 *:4619 *:* LISTEN
tcp6 0 0 *:1388 *:* LISTEN
tcp6 0 0 *:3727 *:* LISTEN
tcp6 0 0 *:3508 *:* LISTEN
tcp6 0 0 *:ssh *:* LISTEN
tcp6 0 0 *:3735 *:* LISTEN
tcp6 0 0 *:2359 *:* LISTEN
tcp6 0 0 *:4478 *:* LISTEN
udp 0 0 *:1024 *:*
udp 0 0 *:2049 *:*
udp 0 0 *:910 *:*
udp 0 0 *:946 *:*
udp 0 0 *:sunrpc *:*
udp 0 0 knowarc2.grid.niif.:ntp *:*
udp 0 0 localhost.localdoma:ntp *:*
udp 0 0 *:ntp *:*
udp6 0 0 ip6-localhost:ntp *:*
udp6 0 0 *:ntp *:*
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 3358 /var/run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 3478 /dev/printer
roczei@knowarc2:~/openmpi/ompi-trunk$
}}}

Ebből jól látszik, hogy tcp6-os kapcsolatok épültek fel, amikor a hello_c
program 10 példányban elindult a knowarc2-ipv6-on.

== Konklúzió ==

Az OpenMPI már támogatja az IPv6-ot, de ez jelenleg még fejlesztési stádiumban
van.

TableOfContents

1. MPI IPv6 támogatás

1.1. OpenMPI 1.2.5

Innen lehet letölteni: http://www.open-mpi.org/software/ompi/v1.2/downloads/openmpi-1.2.5.tar.gz

Az OpenMPI legújabb verzióját teszteltük le IPv6 támogatás szempontjából. A forráskód átvizsgálása után arra a következtetésre jutottunk, hogy nem tartalmaz semmilyen IPv6-al kapcsolatos forráskódot. A ./configure programhoz viszont tartozik egy IPv6 kikapcsoló opció: --disable-ipv6, ami IPv6 támogatásra utal (ez alapértelmezésben be van kapcsolva). A dokumentációja alapján akkor tudja az IPv6-ot, ha az OpenMPI alatt lévő renszer támogatja azt. Futtattunk egy tesztet, de nem sikerült ezt beigazolni.

1.2. OpenMPI trunk változat

Tovább kutatva felfedeztük azonban, hogy az OpenMPI legfrissebb subversion verziója már tartalmaz IPv6-os függvényhívásokat és IPv6 kompatbilis struct deklarációkat, például ezt: sockaddr_storage.

A trunk verziót ezzel a paranccsal lehet letölteni:

svn co http://svn.open-mpi.org/svn/ompi/trunk ompi-trunk

Fordítás után nem sikerült egyből tesztelni, mert elő jött egy hiba:

mca: base: component_find: unable to open vprotocol pessimist:
/usr/local/lib/openmpi/mca_vprotocol_pessimist.so: undefined symbol:
mca_pml_v (ignored)

A következő módosítás megoldotta a problémát:

--- opal/libltdl/ltdl.c.old     2008-03-07 13:47:39.000000000 +0100
+++ opal/libltdl/ltdl.c 2008-03-07 13:48:05.000000000 +0100
@@ -1096,7 +1096,7 @@
      lt_user_data loader_data;
      const char *filename;
 {
-  lt_module   module   = dlopen (filename, LT_LAZY_OR_NOW);
+  lt_module   module   = dlopen (filename, RTLD_GLOBAL | LT_LAZY_OR_NOW);

   if (!module)
     {

1.2.1. Tesztelés

A OpenMPI telepítője tartalmaz egy examples könyvtárat, az ebben található programot használtuk fel tesztelésre.

1.2.1.1. Fordítás

roczei@knowarc1:~/openmpi/ompi-trunk/examples$ mpicc -o hello_c hello_c.c roczei@knowarc1:~/openmpi/ompi-trunk/examples$

1.2.1.2. Konfiguráció

Machinefile létrehozása (ez a fájl tartalmazza, hogy mely gépeken fusson majd a program):

roczei@knowarc1:~/openmpi/ompi-trunk/examples$  cat ipv6-hosts
knowarc2-ipv6
knowarc1-ipv6
roczei@knowarc1:~/openmpi/ompi-trunk/examples$

1.2.1.3. Program futtatása

roczei@knowarc1:~/openmpi/ompi-trunk/examples$ mpirun -np 10 -machinefile ipv6-hosts hello_c
Hello, world, I am 3 of 10
Hello, world, I am 0 of 10
Hello, world, I am 4 of 10
Hello, world, I am 6 of 10
Hello, world, I am 1 of 10
Hello, world, I am 5 of 10
Hello, world, I am 7 of 10
Hello, world, I am 2 of 10
Hello, world, I am 8 of 10
Hello, world, I am 9 of 10
roczei@knowarc1:~/openmpi/ompi-trunk/examples$

A -np kapcsolóval lehet azt megadni, hogy az adott gépen hány példányban induljon el a program.

1.2.1.4. Teszt eredmény

A knowarc2-ipv6-os gépen a netstat a következő eredményt adta alap állapotban (ekkor nem futott OpenMPI program):

roczei@knowarc2:~/openmpi/ompi-trunk$ netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 *:2049                  *:*                     LISTEN
tcp        0      0 *:1859                  *:*                     LISTEN
tcp        0      0 localhost.localdoma:902 *:*                     LISTEN
tcp        0      0 *:sge_execd             *:*                     LISTEN
tcp        0      0 *:sunrpc                *:*                     LISTEN
tcp        0      0 *:auth                  *:*                     LISTEN
tcp        0      0 *:949                   *:*                     LISTEN
tcp        0      0 localhost.localdom:smtp *:*                     LISTEN
tcp6       0      0 *:ssh                   *:*                     LISTEN
udp        0      0 *:1024                  *:*
udp        0      0 *:2049                  *:*
udp        0      0 *:910                   *:*
udp        0      0 *:946                   *:*
udp        0      0 *:sunrpc                *:*
udp        0      0 knowarc2.grid.niif.:ntp *:*
udp        0      0 localhost.localdoma:ntp *:*
udp        0      0 *:ntp                   *:*
udp6       0      0 ip6-localhost:ntp       *:*
udp6       0      0 *:ntp                   *:*
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     3358 /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     3478     /dev/printer
roczei@knowarc2:~/openmpi/ompi-trunk$

Az OpenMPI-os program 10 példányban elindul:

roczei@knowarc2:~/openmpi/ompi-trunk$ netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 *:2049                  *:*                     LISTEN
tcp        0      0 *:1859                  *:*                     LISTEN
tcp        0      0 *:2981                  *:*                     LISTEN
tcp        0      0 *:1190                  *:*                     LISTEN
tcp        0      0 localhost.localdoma:902 *:*                     LISTEN
tcp        0      0 *:3144                  *:*                     LISTEN
tcp        0      0 *:1450                  *:*                     LISTEN
tcp        0      0 *:2476                  *:*                     LISTEN
tcp        0      0 *:3148                  *:*                     LISTEN
tcp        0      0 *:4077                  *:*                     LISTEN
tcp        0      0 *:sge_execd             *:*                     LISTEN
tcp        0      0 *:sunrpc                *:*                     LISTEN
tcp        0      0 *:auth                  *:*                     LISTEN
tcp        0      0 *:949                   *:*                     LISTEN
tcp        0      0 *:2422                  *:*                     LISTEN
tcp        0      0 *:3801                  *:*                     LISTEN
tcp        0      0 *:3417                  *:*                     LISTEN
tcp        0      0 localhost.localdom:smtp *:*                     LISTEN
tcp        0      0 *:2078                  *:*                     LISTEN
tcp6       0      0 *:3456                  *:*                     LISTEN
tcp6       0      0 *:4131                  *:*                     LISTEN
tcp6       0      0 *:2694                  *:*                     LISTEN
tcp6       0      0 *:3590                  *:*                     LISTEN
tcp6       0      0 *:4619                  *:*                     LISTEN
tcp6       0      0 *:1388                  *:*                     LISTEN
tcp6       0      0 *:3727                  *:*                     LISTEN
tcp6       0      0 *:3508                  *:*                     LISTEN
tcp6       0      0 *:ssh                   *:*                     LISTEN
tcp6       0      0 *:3735                  *:*                     LISTEN
tcp6       0      0 *:2359                  *:*                     LISTEN
tcp6       0      0 *:4478                  *:*                     LISTEN
udp        0      0 *:1024                  *:*
udp        0      0 *:2049                  *:*
udp        0      0 *:910                   *:*
udp        0      0 *:946                   *:*
udp        0      0 *:sunrpc                *:*
udp        0      0 knowarc2.grid.niif.:ntp *:*
udp        0      0 localhost.localdoma:ntp *:*
udp        0      0 *:ntp                   *:*
udp6       0      0 ip6-localhost:ntp       *:*
udp6       0      0 *:ntp                   *:*
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     3358 /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     3478     /dev/printer
roczei@knowarc2:~/openmpi/ompi-trunk$

Ebből jól látszik, hogy tcp6-os kapcsolatok épültek fel, amikor a hello_c program 10 példányban elindult a knowarc2-ipv6-on.

1.3. Konklúzió

Az OpenMPI már támogatja az IPv6-ot, de ez jelenleg még fejlesztési stádiumban van.

Campus6: IPv6mpi (last edited 2008-04-10 15:29:40 by localhost)