Конференция "Прочее" » Как использовать второе ядро двухъядерного процессора?
 
  • МемТест (15.10.08 07:05) [0]
    Кто-нибудь может поделиться простым примерчиком?

    Допустим есть один большой массив. И хочется, чтобы его обрабатывали два потока каждый на своём ядре. Можно так сделать в Дельфи?

    Желательно, чтобы была какая-нибудь система разделения между ядрами. То есть, если ядер, допустим, четыре, чтобы создавалось 4 потока, и каждый обрабатывал общий массив со своего места.
  • Skyle © (15.10.08 07:10) [1]
    Делай разные потоки и оно само может получиться. А может и не получиться. Если хочешь жёстко привязать потоки к ядрам, читай про SetAffinityMask.

    А уж как они будут обрабатывать массив и каким местом - сугубо вопрос твоей реализации.
  • Skyle © (15.10.08 07:12) [2]

    > Skyle ©   (15.10.08 07:10) [1]
    > читай про SetAffinityMask

    Уточнение - SetProcessAffinityMask
  • Skyle © (15.10.08 07:14) [3]

    > Skyle ©   (15.10.08 07:12) [2]

    Хотя для задачи больше подходит SetThreadAffinityMask. :(
  • МемТест (15.10.08 07:45) [4]
    Кто-нибудь может поделиться примером работающей программы?
  • Skyle © (15.10.08 07:59) [5]
    А в чём именно сложность-то?
  • Palladin © (15.10.08 08:40) [6]
    Вставить куда есть, а вот скопировать неоткуда :) вот и просит...
  • oxffff © (15.10.08 09:16) [7]

    > МемТест   (15.10.08 07:05)


    Понятие обрабатывались неопределено.
    Является ли обработка каждого элемента зависимой от другого элемента?
  • МемТест (15.10.08 09:40) [8]

    > oxffff ©   (15.10.08 09:16) [7]
    >
    > > МемТест   (15.10.08 07:05)
    >
    > Понятие обрабатывались неопределено.
    > Является ли обработка каждого элемента зависимой от другого
    > элемента?


    Частично.
  • oxffff © (15.10.08 09:42) [9]

    > Частично.


    Тогда можно задействовать частично два потока каждый на своём ядре.
    Пока ты полностью не сформулируешь условие тебе никто наталкивать на решение не будет, а уж тем более решать его за тебя.
  • oxffff © (15.10.08 09:48) [10]

    > МемТест   (15.10.08 09:40) [8]


    Разбей массив на несколько независимых частей и обрабатывай их параллельно. Возможно параллельно обрабатывать зависимые друг от друга элементы внутри независимой от других групп группы.
    Но тогда нужно разбивать группу на подгруппы независимых элементов с разделением по времени.
  • blackman © (15.10.08 09:52) [11]
    Сделайте потоки, и система сама распараллелит наилучшим образом по всем процессорам.
  • tesseract © (15.10.08 10:05) [12]

    > система сама распараллелит наилучшим образом по всем процессорам.


    Не уверен. Например как она будет данные по процессорам раскидывать ? А в случае "плохого" распределения локи будут на чтение/ запись.
  • blackman © (15.10.08 10:09) [13]
    Вы уверены, что знаете как работает планировщик WIN?
    А если не уверен, то не обгоняй. Только мешать будете...
  • БарЛог © (15.10.08 10:30) [14]
    > Как использовать второе ядро двухъядерного процессора?

    Как и первое - для вычислений :)
  • oxffff © (15.10.08 10:33) [15]

    > БарЛог ©   (15.10.08 10:30) [14]


    +18
  • tesseract © (15.10.08 10:38) [16]

    > что знаете как работает планировщик WIN?


    Что-то читал у Руссиновича. Но про "наилучшим образом" не уверен, и кстати это не только Windows касаеться. intel вот свою библиотеку предлагает для многопоточности : http://www.intel.com/cd/software/products/asmo-na/eng/threading/294797.htm
  • stas © (15.10.08 11:44) [17]
    МемТест   (15.10.08 07:05)
    Только раз уж решил делать многопоточное приложение, надо не второе ядро грузить, а все т.е. для начала определить количество ядер в системе и расчет разбить на столько же потоков.
  • guav © (15.10.08 13:12) [18]
    Одно ядро для прикладной программы, другое для трояна, чтобы ничего не тормозило.
  • han_malign © (15.10.08 13:45) [19]

    > А в случае "плохого" распределения локи будут на чтение/запись.

    - есть еще нюансы:
    "одновременный доступ двух процессоров к близким участкам памяти заставляет внутренний контроллер сбрасывать кэш памяти"(c)Роман Лут
    http://www.dtf.ru/articles/print.php?id=39888
 
Конференция "Прочее" » Как использовать второе ядро двухъядерного процессора?
Есть новые Нет новых   [134444   +22][b:0][p:0.001]