Что почитать о Multithreading?
От: Аноним  
Дата: 17.03.11 21:52
Оценка:
Здравствуйте
Если не трудно посоветуйте, на какие книги/статьи ориентироваться, чтобы начать программировать параллельно.
Интересует теория и практическая часть (не managed языки). И желательно что-нибудь актуальное (то есть не чистая теория, а как в реальных проектах принято 'задействовать все ядра').

На данный момент умею создать поток в линукс/windows, и знаю что модифицируемые данные, к которым имеют доступ более двух потоков, нужно защищать объектами синхронизации (максимум что я делал — переменная-флаг bool in_use). Собственно, все . Слышал и читал про OpenMP, усиленно продвигаемый Intel. Насколько он широко используется в современных C++ программах?. И насколько он поддерживается gcc?

Может, стоит на boost обратить внимание? Там, вроде, и кроссплатформенность сразу. Или другие библиотеки какие?

Может, есть какие-то хорошие книги где на пальцах объясняется для чего в ОС столько разнообразных примитивов синхронизации потоков? Где объясняется как правильно параллелить код.

Извините за наивный вопрос, но как вы пришли к параллельному программированию? Для меня это как переход от процедурного программирования к объектно ориентированному, без хорошего вступления не разберусь

Спасибо!
Re: Что почитать о Multithreading?
От: Аноним  
Дата: 18.03.11 05:10
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте

А>Если не трудно посоветуйте, на какие книги/статьи ориентироваться, чтобы начать программировать параллельно.
книжки: http://www.amazon.com/Concurrent-Programming-Windows-Joe-Duffy/dp/032143482X
http://www.amazon.com/Concurrent-Programming-Java-TM-Principles/dp/0201310090

Поищите здесь сообщения от пользователя remark (Дмитрий Вьюков), узнаете много нового.
Re: Что почитать о Multithreading?
От: LaptevVV Россия  
Дата: 18.03.11 05:24
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Если не трудно посоветуйте, на какие книги/статьи ориентироваться, чтобы начать программировать параллельно.
1. К.Ю. Богачев. Основы параллельного программирования — прекрасно написанная книга для студентов.
2. Грегори Р. Эндрюс. Основы многопоточного, параллельного, распределенного программирования — ИМХО лучшее введение в предмет.
3. QNX/UNIX. Анатомия параллелизма — блестящая книга.
Ну и Рихтер, конечно.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Что почитать о Multithreading?
От: LaptevVV Россия  
Дата: 18.03.11 05:28
Оценка:
Здравствуйте, Аноним, Вы писали:

Еще порекомендую:
http://www.ozon.ru/context/detail/id/1919696/
Автор(ы): Камерон Хьюз, Трейси Хьюз
Издательство: Вильямс
Цена: 906р.

В книге представлен архитектурный подход к распределенному и параллельному программированию с использованием языка C++. Здесь описаны простые методы программирования параллельных виртуальных машин и основы разработки кластерных приложений. Эта книга
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Что почитать о Multithreading?
От: __kot2  
Дата: 18.03.11 06:29
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте
А>Если не трудно посоветуйте, на какие книги/статьи ориентироваться, чтобы начать программировать параллельно.
А>Интересует теория и практическая часть (не managed языки). И желательно что-нибудь актуальное (то есть не чистая теория, а как в реальных проектах принято 'задействовать все ядра').
самый тру мультитрединг в GPGPU. литературы мало, зато искать долго не придется, почти все есть на сайте производителей
Re[2]: Что почитать о Multithreading?
От: CreatorCray  
Дата: 18.03.11 08:28
Оценка:
Здравствуйте, __kot2, Вы писали:

__>самый тру мультитрединг в GPGPU.

Это назвать multithreading-ом можно только с натяжкой.
На самом деле это подобие SIMD.
Много потоков выполняет одну и ту же программу, только каждый поток над своим набором данных.
Сделать так, чтоб разные потоки выполняли разные программы нельзя в принципе.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Что почитать о Multithreading?
От: BulatZiganshin  
Дата: 18.03.11 13:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Интересует теория и практическая часть (не managed языки). И желательно что-нибудь актуальное (то есть не чистая теория, а как в реальных проектах принято 'задействовать все ядра').


очень рекомнедую начать с "взаимодействие последовательных процессов". в проитвном солучае выправлять мозги после чтения "практических введений" будет уже поздно — это всё равно что учить человека программированию начав с ассемблера вместо ml
Люди, я люблю вас! Будьте бдительны!!!
Re: Что почитать о Multithreading?
От: Буравчик Россия  
Дата: 18.03.11 18:05
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Здравствуйте

А>Если не трудно посоветуйте, на какие книги/статьи ориентироваться, чтобы начать программировать параллельно.
А>Интересует теория и практическая часть (не managed языки). И желательно что-нибудь актуальное (то есть не чистая теория, а как в реальных проектах принято 'задействовать все ядра').

Рекомендую книгу Основы многопоточного, параллельного и распределенного программирования
Автор(ы): Грегори Р. Эндрюс
Издательство: Вильямс
Цена: 229р.

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


В основно теория, но по-существу. Детально описываются подходы к параллельному программированию, возникающие трудности и как с ними борются. Разбирается большое количество примеров. После книги легче будет работать с реальным библиотеками/комиляторами — становится понятно для чего сделан тот или иной примитив/метод.

А>Слышал и читал про OpenMP, усиленно продвигаемый Intel. Насколько он широко используется в современных C++ программах?. И насколько он поддерживается gcc?

А>Может, стоит на boost обратить внимание? Там, вроде, и кроссплатформенность сразу. Или другие библиотеки какие?

ИМХО, OpenMP широко применяется. Поддерживается основными компиляторами (в т.ч. и gcc). Основной подход — распараллеливание с помощью директив, обычно распараллеливание циклов.

Есть еще библиотека MPI, тоже часто используется. Работает на основе приема/передачи сообщений. Часто используется для распределенного программирования. Можно использовать вместо или вместе с OpenMP.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Best regards, Буравчик
Re[3]: Что почитать о Multithreading?
От: __kot2  
Дата: 19.03.11 10:04
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, __kot2, Вы писали:


__>>самый тру мультитрединг в GPGPU.

CC>Это назвать multithreading-ом можно только с натяжкой.
CC>На самом деле это подобие SIMD.
CC>Много потоков выполняет одну и ту же программу, только каждый поток над своим набором данных.
CC>Сделать так, чтоб разные потоки выполняли разные программы нельзя в принципе.
можно двумя способами.
Re[4]: Что почитать о Multithreading?
От: CreatorCray  
Дата: 19.03.11 10:24
Оценка:
Здравствуйте, __kot2, Вы писали:

__>>>самый тру мультитрединг в GPGPU.

CC>>Это назвать multithreading-ом можно только с натяжкой.
CC>>На самом деле это подобие SIMD.
CC>>Много потоков выполняет одну и ту же программу, только каждый поток над своим набором данных.
CC>>Сделать так, чтоб разные потоки выполняли разные программы нельзя в принципе.
__>можно двумя способами.

С какой версии?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Что почитать о Multithreading?
От: __kot2  
Дата: 19.03.11 11:36
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, __kot2, Вы писали:


__>>>>самый тру мультитрединг в GPGPU.

CC>>>Это назвать multithreading-ом можно только с натяжкой.
CC>>>На самом деле это подобие SIMD.
CC>>>Много потоков выполняет одну и ту же программу, только каждый поток над своим набором данных.
CC>>>Сделать так, чтоб разные потоки выполняли разные программы нельзя в принципе.
__>>можно двумя способами.

CC>С какой версии?

с любой
Re[5]: Что почитать о Multithreading?
От: __kot2  
Дата: 19.03.11 11:38
Оценка:
когда у вас код выполняется в десятки тысяч потоков у вас писалка отвалится писать код для каждого потока. но никто вам не мешает писать специфичный код для конкретного потока или разбить потоки на группы, где в каждой группе будет выполняться свой код
Re[6]: Что почитать о Multithreading?
От: CreatorCray  
Дата: 19.03.11 13:38
Оценка:
Здравствуйте, __kot2, Вы писали:

__>>>можно двумя способами.

CC>>С какой версии?
__>с любой

Ок. Дано: Tesla C2050
Как на нёй одновременно запустить 2 разных кода. Скажем один на 80 ядрах и второй на оставшихся 368ми.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: Что почитать о Multithreading?
От: __kot2  
Дата: 19.03.11 16:38
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, __kot2, Вы писали:


__>>>>можно двумя способами.

CC>>>С какой версии?
__>>с любой

CC>Ок. Дано: Tesla C2050

CC>Как на нёй одновременно запустить 2 разных кода. Скажем один на 80 ядрах и второй на оставшихся 368ми.
в реальных приложениях так в общем-то не делают, так как оно обычно и не нужно, но принципиальной тут никакой особой сложности нет
правда, мыслить стоит не "рекламными" ядрами, а мультипроцессорами, коих в 5870 20 штук, а в тесле не знаю сколько, тоже примерно так же. каждый мультипроц какбэ может работать независимо от других, храня контекст и свитчась в мультитрединге между морем тредов, но есть некоторые ограничения

здесь например немного это обсуждается.
http://forums.amd.com/forum/messageview.cfm?catid=390&amp;threadid=142485
Re[2]: Что почитать о Multithreading?
От: LaptevVV Россия  
Дата: 23.03.11 21:14
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Здравствуйте, Аноним, Вы писали:

А>>Если не трудно посоветуйте, на какие книги/статьи ориентироваться, чтобы начать программировать параллельно.
LVV>1. К.Ю. Богачев. Основы параллельного программирования — прекрасно написанная книга для студентов.
LVV>2. Грегори Р. Эндрюс. Основы многопоточного, параллельного, распределенного программирования — ИМХО лучшее введение в предмет.
LVV>3. QNX/UNIX. Анатомия параллелизма — блестящая книга.
LVV>Ну и Рихтер, конечно.
Добавлю:
Новая книжка по многоядерному программированию — неплохая:
http://www.ozon.ru/context/detail/id/5137578/
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Что почитать о Multithreading?
От: Аноним  
Дата: 28.03.11 13:37
Оценка:
Спасибо за советы!
Re: Что почитать о Multithreading?
От: Lazin Россия http://evgeny-lazin.blogspot.com
Дата: 29.03.11 20:02
Оценка:
Можно вот эти лекции посмотреть — http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-189-multicore-programming-primer-january-iap-2007/
Как минимум — L4, L5, L6 и L7
Re: Что почитать о Multithreading?
От: Dmitry V. Krivenok Россия  
Дата: 31.03.11 07:29
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте

А>Если не трудно посоветуйте, на какие книги/статьи ориентироваться, чтобы начать программировать параллельно.
А>Интересует теория и практическая часть (не managed языки). И желательно что-нибудь актуальное (то есть не чистая теория, а как в реальных проектах принято 'задействовать все ядра').

А>На данный момент умею создать поток в линукс/windows, и знаю что модифицируемые данные, к которым имеют доступ более двух потоков, нужно защищать объектами синхронизации (максимум что я делал — переменная-флаг bool in_use). Собственно, все . Слышал и читал про OpenMP, усиленно продвигаемый Intel. Насколько он широко используется в современных C++ программах?. И насколько он поддерживается gcc?


А>Может, стоит на boost обратить внимание? Там, вроде, и кроссплатформенность сразу. Или другие библиотеки какие?


А>Может, есть какие-то хорошие книги где на пальцах объясняется для чего в ОС столько разнообразных примитивов синхронизации потоков? Где объясняется как правильно параллелить код.


А>Извините за наивный вопрос, но как вы пришли к параллельному программированию? Для меня это как переход от процедурного программирования к объектно ориентированному, без хорошего вступления не разберусь


А>Спасибо!


Как уже говорилось, "QNX/UNIX. Анатомия параллелизма" — очень хорошая книга.

По threading API можно порекомендовать http://www.amazon.com/Programming-POSIX-Threads-David-Butenhof/dp/0201633922
Пожалуй это лучшая книга по pthreads.

Если выходить за рамки прикладного использования и посмотреть реализацию в ядрах ОС:
http://www.amazon.com/UNIX-Systems-Modern-Architectures-Multiprocessing/dp/0201633388/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1301556329&amp;sr=1-1
http://www.amazon.com/UNIX-Internals-Frontiers-Uresh-Vahalia/dp/0131019082/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1301556376&amp;sr=1-1
http://www.amazon.com/Solaris-Internals-TM-OpenSolaris-Architecture/dp/0131482092/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1301556391&amp;sr=1-1
http://www.amazon.com/Linux-Kernel-Development-Robert-Love/dp/0672329468/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1301556414&amp;sr=1-1
http://www.amazon.com/Understanding-Linux-Kernel-Third-Daniel/dp/0596005652/ref=sr_1_2?s=books&amp;ie=UTF8&amp;qid=1301556414&amp;sr=1-2

Ну и конечно группа comp.programming.threads и ее архив.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.