Известно, что системы построенные на базе процессоров AMD Opteron реализуют архитектуру NUMA, когда каждый процессор имеет собственную память, время доступа к которой малО по сравнению с временем доступа к памяти соседей. Поискал, но не смог найти, как именно, через какие мосты и какие шины, т.е. в мелких подробностях, происходит взаимодействие нескольких Opteron'ов серии 83хх с PCI-E девайсом, в контексте чтения с него данных. Интересует для восьмипроцессорной системы, причем данные нужно раскидывать на восемь процессоров по порядку, т.е. первый буфер - на первый процессор, второй на второй и т.д... Поток данных очень большой. Никогда раньше с такими системами не встречался и очень не хочется наступить на какие-нить грабли, судя по всему их должно быть немало... Заранее благодарен
Главная шина является hypertransport. На ней седят процессоры дальше через мосты идет выход на PCI-E, PCI, ISA. http://www.hypertransport.org/docs/tech/HTC20051222-0046-0008-Final-4-21-06.pdf Собственно закидываешь в память данные и обрабатываешь. Процессарами. Для того чтобы производительность возросла надо закинуть данные в разные банки памяти. Остается выянить по каким адрессам находятся эти банки, как это сделать незнаю.
Спасибо за сцылко, я на amd-шном сайте ковырялсо, но спецификаций по шине не нашел. Адресация там плоская,как и пнях, так что адреса узнать несложно. Можеть кто посоветует чо почитать по программированию NUMA-систем?
The_GorYnycH Читай внимательно описание мамы. У нас есть сервер 8-ми процессорный. Так вот с шиной PCI работает только один из них и под это отведена одна из его шин гипертранспорта. Т.ч. раскидывать по памяти будет он, точнее операционка. Далее нужно, что БИОС имел хоршие настройки для NUMA - мне товарищ приводил пример железки где вообще поменять ничего нельзя... Ну и операционка должна NUMA поддерживать, она по идее и должна управлять памятью и NUMA - не думаю что ты сможешь капитально что-то улучшить. Т.е. 1) нужно чтобы в БИОС-е можно задать оптимальный режим NUMA для твоего случая 2) чтобы ОС поддерживала NUMA 3) построить алгоритм с учетом 1 и 2 и проверить оптимальность.