Threshold Values

Issue #147 wontfix
Bibek created an issue

This is more of a question rather than a bug. I wanted to know how the values in Thresholds.h (blaze/blaze/config/Thresholds.h) were calculated ? How would one calculate Thresholds for say the new HPX backend ? How are you generating those values ?

Thanks

Comments (3)

  1. Klaus Iglberger

    Hi Bibek!

    We compute these values via bisection: For each operation of interest we run serial and parallel benchmarks to find the point where the parallel performance starts to be better than the serial performance. For these benchmarks we currently use a mid-range Core i7 quad core machine with the newest GCC and OpenMP.

    Of course these values can never be accurate for every possible system as there are too many variables (CPU, OS, compiler, parallelization technology, ...). Therefore you can adjust the thresholds manually. An alternative approach would be the automatic computation of these thresholds (see Issue #10). However, so far the topic has not raised much interest, therefore it hasn't been implemented yet.

    I hope this answers the question.

    Best regards,

    Klaus!

  2. Bibek reporter

    Hi Klaus,

    Thank you for that information. I really appreciate it. Would you mind sharing the source code or pointing me to where the code is located for the benchmarks ?

    Thanks, Bibek

  3. Klaus Iglberger

    Hi Bibek!

    Please take a look at the Blaze benchmark suite (Blazemark). You can use these benchmarks to compare Blaze to other expression template libraries, but also to run serial and parallel benchmarks in defined intervals. This will help you find the sweet spots for the thresholds.

    Best regards,

    Klaus!

  4. Log in to comment