nlothik (nlothik) wrote,
nlothik
nlothik

Многонитевой вопрос

Я достаточно давно не брал в руки эти шашки, так что нужен совет.

Вот есть у меня массив A, длиною в 96 элементов.

Каждый элемент массива -- ещё один массив B, с цифЫрками int, которые надо хитрым образом сгрызть и выдать результат. Затем результаты складываются, и получается то, что мне надо.

Ну, вот, например, для 8 нитей, обрабатывающих эти данные в массиве B, распределение работы кристально ясно и логично:

Делим 96 на 8, получаем, что каждой нити можно поручить обработку 12 элементов массива A (длину куска я храню в переменной int span).

Дальше нити №0 выдаём 0-11, нити №1 -- 12-23, и так далее. Последней нити выдаётся span + всё, что осталось (если бы массив был не 96, а 97 элементов, ей бы досталось 13 элементов).

Всё просто и понятно.

Но если я захочу сделать 64 нити (у меня тут завалился сервер с 64 процессорами), то получится дурево. Потому что 96 на 64 не делится. Вернее, делиться-то оно делится, но получается-то 1. Таким образом, 63 нити будут обрабатывать каждая по одному элементу массива A, а нити №63 достанется обработка 32 элементов массива А. Налицо перекос.

Как проще и лучше всего выйти из такого положения, как лучше всего распределить работу? То-есть, наиболее приближённой к идеалу я вижу следующую ситуацию -- нити с 0 по 31 получают по 2 элемента массива А, а все остальные -- по одному. Но как бы это алгоритмизировать? На остаток после деления смотреть?
Tags: программирование, чесать репу
Subscribe

  • Опять накурился???

    Просто смешная картинка. С пятницей всех. Mirrored from Лабораторный Журнал №6 rss2lj

  • Русская, что ли

    Ехал из офиса, проезжал через небольшой городок, увидел интересный номерной знак. Впрочем, конечно, возможно, что это “а-ха”,…

  • Аффтопрограммирование

    В автомобили уже давно ставят компьютер с бортовой самодиагностикой. До 1996 года единообразия работы с этим компьютером не было, а теперь везде…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 22 comments

  • Опять накурился???

    Просто смешная картинка. С пятницей всех. Mirrored from Лабораторный Журнал №6 rss2lj

  • Русская, что ли

    Ехал из офиса, проезжал через небольшой городок, увидел интересный номерной знак. Впрочем, конечно, возможно, что это “а-ха”,…

  • Аффтопрограммирование

    В автомобили уже давно ставят компьютер с бортовой самодиагностикой. До 1996 года единообразия работы с этим компьютером не было, а теперь везде…