Hyper Threading и параллельная обработка данных

Тема в разделе "WASM.A&O", создана пользователем KeSqueer, 15 мар 2011.

  1. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Имеется двухъядерный процессор с поддержкой HT (итого 4 лог. ядра). Нужно выполнить одни и те же операции над большим объемом массивов данных.
    Каково максимальное эффективное количество потоков в данном случае, и нужно ли учитывать поток супервизора?
     
  2. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    KeSqueer
    Запросы к диску/устройствам есть? если да то 5 потоков, если нет то 4. Хотя что мешает провести эксперимент не понятно...
     
  3. 100gold

    100gold New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2010
    Сообщения:
    165
    Возможно больше надо будет. Как-то давно надо было подобрать оптимальное количество потоков для PHP на 8(4х2) ядерном сервере - в той конфигурации оказалось, что надо ровно 15 потоков, при 16 или 14 потоках "скорость"(количество обработанных соединений) была на примерно 10% ниже чем при 15 ))
    Вобщем мне кажется только эксперимент покажет нужную цифру.

    П.С. Если речь идёт об обработке массива в памяти и полном отсутствии запросов куда бы то ни было - то ответ явно будет - 4.
     
  4. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Задача - многопоточная распаковка архива. Но количество потоков должно определяться "на месте", ведь процессор может быть и иной.
    Где-то читал, что при HT двумя лог. ядрами используется один кеш, не снизит ли это производительность? Ведь при смене потока данные в кеше будут меняться.
    Ясно, что общий прирост производительности будет минимален в любом случае (из-за файлового ввода-вывода), но задача скорее академическая, чем практическая.
     
  5. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Прочитал Cache Blocking Technique on Hyper-Threading Technology Enabled Processors.
    Вывод такой: при использовании HT нужно соблюдать условия на объем обрабатываемых блоков данных - он должен быть либо меньше половины, либо больше целого объёма кеша. Иначе наблюдается спад производительности по сравнению с аналогичным процессором без поддержки HT. Это вызвано частыми кеш-промахами при объеме блока данных 0,5...1,00 объема кеша, что и понятно - кеш у двух логических ядер общий.

    Теперь дело за экспериментом.
    Правильно ли я понимаю, что распараллеливать файловый ввод-вывод нет смысла, ибо доступ к ЖД эксклюзивный?
     
  6. Portman

    Portman New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2008
    Сообщения:
    49
    KeSqueer
    Правильно.