загрузить шину
От: exones  
Дата: 08.01.06 07:08
Оценка:
господа. обращаюсь вот с какой проблемой: мне необходимо написать программу, которая как можно больше грузит шину данных. суть программы: показать одну из проблем масштабируемости систем, в частности, сведение на нет выигрыша при распраллеливании при полной загрузке шины.
я делал так: гонял в памяти через регистровую переменную массивы (а вернее сказать, бмпшки) размером 4000 х 4000 24b в 6-12 потоков, но шину это грузило процентов на 30-40 и никакого ожидаемого эффекта не наблюдалось.у меня, к слову Dual DDR 800, две планки по 512.

посоветуйте, пожалуйста, как полно загрузить шину? * очень нужно и именно сегодня
Re: загрузить шину
От: gear nuke  
Дата: 08.01.06 12:42
Оценка:
Здравствуйте, exones, Вы писали:

E>я делал так: гонял в памяти через регистровую переменную массивы (а вернее сказать, бмпшки) размером 4000 х 4000 24b в 6-12 потоков, но шину это грузило процентов на 30-40 и никакого ожидаемого эффекта не наблюдалось.у меня, к слову Dual DDR 800, две планки по 512.


Можно копированием памяти и грузить. Только нужно правильно его реализовать, например, как здесь (достигается ~85% от теоретического предела). Стандартный memcpy в Intel C++ вроде бы подобным образом и работает.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[2]: загрузить шину
От: exones  
Дата: 08.01.06 13:27
Оценка:
Здравствуйте, gear nuke, Вы писали:

GN>Можно копированием памяти и грузить. Только нужно правильно его реализовать, например, как здесь (достигается ~85% от теоретического предела). Стандартный memcpy в Intel C++ вроде бы подобным образом и работает.


да, можно... то есть просто копировать, к примеру, пару метров блок префетчем? а это наоборот не разгрузит шину? то есть мне нужно как раз почти полностью забить пропускную способность памяти..
Re[3]: загрузить шину
От: gear nuke  
Дата: 08.01.06 18:06
Оценка:
Здравствуйте, exones, Вы писали:

E>да, можно... то есть просто копировать, к примеру, пару метров блок префетчем?


Да. Важно, что бы объём был больше размера кеша. Можно и немного усложнить — читать по байту из линеек (16 или 32 байта) и писать нули блоками.

E>а это наоборот не разгрузит шину? то есть мне нужно как раз почти полностью забить пропускную способность памяти..


Метод обладает максимальной скоростью как раз за счёт полной загрузки шины. Теоретический предел не достигается, но видимо он на то и теоретический.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.