Intel® Threading Building Blocks

Invalid cxx_rvalue_references feature detection with clang.

It is impossible to use construct method from allocators with variadic template.

In TBB v4.3 Update 2 rvalue reference support is detected next way:

    #define __TBB_CPP11_RVALUE_REF_PRESENT             (__has_feature(__cxx_rvalue_references__) && (__TBB_GCC_VERSION >= 40300 || _LIBCPP_VERSION))

I'm using clang 3.6 from sources and not using libcpp, thus it is false. Also _TBB_GCC_VERSION is 4.2.1, so it is less than 40300. So rvalue reference is actually supported by my compiler, but detected as not supported in tbb_config.h.

HLE examples

Are there any examples codes that show an actual speedup using HLE (or tbb::speculative_spin_mutex)?

I have some experimental code running on a Haswell where the HLE flag is set when checked with cpuid, so I suppose HLE is enabled (I read that the feature HLE was disabled because of some problems but I don't think my target machine has the update requird to disbale the feature but IÄm not sure..how do I check if HLE is really enabled??)

Performance issue of scalable_realloc() vs. glibc realloc()

Hi,

I have an application that initially allocates a 4MB block of memory and linearly grows this block using 4MB steps. glibc's realloc() handles this pattern quite well. Linking against tbbmalloc_proxy (or replacing glibc realloc() with scalable_realloc()) degrades performance very badly.

Execution Time variations

Hello,

I am a naive user. Recently I have been studying regarding Threading Building Blocks. I tried executing the Fibonacci program and the results were obtained in milliseconds. When I execute the same program in Java using multithreading, I got the result in nano seconds. Can anyone tell me the reason behind such a huge variation?

Thanks,

Dhanraj 

 

Starting a pipeline with thread_bound_filter

Hello,
 

I am trying to parallelize an algorithm that accepts a callback and looks like this:

class Object;

class MyCallback
{
public:
virtual void NotifyAboutCompletion (Object* o) = 0;

};


void Foo (Object* o, size_t n, MyCallback* c)
{
   for (size_t i = 0; i < n; ++i) {
     DoSomeHeavyWork (o);
     c->NotifyAboutCompletion (o);
   }
}

 

Iscriversi a Intel® Threading Building Blocks