![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Rasool |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.6.2011 Репутация: нет Всего: нет |
Сейчас озаботился написанием программы распараллеливания кое-каких алгоритмов (нужно для диссера) для настольных многоядерных компьютеров.
Ищу хороший учебник по С++ с описанием OpenMP для Visual C++, желательно с описанием техники параллельного программирования, на русском языке. Есть опыт программирования под Borland C++ 3.1. У меня есть следующие книги: Г.Эндрюс. Основы многопоточного, параллельного и распределенного программирования. 2003. А.Хортон, Visual C++ 2005. Базовый курс. 2007. Шилдт Г. Искусство программирования на C++. 2005. Брюс Эккель, Чак Эллисон - Философия C++. Практическое программирование. 2005. Что порекомендуете еще из нового? |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Rasool, зайди в ответы на часто задаваемые вопросы (закреплена), там есть раздел про литературу (с чего начать). Думаю, для начала нужно изучить С++, а уж затем браться за оптимизацию через OpenMP. Borland C++ 3.1 от современного С++ отличается также, как жигуль от танка.
|
|||
|
||||
Rasool |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.6.2011 Репутация: нет Всего: нет |
Спасибо, книги почитаю, но они - по общему языку C++.
В дальнейшем мне нужно будет изучить связку Visual C++ и OpenMP. Для изучения Visual C++ есть книга Айвора Хортона Visual C++ 2005. Базовый курс, а вот использование Visual C++ в параллельном программировании - где можно почитать? У меня сейчас на компьютере стоит Visual C++ 2008 Express Edition. Это сообщение отредактировал(а) Rasool - 8.7.2011, 14:36 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Rasool, вообще-то, С++ от Microsoft не сильно хуже стандартного. Если тебя интересуют кнопочки и рюшечки, то это в любом случае к С++ отношения не имеет.
Подозреваю, что связка Visual C++ + OpenMP не сильно отличается от других xxx C++ + OpenMP. http://www.microsoft.com/Rus/Msdn/Magazine.../10/OpenMP.mspx |
|||
|
||||
Rasool |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.6.2011 Репутация: нет Всего: нет |
О, спасибо большое! |
|||
|
||||
Rasool |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.6.2011 Репутация: нет Всего: нет |
На сайте http://openmp.org/wp/openmp-compilers/ сказано, что OpenMP включено только для Standard, Professional и Team System Editions. Значит, придется покупать.
На сайте allsoft.ru нашел версию Visual Studio 2008 Standard за 4802,11 руб. Насколько я понял, туда входит OpenMP? И нет ли подешевле вариантов с OpenMP? |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
||||
|
||||
Rasool |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.6.2011 Репутация: нет Всего: нет |
Спасибо. А среда разработки для него - Eclipse? (Нашел ссылку: Бесплатная среда разработки под Win32 = MinGW + MSYS + Eclipse + FLTK) Это сообщение отредактировал(а) Rasool - 9.7.2011, 12:03 |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
Code::Blocks Eclipse QtCreator SlickEdit это те что я когда-либо использовал совместно с MinGW. а вообще их огромное множество. Это сообщение отредактировал(а) boostcoder - 9.7.2011, 12:04 |
|||
|
||||
Rasool |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.6.2011 Репутация: нет Всего: нет |
А NetBeans для него подходит? |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
подходит. Но секса у тебя с настройкой будет очень много. Рекомендую просто скачать Qt SDK и не заморачиваться (там все необходимое в комплекте, только в инсталляторе надо отключить все, кроме mingw). Это сообщение отредактировал(а) bsa - 11.7.2011, 16:12 |
|||
|
||||
Rasool |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.6.2011 Репутация: нет Всего: нет |
Спасибо, посмотрим.
|
|||
|
||||
ValeryLaptev |
|
|||
Препод Профиль Группа: Участник Сообщений: 41 Регистрация: 19.8.2010 Где: Астрахань Репутация: 1 Всего: 1 |
Эндрюс - хорошая книжка. Еще хорошая книжка: Богатырев К.Ю. Основы параллельного программирования. Еще хорошая книжка: Эхтер Ш., Робертс Дж. Многоядерное программирование. Вот еще очень хорошая книжка: http://www.ozon.ru/context/detail/id/2512096/ Анатомия параллелизма. |
|||
|
||||
Silent |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 3.10.2006 Репутация: 1 Всего: 9 |
Уважаемый Rasool, покупать эту буржуйскую лицензионную студию не стоит, есть способ поработать и на экспрессе - http://iproc.ru/programming/openmp-visual-studio/. И если уж собрался "жечь" быстрый код, и при условии, что пишешь под процы-интелы, то взять интеловский компилятор (триал, 30 дней бесплатно), по сравнению со студийным его выходной код на 5-15% быстрее.
|
|||
|
||||
Rasool |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.6.2011 Репутация: нет Всего: нет |
О, спасибо, а то я уже запутался в Qt. ![]() |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Не факт, что всегда. У меня было с точностью наоборот (причём у intel'а была опция /O3 и /QaxK, а у M$VC - по-умолчанию для Release). Rasool, если нужны быстрыи и параллельные вычисления, посмотри в сторону IPP (юзал, доволен, рекомендую), TBB (не юзал, листал доку - впечатляет) или QtConcurrent (юзал, доволен, рекомендую) хммм. более простую IDE и набор классов я не видел (много чего не хватает, того, чего есть в студии (IDE, а не классы), но для первых шагов IMHO само то). Чего не так то ? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
![]() Имхо, Qt - самый удобный, простой и понятный инструментарий для создания гуишных программ на С++. |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Почему только гуишных ? А сеть, БД, XML, параллельные вычисления, скрипты... Вроде тоже всё предельно просто и понятно. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
asmdzen |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 28.11.2010 Репутация: 3 Всего: 5 |
||||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
||||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
bsa, а разве тот mingw что поставляется с Qt поддерживает OpenMP? что-то я помню что нет.
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
||||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
в общем понятно. но нужно проверить, а венды нет.
Это сообщение отредактировал(а) boostcoder - 17.7.2011, 18:16 |
|||
|
||||
Rasool |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.6.2011 Репутация: нет Всего: нет |
Заодно я озаботился покупкой новой материнской платы с микропроцессором, поскольку сейчас у меня стоит одноядерный Celeron. Думаю, что иметь четырехядерный Intel Core i5 достаточно или же нужно замахиваться на Core i7? И как правильно выбрать материнскую плату и память, исходя из требований максимальной производительности для работы программ на Visual C++ с OpenMP? |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
![]() |
|||
|
||||
Silent |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 3.10.2006 Репутация: 1 Всего: 9 |
А чем обусловлена необходимость распараллеливания именно под настольные многоядерные процессоры? Конечно, i5 или i7 дома - хорошо, но может быть проще арендовать облачный кластер на время счета задачи?
К тому же такая платформа, по моему мнению, не может считаться идеальной - одноядерная же |
|||
|
||||
Rasool |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.6.2011 Репутация: нет Всего: нет |
А где можно узнать про облачные кластеры, цены на них? И где можно почитать про особенности работы параллельных алгоритмов на них? Мне для диссертации нужно, мне научный руководитель предложил распараллелить с целью ускорения несколько алгоритмов. Это сообщение отредактировал(а) Rasool - 22.9.2011, 19:08 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
||||
|
||||
Rasool |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.6.2011 Репутация: нет Всего: нет |
Сначала мне нужно определиться, на чем я буду работать: на многоядерных настольных машинах или на облачном кластере. |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Компьютер -- это средство решения задачи. А средство должно выбираться прежде всего исходя из потребностей при решении задачи, а не крутизной звучания формулировки. Конечно, тема диссертации "решение квадратного уравнения с использованием инновационных технологий облачных вычислений" звучит очень круто, особенно в современных реалиях российской науки, но смысл данного исследования сомнительный. Вот и по вашим сообщениям возникает ощущение, что вы распараллеливаете программу просто ради того, чтобы написать об этом, для галочки. Если так, то берите то, что круче звучит. Если же нет и необходимость использования параллельных вычислений действительно продиктована задачей, то для получения толковых советов вам нужно описать кратко задачу, ваши способы решения и то, что вы хотите получить от распараллеливания.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Rasool |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.6.2011 Репутация: нет Всего: нет |
Один из алгоритмов, который предлагается распараллелить - это генетический алгоритм, с помощью которого ищутся траектории (пути) движения редундантного манипулятора в пространстве с препятствиями. Ожидается, что в результате распараллеливания он будет работать быстрее и быстрее находить нужные пути.
|
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Генетические алгоритмы не всегда можно эффективно распараллелить. я бы даже сказал, что распараллеливание не самый эффективный способ оптимизации ГА по скорости. Тем не менее...
Сколько алгоритм сейчас работает по времени на вашей машине? Какое время вы бы хотели получить? Сколько, в относительных единицах (%), времени тратится на данный алгоритм в рамках программы целиком? Что представляет собой ваша функция цели? -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Rasool |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.6.2011 Репутация: нет Всего: нет |
Что касается времени работы алгоритма, то она зависит от сложности пространства препятствий. Чем сложнее пространство с препятствиями, тем больше будет работать ГА, ищущий пути для редундантного манипулятора. Следовательно, если распараллеливание даст нужный эффект, то с его помощью можно будет в приемлимое время прокладывать траектории путей манипулятора в более сложном пространстве.
Функция цели определяется следующими параметрами: 1) Пригодность по достижению цели; 2) Пригодность по достаточности длины манипулятора; 3) Пригодность по укладываемости и достаточности звеньев манипулятора; 4) Пригодность по допустимости углов поворота; 5) Пригодность по пересечению с препятствиями; 6) Пригодность по толщине манипулятора. Это сообщение отредактировал(а) Rasool - 26.9.2011, 12:41 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Rasool, случаем это не похоже на обход дерева снизу вверх? Если похоже, то довольно легко параллелится (n потоков, каждый берет из очереди ветку маршрута и проверяет ее до разветвления, все разветвления добавляет в очередь).
|
|||
|
||||
Rasool |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.6.2011 Репутация: нет Всего: нет |
Да, есть алгоритм метода ветвей и границ, который ищет пути для редундантного манипулятора, который тоже можно успешно распараллелить. Мне сейчас нужно определиться в "железе" - на чем лучше делать: на настольной многоядерной системе или же арендуя облачный кластер. |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Rasool, для дисертации, думаю, достаточно и настольного компьютера. А кластер уже лучше использовать для решения практических задач.
|
|||
|
||||
phprus |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 22.8.2006 Репутация: нет Всего: 3 |
Достаточно для тестирования, но к сожалению не всегда.
Надо определиться не в железе, а в целесообразности распараллеливания в системе с общей памятью (многоядерные процессоры), в системах с распределенной памятью (кластера) или на GPU. (Комбинации также возможны). Так как методы распараллеливания могут кардинально отличаться в зависимости от архитектуры планируемой системы. Если к вопросу подходить с наивной точки зрения, то после портирования задачи, которая успешно масштабиравалась на SMP, на суперкомпьютер, можно и уменьшение производительности получить раз так в 100 (например, забыв что резко подорожали синхронизации и обмены данными). |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |