Очень интересные результаты. Надо отметить, что вы отлично поработали. Я обязательно покажу ваши результаты дизайнерам компилятора. Было бы интересно посмотреть на результаты последнего Intel® Parallel C++ Composer XE (т.е. Intel® С++ Compiler Professional edition). Предлагаю пообщаться для этого уже в кулуарах, а по завершению совместной работы опубликовать результаты.
Вкратце: используется слово школа, потому что это академическая программа. На самом деле это стажировка + набор тренинги (как для всех участников, так и внутренние в командах) + различные семинары. Стажеры (летние Школьники Intel) получают з.п. + обеспечиваются койкой-кроватью в общежитиях (бесплатно).
Более подробная информация о формате Летней школы тут software.intel.com/ru-ru/articles/summer-school-2010-main/.
Пересчитал, на X5560 с опциями GCC –O2 –msse2, дабы уровнять уровни оптимизации с Intel® Composer XE. Результаты следующие: 98.17 сек (1 поток), 60.66 сек (2 потока), 38.46 сек (4 потока), 23.77 сек (8 потоков) и 14.74 (16 потоков).
В результате, видно, что с GCC расчет происходит быстрее на одном потоке. Но картина относительно масштабируемости не изменилась: Для GCC 4.5.0 эффективность распараллеливания ~0.5 до тех пор, пока количество потоков не превышает количества физических ядер.
Я ставил перед собой задачу: понять как правильно применять таски в рекурсиях. По умолчанию многие опции компилятора(в том числе и оптимизации) активны. К примеру, у Intel® Compilers –O2 и –xSSE2 для Linux. Можно и руками все заанролить. Про какую именно оптимизацию идет речь?
Composer XE == Compiler Pro v.12. Только, теперь не будет 12-й версии будет продукт под названием Intel® C++/Fortran Composer XE. В которой входят (как компоненты) Intel® C++/Fortran Compiler, Intel® TBB, IPP и MKL. Так же есть продукт Intel® Parallel Composer(не эквивалентно Intel® Composer XE), который является компонентой Intel® Parallel Studio.
Я не следил за подобными обсуждениями. ИМХО при пинке и восстановлении баланса человек внутри такого робота будет ощущать на себе не одно g, либо масса робота будет такая, что не каждый лифт сможет поднять его.
Я предлагаю расширить список доступных устройств мобильными устройствами и GPU, но оставить и оптимизировать часть для PC. А самое главное дописать и оптимизировать скедулер (англ. scheduler). В этом случае не надо жить сегодняшним днем, стоит заглянуть чуть-чуть вперед. Этот опыт сделает прорыв в клауд компьютенге, если уже не сделал.
Хорошая новость, сам с SETI@HOME знаком со времен dial-up. Да и с другими проектами: p-grade, gimps. Но не в ту сторону копают ИМХО. Кластера в основном принадлежат организациям, которые не особо занимаются благотворительностью, т.е. просто так не дарят вычислительное время. Следует обратить внимание на владельцев мобильных устройств. В этом случае публика SETI@HOME увеличится.
Этот пример представляет собой одну из задач по расстановке фигур на шахматной доске. Классические задачи формулируются для шахматных досок 8X8. Но в данном случае, доска имеет любой размер (по умолчанию 12). Размер доски передается как параметр исполняемому файлу.
В данном примере размеры исполняемых файлов следующие:
Visual С++: 112664 байт.
Intel С++: 15360 байт.
Архив с исполняемыми файлами можно скачать тут. Пароль к архиву intelamd. По умолчанию трудоемкость задачи определяется числом 12 (размерность шахматной доски). Можно передать что-то по серьезнее 13 или 14 (как параметр)для увеличения общей трудоемкости.
З.Ы. надо еще добавить расширение к файлам .exe
Я уже писал тут, никаких дополнительных ключей не добавлялось. Использовались все ключи, которые выстовляются по умолчанию.
Тем не менее, вот команд лайны
для Visual C++: /Oi /GL /D «WIN32» /D «NDEBUG» /D "_CONSOLE" /D "_UNICODE" /D «UNICODE» /FD /EHsc /MD /Fo«Release\\» /Fd«Release\vc90.pdb» /W3 /nologo /c /Wp64 /Zi /TP /errorReport:prompt.
Actual result: плавной проруткой
Expected result: плавной прокруткой
Более подробная информация о формате Летней школы тут software.intel.com/ru-ru/articles/summer-school-2010-main/.
#cat /proc/cpuinfo
#cat /etc/issue
#top
Вот как-то так.
В результате, видно, что с GCC расчет происходит быстрее на одном потоке. Но картина относительно масштабируемости не изменилась: Для GCC 4.5.0 эффективность распараллеливания ~0.5 до тех пор, пока количество потоков не превышает количества физических ядер.
Visual С++: 112664 байт.
Intel С++: 15360 байт.
Архив с исполняемыми файлами можно скачать тут. Пароль к архиву intelamd. По умолчанию трудоемкость задачи определяется числом 12 (размерность шахматной доски). Можно передать что-то по серьезнее 13 или 14 (как параметр)для увеличения общей трудоемкости.
З.Ы. надо еще добавить расширение к файлам .exe
Тем не менее, вот команд лайны
для Visual C++: /Oi /GL /D «WIN32» /D «NDEBUG» /D "_CONSOLE" /D "_UNICODE" /D «UNICODE» /FD /EHsc /MD /Fo«Release\\» /Fd«Release\vc90.pdb» /W3 /nologo /c /Wp64 /Zi /TP /errorReport:prompt.
И для Intel С++: /c /Oi /Qipo /D «WIN32» /D «NDEBUG» /D "_CONSOLE" /D "_UNICODE" /D «UNICODE» /EHsc /MD /GS /fp:fast /Fo«Release/» /W3 /nologo /Wp64 /Zi