Introduction

What is Swarm-NG?

The Swarm-NG package helps scientists and engineers harness the power of GPUs. In the early releases, Swarm-NG will focus on the integration of an ensemble of N-body systems evolving under Newtonian gravity. Swarm-NG does not replicate existing libraries that calculate forces for large-N systems on GPUs, but rather focuses on integrating an ensemble of many systems where N is small. This is of particular interest for astronomers who study the chaotic evolution of planetary systems. In the long term, we hope Swarm-NG will allow for the efficient parallel integration of user-defined systems of ordinary differential equations.

What is included in May 5, 2010 release of Swarm-NG 0.1.3?

This initial release contains GPU-based integrators for few-body systems (hermite_gpu, hermite_cpu, verlet_gpu, verlet_cpu). It comes with a basic, easy-to-use public interface for setting initial conditions, calling the GPU-based integration algorithms and accessing the output data. Small example programs are provided to demonstrate functionality and how to program with Swarm-NG.

Quick Start Tips

Building the Swarm-NG Libraries and Demo Programs

What hardware & software is required to build & run Swarm-NG?
How do I build Swarm-NG for Linux?

Run ‘make`. Users can specify the paths to compiler, libraries, and include files, as well as compiler flags in the file 'Makefile.user’. This file does not exist, but can be easily added. For example, to change the path to your CUDA installation, add the line like 'CUDAPATH?=/usr/local/cuda' to Makefile.user. For other variables that can be overridden, see the file 'Makefile'.

How do I build Swarm-NG for Windows?

While we do not intend to support Swarm-NG for Windows, we can pass along some of the following tips.

How do I test Swarm-NG?

make test

In the current release, small differences in floating point values can result in failures that are inconsequential. So if the failures occur, please take a look at the output file indicated to check whether the difference is significant.

If so and you can not solve the problem, then run make feedback, which will generate a file named feedback.tgz which we may request that you send the developers.

Demo Programs

Commands to run demo codes

First, build the tutorials and demos with make. Then, you can run the following demos from the tutorial.

Known Limitations and/or Bugs

What should I do if I think I found a compile-time bug?
What should I do if I think I found a run-time bug?

Unfortunately, GPUs can sometime get stuck in a problematic state, particularly during code development and when not running in console mode. Before reporting a runtime bug, please test the code immediately after reboot your system into console mode.

If the problem persists, then please check the archives of the Swarm-NG mailing list at the Google Group for Swarm-NG to see if the bug has already been discussed.

If not, then please contact Swarm-NG developers via the Swarm-NG mailing list.

Organization of Swarm-NG

Swarm-NG uses the following directories:

bin                <1>
docs               <2>
integrators        <3>
reference          <4>
run                <5>
scripts            <6>
src                <7>
test               <8>
test-outputs       <9>
  1. bin contains executables (generated by 'make')

  2. docs contains documentation for library and demo progarms ('make doc-asciidoc' generates html version of this documentation)

  3. integrators each subdirectory contains the code for a single integrator (e.g., hermite_gpu, hermite_cpu, …). The first release contains a few working integrators, (e.g., hermite_gpu and hermite_cpu) and a few that are still in development (e.g., hermite_adap_gpu, rk4, rkck, euler).

  4. reference contains reference manual (generated by 'make doc-doxygen' or 'make doc')

  5. run is where swarm is intended to be run from. It also contains example configuration files.

  6. scripts contains scripts used by the build process.

  7. src contains the source code for the swarm library, as well as demonstration programs (e.g., tutorials/*.cpp, scatter_demo/swarm_scatter_demo.cpp)

  8. test contains scripts and data files to test your installation of the swarm libaray and demo programs.

  9. test-outputs contains results of tests (generated by 'make test')

For more information on the organization of directories and files, see organization.html and/or the doxygen files page.

Digging Deeper

Where can I find additional documentation?

There is additional documentation for various components of Swarm-NG in the docs subdirectory. Most are written in asciidoc format. To generate the html versions, run make doc-asciidoc. Or view the online documentation.

After running make doc-doxygen, you can also browse the doxygen reference manual.

As the library interface solidifies, we anticipate providing additional documentation in future releases and/or at the Swarm-NG Website

In the mean time, you may want to browse the archives of the Swarm-NG mailing list at the Google Group for Swarm-NG.

How can I learn more about and/or contribute to the the Swarm-NG project?

Licensing, Citing, Acknowledgements

Licensing Information

Swarm-NG v0.1 may be licensed under the GPL v3, avaliable here.

Acknowledging use of Swarm-NG

When writing papers which made use of Swarm-NG, we strongly encourage you to cite the technical paper describing Swarm-NG. We will provide a citation as soon as a preprint of this paper is avaliable. In the mean time, please mention the Swarm-NG Website.

Acknowledgements

Swarm-NG is the product of a collaboration between astrophysicists (UF Astronomy department and Harvard-Smithsonian Center for Astrophysics) and UF computer scientists at Prof. Jorg Peters' SurfLab. Contributors to the Swarm-NG codebase include: Eric Ford, Ameya Gancchha, Jianwei Gao, Mario Juric and Young In Yeo.

The Swarm-NG library includes code reused or adapted from:

We are happy to acknowledge financial support from:

We also acknowledge additional support from:

COPYING

Copyright (C) 2010 Eric B. Ford and the Swarm-NG Development Team
Free use of this software is granted under the terms of the GNU General Public License (GPL) v3, which should be included as gpl-3.0.txt and also avaliable online.