У меня есть n наборов строк в таблице данных, и я хочу добавить эти n наборов.Я ищу способы распараллелить это.
пример: Установите 1: строка 0 в строку 9 Установите 2: строку 10 в строку 19 Установите 3: строку 20 t0 строка 29 Установите 3: строка 20 t0 строка 29
Добавить их в другую таблицу. Всего данных (строка 0 - строка 9) = установить 1 + установить 2 + установить 3
Я использую C #.
В настоящее время я реализовал этоиспользуя ThreadPool.QueueUserWorkItem следующим образом, но это немного некрасиво.
Я охватываю n число потоков (max = total cpus), распределяю наборы по этим потокам и вычисляю частичные суммы для n / 2 потоков, чтобы суммировать эти частичные суммыУ меня есть две частичные суммы, затем я суммирую их в общий набор данных.
пример: если у меня 10 наборов и 4 процессора
на первой итерации
1-й процессор: сумма 0, 1,2 = сумма 1 2-й процессор: сумма 3,5 = сумма 2 3-й процессор: сумма 6,7 = сумма 3 4-й процессор: сумма 8,9 = сумма 4
вторая итерация
1-й поток сумма 1+ sum2 = sum10 2-й поток sum3 + sum4 = sum 11
третья и последняя итерация
общая сумма = sum10 + sum11
Я пытаюсь сделать это с помощью .net Framework 4.0 Parallel Library.