Мультипроцессорная система и обработка данных

Тема в разделе "WASM.A&O", создана пользователем Yashin_Sergey, 28 май 2008.

  1. Yashin_Sergey

    Yashin_Sergey Сергей

    Публикаций:
    0
    Регистрация:
    15 июн 2007
    Сообщения:
    62
    Адрес:
    Москва
    Добрый день.

    Есть необходимость в том, чтобы обрабатывать большой массив данных, для примера возьмем 10 000 тыс элементов.

    Есть так же идея, что на двухпроцессорной системе (для примера) запустив два процесса обрабатывающих данные -
    обработка будет идти скорее так как процессы работают независимо друг от друга.

    Будет ли эффективнее обрабатывать массив из 10 000 двумя процессами следущими способами:
    1. один процесс обрабатывает только четные элементы а второй только нечетные
    2. каждому процессу для обработки выделена равная доля элементов (т.е. в данном примере по 5 000).

    Какой из способов наиболее эффективный или же разницы не будет никакой между ними ?

    Спасибо.
     
  2. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    Лучше непересекающиеся данные.
     
  3. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    Yashin_Sergey
    ну уж точно не использовать чередование. Да и при использовании SSE лучше их разнести подальше.
     
  4. halyavin

    halyavin New Member

    Публикаций:
    0
    Регистрация:
    13 май 2005
    Сообщения:
    252
    Адрес:
    Russia
    На cpu - лучше использовать непересекающиеся данные. На gpu - чередование.
     
  5. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    А зачем для этого создавать несколько процессов? Можно обойтись потоками или вообще абстрагироваться от API и заюзать OpenMP, если пишешь на С++ или Fort'e, тогда, в случае если вычисление непересекающиеся, задача распараллеливания заключается в написании 2х pragm в нужном месте.
     
  6. Yashin_Sergey

    Yashin_Sergey Сергей

    Публикаций:
    0
    Регистрация:
    15 июн 2007
    Сообщения:
    62
    Адрес:
    Москва
    W4FhLF
    Я имел ввиду потоки (не мог никак вспомнить - как это по русски), извиняюсь за то, что ввел в заблуждение. :)
    Эту часть пишу на C++, под linux, думаю вот как бы параллельно всё вычислить. Спасибо за наводку на OpenMP.
     
  7. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.734
    Плохая идея. Т.к. кеш будет использоваться крайне неэффективно.

    Лучше просто поделить данные на равные доли ...