What is ttgLib?

ttgLib is a C++ library for parallel programs creation for hybrid architecture like CPU+GPU. It joins different APIs and extends them by providing additional parallel primitive ttg::pipeline, which has following advantages:
  • Flexible component model. Pipeline in our vision can be a multi-dimensional and multi-level chain of filters. It supports loops, sub-pipelines, internal events and management of data streams. Using our pipeline developer can implement any algorithm, which can be implemented by tasks primitive, (but not vice versa).
  • Integration of different technologies. Each node of pipeline can contain data-processing code duplicated for each required API. After start runtime system will determine available computing devices and dynamically distribute all nodes between them. For example, one resource-intensive node may process data on GPU, while others will use CPU.
  • External visualization and user feedback. Also runtime system gathers statistics and provides it to external GUI utilities for further processing. These utilities can visualize any information about pipeline, or analyze it and display some recommendations about optimization, or even send request for pipeline recreation or device usage redistributing. Each utility is implemented by a separate DLL and can be added by a developer or by user at runtime (via special UtilManager).
Note: ttgLib does not wrap technologies, but really extends them. ttgLib only performs some initialization, allowing developer to use technology's API directly. This makes it possible to start using ttgLib in existing projects with existing code or update any SDK without being afraid of incompatibilities.

What platforms are supported by ttgLib?

Our goal is to support most of popular and flexible technologies and computing devices. Current state is:
  • CPU (supported):
    • WinAPI threads (supported)
    • Intel TBB (coming soon)
    • OpenMP (coming soon)
    • pThreads (purposed)
  • GPU (supported):
    • NVidia CUDA (supported)
    • OpenCL (coming soon)
    • DirectX Compute (purposed)
    • AMD Stream (purposed)
    • Larrabee (purposed)
Targeted IDEs and compilers:
  • Windows:
    • Microsoft Visual Studio 2003 (coming soon)
    • Microsoft Visual Studio 2005 (supported)
    • Microsoft Visual Studio 2008 (supported)
    • Microsoft Visual Studio 2010 (purposed)
  • GNU/Linux:
    • gcc (purposed)

Is ttgLib fast?

Yes, ttgLib is fast. We've implemented some techniques, that gather statistics and use it for load redistribution and critical path finding. It allows us to parallelize problem better, than the native API. For example, in CPU-only tests we are not slower than Intel TBB, and in some tests we even outperforms it by 20%! Additional information on tests and testing machine configuration can be found at (Russian only).

How does it work?

ttgLib is C++ template oriented library that not only can easily implement simple tasks but implement complex tasks as well. For more information about solving typical problems refer to (Russian only). If you know an interesting problem and want to see it's solution using ttgLib – contact us. We will try to make a sample implementation of it.

About us

We are the students of Russian Universities. We have a lot of ideas and lack of free time for it. So if any announced idea is close to you – join us. Together we will rule the Galaxy!

Last edited Oct 21, 2009 at 9:28 AM by mak_, version 15