|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.05.2017, 13:13 | #21 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Да, формально тут фигово параллелится, т.к. у вас последущие вероятности зависят от предыдущего нейтрона. Но, если, скажем, у нас есть 8 нейтронов со слегка разными скоростями, и не важно, какой влупить 1м, а какой 2м, то можно параллелить.
Кроме прочего, стоило было бы ввести нормализирующий множитель, приводящий вероятность в целый uint64_t. Тогда, будет максимальная производительность процессора (он быстрее с целыми) + для параллельности есть маханизм "одновременной" работы с целыми (std::atomic<uint64_t>), без потерь на синронизацию. Последний раз редактировалось alexzk; 08.05.2017 в 13:18. |
08.05.2017, 14:37 | #22 |
мальчик-помогай =)
Форумчанин
Регистрация: 16.09.2010
Сообщений: 522
|
чисто программно там особо нечего оптимизировать, слишком мелкая задача (я думал у вас там прям моделирование, с кучей взаимодействий, расчётов и т.д.)
Стоит почитать вообще про "моделирование случайных процессов", там должны быть более грамотные алгоритмы. Как по мне, не имеет ценности один цикл моделирования и нужна статистика по сотням экспериментов, а это уже требует грамотного мат. аппарата и специализированных методов, иначе время расчётов будет нереальным. Кроме того, очень вероятно получить совсем "левые" результаты т. к. программа работает с малыми величинами, которые компьютер любит округлять. Это особенно актуально для s_ge* и всего что зависит от них. Моё мнение: НЕ пытайтесь ускорить текущий код, а изучите материалы по МСП и попробуйте составить др. модель. |
08.05.2017, 15:26 | #23 | ||
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
Цитата:
Цитата:
Что касается результатов, я проверял вероятности, они правильные. Ну, а насчёт ускорения кода... я согласен отчасти, но это попытка, думаю, она имеет право на существование Тем более, что эта "игрушка" даёт приблизительно правильный результат (тип проводимости правильный и значение степени компенсации близкое к экспериментальным данным). Кроме того, я же назвал тему "Операции в больших циклах", это важно учитывать в любом случае Последний раз редактировалось Haric_110; 08.05.2017 в 15:30. |
||
09.05.2017, 10:55 | #24 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Ну вот...теперь, если допустить, скажем не последовательность каждых из 8 событий (думаю это физ. верно), то получится ускорение в 70% * 8 * 2 раз = 11.2 (70%, т.к. такой прирост в среднем дает +1 процессор).
|
09.05.2017, 13:18 | #25 |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
Допустимо, конечно. Допустить можно непоследовательность очень большого числа событий, тем более, если не учитывать упругие взаимодействия... (Вообще, модель можно сильно упростить без потери качества, это не моя идея — по одному нейтрону проверять)
Наверное, только при условии, что программа будет выполняться на 8-ми ядерном процессоре типа Intel Xenon можно параллелить на 8 потоков? В моих-то лабораторных условиях лишь 4-х ядерный AMD A10) Но, если чисто теоретически прикидывать... наверное, это зависит от того, на чём выполняться будет. Мне надо ещё разобраться с многопоточностью... Как делить память... Ведь одни и те же переменные менять надо всем процессорам. Я ещё совсем нубик и чайник во всём этом |
09.05.2017, 14:02 | #26 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Цитата:
А потоков навешать можно около 2х от ядер/процессоров в системе, я думаю. Точнее нада поэксперементировать, что-то в интервале "число-ядер" - "число-ядер" * 2 будет (если включен HyperThreading, то скорее 1х выйдет - там "удвоение" аппаратное, т.е. сам гипер считаем, как "ядро" и ничего у себя не удваиваем). А еще быстрее, наверно, будет на каждое ядро повесить 1/N расчетов независимо (с локальными переменными), а потом по окочании всех N просуммировать N результатов. Последний раз редактировалось alexzk; 09.05.2017 в 14:06. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
WriteFile в циклах | _PROGRAMM_ | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 11.02.2012 23:00 |
Нужно на циклах реализовать. | renat1501 | Помощь студентам | 5 | 18.09.2011 21:28 |
RANDOM в циклах | Stakhoff | Общие вопросы C/C++ | 5 | 05.04.2011 12:52 |
глюк в циклах | Rio309 | Общие вопросы Delphi | 4 | 05.10.2009 15:44 |
вопрос о циклах | alexsamurai | Microsoft Office Excel | 9 | 10.01.2009 13:25 |