Свежие комментарии
Title | Comment |
---|---|
Ну вот получилось писать на 6.7Gb/sec, правда из четырех тре |
Ну вот получилось писать на 6.7Gb/sec, правда из четырех тредов. Из одного только пять. |
В-общем, один movntps/movntdq |
В-общем, один movntps/movntdq льет примерно 5 гигабайт/сек. Он же с openmp - 6-6.1 гигабайт/сек. Если зажать число потоков до 4 (у меня 8 ядер: 4 да гипертрединг), то 6.7 Код, который пишет компилятор - медленнее, примерно 5gb/sec в пике. |
Ну формально - 3 канала на |
Ну формально - 3 канала на ~11gb/sec (DDR3, 1500 гигагерцiв), итого 33, это на чтение. Как прикинуть влияние задержек - понятия не имею. А по факту - вот сижу и щупаю, сколько можно нагадить в память зараз. |
"8-9 гигабайт в секунду" это |
"8-9 гигабайт в секунду" это же наверное на одном ядре.. чтобы всю псп забить, насколько я помню, нужно всеми ядрами пыхтеть.. |
Смысл изначально был в том, |
Смысл изначально был в том, что было два слота, один PCI, второй PCIe и нужно было два порта, сотку к ISP, гигабит к рабочей станции (наплатный был занят гигабитом к остальному дому и порты в свитче кончились). С тех пор однопортовая PT-шка просто есть. Когда она освободилась, я ее ткнул в WS, для сравнения с наплатным реалтеком. Большой разницы не обнаружил, впрочем. |
PCI однопортовка стоит |
PCI однопортовка стоит столько же сколько PT'шка :) |
Забавно. У меня |
Забавно. У меня net.isr.direct=0 и net.isr.direct_force=0 ровно наоборот делает, минимум 100 Мбит "срезает". P.S. Не очень вижу смысла в покупке однопортовой PT для дома, 32-битного PCI на гигабит всё же хватает, пусть и впритык. |
Взял себе такой |
Заказывал на computeruniverse. |
Я развлекался именно с интелом, профайлер хороший имею на ви |
Я развлекался именно с интелом, профайлер хороший имею на винде только. Выигрыш VS2010/Intel я хорошо помню только для конкретного распаковщика хаффмана, который как раз не параллелится. Процентов 10, кажется. Автовекторизация хотспоты не лечит, не-хотспоты неинтересны. Что касается OpenCL - да, планирую конечно, но для других мест и не сейчас (и наверное не LibRaw, а другой продукт). Проблема тут в том, что на карту льется гигабайт 5 в секунду и столько же обратно, поэтому нужно там делать сразу здоровый кусок работы, а не хотспоты. |
Разрешения SSE мало, тот-же GCC надо отдельным специальным к |
Разрешения SSE мало, тот-же GCC надо отдельным специальным ключиком пинать, чтобы автовекторизовывать начал. > И от смены компилятора с Visual Studio на 12-й интел - тоже заметный выигрыш. А заметный - это сколько? И интел с автовекторизацией или как? PS: Я почему столько вопросов задаю - уж очень любопытно выяснить, каких высот достиг прогресс. А у меня таких задач нет. |
От разрешения генерировать SSE код (что 2, что 4.1) выигрыш |
От разрешения генерировать SSE код (что 2, что 4.1) выигрыш какой-то совершенно копеечный, единицы процентов. И выигрыш - не на хотспотах. Они, собственно, хотспоты (в большой степени) по той причине, что компилятор там напуган и хороший код сгенерировать не может. |
Нравится/не нравится выходной ассемблер компилятора - не чис |
Нравится/не нравится выходной ассемблер компилятора - не числительное. А вот померять времена выполнения и сравнить - сколько там процентов получится? Интересно ведь. Или это сложно/долго/муторно? |
Я пробовал с интеловским компилятором. То, что он делает на |
Я пробовал с интеловским компилятором. То, что он делает на хотспотах - мне не нравится, руками можно сильно лучше и с относительно небольшими затратами умственного труда. |
Мы, кажется, о разном. Автовекторизатор вроде как работает |
Мы, кажется, о разном. Автовекторизатор вроде как работает с существующим кодом и разве только просит прагмы расставить. |
Да в-принципе да, может быть и больше можно. Всякие тесты m |
Да в-принципе да, может быть и больше можно. Всякие тесты memory-copy намеривают для DDR3-1600 (трехканальной) в районе 8-9 гигабайт в секунду, это и есть целевое значение. |
скажем так, автовекторизация на icc работает, но для этого к |
скажем так, автовекторизация на icc работает, но для этого код должен быть написан в специальном виде (что по затратам фактически эквивалентно написанию кода на SSE intristics (фактически аналог ассемблера)). |
<b>>> т.е. в ~5.5Gb/sec <<</b> Это откуда такие данные ?!? и |
>> т.е. в ~5.5Gb/sec << (или это в битах и для кэша? :-)) |
речь не о слепоте (которой там нет и в помине), а об спектра |
речь не о слепоте (которой там нет и в помине), а об спектральных характеристиках. не забываем, что сенсор специально закрывают УФ+ИК фильтрами, чтобы придать нужную форму кривым (на границах диапазона). |
Я может щас всем известное |
Я может щас всем известное напишу или глупость какую. |
Ну например GCC кое-что умеет, но в принципе понятно, что ру |
Ну например GCC кое-что умеет, но в принципе понятно, что руками можно сделать больше. Ты-бы, кстати, попробовал хохмы ради на libraw, получится-ли что-нибудь, и главное - сколько :) А библиотеки - ессно ручной вылизанный код для определенных задач будет кошернее. Да и обычные программисты меньше косяков понаделают. |
В автовекторизацию просто скалярного кода на C - я верю слаб |
В автовекторизацию просто скалярного кода на C - я верю слабо. |
Не, естественно reference C будет, как без него Я скорее пр |
Не, естественно reference C будет, как без него Я скорее про то, что SSE2 варианта я специально делать не буду. Если вдруг появится сам для каких-то кусков, ну отлично тогда. |
Ну да. Lossles jpeg, да еще и с нетрадиционным layout, <a hr |
Ну да. Lossles jpeg, да еще и с нетрадиционным layout, только что обсуждали. И одним куском, DNG с такой же паковкой - побит на tiles (необязательно, но по факту - очень часто) и можно параллелить по процессорам хотя бы. |
Забивать-то зачем? Сделай reference C вариант, и дальше опти |
Забивать-то зачем? Сделай reference C вариант, и дальше оптимизируй ассемблер, сколько влезет. На рантайме довольно дешево можно решить, что использовать. PS: А потом, лет через N, останется убедиться, что С уже не медленнее ручного вариант и расслабиться, качаясь на кресле-качалке у камина :-D |
Кэнон чем-то ресурсоёмким запакован ? |
Кэнон чем-то ресурсоёмким запакован ? |
Да, там конечно другие вычисления и та же интерполяция - отн |
Да, там конечно другие вычисления и та же интерполяция - относительно медленная. Но 600 миллисекунд там, 250 - сям, глядишь и еще секунду снимем с 20-мегапиксельной картинки. Если без демозаики - а этот режим весьма интересен для всяких просмотрщиков - то я надеюсь в 1.5 секунды для 20-мегапикселей уложиться на все. Это для Кэнона, который медленно распаковывается, с теми же Сонями нет причин не уложиться в полсекунды. А 300Mb/sec - это цветовое преобразование, на входе тройка R-G-B (или четверка R-G-B-G) и матрица матричного профиля, на выходе - R-G-B в каком-то приличном цветовом пространстве вроде sRGB/gamma 1 |
Ого. Вопрос в том, насколько это ускорит всё преобразование |
Ого. >> тот код что сейчас есть офигачивает ~300Mb/sec, Те. 300 метров raw данных в секунду ? А на каком преобразовании ? |
Минимум-максимум - ровно вчетверо быстрее. На одном треде. |
Минимум-максимум - ровно вчетверо быстрее. На одном треде. Умножение вектора на матрицу еще не попробовал, но сдается мне что разница будет еще больше: тот код что сейчас есть офигачивает ~300Mb/sec, а причин не упереться в ту же память (т.е. в ~5.5Gb/sec т.к. мы еще и пишем туда) я не вижу. |
пардон 8-) А это сильно ускорит ? Ну, если можно получит |
пардон 8-) |
А причем тут фотошоп? Я чисто о своем (см. теги). Смотрю на |
А причем тут фотошоп? Я чисто о своем (см. теги). Смотрю на хотспоты, смотрю на SSE-инструкции и думаю. Я, конечно, эти тестовые примеры еще и в OpenMP заверну, может оказаться, что на 4 горшках оно и без SSE упирается в память, тогда и ладно. |
Pages
