Skip to content
Scalable dynamic library and python loading in HPC environments
C Shell C++
Find file
Latest commit 0baeb33 Apr 15, 2014 @mplegendre mplegendre Merge branch 'master' of github.com:hpc/Spindle
Conflicts:
	README
	configure
	configure.ac
Failed to load latest commit information.
doc Allow static linking of libmunge Apr 14, 2014
m4 Fix build so munge-dependant launchmon cooperates with munge-dependan… Apr 14, 2014
scripts Have autoconf choose compilers for client/server/fe sub projects Feb 14, 2014
src Fix gcc46 and gcc48 compiler warnings Apr 15, 2014
testsuite Change contents of test generated libraries to speed up compilation Apr 15, 2014
.gitignore Add testsuite build files to gitignore Feb 14, 2014
BUG_EMAIL Reorganize spindle source into client/server/fe directories to allow … Feb 7, 2014
CHANGELOG Add CHANGELOG Apr 15, 2014
COPYRIGHT Update copyright year Apr 14, 2014
INSTALL Write new INSTALL documentation file. Update README file. Apr 15, 2014
LGPL Add copyright headers and LGPL license information Apr 4, 2013
Makefile.am Fix up man page in build Apr 14, 2014
Makefile.in Merge branch 'master' of github.com:hpc/Spindle Apr 15, 2014
README Write new INSTALL documentation file. Update README file. Apr 15, 2014
VERSION Update spindle version to 0.9 Mar 12, 2014
aclocal.m4 Added new build system based around autoconf and automake Sep 5, 2012
bootstrap.sh Reorganize spindle source into client/server/fe directories to allow … Feb 8, 2014
config.h.in Make COBO port range a variable that can be set at startup or configu… Apr 14, 2014
configure Fix build so munge-dependant launchmon cooperates with munge-dependan… Apr 14, 2014
configure.ac Allow static linking of libmunge Apr 14, 2014
configure.common.ac Allow static linking of libmunge Apr 14, 2014

README

=============================================================================
== SPINDLE: Scalable Parallel Input Network for Dynamic Load Environments  ==
=============================================================================
Authors:    SPINDLE:              Matthew LeGendre (legendre1 at llnl dot gov)
                                  W.Frings <W.Frings at fz-juelich dot de>
            COBO:                 Adam Moody <moody20 at llnl dot gov>

Version:    0.9 (April 2014)

Summary:
===========

Spindle is a tool for improving the performance of dynamic library
and python loading in HPC enviornments.

Documentation:
============
https://computation-rnd.llnl.gov/spindle/

Overview:
============

Using dynamically-linked libraries is common in most computational
environments, but they can cause serious problem when used on large
clusters and supercomputers.  Shared libraries are frequently stored
on shared file systems, such as NFS.  When thousands of processes
simultaneously start and attempt to search for and load libraries, it
resembles a denial-of-service attack against the shared file system.
This "attack" doesn't just slow down the application, but impacts
every user on the system.  We encountered cases where it took over ten
hours for a dynamically-linked MPI application running on 16K
processes to reach main.

Spindle presents a novel solution to this problem.  It transparently
runs alongside your distributed application and takes over its library
loading mechanism.  When processes start to load a new library,
Spindle intercepts the operation, designates one process to read the
file from the shared file system, then distributes the library's
contents to every process with a scalable broadcast operation.

Spindle is very scalable.  On a cluster at LLNL the Pynamic benchmark
(which measures library loading performance) was unable to scale much
past 100 nodes.  Even at that small scale it was causing significant
performance problems that were impacting everyone on the cluster.
When running Pynamic under Spindle, we were able to scale up to the
max job size at 1,280 nodes without showing any signs of file-system
stress or library-related slowdowns.

Unlike competing solutions, Spindle does not require any special
hardware, and libraries do not have to be staged into any special
locations.  Applications can work out-of-the-box do not need any
special compile or link flags.  Spindle is completely userspace and
does not require kernel patches or root privileges.

Spindle can trigger scalable loading of dlopened libraries, dependent
library, executables, python modules and specified application data
files.


Compilation:
============

Please see INSTALL file in the Spindle source tree.

Usage:
======

Put 'spindle' before your job launch command.  E.g:

  spindle mpirun -n 128 mpi_hello_world

Something went wrong with that request. Please try again.