From b1a579b2bf3d8838bb6aaa2070ddbd78ee55b404 Mon Sep 17 00:00:00 2001 From: asau Date: Wed, 24 Nov 2010 01:56:13 +0000 Subject: Update to OpenMPI 1.4.3 New in 1.4.3 ------------ - Fixed handling of the array_of_argv parameter in the Fortran binding of MPI_COMM_SPAWN_MULTIPLE. - Fixed a problem with the Fortran binding for MPI_FILE_CREATE_ERRHANDLER. Thanks to Secretan Yves for identifying the issue. - Updates to the LSF PLM to ensure that the path is correctly passed. Thanks to Teng Lin for the patch. - Fixes for the F90 MPI_COMM_SET_ERRHANDLER and MPI_WIN_SET_ERRHANDLER bindings. Thanks to Paul Kapinos for pointing out the issue. - Fixed various MPI_THREAD_MULTIPLE race conditions. - Fixed an issue with an undeclared variable from ptmalloc2 munmap on BSD systems. - Fixes for BSD interface detection. - Various other BSD fixes. Thanks to Kevin Buckley helping to track. all of this down. - Fixed issues with the use of the -nper* mpirun command line arguments. - Fixed an issue with coll tuned dynamic rules. - Fixed an issue with the use of OPAL_DESTDIR being applied too aggressively. - Fixed an issue with one-sided xfers when the displacement exceeds 2GBytes. - Change to ensure TotalView works properly on Darwin. - Added support for Visual Studio 2010. - Fix to ensure proper placement of VampirTrace header files. - Needed to add volatile keyword to a varialbe used in debugging (MPIR_being_debugged). - Fixed a bug in inter-allgather. - Fixed malloc(0) warnings. - Corrected a typo the MPI_Comm_size man page (intra -> inter). Thanks to Simon number.cruncher for pointing this out. - Fixed a SegV in orted when given more than 127 app_contexts. - Removed xgrid source code from the 1.4 branch since it is no longer supported in the 1.4 series. - Removed the --enable-opal-progress-threads config option since opal progress thread support does not work in 1.4.x. - Fixed a defect in VampirTrace's vtfilter. - Fixed wrong Windows path in hnp_contact. - Removed the requirement for a paffinity component. - Removed a hardcoded limit of 64 interconnected jobs. - Fix to allow singletons to use ompi-server for rendezvous. - Fixed bug in output-filename option. - Fix to correctly handle failures in mx_init(). - Fixed a potential Fortran memory leak. - Fixed an incorrect branch in some ppc32 assembly code. Thanks to Matthew Clark for this fix. - Remove use of undocumented AS_VAR_GET macro during configuration. - Fixed an issue with VampirTrace's wrapper for MPI_init_thread. - Updated mca-btl-openib-device-params.ini file with various new vendor id's. - Configuration fixes to ensure CPPFLAGS in handled properly if a non-standard valgrind location was specified. - Various man page updates --- parallel/openmpi/Makefile | 4 +- parallel/openmpi/PLIST | 3 +- parallel/openmpi/distinfo | 10 +-- parallel/openmpi/patches/patch-ah | 174 -------------------------------------- 4 files changed, 9 insertions(+), 182 deletions(-) (limited to 'parallel') diff --git a/parallel/openmpi/Makefile b/parallel/openmpi/Makefile index cbb8a2f5b55..25298e9455c 100644 --- a/parallel/openmpi/Makefile +++ b/parallel/openmpi/Makefile @@ -1,6 +1,6 @@ -# $NetBSD: Makefile,v 1.6 2010/07/30 10:36:34 asau Exp $ +# $NetBSD: Makefile,v 1.7 2010/11/24 01:56:13 asau Exp $ -DISTNAME= openmpi-1.4.2 +DISTNAME= openmpi-1.4.3 CATEGORIES= parallel MASTER_SITES= http://www.open-mpi.org/software/ompi/v1.4/downloads/ EXTRACT_SUFX= .tar.bz2 diff --git a/parallel/openmpi/PLIST b/parallel/openmpi/PLIST index 7c3c4ebce82..7c3894a259c 100644 --- a/parallel/openmpi/PLIST +++ b/parallel/openmpi/PLIST @@ -1,4 +1,4 @@ -@comment $NetBSD: PLIST,v 1.3 2010/05/14 20:12:58 asau Exp $ +@comment $NetBSD: PLIST,v 1.4 2010/11/24 01:56:13 asau Exp $ bin/mpiCC bin/mpic++ bin/mpicc @@ -479,6 +479,7 @@ share/openmpi/help-mca-coll-base.txt share/openmpi/help-mca-param.txt share/openmpi/help-mpi-api.txt share/openmpi/help-mpi-btl-base.txt +share/openmpi/help-mpi-btl-tcp.txt share/openmpi/help-mpi-common-sm.txt share/openmpi/help-mpi-errors.txt share/openmpi/help-mpi-runtime.txt diff --git a/parallel/openmpi/distinfo b/parallel/openmpi/distinfo index ff238b9fb5a..306ffced1aa 100644 --- a/parallel/openmpi/distinfo +++ b/parallel/openmpi/distinfo @@ -1,8 +1,8 @@ -$NetBSD: distinfo,v 1.3 2010/05/14 20:12:58 asau Exp $ +$NetBSD: distinfo,v 1.4 2010/11/24 01:56:13 asau Exp $ -SHA1 (openmpi-1.4.2.tar.bz2) = 3e85092433d0e399cc7a51c018f9d13562f78b80 -RMD160 (openmpi-1.4.2.tar.bz2) = 2c9fbcc8f77e7fa28e2bd062875d484548cc0b79 -Size (openmpi-1.4.2.tar.bz2) = 6630550 bytes +SHA1 (openmpi-1.4.3.tar.bz2) = 9d24b6969d73605904855eb32d40d6b07e231932 +RMD160 (openmpi-1.4.3.tar.bz2) = 087532de57244c03941421162caa9e5537b4eba1 +Size (openmpi-1.4.3.tar.bz2) = 6626909 bytes SHA1 (patch-aa) = dfc2eb59ea592823d93a7ae3e223e703450201ad SHA1 (patch-ab) = c4be561af983b38803ba1f76a4ff5a6646072c3a SHA1 (patch-ac) = 2eb37bf842278c712561e30457d7e00889d12dcd @@ -10,7 +10,7 @@ SHA1 (patch-ad) = ee74acac5c7a7b022ee9a03957f8f3d71c2579fd SHA1 (patch-ae) = a4848899dcd0413caa1c99832477a4bd86b51112 SHA1 (patch-af) = 812e623c39235098565762c098a40c1cb4f51f23 SHA1 (patch-ag) = fc29742c423d2376893d4d5c3da7a0514f311262 -SHA1 (patch-ah) = bbc7422eeede4468590262ee84c54d8d0b911445 +SHA1 (patch-ah) = da39a3ee5e6b4b0d3255bfef95601890afd80709 SHA1 (patch-ai) = e341eefb09df978cf1d43c2176f5f8c6d09f703e SHA1 (patch-aj) = 4521e29de16a6cd5bf1a9ea7677b51cd0e6eb86c SHA1 (patch-ak) = d9a10360eec6dab95e08d4ac0a4d7da603ac4737 diff --git a/parallel/openmpi/patches/patch-ah b/parallel/openmpi/patches/patch-ah index ff603615f22..e69de29bb2d 100644 --- a/parallel/openmpi/patches/patch-ah +++ b/parallel/openmpi/patches/patch-ah @@ -1,174 +0,0 @@ -$NetBSD: patch-ah,v 1.1.1.1 2009/12/12 23:30:01 asau Exp $ - -Rewrite network interface configuration using getifaddrs(3) for BSD, -this should fix OpenMPI for NetBSD. By Kevin M. Buckley. - ---- opal/util/if.c.orig 2009-12-08 23:36:09.000000000 +0300 -+++ opal/util/if.c 2009-12-13 00:06:38.000000000 +0300 -@@ -38,6 +38,9 @@ - #endif - #ifdef HAVE_NETINET_IN_H - #include -+#if defined(__DragonFly__) -+#define IN_LINKLOCAL(i) (((u_int32_t)(i) & 0xffff0000) == 0xa9fe0000) -+#endif - #endif - #ifdef HAVE_ARPA_INET_H - #include -@@ -164,6 +167,145 @@ - false, false, (int)false, &sd); - do_not_resolve = OPAL_INT_TO_BOOL(sd); - -+#if defined(__NetBSD__) || defined(__FreeBSD__) || \ -+ defined(__OpenBSD__) || defined(__DragonFly__) -+ /* configure using getifaddrs(3) */ -+ { -+ OBJ_CONSTRUCT(&opal_if_list, opal_list_t); -+ -+ struct ifaddrs **ifadd_list; -+ struct ifaddrs *cur_ifaddrs; -+ struct sockaddr_in* sin_addr; -+ -+ /* -+ * the manpage claims that getifaddrs() allocates the memory, -+ * and freeifaddrs() is later used to release the allocated memory. -+ * however, without this malloc the call to getifaddrs() segfaults -+ */ -+ ifadd_list = (struct ifaddrs **) malloc(sizeof(struct ifaddrs*)); -+ -+ /* create the linked list of ifaddrs structs */ -+ if(getifaddrs(ifadd_list) < 0) { -+ opal_output(0, "opal_ifinit: getifaddrs() failed with error=%d\n", -+ errno); -+ return OPAL_ERROR; -+ } -+ -+ for(cur_ifaddrs = *ifadd_list; NULL != cur_ifaddrs; -+ cur_ifaddrs = cur_ifaddrs->ifa_next) { -+ -+ opal_if_t intf; -+ opal_if_t *intf_ptr; -+ struct in_addr a4; -+ -+#if 0 -+ printf("interface %s.\n", cur_ifaddrs->ifa_name); -+#endif -+ /* skip non- af_inet interface addresses */ -+ if(AF_INET != cur_ifaddrs->ifa_addr->sa_family) { -+#if 0 -+ printf("skipping non- af_inet interface %s, family %d.\n", -+ cur_ifaddrs->ifa_name, cur_ifaddrs->ifa_addr->sa_family); -+#endif -+ continue; -+ } -+ -+ /* skip interface if it is down (IFF_UP not set) */ -+ if(0 == (cur_ifaddrs->ifa_flags & IFF_UP)) { -+#if 0 -+ printf("skipping non-up interface %s.\n", cur_ifaddrs->ifa_name); -+#endif -+ continue; -+ } -+ -+ /* skip interface if it is a loopback device (IFF_LOOPBACK set) */ -+ /* or if it is a point-to-point interface */ -+ /* TODO: do we really skip p2p? */ -+ if(0 != (cur_ifaddrs->ifa_flags & IFF_LOOPBACK) -+ || 0!= (cur_ifaddrs->ifa_flags & IFF_POINTOPOINT)) { -+#if 0 -+ printf("skipping loopback interface %s.\n", cur_ifaddrs->ifa_name); -+#endif -+ continue; -+ } -+ -+#if 0 -+ printf("sa_len %d.\n", cur_ifaddrs->ifa_addr->sa_len); -+#endif -+ sin_addr = (struct sockaddr_in *) cur_ifaddrs->ifa_addr; -+ -+ /* Do we really need to skip link-local addresses? */ -+#if 0 -+ /* skip link local address: */ -+ if(IN_LINKLOCAL (htonl(((struct sockaddr_in*)cur_ifaddrs->ifa_addr)->sin_addr.s_addr))) { -+#if 0 -+ opal_output(0, "opal_ifinit: skipping link-local ip address on interface %s.\n", -+ cur_ifaddrs->ifa_name); -+#endif -+ continue; -+ } -+#endif -+ -+ memset(&intf, 0, sizeof(intf)); -+ OBJ_CONSTRUCT(&intf, opal_list_item_t); -+#if 0 -+ char *addr_name = (char *) malloc(48*sizeof(char)); -+ inet_ntop(AF_INET, &sin_addr->sin_addr, addr_name, 48*sizeof(char)); -+ opal_output(0, "inet capable interface %s discovered, address %s.\n", -+ cur_ifaddrs->ifa_name, addr_name); -+ free(addr_name); -+#endif -+ -+ /* fill values into the opal_if_t */ -+ memcpy(&a4, &(sin_addr->sin_addr), sizeof(struct in_addr)); -+ -+ strncpy(intf.if_name, cur_ifaddrs->ifa_name, IF_NAMESIZE); -+ intf.if_index = opal_list_get_size(&opal_if_list) + 1; -+ ((struct sockaddr_in*) &intf.if_addr)->sin_addr = a4; -+ ((struct sockaddr_in*) &intf.if_addr)->sin_family = AF_INET; -+ ((struct sockaddr_in*) &intf.if_addr)->sin_len = cur_ifaddrs->ifa_addr->sa_len; -+ -+ /* since every scope != 0 is ignored, we just set the scope to 0 */ -+ /* There's no scope_id in the non-ipv6 stuff -+ ((struct sockaddr_in6*) &intf.if_addr)->sin6_scope_id = 0; -+ */ -+ -+ /* -+ * hardcoded netmask, adrian says that's ok -+ */ -+ /* Non-NetBSD uses intf.if_mask = prefix(((struct sockaddr_in*) &ifr->ifr_addr)->sin_addr.s_addr); */ -+ /* intf.if_mask = 64; */ -+ intf.if_mask = prefix( sin_addr->sin_addr.s_addr); -+ intf.if_flags = cur_ifaddrs->ifa_flags; -+ -+ /* -+ * FIXME: figure out how to gain access to the kernel index -+ * (or create our own), getifaddrs() does not contain such -+ * data -+ */ -+ -+ intf.if_kernel_index = (uint16_t) if_nametoindex(cur_ifaddrs->ifa_name); -+ -+ intf_ptr = (opal_if_t*) calloc(1, sizeof(opal_if_t)); -+ if(NULL == intf_ptr) { -+ opal_output(0, "opal_ifinit: unable to allocate %lu bytes\n", -+ sizeof(opal_if_t)); -+ OBJ_DESTRUCT(&intf); -+ return OPAL_ERR_OUT_OF_RESOURCE; -+ } -+ memcpy(intf_ptr, &intf, sizeof(intf)); -+ -+#if 0 -+ printf("About to append interface %s.\n", cur_ifaddrs->ifa_name); -+#endif -+ /* opal_list_append(&opal_if_list, &intf_ptr->super); */ -+ opal_list_append(&opal_if_list, (opal_list_item_t*) intf_ptr); -+ -+ OBJ_DESTRUCT(&intf); -+ } /* of for loop over ifaddrs list */ -+ -+ } -+#else - /* create the internet socket to test off */ - /* - Change AF_INET to AF_UNSPEC (or AF_INET6) and everything will fail. -@@ -356,6 +498,10 @@ - } - free(ifconf.ifc_req); - close(sd); -+ -+#endif /* anything other than {Net,Open,Free}BSD and DragonFly */ -+ -+ - #if OPAL_WANT_IPV6 - #ifdef __linux__ /* Linux does not have SIOCGL*, so parse - /proc/net/if_inet6 instead */ -- cgit v1.2.3