Flashrom is a utility for reading, writing, erasing, and verifying flash ROM chips. It's often used to flash BIOS/coreboot/firmware/EFI images. It supports a wide range of DIP32, PLCC32, DIP8, SO8/SOIC8, and TSOP32/40/48 chips, which use various protocols such as LPC, FWH, parallel flash, or SPI. The tool can be used to flash BIOS/firmware images, for example, be it proprietary BIOS images or coreboot (previously known as LinuxBIOS) images. It can also be used to read the current existing BIOS/firmware from a flash chip.
Charm++ is a portable adaptive runtime system for parallel applications. Application developers create an object-based decomposition of the problem of interest, and the runtime system manages issues of communication, mapping, load balancing, fault tolerance, and more. Sequential code implementing the methods of these parallel objects is written in C++. Calls to libraries in C++, C, and Fortran are common and straightforward. Charm++ is portable across individual workstations, clusters, accelerators (Cell SPEs and GPUs), and supercomputers such as those sold by IBM (Blue Gene, POWER) and Cray (XT3/4/5/6). Applications based on Charm++ are used on at least 5 of the 20 most powerful computers in the world.
Moscrack is a WPA cracker for use on clusters. It supports MOSIX, SSH, and RSH connectivity and works by reading a word list from STDIN or a file, breaking it into chunks, and passing those chunks off to separate processes that run in parallel. The parallel processes are then executed on different nodes in your cluster. All results are checked and recorded on your master node. Logging and error handling are taken care of. It is capable of running reliably for long periods of time, without the risk of losing data or having to restart. Moscrack uses aircrack-ng by default. Pyrit for WPA cracking and Dehasher for Unix password hashes are supported via plugins.
HOPSPACK solves derivative-free optimization problems in a C++ software framework. The framework enables parallel operation using MPI (for distributed machine architectures) and multithreading (for single machines with multiple processors or cores). Optimization problems can be very general: functions can be noisy, nonsmooth, and nonconvex, linear and nonlinear constraints are supported, and variables may be continuous or integer-valued.