Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

OpenMP vs Multithread   Найти похожие ветки 

 
DevilDevil ©   (2012-07-13 16:34) [0]

Честно говоря, не много кода создал, использующего разные потоки, синхронизации, общую память.

С OpenMP не работал, да и вообще на С++ с потоками не имел дело.
Но интересно стало подискутировать о плюсах и минусах разных подходов, о взаимозаменяемости.

Если я правильно понял, то OpenMP в основе своей использует старые добрые потоки. Мощь OpenMP состоит в том, что программист автоматически освобождается от тонны рутины, связанной с созданием, удалением и синхронизацией потоков. Это прекрасно, но универсальное средство не всегда эффективнее ручного. И если ты до конца не разбираешься, как оно работает - рискуешь не довести оптимизацию до желаемого результата.

Собственно вопросов несколько. Если есть дополнительные моменты которые хотелось бы осветить - пожалуйста выражайтесь
- помогает ли OpenMP при программировании кластеров ? Как кластеры устроены - я не знаю, интересует вопрос теоретически
- какое оптимальное количество потоков на ядро ? Чисто теоретически - чем больше потоков, тем больше вероятность выиграть вычислительную мощь в борьбе между потоками
- чем обусловлен параметр num_threads в OpenMP ? Разве он не должен вычисляться автоматически ?
- имеет ли смысл явно задавать высокий приоритет при создании потоков ?
- каким образом эффективно учитывать технологию HyperThreading ?


 
TUser ©   (2012-07-13 17:00) [1]


> - помогает ли OpenMP при программировании кластеров ? Как
> кластеры устроены - я не знаю, интересует вопрос теоретически

OpenMPI помогает. Если программа для кластера, то она должна уметь распараллеливаться, и это делается через эту библиотеку.

зы. Сам не писал такого, питаюсь слухами.

> - какое оптимальное количество потоков на ядро ? Чисто теоретически
> - чем больше потоков, тем больше вероятность выиграть вычислительную мощь в борьбе между потоками

Реально, с ростом числа потоков на кластере растет расход ресурсов на взаимодействие между ними. Если задача состоит в том, чтобы миллион раз запустить одну и туже программу на разные входные данные, скажем по секунде на запуск, то это не важно. Если есть много этапов, каждый из которых начинается после полного завершения предыдущего, то пусть даже этап можно распараллелить - после этапа надо собрать результаты со всех узлов, из обработать, тогда реально увеличение числа узлов до inf бессмысленно.


 
картман ©   (2012-07-13 19:46) [2]


> - каким образом эффективно учитывать технологию HyperThreading
> ?

лучше не учитывать



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.136 c
2-1340780940
aka
2012-06-27 11:09
2013.03.22
Удаления пробелов в строке.


2-1335777792
Vladolin7
2012-04-30 13:23
2013.03.22
Как ввести данные в поле Memo?


15-1338560417
alexdn
2012-06-01 18:20
2013.03.22
Загадочный пхп


6-1250966588
Pirog
2009-08-22 22:43
2013.03.22
Page Rank


15-1339971700
Дмитрий С
2012-06-18 02:21
2013.03.22
Предлагаю плохих людей называть футболистами :)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский