Числа Фибоначчи с задачами OpenMP

Есть ли польза от использования OpenMP для распараллеливания вычислений числа Фибоначчи?

Есть несколько примеров онлайн, которые вычисляют числа Фибоначчи, используяtask Директива в OpenMP. Например наhttp://docs.oracle.com/cd/E19205-01/820-7883/girtd/index.html и здесьhttp://openmp.org/forum/viewtopic.php?f=3&т = тысяча двести тридцать-одны

В некоторых из этих примеров утверждается, что производительность лучше с OpenMP. Я неЯ не понимаю, что вычисление ряда Фибоначчи, на мой взгляд, принципиально непараллельно (игнорирование методов, основанных на решениях в замкнутой форме, например, из Binet ').с формулой).

Кроме того, рекурсия, на которой основаны примеры OpenMP, имеет гораздо худшую производительность (на несколько порядков хуже), чем итерационный расчет чисел (это хорошо известноИтеративная и рекурсивная версия имеет одинаковую сложность?). Но когда я использую OpenMP это 'еще медленнее! Кажется глупым использовать пример, чтобы продемонстрировать, как использовать функцию OpenMP, которая дает худшую производительность. Так что я'я пытаюсь понять, почему существуют эти примеры кода?

Вот код, который я использовал для проверки функций.

#include 
#include 
#include 

inline uint64_t fib_iterative(const size_t n) {
    uint64_t fn0 = 0;
    uint64_t fn1 = 1;
    uint64_t fn2 = 0;
    if(n==0) return fn0;
    if(n==1) return fn1;

    for(int i=2; i

Ответы на вопрос(1)

Ваш ответ на вопрос