LINUX.ORG.RU

Скорость передачи по PCIe

 


0

1

Некоторые люди утверждают, что перекачивать данные по шине PCIe медленнее, чем по SATA-II.

Нашел тут гайд, где английским по белому написано, что скорость PCIe 3 = минимум пол гигабайта в секунду (per lane, которых 16 штук).

Учитывая, что размер всего дерева portage меньше гигабайта (т.е. займёт доли секунды), а расчёт зависимостей длится минутами, передача по шине PCIe вообще незаметна.

Практический замер: PCIe x16 at x16, transfer rate=1.65 GB/s (read and write) (one card)

По SATA-II скорость 300 MB/s и то теоретическая. Практическая у SATA-II 285/275MB/s (там же)

Самостоятельно померить не получается, потому что утилита bufferbandwidth не опакечена.

★★☆

Последнее исправление: Einstok_Fair (всего исправлений: 8)

Воспринимать всерьёз написанное шизиками

Особенно дурачком-Квазарушкой.

anonymous
()

Учитывая, что размер всего дерева portage меньше гигабайта

И что? Можешь для замеров в tmpfs поместить при наличии памяти, все равно устанешь ждать

madcore ★★★★★
()
Последнее исправление: madcore (всего исправлений: 1)
Ответ на: комментарий от madcore

Идея была в том, чтобы запихнуть граф зависимостей в память GPU и там над ним работать.
Размер графа зависимостей наверное меньше чем размер дерева portage (потому что кроме зависимостей там ещё инструкции по сборке)
Из этого следует, что либо граф влезет целиком в видеопамять, либо можно купить такую видеокарту, что будет влезать.

Т.е. не просто поместить дерево в память, а использовать GPU вместо CPU.

Einstok_Fair ★★☆
() автор топика
Последнее исправление: Einstok_Fair (всего исправлений: 1)
Ответ на: комментарий от Einstok_Fair

Докатились. Пакетному менеджеру нужен GPU.

madcore ★★★★★
()
Ответ на: комментарий от Einstok_Fair

Ты сначала на процессоре его распараллель. Сам понимаешь, даже если сами разработчики этого не осилили, то скорее всего тебе земля пухом.

anonymous
()
Ответ на: комментарий от anonymous

почему я? У нас на планете людей что-ли мало?

на процессоре не интересно, есть более интересные темы

Einstok_Fair ★★☆
() автор топика
Ответ на: комментарий от i-rinat

Если ты не спрашивал, то значит ты писал враньё:

Ты-то никому не помогаешь

Подход «разжуй да в рот положи» (комментарий)

мне даже не интересно.

Жаль, что сложно добавиться к тебе в список друзей на LOR. Но я постараюсь.

Einstok_Fair ★★☆
() автор топика
Последнее исправление: Einstok_Fair (всего исправлений: 1)

Ты не сможешь решить задачу рассчета зависимостей на GPU. Для GPU тебе данные нужны в виде уже пригодном для параллельной обработи, потому что алгоритмы должны быть data parallel. Высчитать зависимости и привести граф в data parallel пригодное состояние мне кажется одинаковые задачи и займут приблизительно одинаковое количество времени.

GPU вступает в игру только тогда когда у тебя есть уже много-много-много одинаковых по-природе объектов и тебе надо над всеми ими выполнить одинаковую операцию. Граф - не data parallel сущность в своем сыром виде

DiKeert ★★
()
Ответ на: комментарий от DiKeert

Having said that, задача сделать это graph parallel - то есть выкидывать ветки графа в отдельные треды мне кажется тривиальной при условии, что зависимости представляют собой ациклический граф?

DiKeert ★★
()

размер всего дерева portage меньше гигабайта

а расчёт зависимостей длится минутами

в программировании для GPU сотни ограничений... слишком много базового надо объяснять, ты не поймешь пока сам не освоишь
может тут будет иложено понятно тебе https://sqream.com/where-are-the-gpu-based-sql-databases/

Think of the GPU as a coin press machine, which can punch out 100 coins with one operation from a single sheet of metal, whereas a CPU is a coin press which can punch out 10 coins at a time from a strip of metal. While the CPU might have a faster “time between punches”, it also requires a faster feed rate of metal strips as well. This is the key difference between the GPU and CPU. The GPU is throughput oriented, while the CPU is latency oriented.

перефразируя- если у тебя есть БД(небольшая которая влазит в память видеокарты) и есть 2000*2000(реальная цифра для современной видеокарты) ПРОСТЫХ запросов одновременно- то видеокарта обработает все запросы одновременно и даст «выбор из БД» быстрее чем CPU
но если хоть 1 (из 2000*2000) запрос сложный, c условиями «выбрать из таблица/колонка/строка эелемент1 и если >0 то из таблица/строка/колонка ...»(понадобиться 2 раза читать 1 память для 1 команды это замедлит все остальные команды так как результат возвращяется одновременно для всех), одного такого условия хватит что в разы замедлить все 2000*2000 запросов, условия выбора из БД на видеокарте должны быть одинаково просты

проецируя это на «portage» где все операции «пошаговые» там нет готового 2000*2000 запроса
тебе понадобиться для начала создать «один запрос» как ты его сделаешь?
когда алгоритм «portage» таков;
взять список зависимостей(к примеру, оно аналогично ко всему другому) -> взять список зависимостей <первый эелемент> -> проверить налицие в системе рекурсивно в глубину по каждому из нижеследующих элементов

рабочий пример алгоритма:

список <ВСЕХ ПАКЕТОВ> = A B C D E F G H J K L M N
список <ЗАВИСИМОСТЕЙ> = [A:B C, B:M N, C:D E, E:K L M N, N:G H J] (чтоб установить пакет A нужно установить B, C, M, N, D, E, K, L, G, H, J (удачи вычислять последовательность установки еще))
список <УСТАНОВЛЕННЫХ ПАКЕТОВ> = A B C J K L M
мы устанавливаем пакет A

1. шлем готовую отсортированную таблицу <ВСЕХ ПАКЕТОВ> и <зависимостей> в ГПУ
2. берем список зависимостей для пакета A из GPU
3. получаем <B C>
4. берем список зависимостей ОДНОВРЕМННО для B и C (в этом отличие GPU от CPU)
5. получаем <M N> <D E>
6. берем список зависимостей ОДНОВРЕМЕННО для M N D E
7. получаем <пусто> <G H J> <пусто> <K L M N>
8. берем список зависимостей ОДНОВРЕМЕННО для G H J K L (для тех что были не берем)
9. получаем <пусто> <пусто> <пусто> <пусто> <пусто>
10. сортируем полученный список зависимостей, получаем B C D E G H J K L M N (пакета F нет)
12. сравниваем список <установленных пакетов> с полученным списком нужных пакетов (выше) (вот тут сравнивать можно на видеокарте одновременно все элементы)
13. ставим нехватающие пакеты

как видишь лишь 2 операции можно перенести на «видеокарту»
1. взятие одновременно десятков/сотен/тысячь «таблиц из БД»(аналог списка зависимости для пакета) а не по 1 и не по 1 элементу как на процессоре
2. сравнение
как это на процессоре:

for(<элемент_id2> из <полученнй список нужных пакетов>){[br]
	for(<элемент_id1> из <установленных пакетов>){[br]
		элемент_id1==элемент_id2[br]
	}[br]
	(дальше код устанавливаем или считаем установленным)[br]
}

на видеокарте будет так:

у тебя будет xxxx*xxxx одновременных потоков
каждый получает общую память <установленных пакетов>
каждый из потоков получает <элемент_id2> из <полученнй список нужных пакетов> (тоесть поток 1 получит B, поток 2 получит C и тд из пункта 10 выше)
каждый поток сравнит свой один <элемент_id2>== каждому из <установленных пакетов>
тоесть это выглядит как «мы избавились от верхнего цикла» (этот «for(<элемент_id2> из <полученнй список нужных пакетов>)» ) и весь этот цикл решается одновременно без цикла(тоесть быстрее когда у тебя 2000*2000 элементов и больше)

...всеравно не избавиться от «поэтапного разбора списков» как взятие зависимостей пакета A потом B C и их подзависимостей,это все использование видеокарты для «мелких» запросов, такие объемы слишком малы и будут намного медленнее чем на процессоре

missxu
()

В одной клетке ДНК - очень много информации. Скорость передачи данных по писе ай е... Ну, не менее гигабайта в секунду

anonymous
()
Ответ на: комментарий от i-rinat

Любое действие можно оценить в положительном и отрицательном ключе. Если мне кажется, что ты энтузиаст, то любые твои действия расцениваются как помехи мне (уводишь дискуссии от темы, наезжаешь, оговариваешь, подначиваешь и т.д.). Никогда я не скажу, что ты на форуме помогаешь, потому что всё что ты делаешь ты делаешь для себя, по своей мотивации. Хочется тебе ачивку (с твоей точки зрения) получить, вот ты и пыжишься. А мне от твоей «помощи» один вред.

Einstok_Fair ★★☆
() автор топика
Ответ на: комментарий от Einstok_Fair

Идея была в том, чтобы запихнуть граф зависимостей в память GPU и там над ним работать.

Как красиво ты заменил слово «майнить».

Oberstserj ★★
()
Ответ на: комментарий от Oberstserj

Имеешь в виду пакетный менеджер==исключительно подсчёт хешей?

anonymous
()
Ответ на: комментарий от Einstok_Fair

Тут на форуме завёлся багтрекер, а я всё пропустил? Пока что я вижу, что ты задаёшь вопросы, на которые можно легко найти ответ в гугле.

i-rinat ★★★★★
()

Прочитал заголовок влух. Получилось «скорость передачи данных по писе ай е!»

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.