С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.70/40: Рейтинг темы: голосов - 40, средняя оценка - 4.70
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
1

Параллельное программирование на С++

02.12.2020, 00:28. Показов 8333. Ответов 87
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток!
У меня есть вопросы относительно лабораторной
Вот постановка задачи:
Создать двумерный массив размерности n×m. Найти сумму элементов массива.
Но с использованием параллелизма, параллельного программирования,
Вот мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <iostream>
#include <thread> 
#include <chrono> 
 
using namespace std;
 
int n,m,**a;
int sum = 0;
 
void get_Matrix()
{   
    cout << "Введите размерность матрицы (n x m) : " << endl;
        cin >> n >> m;
        cout << "Введите матрицу : "<< endl;
        a = new int *[n];
        for(int i = 0; i < n; i++)
        {
            a[i] = new int[n];
            for(int j = 0; j < m; j++)
            {
                cout << "[" << i+1 << "]["<< j+1 << "] : ";
                cin >> a[i][j];
            }
        }
        cout << "\n";
        //this_thread::sleep_for(chrono::milliseconds(2000));
        cout << "Ваша матрица А : " << endl;
        for(int i = 0; i < n; i++)
        {
            cout << "\n";
            for(int j = 0; j < m; j++)
            {
                cout << "\t";
                cout << a[i][j];
            }
        }
        
        cout << "\n";
        
}
 
 
 
void get_Sum()
    {
        cout << "Сумма элементов в матрице А : " << endl;
        for(int i = 0; i < n; i++)
        {
            for(int j = 0; j < m; j++)
            {
                sum += a[i][j]; 
            }
        }
        cout << sum << endl;    
    }
    
 
int main()
{
    setlocale(LC_ALL, "rus");
    system("color 0B");
    
 
    
    thread th1(get_Matrix); 
    th1.join(); 
    
 
    this_thread::sleep_for(chrono::milliseconds(2000));
    
 
    thread th2(get_Sum);        
    th2.join(); 
    
    
    
    return 0;
}
Я использовал thread, программа работает, все считает, но мне сказали, что эта программа она не использует параллелизм, а просто работает последовательно...

Буду очень всем Вам благодарен за совет, относительно того, как можно подкорректировать мой код, чтобы программа все же работала параллельно
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.12.2020, 00:28
Ответы с готовыми решениями:

Параллельное программирование
Подскажите учебник с помощью которого можно научиться параллельному программированию

Параллельное программирование на C++
Вот например происходит какое то действие, это действие длится 5 минут. И вот я запускаю это...

Параллельное программирование
Всем доброго времени суток! Не нашла на сайте ни одной темы с параллельным программированием....

Параллельное программирование
Есть задача, которая хорошо распараллеливается. Ее текущий вариант выполняется неприлично долго:...

87
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
10.01.2021, 21:12 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от uzer_srm34 Посмотреть сообщение
1) о третьем массиве, получается, что нужно посчитать диапазон [0.4 .. 0.6] от максимального числа?
Найти максимальный элемент X в массиве. Потом удалить элементы, которые меньше 0.4 * X и больше 0.6 * X

Цитата Сообщение от uzer_srm34 Посмотреть сообщение
2) требуется реализовать параллельный алгоритм с использованием механизмов асинхронных вычислений.
Запускаешь три потока, которые будут формировать-сортировать три твоих массива. Потом ждёшь, когда потоки завершатся и сливаешь эти три массива в новый массив, как по-заданию.
0
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
10.01.2021, 22:35  [ТС] 22
Вот я доделал, можете посмотреть пожалуйста правильно ли?
Потому что мне кажется, что что-то тут не так...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <iostream>
#include <ctime>
#include <future>
#include <thread>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");   
    int randarr1[5] {};
    int randarr2[5] {};
    int randarr3[5] {};
    
    srand(time(NULL));
    for(int i=0; i < 5; i++)
    {
        randarr1[i] = 1 + rand()%5; // Генерация массива от 1 до 5
        randarr2[i] = 1 + rand()%5;
        randarr3[i] = 1 + rand()%5;
        
    }
    
    cout << "Случайный массив 1:" << endl;
    for(int i = 0; i < 5; i++)
    {
        cout <<" "<<randarr1[i];
    }
    cout<<"\n";
    
    cout << "Случайный массив 2:" << endl;
    for(int i = 0; i < 5; i++)
    {
        cout <<" "<<randarr2[i];
    }
    cout<<"\n";
    
    cout << "Случайный массив 3:" << endl;
    for(int i = 0; i < 5; i++)
    {
        cout <<" "<<randarr3[i];
    }
    cout<<"\n" << endl;
    
    cout << "Операция с первым массивом - (элементы массива умножить на 2):" << endl;
    for(int i = 0; i < 5; i++)
    {
        //std::future<int> fut = std::async (main); 
        
        int multiplication = 2*randarr1[i];
        cout<<" "<<multiplication;
    }
    cout<<"\n";
    cout << "Операция со вторым массивом - (оставить только парные элементы):"<< endl;
    for(int i = 0; i < 5; i++)
    {
        if(randarr2[i]%2 == 0)
        {
            cout <<" "<<randarr2[i];
        }
    
    }
    cout << "\n";
    cout << "Операция над третьим массивом - (оставить элементы в диапазоне от 0.4 до 0.6 максимального значения):"<< endl;
    
    int max = randarr3[0];
    for(int i = 0; i < 5; i++)
    {                   
        for(i = 0; i < 5; i++)
            if (randarr3[i] > max) 
            {
              max = randarr3[i];          
              
            }
    }
    cout << "Максимальный элемент массива = " << max;
    for(int i = 0; i < 5; i++)
    {
        if(randarr3[i] < 0.4*max || randarr3[i] > 0.6*max)
        {
            randarr3[i] = randarr3[i + 1];
            cout  << " " <<randarr3[i];
        }
 
    }
    
    return 0;
}
Потоки я пока что не делал ещё

Добавлено через 3 минуты
if(randarr3[i] < 0.4*max || randarr3[i] > 0.6*max)
Если я в этом условии вместо ИЛИ поставлю И, то никакие элементы не выводятся...(

Добавлено через 5 минут
В поиске максимального элемента, я ошибочно сделал сложность O(n^2), я переправил на O(n)...
Максимальный элемент находит верно, а вот с условием что-то походу не так(
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
11.01.2021, 23:01 23
Цитата Сообщение от uzer_srm34 Посмотреть сообщение
if(randarr3[i] < 0.4*max || randarr3[i] > 0.6*max)
Если я в этом условии вместо ИЛИ поставлю И, то никакие элементы не выводятся...(
Условие правильное, а удаление элемента сделано неправильно

Добавлено через 3 минуты
std::remove_if

Добавлено через 22 минуты
C++
1
2
3
4
5
6
7
8
9
cout << "Максимальный элемент массива = " << max;
auto end = std::remove_if(randarr3, randarr3 + 5, [&](auto x)
{
    return x < 0.4 * max || x > 0.6 * max;
});
 
for (auto *p = randarr3; p != end; ++p)
    cout << *p << " ";
std::cout << std::endl;
1
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
11.01.2021, 23:23  [ТС] 24
Большое спасибо! Работает.
А как быть с асинхронным вычислением?
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
11.01.2021, 23:27 25
Цитата Сообщение от uzer_srm34 Посмотреть сообщение
Большое спасибо! Работает.
А как быть с асинхронным вычислением?
Потоки запускать умеешь, std::thread?

Добавлено через 1 минуту
Нужно запустить три потока. В первый поместить весь код, который работает с randarr1, во второй - весь код с randarr2, в третий - randarr3

Добавлено через 46 секунд
Цитата Сообщение от uzer_srm34 Посмотреть сообщение
int randarr1[5] {};
    int randarr2[5] {};
    int randarr3[5] {};
Это оставить как есть
1
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
11.01.2021, 23:27  [ТС] 26
Запускал, но преподаватель сказал, что программа работает не параллельно а последовательно...
И теперь я запутался как их правильно запускать(
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
11.01.2021, 23:28 27
Цитата Сообщение от uzer_srm34 Посмотреть сообщение
Запускал, но преподаватель сказал, что программа работает не параллельно а последовательно...
И теперь я запутался как их правильно запускать(
А как ты из запускал?
1
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
11.01.2021, 23:31  [ТС] 28
Я запускал на примере другой задачи, как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <iostream>
#include <thread> 
#include <chrono> 
 
using namespace std;
 
int n,m,**a;
int sum = 0;
 
void get_Matrix()
{   
    cout << "Введите размерность матрицы (n x m) : " << endl;
        cin >> n >> m;
        cout << "Введите матрицу : "<< endl;
        a = new int *[n];
        for(int i = 0; i < n; i++)
        {
            a[i] = new int[n];
            for(int j = 0; j < m; j++)
            {
                cout << "[" << i+1 << "]["<< j+1 << "] : ";
                cin >> a[i][j];
            }
        }
        cout << "\n";
        //this_thread::sleep_for(chrono::milliseconds(2000));
        cout << "Ваша матрица А : " << endl;
        for(int i = 0; i < n; i++)
        {
            cout << "\n";
            for(int j = 0; j < m; j++)
            {
                cout << "\t";
                cout << a[i][j];
            }
        }
        
        cout << "\n";
        
}
 
 
 
void get_Sum()
    {
        cout << "Сумма элементов в матрице А : " << endl;
        for(int i = 0; i < n; i++)
        {
            for(int j = 0; j < m; j++)
            {
                sum += a[i][j]; 
            }
        }
        cout << sum << endl;    
    }
    
 
int main()
{
    setlocale(LC_ALL, "rus");
    system("color 0B");
    
 
    
    thread th1(get_Matrix); 
    th1.join(); 
    
 
    this_thread::sleep_for(chrono::milliseconds(2000));
    
 
    thread th2(get_Sum);        
    th2.join(); 
    
    
    
    return 0;
}
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
11.01.2021, 23:36 29
Цитата Сообщение от uzer_srm34 Посмотреть сообщение
Я запускал на примере другой задачи, как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
get_Matrix();
 
   thread th1(get_Sum1); 
    thread th2(get_Sum2);        
    
 
    this_thread::sleep_for(chrono::milliseconds(2000));
    
 
    th1.join(); 
    th2.join();
Добавлено через 38 секунд
get_Matrix читает массив с клавиатуры, он не должен запускаться параллельно

Добавлено через 1 минуту
И - у тебя вроде три независимых массива и с клавиатуры ничего не начитывается. Поэтому их все можно запустить каждый в своём потоке
1
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
11.01.2021, 23:38  [ТС] 30
Ага, а если брать мою задачу, то мне нужно похожим методом сделать, только для трёх массивов, будет три потока и каждый поток должен ждать свое выполнение join()?
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
11.01.2021, 23:50 31
Цитата Сообщение от uzer_srm34 Посмотреть сообщение
Ага, а если брать мою задачу, то мне нужно похожим методом сделать, только для трёх массивов, будет три потока и каждый поток должен ждать свое выполнение join()?
Сначала запускаешь три потока подряд, потом, делаешь им join

Добавлено через 8 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    int randarr1[5] {};
    int randarr2[5] {};
    int randarr3[5] {};
    srand(time(NULL));
 
    std::thread thread1([&]()
    {
        for(int i=0; i < 5; i++)
            randarr1[i] = 1 + rand()%5; // Генерация массива от 1 до 5
        //cout << "Операция с первым массивом - (элементы массива умножить на 2):" << endl;
        for(int i = 0; i < 5; i++)
            randarr1[i] *= 2;
    };
 
    std::thread thread2([&]() /// randarr2
    ..........................
        
        
    std::thread thread3([&]() /// randarr3
    .................
 
    thread1.join();
    thread2.join();
    thread3.join();
Добавлено через 2 минуты
Цитата Сообщение от uzer_srm34 Посмотреть сообщение
cout << "Операция с первым массивом - (элементы массива умножить на 2):" << endl;
std::cout << .... в потоках нужно синхронизировать, поэтому лучше воспользоваться printf
C++
1
printf("Операция с первым массивом - (элементы массива умножить на 2): \n");
1
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
12.01.2021, 00:02  [ТС] 32
Компилятор выдает ошибки(
Миниатюры
Параллельное программирование на С++  
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
12.01.2021, 00:04 33
Цитата Сообщение от uzer_srm34 Посмотреть сообщение
Компилятор выдает ошибки(
Я там подправил

Добавлено через 22 секунды
std::thread thread1([&]()
0
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
12.01.2021, 00:10  [ТС] 34
Теперь другая ошибка появилась
Миниатюры
Параллельное программирование на С++  
0
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
12.01.2021, 00:11  [ТС] 35
Вот весь мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <iostream>
#include <ctime>
#include <future>
#include <thread>
#include <algorithm>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");   
    int randarr1[5] {};
    int randarr2[5] {};
    int randarr3[5] {};
    
    srand(time(NULL));
 
    std::thread thread1([&]()
    {
        for(int i=0; i < 5; i++)
            randarr1[i] = 1 + rand()%5; // Генерация массива от 1 до 5
        printf("Операция с первым массивом - (элементы массива умножить на 2): \n");
        for(int i = 0; i < 5; i++)
            randarr1[i] *= 2;
    };
    
    cout << "Случайный массив 1:" << endl;
    for(int i = 0; i < 5; i++)
    {
        cout <<" "<<randarr1[i];
    }
    cout<<"\n";
    
    cout << "Случайный массив 2:" << endl;
    for(int i = 0; i < 5; i++)
    {
        cout <<" "<<randarr2[i];
    }
    cout<<"\n";
    
    cout << "Случайный массив 3:" << endl;
    for(int i = 0; i < 5; i++)
    {
        cout <<" "<<randarr3[i];
    }
    cout<<"\n" << endl;
    
    std::thread thread2([&]()
    {
       printf("Операция со вторым массивом - (оставить только парные элементы): \n");
        for(int i = 0; i < 5; i++)
        {
            if(randarr2[i]%2 == 0)
            {
                cout << " " << randarr2[i]; 
            }
    
        }   
        
    };
    cout << "\n";
    std::thread thread3([&]()
    {
      printf("Операция над третьим массивом - (оставить элементы в диапазоне от 0.4 до 0.6 максимального значения): \n");
       int max = randarr3[0];
        for(int i = 0; i < 5; i++)
        {                   
            if (randarr3[i] > max) 
            {
                max = randarr3[i];        
              
            }
        }
        printf("Максимальный элемент массива = ", max);
        auto end = std::remove_if(randarr3, randarr3 + 5, [&](auto x)
        {
            return x < 0.4 * max || x > 0.6 * max;
        });
        cout << "\nЭлементы, которые остались: ";
        for (auto *p = randarr3; p != end; ++p)
            cout << *p << " ";
           cout  <<endl;      
 
    };
    
       
    
    /* Осталось сделать:
      Отсортировать массивы и слить в один массив элементы. отсортированный массив в 
         котором есть элементы которые входят во второй и третий массив и не входят в первый;
      
    */
    
    return 0;
}
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
12.01.2021, 00:14 36
Цитата Сообщение от uzer_srm34 Посмотреть сообщение
Теперь другая ошибка появилась
Покажи, как сделал

Добавлено через 46 секунд
Цитата Сообщение от uzer_srm34 Посмотреть сообщение
Вот весь мой код:
Скобку не закрываешь

std::thread thread1([&]()
{
...............
});
Добавлено через 1 минуту
В остальных то же самое
0
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
12.01.2021, 00:14  [ТС] 37
Забыл в конце ожидание потоков поставить
Вот код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <iostream>
#include <ctime>
#include <future>
#include <thread>
#include <algorithm>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");   
    int randarr1[5] {};
    int randarr2[5] {};
    int randarr3[5] {};
    
    srand(time(NULL));
 
    std::thread thread1([&]()
    {
        for(int i=0; i < 5; i++)
            randarr1[i] = 1 + rand()%5; // Генерация массива от 1 до 5
        printf("Операция с первым массивом - (элементы массива умножить на 2): \n");
        for(int i = 0; i < 5; i++)
            randarr1[i] *= 2;
    };
    
    cout << "Случайный массив 1:" << endl;
    for(int i = 0; i < 5; i++)
    {
        cout <<" "<<randarr1[i];
    }
    cout<<"\n";
    
    cout << "Случайный массив 2:" << endl;
    for(int i = 0; i < 5; i++)
    {
        cout <<" "<<randarr2[i];
    }
    cout<<"\n";
    
    cout << "Случайный массив 3:" << endl;
    for(int i = 0; i < 5; i++)
    {
        cout <<" "<<randarr3[i];
    }
    cout<<"\n" << endl;
    
    std::thread thread2([&]()
    {
       printf("Операция со вторым массивом - (оставить только парные элементы): \n");
        for(int i = 0; i < 5; i++)
        {
            if(randarr2[i]%2 == 0)
            {
                cout << " " << randarr2[i]; 
            }
    
        }   
        
    };
    cout << "\n";
    std::thread thread3([&]()
    {
      printf("Операция над третьим массивом - (оставить элементы в диапазоне от 0.4 до 0.6 максимального значения): \n");
       int max = randarr3[0];
        for(int i = 0; i < 5; i++)
        {                   
            if (randarr3[i] > max) 
            {
                max = randarr3[i];        
              
            }
        }
        printf("Максимальный элемент массива = ", max);
        auto end = std::remove_if(randarr3, randarr3 + 5, [&](auto x)
        {
            return x < 0.4 * max || x > 0.6 * max;
        });
        cout << "\nЭлементы, которые остались: ";
        for (auto *p = randarr3; p != end; ++p)
            cout << *p << " ";
           cout  <<endl;      
 
    };
    
    thread1.join();
    thread2.join();
    thread3.join();  
    
    /* Осталось сделать:
      Отсортировать массивы и слить в один массив элементы. отсортированный массив в 
         котором есть элементы которые входят во второй и третий массив и не входят в первый;
      
    */
    
    return 0;
}
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
12.01.2021, 00:16 38
Цитата Сообщение от uzer_srm34 Посмотреть сообщение
cout << "Случайный массив 1:" << endl;
    for(int i = 0; i < 5; i++)
    {
        cout <<" "<<randarr1[i];
    }
    cout<<"\n";
cout << "Случайный массив 2:" << endl;
    for(int i = 0; i < 5; i++)
    {
        cout <<" "<<randarr2[i];
    }
    cout<<"\n";
cout << "Случайный массив 3:" << endl;
    for(int i = 0; i < 5; i++)
    {
        cout <<" "<<randarr3[i];
    }
    cout<<"\n" << endl;
Это делать бесполезно, массивы заполняются в параллельных потоках

Добавлено через 44 секунды
Цитата Сообщение от uzer_srm34 Посмотреть сообщение
for(int i=0; i < 5; i++)
            randarr1[i] = 1 + rand()%5; // Генерация массива от 1 до 5
А где то же самое для других массивов?
0
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
12.01.2021, 00:19  [ТС] 39
Выходит мне в поток нужно закинуть как и генерацию массива, так и операцию над ним?
Или только генерацию массива, а операцию над ним выполнять без потока?
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
12.01.2021, 00:27 40
Цитата Сообщение от uzer_srm34 Посмотреть сообщение
Выходит мне в поток нужно закинуть как и генерацию массива, так и операцию над ним?
Ну да, я ж тебе показал. В остальных потоках сделай по-аналогии.

Добавлено через 5 минут
Цитата Сообщение от uzer_srm34 Посмотреть сообщение
printf("Операция со вторым массивом - (оставить только парные элементы): \n");
Это сделано явно неправильно. Если нужно оставить только чётные элементы, нужно воспользоваться std::remove_if
0
12.01.2021, 00:27
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.01.2021, 00:27
Помогаю со студенческими работами здесь

параллельное программирование
Клиент серверное приложение. Суть - в реализации обычного чата. Оба устройства коннекятся через...

Параллельное программирование
На языке С/С++ стандартными средствами используемой системы программирования написать параллельное...

Параллельное программирование в С++
Здравствуйте! я новичок в параллельном программировании. Помогите пожалуйста с задачкой!! Есть одна...

Параллельное программирование
Как составить параллельную программу вычисления среднего арифметического элементов вектора?

Параллельное программирование
Подскажите, пожалуйста, как в PUTTY начать редактировать файл?

параллельное программирование
Подскажите, пожалуйста! Возвожу положительные числа в степень, а выдается отрицательный результат....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution прилагаю файл архива проекта Gowin Eda и снимок. Восьмибитный счётчик из сумматора+ генератор сигнала согласования+ стартер fast регистров. Файлы прилагаю. . . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
Как создать нейросеть для генерации картинок на Python
InfoMaster 12.01.2025
Генерация изображений с помощью искусственных нейронных сетей стала одним из наиболее захватывающих направлений в области компьютерного зрения и машинного обучения. В этой статье мы рассмотрим. . .
Создание нейросети для генерации текста на Python
InfoMaster 12.01.2025
Нейросети, или искусственные нейронные сети, представляют собой модели машинного обучения, вдохновленные работой человеческого мозга. Они состоят из множества взаимосвязанных узлов, или "нейронов",. . .
Как создать нейросеть распознавания изображений на Python
InfoMaster 12.01.2025
Введение в распознавание изображений с помощью нейросетей Распознавание изображений с помощью нейронных сетей стало одним из самых впечатляющих достижений в области искусственного интеллекта. Эта. . .
Основы искуственного интеллекта
InfoMaster 12.01.2025
Искусственный интеллект (ИИ) представляет собой одну из наиболее динамично развивающихся областей современной науки и технологий. В широком смысле под искусственным интеллектом понимается способность. . .
Python и нейросети
InfoMaster 12.01.2025
Искусственные нейронные сети стали неотъемлемой частью современных технологий, революционизировав множество областей - от медицинской диагностики до автономных транспортных средств. Python, благодаря. . .
Python в машинном обучении
InfoMaster 12.01.2025
Python стал неотъемлемой частью современного машинного обучения, завоевав позицию ведущего языка программирования в этой области. Его популярность обусловлена несколькими ключевыми факторами, которые. . .
Создание UI на Python с TKinter
InfoMaster 12.01.2025
TKinter — это одна из наиболее популярных библиотек для создания графических интерфейсов пользователей (GUI) в языке программирования Python. TKinter входит в стандартную библиотеку Python, что. . .
HTML5 в разработке мобильных приложений
InfoMaster 12.01.2025
Введение: Обзор роли HTML5 в мобильной разработке В современном мире мобильных технологий HTML5 стал ключевым инструментом для разработки кроссплатформенных приложений. Эта технология произвела. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru