Member
Статус: Не в сети Регистрация: 25.12.2005 Откуда: Даальний восток
Написана расчётная программа, достаточно ресурсоёмкая. Обрабатывает много цифр с постоянным обращением к ОЗУ, занимает около 500мб.
Расчёты (должны продлиться несколько мес) выполняются на I7 930@4400 с включённым НТ, чтобы одновременно запускать 8 копий программы. Как только копия заканчивает расчёт, запускается новая с другими начальными данными итп
Чем больше потоков запускается, тем больше времени каждому из них требуется на расчёт (даже без включения НТ) Тестили скорость на мелком отрезке - получилось следующее(копий/секунд): 1-105 2-125 3-143 4-162 5-175 6-193 7-218 8-244
По памяти, но суть понятна.
Из за чего такое может происходить? 1я копия занимает весь кеш, а последующие копии его забирают обратно под себя? Он ведь не разделяемый у I7... Но тогда 5-8 потоки не должны увеличивать время расчёта. Или системной шины QPI не хватает и ядра перекрывают друг друга?
У кого какие версии?
PS Программа написана на делфи 7. ОСь - ХП Х64.
Пробовали прогонять на висте и других процессорах - повторяется падение скорости от кол-ва потоков.
блокировки есть? любые: мьютекы, блокировки кусков памяти, семафоры и т.д. на сколько активно ведётся работа с памятью? часто ли идёт запись по одним и тем же адресам?
Member
Статус: Не в сети Регистрация: 25.12.2005 Откуда: Даальний восток
ToSHiC
Да не должно накладок быть, каждая копия отводит себе по 500мб памяти, с ними и работает. Работа с ОЗУ - очень интенсивная. Скоро отпишусь подробнее.
Под ГПУ... Да мысль-то хорошая, только на CUDA с С++ хорошо переходить, а не с делфи. Брать для изучения CUDA именно здесь и сейчас смысла нет - не ясно, насколько затянется разработка, а через ~2-3 мес на том, что есть получим расчёты.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения