Сумма гармонической прогрессии с использованием только MPI в C ++ - PullRequest
0 голосов
/ 30 апреля 2018

Привет всем, я новичок в параллельных вычислениях в C ++. Я хочу распараллелить сумму гармонической прогрессии в C ++ только с использованием MPI (ничего больше). Ребята, не могли бы вы дать мне правильную отправную точку?

Я понятия не имею, с чего начать и как преобразовать его в параллельный код.

'#include <iostream>
 #include <sstream>

 using namespace std;

 void sum(char* output, const long unsigned int d, const long unsigned int n) 
 {
    long unsigned int digits[d + 11];
    for (long unsigned int digit = 0; digit < d + 11; ++digit) 
    {
        digits[digit] = 0;
    }
    for (long unsigned int i = 1; i <= n; ++i) 
    {
        long unsigned int remainder = 1;
        for (long unsigned int digit = 0; digit < d + 11 && remainder; ++digit)
    {
            long unsigned int div = remainder / i;
            long unsigned int mod = remainder % i;
            digits[digit] += div;
            remainder = mod * 10;
    }
    }
    for (long unsigned int i = d + 11 - 1; i > 0; --i) 
    {
        digits[i - 1] += digits[i] / 10;
        digits[i] %= 10;
    }
    if (digits[d + 1] >= 5) 
    {
        ++digits[d];
    }
    for (long unsigned int i = d; i > 0; --i) 
    {
        digits[i - 1] += digits[i] / 10;
        digits[i] %= 10;
    }
    stringstream stringstreamA;
    stringstreamA << digits[0] << ".";
    for (long unsigned int i = 1; i <= d; ++i) 
    {
        stringstreamA << digits[i];
    }
    stringstreamA << '\0';
    string stringA = stringstreamA.str();
    stringA.copy(output, stringA.size());
}

int main() {

    long unsigned int d, n;

    cin >> d >> n;

    char output[d + 10]; // extra precision due to possible error

    sum(output, d, n);

    cout << output << endl;

    return 0;
}'

Спасибо С наилучшими пожеланиями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...