When I write software that I think might be of interest to the public at large (and worth the paperwork hassle for me to release it), I'll put it on this page.
While the Cell Broadband Engine has a high peak performance, it is not a general-purpose processor and can be challenging to program. The goal of the Cell PowerToys is to make it easier to program the Cell. The first utility in the Cell PowerToys suite is called the SPU Overlay Helper. The SPU Overlay Helper makes it easier to write Cell SPU programs that are too large to fit in the Cell's high-speed local store. Although IBM's spuxlc and spuxlf compilers provide some support for overlays, the SPU Overlay Helper offers the following advantages:
small,
medium, and
large, and
The Cell PowerToys are distributed as separate source tarballs, one per utility (of which the SPU Overlay Helper is currently the only utility):
The Cell Messaging Layer is a communication library for clusters of Cell Broadband Engine processors. It implements a subset of the popular MPI message-passing API on the Cell's SPE processors, with one MPI rank per SPE across any number of Cells and the ability for any SPE to communicate directly with any other SPE, even across a network. The Cell Messaging Layer thereby makes programming clusters of Cell processors similar to programming clusters of conventional CPUs. In addition, the Cell Messaging Layer is extremely fast, providing true message-passing semantics at nearly the speed of the underlying data-transfer hardware.
See the Cell Messaging Layer Web page for more information and for the Cell Messaging Layer source code.
JumboMem provides a low-effort solution to the problem of running memory-hungry programs on memory-starved computers. The JumboMem middleware gives programs access to all of the memory in an entire cluster, providing the illusion that all of the memory resides within a single computer. When a program exceeds the memory in one computer, it automatically spills over into the memory of the next computer. Behind the scenes, JumboMem handles all of the network communication required to make this work; the user's program does not need to be modified—not even recompiled—to take advantage of JumboMem. Furthermore, JumboMem does not need administrator privileges to install. Any ordinary user with an account on a workstation cluster has sufficient privileges to install and run JumboMem.
See the JumboMem Web page for more information and for the JumboMem source code.
A frequently reinvented wheel among network researchers is a suite of programs that test a network's performance. A problem with having umpteen versions of performance tests is that it leads to a variety in the way results are reported. coNCePTuaL is a domain-specific programming language (with associated compiler and other tools) designed to facilitate writing communication benchmarks and reporting the results in as scientific a manner as possible. The language is English-like and easy to read, even by a non-expert in the area of high-performance communication.
See the coNCePTuaL Web page for more information and for the coNCePTuaL source code.
Sometimes a computer seems slow for no particular reason. whatelse helps determine the source of the problem. The program waits quietly for a length of time then reports what happened on the computer while it was waiting. whatelse reports—among other things—process state changes, network activity, memory behavior, and hardware interrupts that occurred.
whatelse is available in the following format:
Note that whatelse is very specific to Linux; it gets virtually all of its information from the Linux /proc filesystem.
Homogeneity is a desirable attribute for workstation clusters used for high-performance computing. However, it can be difficult to ensure that all nodes in the cluster are exactly the same. Nodes may have hung processes, filesystems that failed to mount, modules that failed to load, etc. On very large clusters, there may even be nodes with different CPU speeds or amounts of memory. oddmanout helps find nodes that are different from the rest. The idea is to run a command (or set of commands) on every node of a cluster, find the most common output across all nodes, and report those nodes whose output is different from that.
oddmanout is available in the following formats: