8 projects tagged "parallel programming"
Urbi is a robotics software platform. It includes a C++/Java middleware API called UObject to interface components such as motors, cameras, and algorithms, and an innovative scripting language, urbiscript, with built-in support for parallel and event-based programming, used to write high-level behaviors and orchestrate the interactions between components. UObject components are built as shared libraries exposed as native objects within urbiscript, and either hot-plugged in a running Urbi engine, or started as a remote autonomous process communicating with the engine via the network. At any time, new urbiscript code can be sent to a running Urbi engine via a simple telnet, to introspect the state of components, modify existing code, or add new behaviors. Urbi is cross-platform and supports several robots (Gostai Jazz, Lego Mindstorms, Aldebaran Nao, Segway RMP, Spykee, Bioloid, etc.) and a simulator (Webots).
libpersist is a small library of C++ base classes and templates providing the capability to store and load objects in their entirety across executions. It also provides for object relocation between threads in a NUMA (non-uniform memory access) parallel processing environment. Objects are stored to disk as POD. They are reconstructed when reloaded into memory. Relocation is a special case of persistence, requiring reconstruction after the POD has been moved in memory. After all objects have been relocated, all references to the objects are swizzled (their IDs are resolved to their addresses), so that they can be dereferenced efficiently.
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.
Jug is a task-based parallelism framework. Jug allows you to write code that is broken up into tasks and run different tasks on different processors. It uses the filesystem to communicate between processes and works correctly over NFS, so you can coordinate processes on different machines. Jug is a pure Python implementation and should work on any platform that can run Python.
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.
libjmmcg is a basic, low-level library with pretensions to implementing features above and beyond (but not necessarily better than!) those implemented within the Standard C++ Library and the Boost Library. It features a library for multi-core or multi-chip SMP parallelism, a suite of hashing algorithms, functions for raising numbers to integer powers, a generic factory wrapper and a generic, multi-threaded, read-only cache (which uses PPD), arguably the world's worst sorting technique, trace output, exceptions that have the file, line, revision, function, and argument details, string utilities, logging, simple command line processing, and much more.