tbb

Does tbb:concurrent_queue "grow" like std::vector? How to release its buffers?

Hello, I'm wondering if tbb:concurrent_queue can grow its internal buffers when it's under high load, and then not release the buffers? How to obtain any information about the buffers and/or release them? PS. In vector, you have methods like .reserve() to allocate and .swap(vector()) to completely release any buffers. ...

Multi-Core Programming. Boost's MPI, OpenMP, TBB, or something else?

Hello, I am totally a novice in Multi-Core Programming, but I do know how to program C++. Now, I am looking around for Multi-Core Programming library. I just want to give it a try, just for fun, and right now, I found 3 APIs, but I am not sure which one should I stick with. Right now, I see Boost's MPI, OpenMP and TBB. For anyone who h...

How to approach parallel processing of messages?

I am redesigning the messaging system for my app to use intel threading building blocks and am stumped trying to decide between two possible approaches. Basically, I have a sequence of message objects and for each message type, a sequence of handlers. For each message object, I apply each handler registered for that message objects type...

Intel TBB license

I'm a bit confused over the Intel Threading Building Blocks commercial vs open source license. The open source version is licensed under GPLv2 with the runtime exception, but what does that imply in plain english? Can it be used in a commercial, closed source application as long as it just links with the unmodified .dlls? ...

How do you install Intel TBB on OS X?

How do you properly install the open source version of Intel Thread Building Blocks (TBB) on OS X 10.6? The open source version doesn't seem to have a proper install script. http://www.threadingbuildingblocks.org/ver.php?fid=154 ...

Tasks on Thread Building Blocks

Here is the example code: #include <iostream> #include <list> #include <tbb/task.h> #include <tbb/task_group.h> #include <stdlib.h> #include <boost/thread.hpp> using namespace tbb; long fib(long a) { if (a < 2) return 1; return fib(a - 1) + fib(a - 2); } class PrintTask { public: void operator()() { std::cout <...

Performance gain issue in multicore application

Hi, I have a serial(nonparallel) application written in C. I have modified and re-written it using Intel Threading Building Blocks. When I run this parallel version on an AMD Phenom II machine which is a quad-core machine, I get a performance gain of more than 4X which conflicts with the Amdahl's law. Can anyone give me a reason why thi...

Which arch shall I specify for Intel Threading Building

I ran into O'Reilly's new book on TBB in bookstore today. Really liked how TBB abstract the threads into tasks. But I noticed that the tutorial, in page #12 install on Linux* systems, there are only three available s: ia32, intel64 and ia64. Dmesg on our server shows this: [ 0.132804] CPU0: Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.6...

Installing Intel's TBB 3.0 framework on MacOS 10.6 (Snow Leopard)

Hey guys, I'm having a bit of trouble installing Intel's Threading Building Blocks (TBB) 3.0 as a framework on my MacOS system. Does anyone know a good tutorial? I've tried using MacPorts, which has TBB 2.2: it installs all the libraries I need, but I don't get a framework. Also, there doesn't seem to have any .dmg installation file on ...

How to sort TBB concurrent_vector or concurrent_queue?

Hi, Now I have a solver in that I need to keep a set of self-defined data type objects in a concurrent_vector or queue. It has to be concurrent because the objects come from different threads.With this concurrent container, I hope to sort these objects, eliminate duplicates and send them back when other threads need them. However, I k...

Number of threads used by Intel TBB

How does Intel TBB choose the number of threads to used for a parallel section? Is there some kind of specification available? ...

tbb::concurrent_hash_map throws SIGSEGV

I'm running a small program built using TBB on Windows with mingw32. It does a parallel_for. Inside the parallel_for my object makes changes to a concurrent_hash_map object. It starts running but later throws a SIGSEGV when I try to use an accessor. I don't know where the problem is. My object: class Foobar { public: Foobar(FoobarP...

What are the recommended C++ parallelization libraries for large data processing

Can some one recommend approaches to parallelize in C++, when the data to be acted up on is huge. I have been reading about openMP and Intel's TBB for parallelization in C++, but have not experimented with them yet. Which of these is better for parallel data processing ? Any other libraries/ approaches ? ...