Свежие комментарии
Title | Comment |
---|---|
это ж последовательный доступ. в таком режиме кэш оч.эффекти |
это ж последовательный доступ. кстати, а нафига нужно связываться с этими non-temporal hint ? кто-нибудь профилировал это дело, или так, от балды решили, что "будет лучше" ? |
мммм... оно, кажется, ни фига не "ПОСИКС", но тем не менее, |
мммм... |
нет, ты изначально рассматривал memory-to-memory copy. (напр |
нет, ты изначально рассматривал memory-to-memory copy. (напр. распаковку рава.) кстати, WC нарушает "все мыслимые" полиси работы с памятью (не гарантирован порядок того и сего, не гарантирована "когерентность" и ты.ды.), так что... |
Меньше чем ожидал, но вот скорости кэшей 2-мегабайтный work |
Меньше чем ожидал, но вот скорости кэшей Естественно, movaps а не non-temporal |
Не-не, это другое. Я могу взять у системы pinned memory (не |
Не-не, это другое. А то что выдают "по умолчанию" - оно вообще никуда не помэплено (может я взял, а использовать не собираюсь) и соответственно при первом обращении в каждую страницу у меня PF. То есть про кэш ты пишешь - это теоретически правильно, если бы у меня речь шла о мегабайтах т.е. о размерах сравнимых с размерами кэшей, то скорости были бы еще выше. Собственно, хрен ли, с кэшом сейчас померяю тоже. В смысле, на маленьком working set, мегабайт 6 |
Але, мы кажется <b>запись</b> обсуждали, причем тут prefetch |
Але, мы кажется запись обсуждали, причем тут prefetch? |
Конечно асинхронная, если писать по 16 байт вместо 64, счаст |
Конечно асинхронная, если писать по 16 байт вместо 64, счастья не будет. Заметим в скобках, что отключение L2/L3, которым ты тут пугаешь, на скорость этой записи вообще не повлияют. |
а ты отключи, и вопросы отпадут сами собой :-)) кстати, кол |
а ты отключи, и вопросы отпадут сами собой :-)) кстати, коль уж кэш не при чём, то каким образом "если проинитить странички заранее, а не писать в только что выделенные, то скорость записи становится ближе к ожидаемой" ? |
полагаю, что prefetch для того и был придуман, чтобы уменьши |
полагаю, что prefetch для того и был придуман, чтобы уменьшить кэш-промахи (а при опр. условиях и вовсе их избежать)... ты же отдаёшь себе отчёт в том, что prefetch выполняется асинхронно ? ...или таки - нет ? |
тогда уж цитируй дальше: "They are delayed in an internal bu |
тогда уж цитируй дальше: "They are delayed in an internal buffer ... If software cares about data being delayed developers да, кстати, таки ты выполняется ли у тебя по коду "deliberately empty the WC buffers" ? ...а ты попробуй ,-) |
ну да ладно.. |
ну да ладно.. |
Он не увидит этого, это из ЖЖ |
Он не увидит этого, это из ЖЖ приехало |
ну вот видишь, сам же |
Отсыпь травы, а то мне тебя не понять.. |
Интел пишет нам "Writes to the WC memory type are not cached |
Интел пишет нам Чем какбэ намекает нам, что у тебя sense какой-то не typical.... |
И че? Думаешь 100 миллионов 16-байтных значений поместятся |
И че? Думаешь 100 миллионов 16-байтных значений поместятся в кэше? |
Зачем мне его отключать то? Я щупаю реальный перформанс на р |
Зачем мне его отключать то? Я щупаю реальный перформанс на реальном таком полуторагигабайтном (уже) working set |
ну вот видишь, сам же <s>убедился</s> продемонстрировал, что |
ну вот видишь, сам же а теперь отключи L2/L3 кэш и насладись результатом (и приготовься к тому, что общая производительность системы упадёт на пару порядков... т.е. запасись |
Лёша, ты три тезиса связать сумеешь ? вот они: *: Move packe |
Лёша, ты три тезиса связать сумеешь ? так понятней ? ,-) // ну и про прочие prefetch & write back тоже не забываем, ага |
Под виндами - VTune, на маке |
Под виндами - VTune, на маке - Shark. Но на маке редко теперь работаю. |
Но. с этими _mm_... - я в |
Какой профайлер используете? VTune? |
Впрочем, если проинитить странички заранее, а не писать в то |
Впрочем, если проинитить странички заранее, а не писать в только что выделенные, то скорость записи становится ближе к ожидаемой: 10-11Gb/sec в один поток и 16-17Gb/sec во все ядра. Просто _mm_store_ps(куда, чего) в цикле. А read, три умножения и два blend, write туда-же - 10-11Gb/sec. |
Концепция отличная и, по всей |
Концепция отличная и, по всей видимости, для интересных мне приложений (с картинками) будет сильно производительнее на каком-то современном железе. Но. с этими _mm_... - я в профайлере смотрю на хотспоты и, при условии подходящей организации памяти, пишу буквально десяток инструкций. Или сто. А с OpenCL/CUDA - нужно довольно большие куски переписывать. Более объемная задача. |
Может быть и можно, я |
Может быть и можно, я пробовал анроллить и становилось хуже. |
Вот кстати gpu в этом плане |
Вот кстати gpu в этом плане более православные.. |
О круто! Вот только всё равно |
О круто! Кстати, думаю не обязательно прям все значения предварительно инициализировать - можно "прогуляться" с шагом 4KiB, или что-то типа этого.. А может есть что-то ОС-зависимое, но хочется без этого.. |
Агабля! Второй проход той же |
Агабля! Второй проход той же инициализациями (но другими значениями, чтобы было видно что работает) - 12.3Gb/sec в один поток и 16.7 - во всю дурь. Во, теперь похоже на правду совсем. |
Ну вот результат такой |
Ну вот результат такой уже: 1) Заполнение массива (1.5 гигабайта) через movntps - ~4.5Gb/sec без OpenMP и 5.8 - в 8 потоков. 2) операция вида Возможно, действительно на 1-м шаге мне выделяют память по страничкам, лениво так. Сейчас добавлю второй проход для шага 1. |
что-то маловато.. я думал |
что-то маловато.. я думал если захотеть, то на core i7 можно достичь больше 20GiB/s на чтение и запись.. Может там кто-то по рукам кнутом бьёт? |
Какой нафиг кэш, если а) я пишу 600 мегабайт в тесте б) mo |
Какой нафиг кэш, если |
О боже! вот уж воистину - ignorance is bliss это ты с кэшем |
О боже! это ты с кэшем работал. убери кэш, и все времена на порядок с лишним ухудшатся. ...можешь потыкаться в гугель с запросами ras/cas, хотя бы. |
Pages
