Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2012, 01:15   #31
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
Так вот как именно тут сделать синхронизацию
если памяти много, то лучше хранить результат вычислений по каждому потоку отдельно, а потом их суммировать. Иначе слишком частая синхронизация по записи сведёт на нет выигрыш в производительности.

Другой путь -- подобрать перебор индексов таким образом, чтобы они как можно меньше пересекались среди потоков. Например, первый поток считает частицы 1-2, 1-3, 1-4, 2-3, 3-4 а второй частицы 5-6, 5-7, 5-8, 6-7, 7-8. Потом какой-то из них просчитает оставшиеся варианты. Тогда синхронизация тоже не нужна, но оптимально подобрать такой перебор может быть не так просто.


Цитата:
и не приведет ли она к тому что первый вариант будет быстрее чем второй?
если грамотно распараллелить и памяти хватит для результатов, то не должна ) Я тут помоделировал немного задачи условно похожие на ваши, получается, что многопоточный второй вариант процентов на 40 быстрее многопоточного первого:

Код:
JobType[1], 1 threads: 34609 ms / 400000000 op.
JobType[1], 2 threads: 17625 ms / 400000000 op.
JobType[1], 3 threads: 17563 ms / 400000000 op.
JobType[1], 4 threads: 17546 ms / 400000000 op.

JobType[2], 1 threads: 19844 ms / 199970000 op.
JobType[2], 2 threads: 13922 ms / 199970000 op.
JobType[2], 3 threads: 12406 ms / 199970000 op.
JobType[2], 4 threads: 11813 ms / 199970000 op.
Исходник в аттаче, хотя я там сам через неделю уже не разберусь )


> Вам нужно распараллелить задачу или сделать, чтобы задача работала быстрее?

обычно первое подразумевает второе )
Вложения
Тип файла: zip ht3.zip (1.3 Кб, 8 просмотров)
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 03.06.2012, 09:32   #32
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
> Вам нужно распараллелить задачу или сделать, чтобы задача работала быстрее?

обычно первое подразумевает второе )
Но не наоборот.
Поэтому меня и интересуют приоритеты: какая из этих задач важнее?

2gusluk: Напишите, пожалуйста порядок величины N, а также укажите размер области, в которой обитают частицы.

Последний раз редактировалось s-andriano; 03.06.2012 в 09:51.
s-andriano вне форума Ответить с цитированием
Старый 04.06.2012, 02:33   #33
gusluk
Форумчанин
 
Аватар для gusluk
 
Регистрация: 16.10.2008
Сообщений: 205
По умолчанию

Цитата:
интегрирование по времени производится с определенным шагом DeltaT
По условию задачи DeltaT меняться не должно, поэтому приняв её за 1 мы полностью исключаем ее из расчетов.
Цитата:
В коде то появляются, то исчезают какие-то странные константы
Код:
dVcurr*0.017453292519 ~ dVcurr*Pi/180
-приведение к радианам.
Цитата:
Напишите, пожалуйста порядок величины N, а также укажите размер области, в которой обитают частицы.
Чем больше частиц моделируем, тем точнее результат, их количество ограниченно только скоростью расчетов и временем, которое можем на это дело потратить. В однопоточном варианте моделировали не более10000 частиц, иначе слишком много времени требовалось для расчетов.
Область "обитания" частиц зависит от условий задачи и масштаба, обычно не более 100000Х100000, да и вряд ли это имеет серьезное значение.
gusluk вне форума Ответить с цитированием
Старый 06.06.2012, 02:33   #34
gusluk
Форумчанин
 
Аватар для gusluk
 
Регистрация: 16.10.2008
Сообщений: 205
По умолчанию

Сделал как предложил veniside, получилось на 30% быстрее чем первый вариант. Тоже не плохо.
Тут возникла мысль с помощью CUDA загрузить этой задачей gpu какого нибудь GTX 680. Какой может дать выигрыш использование этой технологии в данной задаче?
Никогда с этим не сталкивался и не хочется тратить кучу времени на изучение если это не даст выигрыш хотя бы в два раза по сравнению с готовым вариантом.
gusluk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
оптимальный план замены оборудования DampuL Паскаль, Turbo Pascal, PascalABC.NET 4 23.12.2010 16:04
Оптимальный поиск и сравнение строк Utkin Общие вопросы по программированию, компьютерный форум 19 30.06.2010 14:54
нужно найти оптимальный путь Marina87 Фриланс 16 29.04.2010 16:01
оптимальный размер окна программы street-walker Общие вопросы Delphi 10 06.01.2010 00:04