Нашёл для себя маленькое хобби - собираю по разным торрентам коллекцию любимых фильмов. Да-да, я считаю что платить за образы фильмов в цифровой век неправильно, киноиндустрия должна существовать с проката в кинотеатрах и за счёт платных каналов.
Решил искать только образы Blu-ray дисков (в крайнем случае Remux-ы 1080p), а не BDRip или HDRip. На пороге стандарт Ultra HD, и смотреть что-то вроде 720p в 2014 не вижу смысла. Я прошвырнулся по интернет-магазинам компьютерного железа - внутренний HDD объёмом 4 TB (максимально доступный объём для потребительского сегмента) сегодня можно приобрести за $160-$200. Т. е. за $400-$500 можно приобрести СХД объёмом в 10 TB. Взяв объём Blu-ray образа равным в среднем 40 GB, легко подсчитать, что в таком хранилище разместится приблизительно 250 Full HD фильмов. Этого вполне достаточно для коллекции, если только вы не киноман и не собираетесь хранить любимые сериалы в столь требовательном к объёму формате.
Update Jan 18, 2014
Приобрёл три жёстких диска Western Digital Green 4 TB для второй корзины в системном блоке. Оказалось, что меня раздражает их треск. Не удивительно - в каждом по 5 блинов объёмом 800 GB, вместо одного блина в четырёх дисках по 500 GB, что стоят у меня в RAID-массиве. Нужно сказать, что после нескольких лет сидения на системах с SSD эта трескотня обескураживает. При том что новоприобретённые диски сидят в салазках на резиновых шайбах (идут в комплекте с корпусом, Lian Li позаботились), так что шум носит больше акустический, а не структурный характер.
О боже, производители так и не смогли вылечить этот раздражающий треск после стольких лет усовершенствований! Я начал думать, как можно уменьшить звук от работы HDD, перерыл пол-интернета в поисках готовых решений. Подвешивание дисков на резинках (что многие делают) не уменьшает акустический шум, но вредит их работе. Всякие боксы охлаждения и уменьшения шума, говорят, только быстрее убивают HDD. В конечном итоге я поехал в маркет и купил два комплекта цветных резиновых губок толщиной 8-10 мм, по площади они оказались примерно равны площади форм-фактора 3.5". Я не без труда рассовал эти губки между всеми дисками в двух корзинах, и получилось что-то вроде железно-резинового бутерброда, который должен приглушать треск.
Включил компьютер и запустил тестовое копирование файлов с диска на диск. Треск был почти неслышим :)
воскресенье, 22 декабря 2013 г.
вторник, 17 декабря 2013 г.
вторник, 10 декабря 2013 г.
Ray-Traced Hard Shadows
Первый эксперимент с тенями методом трассировки лучей:
Даже путь в тысячу ли начинается с первого шага (Лао-цзы).
вторник, 3 декабря 2013 г.
Vectorized Ray-Triangle Intersection
Существуют различные алгоритмы для теста пересечения луча и треугольника. Изначально они написаны в рачёте не CPU, т. е. пытаются отложить деление и используют SSE оптимизации.
Я решил реализовать на GPU несколько вариантов и выбрать из них самый быстрый. В самом начале я руководствовался идеей, что можно упростить в первую очередь саму функцию пересечения - в случае с тенями нет необходимости в расстоянии до ближайшего треугольника и барицентрических координатах - достаточно только самого факта пересечения. Во-вторых, на GPU неэффективен бранчинг с маленькими ветками, поэтому ухищрения с отложенным делением не имеют смысла (да и само деление по-видимому дешевле).
Я решил опробовать три метода:
1) Барицентрический (Moller-Trumbore intersection algorithm).
2) Единичный тест (unit test) (Sven Woop).
3) Перпендикулярных плоскостей (Yet Faster Ray-Triangle Intersection).
Барицентрический тест можно свести к следующей HLSL функции: intersect. Она компилируется в 13 dxasm инструкций. Для этого треугольник хранится в памяти как опорная вершина и два вектора-ребра, убрана проверка на culling и деление, отсутствует двойная проверка (u > 1.0f, u + v > 1.0f). Реализация единичного теста у меня получилась на 1 dxasm инструкцию длиннее, а тест перпендикулярных плоскостей - ещё на 3 инструкции длиннее, главным образом потому, что в dxasm нет встроенной инструкции sign, она разворачивается в несколько сравнений (если придумаете, как её реализовать одной инструкцией, буду премного благодарен).
Чтобы протестировать производительнось функций, я написал простой ray-cast тест: 256 треугольников торуса тестируется в цикле на пересечение с лучом. При первом положительном результате цикл прерывается. Иерархические структуры не используются, но первый тест луча происходит со сферой, окружающей торус. Крайне неэффективный способ рисования, зато позволяет минимизировать latency от прыжков по памяти (в виду линейного чтения) и хорошо оценить синтетическую производительность GPU.
На Radeon HD 7990 в разрешении 720p и фиксированном положении геометрии к камере я получил следующие цифры:
barycentric: 3.73 ms
unit test: 3.85 ms
precomputed planes: 3.94 ms
Все три алгоритма имеют приблизительно схожую производительность, но барицентрический тест быстрее всех (классика!). На этом казалось бы можно и остановиться, но перед этим я наткнулся на описание оптимизации барицентрического теста применительно к GPU:
vectorized barycentric: 3.23 ms
vectorized unit test: 3.77 ms
vectorized precomputed planes: 3.52 ms
Ускорение практически на ровном месте! Единственный недостаток подхода - необходимо всегда делать padding в памяти до четырёх треугольников.
И последний шаг - квантование вершинных данных из FP32 в FP16. До этого данные размещались в cbuffer, но он может хранить только данные полной вещественной точности, поэтому пришлось использовать tbuffer. Эти два конвейера подачи данных в Shader Core отличаются в железе: tbuffer ближе всего к выборке из 1D-текстуры без фильтрации, cbuffer похоже кэшируется специальным образом для быстрейшего доступа (отсюда ограничения на формат данных из размеры буфера). На Radeon HD tbuffer оказывается медленнее cbuffer в линейном доступе при одинаковом объёме данных. Новые результаты:
vectorized fp16 barycentric: 3.08 ms
vectorized fp16 unit test: 3.64 ms
vectorized fp16 precomputed planes: 3.4 ms
Как легко видеть, самый быстрый вариант - это векторизованный барицентрический тест с выборкой из FP16-буфера! Доступ к видеопамяти является боттлнеком, думается что дальнейшее квантование могло бы ещё сократить время цикла. Нужно заметить, что данные с пониженной точностью порождают артефакты, т. к. в этом случае это не вершины, которые являются общими между несколькими примитивами, а предрассчитанные данные, уникальные для каждого треугольника.
Я решил реализовать на GPU несколько вариантов и выбрать из них самый быстрый. В самом начале я руководствовался идеей, что можно упростить в первую очередь саму функцию пересечения - в случае с тенями нет необходимости в расстоянии до ближайшего треугольника и барицентрических координатах - достаточно только самого факта пересечения. Во-вторых, на GPU неэффективен бранчинг с маленькими ветками, поэтому ухищрения с отложенным делением не имеют смысла (да и само деление по-видимому дешевле).
Я решил опробовать три метода:
1) Барицентрический (Moller-Trumbore intersection algorithm).
2) Единичный тест (unit test) (Sven Woop).
3) Перпендикулярных плоскостей (Yet Faster Ray-Triangle Intersection).
Барицентрический тест можно свести к следующей HLSL функции: intersect. Она компилируется в 13 dxasm инструкций. Для этого треугольник хранится в памяти как опорная вершина и два вектора-ребра, убрана проверка на culling и деление, отсутствует двойная проверка (u > 1.0f, u + v > 1.0f). Реализация единичного теста у меня получилась на 1 dxasm инструкцию длиннее, а тест перпендикулярных плоскостей - ещё на 3 инструкции длиннее, главным образом потому, что в dxasm нет встроенной инструкции sign, она разворачивается в несколько сравнений (если придумаете, как её реализовать одной инструкцией, буду премного благодарен).
Чтобы протестировать производительнось функций, я написал простой ray-cast тест: 256 треугольников торуса тестируется в цикле на пересечение с лучом. При первом положительном результате цикл прерывается. Иерархические структуры не используются, но первый тест луча происходит со сферой, окружающей торус. Крайне неэффективный способ рисования, зато позволяет минимизировать latency от прыжков по памяти (в виду линейного чтения) и хорошо оценить синтетическую производительность GPU.
На Radeon HD 7990 в разрешении 720p и фиксированном положении геометрии к камере я получил следующие цифры:
barycentric: 3.73 ms
unit test: 3.85 ms
precomputed planes: 3.94 ms
Все три алгоритма имеют приблизительно схожую производительность, но барицентрический тест быстрее всех (классика!). На этом казалось бы можно и остановиться, но перед этим я наткнулся на описание оптимизации барицентрического теста применительно к GPU:
Основная идея - тестировать луч на пересечение с четырьмя треугольниками за раз, реализовав в своём роде Super-SIMD. Несмотря на то, что GPU с рождения шейдеров применяют векторизацию, не всегда удаётся задействовать все слоты ALU.
Рассмотрим операцию скалярного произведения в HLSL:
Рассмотрим операцию скалярного произведения в HLSL:
bary.x = dot(t, p);Векторизованная форма примет вид:
vec4 bary4x = (t4x * p4x) + (t4y * p4y) + (t4z * p4z);Аналогично с векторным произведением и любыми другими операциями - работа идёт с четвёрками данных. Руководствуясь этой идеей, я написал векторизованные варианты трёх функций и промерил их длины в инструкциях dxasm. Барицентрический тест компилируется в 32 asm инструкции, т. е. примерно 8 инструкций на треугольник (против 13 в обычном варианте). Тест с перпендикулярными плоскостями компилируется в 40 asm инструкций, главным образом из-за отсутствия встроенного sign, но всё равно это 10 инструкций на треугольник против 17 в невекторизованном варианте. Я подготовил геометрические данные в памяти нужным образом и получил обновлённые результаты:
vectorized barycentric: 3.23 ms
vectorized unit test: 3.77 ms
vectorized precomputed planes: 3.52 ms
Ускорение практически на ровном месте! Единственный недостаток подхода - необходимо всегда делать padding в памяти до четырёх треугольников.
И последний шаг - квантование вершинных данных из FP32 в FP16. До этого данные размещались в cbuffer, но он может хранить только данные полной вещественной точности, поэтому пришлось использовать tbuffer. Эти два конвейера подачи данных в Shader Core отличаются в железе: tbuffer ближе всего к выборке из 1D-текстуры без фильтрации, cbuffer похоже кэшируется специальным образом для быстрейшего доступа (отсюда ограничения на формат данных из размеры буфера). На Radeon HD tbuffer оказывается медленнее cbuffer в линейном доступе при одинаковом объёме данных. Новые результаты:
vectorized fp16 barycentric: 3.08 ms
vectorized fp16 unit test: 3.64 ms
vectorized fp16 precomputed planes: 3.4 ms
Как легко видеть, самый быстрый вариант - это векторизованный барицентрический тест с выборкой из FP16-буфера! Доступ к видеопамяти является боттлнеком, думается что дальнейшее квантование могло бы ещё сократить время цикла. Нужно заметить, что данные с пониженной точностью порождают артефакты, т. к. в этом случае это не вершины, которые являются общими между несколькими примитивами, а предрассчитанные данные, уникальные для каждого треугольника.
воскресенье, 1 декабря 2013 г.
GPU Performance Chart
В голову пришла идея наглядно представить, как росла производительность GPU разных поколений за прошедшее десятилетие (для CPU это делать нет смысла - там всё скисло). Например, сложновато оценить производительность новых консолей Xbox One и PS 4 по отношению к старому и новому "железу". Поэтому с помощью Google Docs набросал небольшой график, данные для которого (теоретические GFLOP-ы) были взяты с TechPowerUp GPU Database .
Быстро становится понятно, насколько сильно устарели Xbox 360 и PS 3! И что производительность новых Xbox One и PS 4 находится на уровне GeForce GTX 480 (Fermi), что весьма неплохо, т. к. эта видекарта всего пару лет назад носила титул быстрейшей и все хотели иметь такую. Понятно и то, что если GPU будут прогрессировать в таком же темпе, то пропасть в производительности между ПК и консолями нового поколения за пару лет увеличится до неприличия, о чём и говорит NVidia.
понедельник, 18 ноября 2013 г.
пятница, 15 ноября 2013 г.
Shader Art
Наткнулся на интересные галереи GLSL шейдеров, доступные для просмотра прямо в браузере:
Множество интересных эффектов прямо в фрагментных шейдерах. Большинство из них опираются всего на три параметра - позиция фрагмента (x, y) и время (time). Попадаются просто шедевры кодинга, когда целый ландшафт или модель описывается процедурно в шейдере! Красиво, но медленно даже на Radeon HD 7990 :)
Программист графики может почерпнуть многие техники и трюки из подобных библиотек эффектов.
понедельник, 4 ноября 2013 г.
Chikaizpermi
Подсел на Чику из Перми. Записал на диск все их песни и слушаю по дороге на работу и обратно. Низкопробное творчество, но чем-то цепляет.
Очки Armani сменил на Ray-Ban
Даже не думай стоять со мной, хрен.
Даже не думай стоять со мной, хрен.
воскресенье, 3 ноября 2013 г.
Ray Tracing From the Ground Up
Решил посвятить свободное от работы время real-time рейтрейсингу. Первые результаты:
Луч тестируется на пересечение со сферами и треугольниками сцены. Если луч попадает на сферу, он отражается и тестируется его пересечение с треугольниками подиума. Вот так просто :)
Почему рейтрейсинг? Основная причина - неспособность растеризатора синтезировать изображение требуемого качества. Мне просто надоело выдумывать хаки, чтобы получилось изображение с нужным качеством. Возьмём те же тени - правильную пенумбру невозможно рассчитать, если силуэт объекта или его карта теней строится из одной точки. Penumbra wedges или blocker search не решают эту проблему - значит, эти подходы не дадут нужного качества (я уже не говорю про их сложность и прожорливость к вычислениям - а ведь это всё в рамках растеризации!). Правильный depth-of-field нужно делать с огромными хаками, т. к. растеризатор представляет собой pinhole камеру. Я уже не говорю про преломления - тут вообще тушите свет. И не рассказывайте мне про графику Battlefield 4. Мне - не надо.
Поэтому я решил на какое-то время оставить традиционные техники, связанные с растеризацией и покопать теорию по трассировке лучей, попытавшись реализовать на GPU некоторые эффекты. Например - те же тени. В последние годы скорость GPU значительно выросла, а при желании (и финансовых возможностях) в будущее можно заглянуть, вставив в системный блок SLI из 4 видеокарт. К слову - говорят, новые Hawaii замечательно масштабируются в CrossFire. Или всё-таки выбрать NVidia?
Луч тестируется на пересечение со сферами и треугольниками сцены. Если луч попадает на сферу, он отражается и тестируется его пересечение с треугольниками подиума. Вот так просто :)
Почему рейтрейсинг? Основная причина - неспособность растеризатора синтезировать изображение требуемого качества. Мне просто надоело выдумывать хаки, чтобы получилось изображение с нужным качеством. Возьмём те же тени - правильную пенумбру невозможно рассчитать, если силуэт объекта или его карта теней строится из одной точки. Penumbra wedges или blocker search не решают эту проблему - значит, эти подходы не дадут нужного качества (я уже не говорю про их сложность и прожорливость к вычислениям - а ведь это всё в рамках растеризации!). Правильный depth-of-field нужно делать с огромными хаками, т. к. растеризатор представляет собой pinhole камеру. Я уже не говорю про преломления - тут вообще тушите свет. И не рассказывайте мне про графику Battlefield 4. Мне - не надо.
Поэтому я решил на какое-то время оставить традиционные техники, связанные с растеризацией и покопать теорию по трассировке лучей, попытавшись реализовать на GPU некоторые эффекты. Например - те же тени. В последние годы скорость GPU значительно выросла, а при желании (и финансовых возможностях) в будущее можно заглянуть, вставив в системный блок SLI из 4 видеокарт. К слову - говорят, новые Hawaii замечательно масштабируются в CrossFire. Или всё-таки выбрать NVidia?
среда, 23 октября 2013 г.
воскресенье, 20 октября 2013 г.
Parking
Интересно, если из космоса на нас смотрят зелёные человечки, какие мысли приходят им в головы при взгляде на такую ситуацию:
Наверное они размышляют примерно таким образом: "Эти двуногие обезьяны похоже не слишком умны, раз не способны решить проблему своего собственного транспорта. Пожалуй, контакт лишён смысла".
Наверное они размышляют примерно таким образом: "Эти двуногие обезьяны похоже не слишком умны, раз не способны решить проблему своего собственного транспорта. Пожалуй, контакт лишён смысла".
среда, 2 октября 2013 г.
понедельник, 30 сентября 2013 г.
Баллмер
Мужик нашёл в себе силы уйти красиво в отставку. В принципе подвинули заслуженно, ибо все модные тренды IT последнего десятилетия он профукал или не счёл важными. Этакий Брежнев Майкрософта.
суббота, 28 сентября 2013 г.
TroutZoom
Разыскал отличный plug-in для Visual Studio 2012. Позволяет один раз установить масштабирование в окне редактора, и сохраняет его для всех открываемых файлов. Очень странно, что постоянный уровень масштабирования не является стандартной фичей новых студий - это выглядит естественней, чем каждый раз сбивающийся на 100% масштаб.
Мне эта функциональность полезна тем, что я могу тонко менять размер отображаемых шрифтов через масштабирование, а не через выбор кегля шрифта. При стандартных 96 DPI тот же Courier New выглядит по-разному с кеглями 8 и 9 - движок растеризации шрифтов даёт ошибки при столь низкой плотности пикселей. То же самое и с моим любимым шрифтом Crystal - он сильно меняется в начертании при маленьких кеглях. Тут либо ждать UltraHD мониторов, либо применять масштабирование, ставшее доступным с WPF.
Есть и другие расширения подобного рода, но они часто написаны под VS 2010 и не совместимы с новыми версиями. И ещё одно: VS Express не позволяет устанавливать многие типы расширений (Tools в частности), поэтому необходима только полная версия студии.
Мне эта функциональность полезна тем, что я могу тонко менять размер отображаемых шрифтов через масштабирование, а не через выбор кегля шрифта. При стандартных 96 DPI тот же Courier New выглядит по-разному с кеглями 8 и 9 - движок растеризации шрифтов даёт ошибки при столь низкой плотности пикселей. То же самое и с моим любимым шрифтом Crystal - он сильно меняется в начертании при маленьких кеглях. Тут либо ждать UltraHD мониторов, либо применять масштабирование, ставшее доступным с WPF.
Есть и другие расширения подобного рода, но они часто написаны под VS 2010 и не совместимы с новыми версиями. И ещё одно: VS Express не позволяет устанавливать многие типы расширений (Tools в частности), поэтому необходима только полная версия студии.
четверг, 26 сентября 2013 г.
Mantle
AMD анонсировала новый API Mantle для низкоуровневого доступа к видеокартам с архитектурой GCN. В обход DirectX, который, по правде, не такой уж и direct.
Не удивительно, если вспомнить что некоторое время назад один из представителей AMD говорил что нам нужен прямой доступ к железу на PC. Здравствуйте низкоуровневые оптимизации? Frostbite 3 уже использует преимущества Mantle:
В общем очень интересная штука, но позволить себе использовать её могут только дорогие движки или гики. Вопросы совместимости с железом: где гарантия что мой рендер будет работать через два поколения видеокарт AMD? При том что конечно он не будет работать на видеокартах NVidia. Этот код будет жить одно-два поколения железа.
Ждём ответного хода конкурента, которому в дополнение к CUDA осталось выпустить какой-нить pc-GCM. А вообще, хотелось бы увидеть нечто подобное для Linux, чтобы не использовать этот гадкий OpenGL.
developer.amd.com по поводу Mantle пока нем как рыба.
Не удивительно, если вспомнить что некоторое время назад один из представителей AMD говорил что нам нужен прямой доступ к железу на PC. Здравствуйте низкоуровневые оптимизации? Frostbite 3 уже использует преимущества Mantle:
- Enables 9X more draw calls per second than other APIs by reducing CPU overhead
- Enables higher graphics performance with direct access to all GPU features
- Leverage optimization work from next-gen game consoles to PCs
В общем очень интересная штука, но позволить себе использовать её могут только дорогие движки или гики. Вопросы совместимости с железом: где гарантия что мой рендер будет работать через два поколения видеокарт AMD? При том что конечно он не будет работать на видеокартах NVidia. Этот код будет жить одно-два поколения железа.
Ждём ответного хода конкурента, которому в дополнение к CUDA осталось выпустить какой-нить pc-GCM. А вообще, хотелось бы увидеть нечто подобное для Linux, чтобы не использовать этот гадкий OpenGL.
developer.amd.com по поводу Mantle пока нем как рыба.
воскресенье, 22 сентября 2013 г.
We're sorry...
Меня в гугле забанили:
... but your computer or network may be sending automated queries. To protect our users, we can't process your request right now.
... but your computer or network may be sending automated queries. To protect our users, we can't process your request right now.
четверг, 29 августа 2013 г.
Is Google becoming Evil?
Помните сказку о Драконе и сокровище?
Жили-были в одной стране бедные люди, которым приходилось платить непосильную дань Дракону. И вот однажды отважный смельчак решает помочь людям, берёт мечь и идёт в пещеру к Дракону. Там он сражается и убивает Дракона. Умирая, тот говорит человеческим голосом:
"Теперь не я, а ты - дракон. Я хотел убить дракона, чтобы освободить людей, я победил его. Умирая, он сказал те самые слова, которые я говорю тебе - "Теперь ты дракон". Но я не задумался над его словами, вошёл в сокровищницу... и золото овладело мной! Я забыл свою мечту освободить людей! Я стал хранителем сокровища, хранителем более ревностным, чем прежний дракон. Постепенно, я сам стал Драконом".
Microsoft's YouTube WP app returns following Google complaints
Microsoft blasts Google over YouTube block, claims reasons are 'manufactured'
Про Gmail и Google Reader я уже и не говорю.
Жили-были в одной стране бедные люди, которым приходилось платить непосильную дань Дракону. И вот однажды отважный смельчак решает помочь людям, берёт мечь и идёт в пещеру к Дракону. Там он сражается и убивает Дракона. Умирая, тот говорит человеческим голосом:
"Теперь не я, а ты - дракон. Я хотел убить дракона, чтобы освободить людей, я победил его. Умирая, он сказал те самые слова, которые я говорю тебе - "Теперь ты дракон". Но я не задумался над его словами, вошёл в сокровищницу... и золото овладело мной! Я забыл свою мечту освободить людей! Я стал хранителем сокровища, хранителем более ревностным, чем прежний дракон. Постепенно, я сам стал Драконом".
Microsoft's YouTube WP app returns following Google complaints
Microsoft blasts Google over YouTube block, claims reasons are 'manufactured'
Про Gmail и Google Reader я уже и не говорю.
четверг, 22 августа 2013 г.
Dissolution of the USSR
Наткнулся на интересный срач по поводу распада "нерушимого" Советского Союза:
У некоторых участников до сих пор нехилый такой батхёрт по поводу событий более чем 20-ти летней давности. Кургинян периодически орёт и брызжет слюной, утирая рот платком - по-видимому, придерживается принципа "кто громче кричит, тот и прав". Шушкевич (один из трёх, подписавших Беловежские соглашения) - в этой аудитории как будто не в своей тарелке. Бывшие октябрята вспоминают школьную форму и дух перестройки... Хотя к чему всё это - прошлое вернуть уже невозможно, его нельзя изменить или переиграть - его можно только изучать, описывать и осмысливать (ну или забыть).
Со временем в этом посте я попытаюсь высказать свои мысли о том, почему же всё-таки распался СССР.
У некоторых участников до сих пор нехилый такой батхёрт по поводу событий более чем 20-ти летней давности. Кургинян периодически орёт и брызжет слюной, утирая рот платком - по-видимому, придерживается принципа "кто громче кричит, тот и прав". Шушкевич (один из трёх, подписавших Беловежские соглашения) - в этой аудитории как будто не в своей тарелке. Бывшие октябрята вспоминают школьную форму и дух перестройки... Хотя к чему всё это - прошлое вернуть уже невозможно, его нельзя изменить или переиграть - его можно только изучать, описывать и осмысливать (ну или забыть).
Со временем в этом посте я попытаюсь высказать свои мысли о том, почему же всё-таки распался СССР.
четверг, 8 августа 2013 г.
John Carmack Joins Oculus as CTO
Джон Кармак не выдержал и присоединился к команде, разрабатывающей очки виртуальной реальности Oculus Rift.
Во мне растёт уверенность, что из этого проекта получится что-то стоящее.
Во мне растёт уверенность, что из этого проекта получится что-то стоящее.
понедельник, 15 июля 2013 г.
First Triangle
Наконец-то у меня появилось свободное время и я попробовал собрать под Windows RT несколько программ из Official Windows SDK. Для этого мне понадобились:
1) Windows 8 Desktop
2) Microsoft Surface RT
3) Visual Studio 2012 Express for Windows 8
4) Visual Studio Remote Debugger (ARM)
5) Developer License for Windows 8/RT (free)
6) Wi-Fi между десктопом и планшетом
Что интересно, если вы попытаетесь использовать крякнутую Windows 8, deployment приложений в студии работать не будет. Хвала Microsoft, работает на неактивированной Windows - даёт время подумать, приобретать ли лицензию сейчас или ждать выхода Windows 8.1. Также одна из проблем, о которую я споткнулся - deployment выдаёт ошибку, если какие-то из компонентов toolchain-a находятся на RAM-диске (VS, Windows Kits, Microsoft SDKs, Temp folder, solution - я пока не установил точно). Похоже, используется какой-то низкоуровневый доступ к файловой системе или диску?
Попутно возникла проблема с удалённой отладкой - утилита конфигурации по умолчанию ставит флажок в опции "Run the "Visual Studio 2012 Remote Debugger" service" - это не подходит для отладки клиентских приложений, его необходимо убрать.
Что интересно, Microsoft на полных парах разрабатывает Windows 8.1 и уже подогнала 2013-ю студию под это дело, а все новые программные примеры на MSDN уже заточены под неё и угадайте что - несовместимы с 2012 студией! Ещё надо выяснить, совместимы ли они со "старой" Windows 8. Эх, Microsoft, Microsoft...
P.S.
Забыл:
7) Windows Store developer account (for $$$)
1) Windows 8 Desktop
2) Microsoft Surface RT
3) Visual Studio 2012 Express for Windows 8
4) Visual Studio Remote Debugger (ARM)
5) Developer License for Windows 8/RT (free)
6) Wi-Fi между десктопом и планшетом
Что интересно, если вы попытаетесь использовать крякнутую Windows 8, deployment приложений в студии работать не будет. Хвала Microsoft, работает на неактивированной Windows - даёт время подумать, приобретать ли лицензию сейчас или ждать выхода Windows 8.1. Также одна из проблем, о которую я споткнулся - deployment выдаёт ошибку, если какие-то из компонентов toolchain-a находятся на RAM-диске (VS, Windows Kits, Microsoft SDKs, Temp folder, solution - я пока не установил точно). Похоже, используется какой-то низкоуровневый доступ к файловой системе или диску?
Попутно возникла проблема с удалённой отладкой - утилита конфигурации по умолчанию ставит флажок в опции "Run the "Visual Studio 2012 Remote Debugger" service" - это не подходит для отладки клиентских приложений, его необходимо убрать.
Что интересно, Microsoft на полных парах разрабатывает Windows 8.1 и уже подогнала 2013-ю студию под это дело, а все новые программные примеры на MSDN уже заточены под неё и угадайте что - несовместимы с 2012 студией! Ещё надо выяснить, совместимы ли они со "старой" Windows 8. Эх, Microsoft, Microsoft...
P.S.
Забыл:
7) Windows Store developer account (for $$$)
вторник, 9 июля 2013 г.
понедельник, 3 июня 2013 г.
PC Build
Почти закончил сборку домашней машины:
Осталось добавить SSD, т. к. RAID неэффективен при загрузке системы и на мелких файлах.
Обратите внимание на cable management!
Осталось добавить SSD, т. к. RAID неэффективен при загрузке системы и на мелких файлах.
Обратите внимание на cable management!
пятница, 31 мая 2013 г.
пятница, 26 апреля 2013 г.
пятница, 19 апреля 2013 г.
Укравтодыр
Как установилась весенняя погода, начал ездить на работу в машине (прощай общественный транспорт). Проникся качеством дорог на второстепенных улицах - ямы как после бомбёжки, мне страшно за ходовую. Почему-то в соседней Белоруссии дороги намного лучше, часто вполне европейского уровня. У нас же ремонт дорог - любимое занятие для чиновников самых разных уровней, поле непаханных перспектив, настоящий Клондайк по распилу бюджетных средств.
среда, 3 апреля 2013 г.
понедельник, 25 марта 2013 г.
GDB
Познакомился с GDB в Linux.
Отладка в консоли - это жесть! Можно включить полувизуальный режим ключём -tui, но не везде он доступен: например ARM версия на планшете выдаёт "TUI mode is not supported". Делайте листинг в командной строке. К тому же, банально не способен делать Step Over по вызовам OpenGL, адреса которых были загружены динамически (glewInit).
При поиске по форумам нашёл упоминание о надстройке CGDB (можно поставить, например, на Desktop Ubuntu) с ней немного легче - есть поддержка основных функций отладки при нажатии F5 - F10. Похоже, о графическом интерфейсе пользователя суровые программисты опенсорса никогда не слышали...
Отладка в консоли - это жесть! Можно включить полувизуальный режим ключём -tui, но не везде он доступен: например ARM версия на планшете выдаёт "TUI mode is not supported". Делайте листинг в командной строке. К тому же, банально не способен делать Step Over по вызовам OpenGL, адреса которых были загружены динамически (glewInit).
При поиске по форумам нашёл упоминание о надстройке CGDB (можно поставить, например, на Desktop Ubuntu) с ней немного легче - есть поддержка основных функций отладки при нажатии F5 - F10. Похоже, о графическом интерфейсе пользователя суровые программисты опенсорса никогда не слышали...
вторник, 12 марта 2013 г.
PC-X2000FN
Приобрёл для своего компьютера "домик" - корпус Lian Li PC-X2000FN. Это уже вторая (или даже третья) модификация серии X2000. В Украине такой корпус купить невозможно, поэтому пришлось на свой страх и риск заказывать на Amazon.
Я решил - если уж и собирать солидный компьютер, то и корпус нужен соответствующий, а не тот фуфел за $50, что предлагают, например, Розетка или ITbox. "Народные" системники со всякими пластиковыми вставками, неуклюжими углами, рядами панелек, решётками, кнопками, подсветками - бу-э-э, я проблевался, спасибо, мне хватило. После недели поиска в Сети я понял, что Lian Li и Fractal Design - единственные компании, которые рассматривают компьютерный корпус не просто как коробку для комплектующих, но как нечто большее, что может нести в себе не только эстетику, но и смелые инженерные и дизайнерские решения. Собственно то, что половина систем на MDPC собрана в корпусах Lian Li, лишь подтверждает мои выводы. Ещё я так рассудил: компьютерный мир переменчив - меняются процессоры, видеокарты, интерфейсы, и за последующие 10-15 лет они сменятся не раз. А корпус? А корпус - останется, будет служить долго и переживёт ещё не одну смену поколений своей "начинки".
Во сколько мне он обошёлся, не скажу, каждый сам может поискать, если ему интересно. Упомяну лишь, что в процессе доставки посылка была задержана таможней во Львове, т. к. согласно текущему законодательству все посылки, оценочная стоимость которых превышает 300 евро, подлежат налогообложению. Оно слагается из двух частей - "мито" и ПДВ. Ставка первого равняется 10% от разницы между оценённой стоимостью и 300 евро, ставка ПДВ - 20% от этой же разницы. Через какое-то время с таможни вам приходит заказное письмо с информацией о необходимости уплаты налога и e-mail-ом таможенного брокера, на который вы начинаете стучаться. Брокер подтверждает сумму и присылает банковские реквизиты для оплаты. От 2 до 4 дней после проплаты посылка продолжает болтаться на таможне, а потом трекинг-система меняет статус на "отгружено на филию" ну а там уже как повезёт :)
Немного о трекинге. Из Германии посылка доставлялась Deutsche Post DHL, у них своя трекинг-система. После пересечения границы Украины нужно дёргать местных пересыльщиков - хорошо что DHL указал, что посылка передана meest-express, иначе я бы долго гадал, где она и что с ней. Лично я писал на почту "Миста" и указывал им tracking number что был в DHL - взамен мне выдали другой tracking number уже в их системе, и я смог отслеживать посылку на территории Украины. В целом я хоть немного и волновался, но если честно - коробка слишком большая, чтобы вот так просто "потеряться" по дороге - всё-таки это не телефон и не планшет. Общее время доставки составило около месяца, причём оно грозило растянуться на полтора, если бы я постоянно не "вызванивал" нужных людей.
Ну и напоследок несколько обзоров корпуса, кому интересно:
Lian Li PC-X2000FN Review
Lian Li PC-X2000FN Chassis Review
Я решил - если уж и собирать солидный компьютер, то и корпус нужен соответствующий, а не тот фуфел за $50, что предлагают, например, Розетка или ITbox. "Народные" системники со всякими пластиковыми вставками, неуклюжими углами, рядами панелек, решётками, кнопками, подсветками - бу-э-э, я проблевался, спасибо, мне хватило. После недели поиска в Сети я понял, что Lian Li и Fractal Design - единственные компании, которые рассматривают компьютерный корпус не просто как коробку для комплектующих, но как нечто большее, что может нести в себе не только эстетику, но и смелые инженерные и дизайнерские решения. Собственно то, что половина систем на MDPC собрана в корпусах Lian Li, лишь подтверждает мои выводы. Ещё я так рассудил: компьютерный мир переменчив - меняются процессоры, видеокарты, интерфейсы, и за последующие 10-15 лет они сменятся не раз. А корпус? А корпус - останется, будет служить долго и переживёт ещё не одну смену поколений своей "начинки".
Во сколько мне он обошёлся, не скажу, каждый сам может поискать, если ему интересно. Упомяну лишь, что в процессе доставки посылка была задержана таможней во Львове, т. к. согласно текущему законодательству все посылки, оценочная стоимость которых превышает 300 евро, подлежат налогообложению. Оно слагается из двух частей - "мито" и ПДВ. Ставка первого равняется 10% от разницы между оценённой стоимостью и 300 евро, ставка ПДВ - 20% от этой же разницы. Через какое-то время с таможни вам приходит заказное письмо с информацией о необходимости уплаты налога и e-mail-ом таможенного брокера, на который вы начинаете стучаться. Брокер подтверждает сумму и присылает банковские реквизиты для оплаты. От 2 до 4 дней после проплаты посылка продолжает болтаться на таможне, а потом трекинг-система меняет статус на "отгружено на филию" ну а там уже как повезёт :)
Немного о трекинге. Из Германии посылка доставлялась Deutsche Post DHL, у них своя трекинг-система. После пересечения границы Украины нужно дёргать местных пересыльщиков - хорошо что DHL указал, что посылка передана meest-express, иначе я бы долго гадал, где она и что с ней. Лично я писал на почту "Миста" и указывал им tracking number что был в DHL - взамен мне выдали другой tracking number уже в их системе, и я смог отслеживать посылку на территории Украины. В целом я хоть немного и волновался, но если честно - коробка слишком большая, чтобы вот так просто "потеряться" по дороге - всё-таки это не телефон и не планшет. Общее время доставки составило около месяца, причём оно грозило растянуться на полтора, если бы я постоянно не "вызванивал" нужных людей.
Ну и напоследок несколько обзоров корпуса, кому интересно:
Lian Li PC-X2000FN Review
Lian Li PC-X2000FN Chassis Review
воскресенье, 24 февраля 2013 г.
Imperator
- Лев Осипович, скажите: Вийом - хороший мастер?
- О да, это был очень одарённый человек. А что?
- Да нет, это я так, для себя... А почему же он не стал таким же знаменитым, как Страдивари?
- Взгляните на этот инструмент. Он поразительно похож на скрипку... ой, не надо руками трогать! Простите. Знаете, он поразительно похож на скрипку Страдивари "Император". Но только похож.
- Непонятно. У Вийома был под рукой оригинал, он же мог скопировать?
- Да нет... Вийом был деловой, рассудительный человек. Чтобы понять тайны старых итальянцев, ему надо было много ночей не спать, плакать от отчаяния и счастья, безумствовать и страдать. А он...
- Так в чём же разница между ними?
- В звуке, в звуке! Он не повторим. Под него конечно можно подделаться, но Вийом не смог понять старых голосов, а собственного голоса, одного, главного - идущего от сердца, он не нашёл. Он всю жизнь мечтал создать скрипку лучше Страдивари, но так и не создал...
- О да, это был очень одарённый человек. А что?
- Да нет, это я так, для себя... А почему же он не стал таким же знаменитым, как Страдивари?
- Взгляните на этот инструмент. Он поразительно похож на скрипку... ой, не надо руками трогать! Простите. Знаете, он поразительно похож на скрипку Страдивари "Император". Но только похож.
- Непонятно. У Вийома был под рукой оригинал, он же мог скопировать?
- Да нет... Вийом был деловой, рассудительный человек. Чтобы понять тайны старых итальянцев, ему надо было много ночей не спать, плакать от отчаяния и счастья, безумствовать и страдать. А он...
- Так в чём же разница между ними?
- В звуке, в звуке! Он не повторим. Под него конечно можно подделаться, но Вийом не смог понять старых голосов, а собственного голоса, одного, главного - идущего от сердца, он не нашёл. Он всю жизнь мечтал создать скрипку лучше Страдивари, но так и не создал...
вторник, 12 февраля 2013 г.
воскресенье, 10 февраля 2013 г.
Binary Format
Вот не совсем понятно, почему в стандарт С/C++ так и не был введён binary format. Мне, например, легче понять вот такой код:
чем такой:
PS: Hand-made solution
чем такой:
PS: Hand-made solution
среда, 30 января 2013 г.
Republic of Gamers
Приобрёл себе материнскую плату ASUS Crosshair V Formula-Z. Это - надёжный фундамент будущей мощной системы, которую я планирую постепенно собрать в течении года. С такой платой можно играться с самыми "тяжёлыми" компонентами, не боясь что подсистема питания перегорит.
Решения с гнёздами под Intel (Maximus V Formula/Extreme) существенно дороже, как и сами процессоры Intel. Существует предыдущая версия этой материнской платы (без приставки Z и на $40 дешевле), которую я и планировал изначально приобрести, но из интереса решил поискать отличия между версиями. Как выяснилось, ничего существенного, ради чего стоит переплачивать, не оказалось... кроме одной опции: Fast Boot. Я падок на всё, что позволяет компьютеру и программам загружаться быстрее, и эта штуковина этому способствует. В ASUS Exclusive Boot Features об этой опции написано следующее:
Т. к. финансы не резиновые, а единовременные траты болезненны, планирую покупать по одному компоненту будущей системы каждый месяц :) Вот примерно то, из чего она будет состоять:
1) Mobo - ASUS Crosshair V Formula-Z (уже есть).
2) CPU - AMD FX 8320 (уже есть), в будущем апгрейд на Steamroller.
3) GPU - CrossFire из двух (трёх?) AMD Radeon R9 290 (X?).
4) RAM - G.Skill DDR3-1866 32 GB (уже есть).
5) RAID0 - четыре диска Western Digital RE4 общей ёмкостью 2 TB (уже есть).
6) SSD - Samsung 840 Pro 120 GB как системный диск (уже есть) (позже - в виде PCI-Express платы) .
7) HDD Western Digital Green 4 TB (x3), общей ёмкостью 12 TB как media storage для 1080p и 4K фильмов (уже есть).
8) PSU - Seasonic SS-1000XP 1000W (уже есть).
9) Wi-Fi - ASUS PCE-N53 (уже есть)
10) Корпус Full-Tower Lian Li PC-X2000FN (уже есть).
11) Два монитора ASUS MX279H (уже есть).
12) Привод Blu-ray R/W (в high-end PC не помешает) (уже есть).
Зачем в системе 32 GB? Хороший вопрос :)
Сегодня на работе я наблюдал, как связка из Win64 + Linux из-под WMWare + VS 2010 сожрали почти 8 ГБ памяти. Поэтому 16 ГБ для комфортной работы - это сегодняшний минимум. Другие 16 ГБ я собираюсь отвести под RAM-диск, на котором будут рабочие инструменты (студия, тулзы, коды проектов) для реактивной работы. Ещё недавно прочитал на одном форуме любопытную оптимизацию, когда файл подкачки размещают прямо на RAM-диске, и все (пользователь, ОС и программы) счастливы. Полезно также перенести на RAM-диск кэш браузера и temp папок, чтобы снизить количество операций записи на SSD-диске. Вообще дисковая подсистема - самый медленный компонент любого компьютера, поэтому в первую очередь оптимизировать нужно именно её. А рецепт прост: RAM-диск - для программ первой необходимости, swap-файла и кэша, SSD - для системы и офиса, RAID - для всего остального.
Решения с гнёздами под Intel (Maximus V Formula/Extreme) существенно дороже, как и сами процессоры Intel. Существует предыдущая версия этой материнской платы (без приставки Z и на $40 дешевле), которую я и планировал изначально приобрести, но из интереса решил поискать отличия между версиями. Как выяснилось, ничего существенного, ради чего стоит переплачивать, не оказалось... кроме одной опции: Fast Boot. Я падок на всё, что позволяет компьютеру и программам загружаться быстрее, и эта штуковина этому способствует. В ASUS Exclusive Boot Features об этой опции написано следующее:
This feature allows you to accelerate your system's boot speed with the use of a switch, allowing the system to skip POST and enter the OS at its fastest time.Т. е. после включения пропускается куча проверок из Power-On Self Test и вся эта галиматья с логотипами BIOS и "Press DEL to enter setup", а вместо этого управление сразу передаётся загрузчику ОС. На сайте ASUS написано "shorten system boot-up time to 2-seconds". Привирают конечно, но если сложить эту фичу с оптимизациями, введёнными в Windows 8, думаю, будущая система будет загружаться очень, очень быстро - быстрее, чем всё то, на чём мне доводилось работать до сих пор.
Т. к. финансы не резиновые, а единовременные траты болезненны, планирую покупать по одному компоненту будущей системы каждый месяц :) Вот примерно то, из чего она будет состоять:
1) Mobo - ASUS Crosshair V Formula-Z (уже есть).
2) CPU - AMD FX 8320 (уже есть), в будущем апгрейд на Steamroller.
3) GPU - CrossFire из двух (трёх?) AMD Radeon R9 290 (X?).
4) RAM - G.Skill DDR3-1866 32 GB (уже есть).
5) RAID0 - четыре диска Western Digital RE4 общей ёмкостью 2 TB (уже есть).
6) SSD - Samsung 840 Pro 120 GB как системный диск (уже есть) (позже - в виде PCI-Express платы) .
7) HDD Western Digital Green 4 TB (x3), общей ёмкостью 12 TB как media storage для 1080p и 4K фильмов (уже есть).
8) PSU - Seasonic SS-1000XP 1000W (уже есть).
9) Wi-Fi - ASUS PCE-N53 (уже есть)
10) Корпус Full-Tower Lian Li PC-X2000FN (уже есть).
11) Два монитора ASUS MX279H (уже есть).
12) Привод Blu-ray R/W (в high-end PC не помешает) (уже есть).
Зачем в системе 32 GB? Хороший вопрос :)
Сегодня на работе я наблюдал, как связка из Win64 + Linux из-под WMWare + VS 2010 сожрали почти 8 ГБ памяти. Поэтому 16 ГБ для комфортной работы - это сегодняшний минимум. Другие 16 ГБ я собираюсь отвести под RAM-диск, на котором будут рабочие инструменты (студия, тулзы, коды проектов) для реактивной работы. Ещё недавно прочитал на одном форуме любопытную оптимизацию, когда файл подкачки размещают прямо на RAM-диске, и все (пользователь, ОС и программы) счастливы. Полезно также перенести на RAM-диск кэш браузера и temp папок, чтобы снизить количество операций записи на SSD-диске. Вообще дисковая подсистема - самый медленный компонент любого компьютера, поэтому в первую очередь оптимизировать нужно именно её. А рецепт прост: RAM-диск - для программ первой необходимости, swap-файла и кэша, SSD - для системы и офиса, RAID - для всего остального.
четверг, 24 января 2013 г.
Betonomeshalka
Ну что же, судя по слухам, обе консоли нового поколения, Xbox и Playstation, получат CPU и GPU производства AMD. Больше никаких экзотических архитектур (Cell), в современныех реалиях оптимизировать код под кастомное железо могут позволить себе единицы. Да и оправдывают эти архитектуры себя только первые год-два, по истечении которых неумолимый технический прогресс отправляет всё на свалку.
Архитектура Bulldozer всё же получила путёвку в жизнь, я рад за AMD. Мне представляется, что цена камешков сыграла здесь определяющую роль, так как консоли продаются на грани себестоимости. В настоящее время я примеряюсь к комплектующим, планируя собрать мощную рабочую станцию вместо ноутбука, и для себя решил, что базироваться она будет тоже на платформе AMD (Intel + NVidia сильно дороже). Читая обзоры по Piledriver, у меня сложилось стойкое убеждение, что эта архитектура и её предшественница изначально затачивались под многопоточность, и часто в тестах новые FX проигрывают Core i5-i7 по двум причинам:
Единственное, в чём AMD серьёзно проигрывает - это в энергопотреблении и тепловыделении. Техпроцесс 32 nm демонстрирует, что он уже слишком устарел.
Архитектура Bulldozer всё же получила путёвку в жизнь, я рад за AMD. Мне представляется, что цена камешков сыграла здесь определяющую роль, так как консоли продаются на грани себестоимости. В настоящее время я примеряюсь к комплектующим, планируя собрать мощную рабочую станцию вместо ноутбука, и для себя решил, что базироваться она будет тоже на платформе AMD (Intel + NVidia сильно дороже). Читая обзоры по Piledriver, у меня сложилось стойкое убеждение, что эта архитектура и её предшественница изначально затачивались под многопоточность, и часто в тестах новые FX проигрывают Core i5-i7 по двум причинам:
- Большинство приложений состоят из говнокода (Intel его любит).
- Многие приложения по сути однопоточны.
Единственное, в чём AMD серьёзно проигрывает - это в энергопотреблении и тепловыделении. Техпроцесс 32 nm демонстрирует, что он уже слишком устарел.
четверг, 17 января 2013 г.
dot(N, L)
Недавно читал форумы и наткнулся на интересную оптимизацию, связанную с ограничением скалярного произведения (например, dot(N, L)) промежутком [0, 1]. Это необходимо делать в случае сложных формул освещения или записи в FP render target, где отрицательные числа могут сломать вам всю математику.
Обычно dot() в шейдерах пишется совместно с max() как в этом примере. В случае D3D assembly это трансформируется в dp3, max, GSA показывает что комбинация занимает два ALU слота. Однако, если max() заменить на clamp(0, 1), это трансформируется в dp3_sat. Radeon HD assembly показывает, что для DOT4 есть опциональный модификатор CLAMP, который работает для диапазона [0, 1]. Таким образом укладываемся в один ALU.
Обычно dot() в шейдерах пишется совместно с max() как в этом примере. В случае D3D assembly это трансформируется в dp3, max, GSA показывает что комбинация занимает два ALU слота. Однако, если max() заменить на clamp(0, 1), это трансформируется в dp3_sat. Radeon HD assembly показывает, что для DOT4 есть опциональный модификатор CLAMP, который работает для диапазона [0, 1]. Таким образом укладываемся в один ALU.
Подписаться на:
Сообщения (Atom)