pmbw is a set of assembler routines to measure the parallel memory (cache and RAM) bandwidth of modern multi-core machines. Memory bandwidth is one of the key performance factors of any computer system. Today, measuring the memory performance often gives a more realistic view of the overall speed of a machine than pure arithmetic or floating-point benchmarks. pmbw contains a set of very basic functions which are all hand-coded in assembler to avoid any compiler optimizations. These basic functions are modeled after the basic inner loops found in any data processing, sequential scanning and pure random access. Any application will have a memory access pattern which is somewhere between these two extremes. The current version of pmbw supports benchmarking 16-, 32-, 64-, 128-, or 256-bit memory transfers on x86_32-bit, x86_64-bit, and ARMv6 systems.
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.
The Objeck computer language is an object-oriented computing language with functional features that has ties with Java, C#, and Pascal. In this language, all data types are treated as objects. The language consists of a compiler and VM with an accompanying memory management and JIT compiler.
FastFlow is a pattern-based programming framework targeting streaming applications. It implements pipeline, farm, divide and conquer, and their composition, as well as generic streaming networks. It is specifically designed to support the development and the seamless porting of existing applications on multi-core. The layered template-based C++ design ensures flexibility and extendibility. Its lock-free/fence-free run-time support minimizes cache invalidation traffic and enforces the development of high-performance (high-throughput, low-latency) scalable applications. It has been proven faster than TBB, OpenMP, and Cilk on several micro-benchmarcks and real-world applications, especially when dealing with fine-grained parallelism and high-throughput applications.
Exolu is a separation of the Linux kernel into two parts: an exokernel and a library. The exokernel consists only of the implementations for basic hardware resource access and drivers, but no abstractions. The library implements the abstractions and interfaces that are used by programs to interact with the kernel.
FECpp is a C++ library implementing a fast forward error correction code, sometimes also called an erasure code. These codes are used to split input data into a set of n shares, with the property that if any subset of at least k shares survives, the original data can be recovered by the decoder. The number of share losses the code will tolerate can be parameterized during encoding, allowing the code to be adapted to to a variety of loss scenarios. FECpp is bit-for-bit compatible with several other FEC libraries.
libCVD is a very portable and high performance C++ library for computer vision, image, and video processing. The emphasis is on providing simple and efficient image and video handling and high quality implementations of common low-level image processing function. The library is designed in a loosely-coupled manner, so that parts can be used easily in isolation if the whole library is not required. The video grabbing module provides a simple, uniform interface for videos from a variety of sources (live and recorded) and allows easy access to the raw pixel data. Likewise, the image loading/saving module provides simple, uniform interfaces for loading and saving images from bitmaps to 64 bit per channel RGBA images. The image processing routines can be applied easily to images and video, and accelerated versions exist for platforms supporting SSE.