1. Библиотека Intel Threading Building Blocks – краткое описание Инструменты параллельного программирования для систем с общей памятью Мееров И.Б. , Сысоев А.В., Сиднев А.А. Кафедра математического обеспечения ЭВМ
2.
3.
4.
5.
6.
7.
8.
9. Н.Новгород, 200 9 г. Инструменты параллельного программирования для систем с общей памятью. TBB . Краткое описание
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21. Н.Новгород, 2009 г. Инструменты параллельного программирования для систем с общей памятью. TBB . Краткое описание
22.
23.
24. Пример. Матрично-векторное умножение Н.Новгород, 200 9 г. Инструменты параллельного программирования для систем с общей памятью. TBB . Краткое описание
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43. Функтор. Пример Н.Новгород, 200 9 г. Инструменты параллельного программирования для систем с общей памятью. TBB . Краткое описание class VectorsMultiplicator // Функтор { const double * matrix , * vector ; // Исходные данные для умножения double * const resultVector ; // Вектор результатов int const numOf Columns ; // Количество столбцов матрицы public: VectorsMultiplicator(double *tmatrix, double *tvector, double *tresultVector, int tnumOfColumns) : matrix(tmatrix), vector(tvector), resultVector(tresultVector), numOf Columns(t numOf Columns) {} void operator()(const blocked_range<int>& r) const { int begin = r.begin(), end = r.end(); for (int i = begin; i != end; i++) resultVector[i] = VectorsMultiplication(&(matrix[i * numOfColumns]), vector , numOf Columns ); } };
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57. Н.Новгород, 2009 г. Инструменты параллельного программирования для систем с общей памятью. TBB . Краткое описание
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76. Пример использования функции tbb:: parallel_reduce . Реализация функтора… Н.Новгород, 200 9 г. Инструменты параллельного программирования для систем с общей памятью. TBB . Краткое описание class ScalarMultiplicator //Функтор { private: const double *a, *b; double c; public: explicit ScalarMultiplicator(double *ta, double *tb): a(ta), b(tb), c(0) {} ScalarMultiplicator(const ScalarMultiplicator& m, split): a(m.a), b(m.b), c(0) {} //… };
77. Пример использования функции tbb:: parallel_reduce . Реализация функтора Н.Новгород, 200 9 г. Инструменты параллельного программирования для систем с общей памятью. TBB . Краткое описание class ScalarMultiplicator //Функтор { //… public: void operator()(const blocked_range<int>& r) { int begin = r.begin(), end = r.end(); c += VectorsMultiplication(&(a[begin]), &(b[begin]), end - begin); } void join(const ScalarMultiplicator& multiplicator) { c += multiplicator.c; } double Result() { return c; } };
78.
79. Н.Новгород, 2009 г. Инструменты параллельного программирования для систем с общей памятью. TBB . Краткое описание
80.
81.
82.
83.
84.
85.
86.
87.
88.
89. Н.Новгород, 2009 г. Инструменты параллельного программирования для систем с общей памятью. TBB . Краткое описание