burrru: (Default)
burrru ([personal profile] burrru) wrote2010-06-02 01:49 am

Хвастовство и задача на сообразительность

На материнских платах современных компьютеров есть 2 места под видеокарты. Обычная технология позволяет поставить только две одинаковые видеокарты. Наша контора делает чип, который обеспечивает поддержку двух любых видеокарт. Ведущие производители материнских плат готовят к выпуску платы с нашим чипом, а одна такая плата уже вышла в продажу. Сейчас в Тайване проходит международная компьютерная выставка COMPUTEX. На ней материнская плата с нашим чипом получила награду Best Choice. Это самая престижная награда, которую может получить такой продукт. Контора радуется.

Во время работы над таким продуктом приходится решать много разных задач. Одним трюком я горжусь совершенно по-детски. Вот упрощенные вводные данные. На компьютере запущена какая-то ресурсоемкая программа. В режиме реального времени мы узнаем ключевые параметры этой программы. Мы хотим выводить эти параметры на экран. То есть, программа работает, а где-нибудь в уголке экрана мы видим постоянно меняющиеся числа. Единственная функция, которая есть в нашем распоряжении, может нарисовать прямоугольник любого цвета, любого размера в любом месте экрана. При этом цвет, размер и место могут быть произвольными, а вот количество вызовов этой функции надо минимизировать.

Сперва нарисуем черный прямоугольник, у которого ширина раза в полтора меньше высоты. Поверх него нарисуем белый прямоугольник меньшего размера - чтобы были видны края черного прямоугольника. Так мы получим цифру 0. А если мы нарисуем белый прямоугольник поверх черного так, чтобы от черного осталась только вертикальная полоска, то получим цифру 1. Чтобы получить цифры от 2 до 9, надо поверх черного прямоугольника нарисовать два белых прямоугольника в соответствующих местах (и один - для семерки). В среднем 2.7 прямоугольника на цифру, что довольно мало.

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

[identity profile] dmpogo.livejournal.com 2010-06-01 10:51 pm (UTC)(link)
Два места - уже по три есть :)

[identity profile] capivar.livejournal.com 2010-06-01 11:03 pm (UTC)(link)
Да, это очень изящное решение. До сих пор с удовольствием вспоминаю вашу задачу. :)

[identity profile] burrru.livejournal.com 2010-06-01 11:05 pm (UTC)(link)
Конечно. Мы и над этой комбинацией работаем.

[identity profile] burrru.livejournal.com 2010-06-01 11:05 pm (UTC)(link)
Спасибо!

[identity profile] dmpogo.livejournal.com 2010-06-01 11:20 pm (UTC)(link)
А что за компания, если не секрет ? А то я все с Gigabyte'ом ..

Правда именно мне все эти SLI/Crossfire комбинации как раз ни к чему. Я наоборот бы радовался материнки которая бы экономила на PCIe16-х, при высоком качестве всего остального.

[identity profile] joe-chasmtons.livejournal.com 2010-06-01 11:53 pm (UTC)(link)
А вся слава досталась MSI :)
У других вендоров ваши чипы скоро появятся?

[identity profile] spamsink.livejournal.com 2010-06-02 12:32 am (UTC)(link)
Для семерки только один дополнительный прямоугольник нужен:
_
 |
 |

[identity profile] vgramagin.livejournal.com 2010-06-02 01:36 am (UTC)(link)
Для 7 только один.

В принципе, для 2, 5 и 9 тоже можно одним обойтись

[identity profile] kcmamu.livejournal.com 2010-06-02 01:45 am (UTC)(link)
жжж  .ж.  жжж  жжж  ж.ж  жжж  жжж  жжж  жжж  жжж
ж.ж  .ж.  ..ж  ..ж  ж.ж  ж..  ж..  ..ж  ж.ж  жжж
ж.ж  .ж.  жжж  ..ж  жжж  жжж  жжж  ..ж  жжж  жжж
ж.ж  .ж.  ж..  ..ж  ..ж  ..ж  жжж  ..ж  ж.ж  ..ж
жжж  .ж.  жжж  жжж  ..ж  жжж  жжж  ..ж  жжж  жжж

 2    2    3    2    3    3    2    2    3    2

[identity profile] evg25.livejournal.com 2010-06-02 06:19 am (UTC)(link)
Молодец, поздравляю! :-)

[identity profile] mz1313.livejournal.com 2010-06-02 06:40 am (UTC)(link)
Патент зарегистрировали? Кстати, не шучу.

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

А что происходит, если в этот момент фон экрана - или хотя бы того куска, на котором ты рисуешь - черный? Твой внешний прямоугольник просто сольется с фоном.

[identity profile] burrru.livejournal.com 2010-06-02 06:51 am (UTC)(link)
Верно.

[identity profile] burrru.livejournal.com 2010-06-02 06:52 am (UTC)(link)
Да, конечно.

[identity profile] burrru.livejournal.com 2010-06-02 06:52 am (UTC)(link)
Можно и так.

[identity profile] burrru.livejournal.com 2010-06-02 06:53 am (UTC)(link)
Спасибо!

[identity profile] burrru.livejournal.com 2010-06-02 06:57 am (UTC)(link)
На это - нет. Слишком мелко. У нас более крупные патенты.

Для каждого числа добавили один широкий белый прямоугольник - фон.

[identity profile] burrru.livejournal.com 2010-06-02 07:00 am (UTC)(link)
Не секрет. Lucidlogix.

Я бы тоже. К счастью, есть миллионы "геймеров", которым нужны эти навороты.

[identity profile] mz1313.livejournal.com 2010-06-02 07:06 am (UTC)(link)
-- У нас более крупные патенты.

Не исключаю, что это вы зря - в хай-теке принято каждую мелочь патентовать. И есть на то причины. Надеюсь, что вас консультирует хороший специалист по патентному праву.

P.S. А решение симпатичное. Навеяно какими-нибудь электронными часами? :-)

[identity profile] burrru.livejournal.com 2010-06-02 07:07 am (UTC)(link)
Они ее заслужили. А мы погреемся в лучах этой славы.

Asus на этой же выставке представил новую плату с нашим чипом, а MSI - несколько плат. Ну, и разные другие проекты есть...

[identity profile] burrru.livejournal.com 2010-06-02 07:17 am (UTC)(link)
Мы там "танцуем среди гигантов" - кругом патенты. Нам тоже приходится. Но с более серьезными алгоритмами.

Ага. Хотелось улучшить стандартную 7-bars схему. Прикол в том, что мы работаем с самой навороченной графикой и хорошо знаем, как именно надо рисовать числа в своей аппликации: текстура, копирование из нее, рендеринг и все такое. Красиво и любым шрифтом. Более того, мы даже можем это внедрить в чужую аппликацию. Но нужно было что-то совсем легкое. И вот посреди навороченной графики - угловатое уродство... Но работает.

[identity profile] h2010.livejournal.com 2010-06-02 08:01 am (UTC)(link)
поздравляю!
а как называется технология и чип?

[identity profile] zhuk-zhuzhuk.livejournal.com 2010-06-02 08:16 am (UTC)(link)
Действительно: просто и красиво!
Поздравляю!

[identity profile] burrru.livejournal.com 2010-06-02 08:40 am (UTC)(link)
Спасибо!

[identity profile] burrru.livejournal.com 2010-06-02 08:59 am (UTC)(link)
Спасибо!

[identity profile] burrru.livejournal.com 2010-06-02 08:59 am (UTC)(link)
Ага. Наша фирма называется Lucidlogix.

[identity profile] kender-ipa.livejournal.com 2010-06-02 10:31 am (UTC)(link)
Lucid Hydra - ваше детище?)

[identity profile] burrru.livejournal.com 2010-06-02 11:55 am (UTC)(link)
Да, наших рук дело.

[identity profile] hajal.livejournal.com 2010-06-02 12:58 pm (UTC)(link)
Одинаковые - это как?

Просто вспоминается, скажем, макбук про, где 9400 и 9600 стоят одновременно и можно между ними переключаться.

[identity profile] burrru.livejournal.com 2010-06-02 01:16 pm (UTC)(link)
Это технологии SLI и Crossfire. Они позвлояют запустить одну аппликацию одновременно на двух видеокартах. Но требуют, чтобы карты были одинаковыми.

А в макбуке аппликация бежит на одной из карточек.

[identity profile] seagull-jnathan.livejournal.com 2010-06-02 08:35 pm (UTC)(link)
Molodetz !

[identity profile] burrru.livejournal.com 2010-06-02 08:38 pm (UTC)(link)
спасибо

[identity profile] zhenyach.livejournal.com 2010-06-04 12:51 am (UTC)(link)
Напоминает, как в 80-е мне нужно было быстро выводить сложнораскрашенные битмэпы на экран Тектроникса. Рисование там происходило так - на терминал по проводу в 2400 бод посылались команды, а он их выполнял. Если для картинки 200х200 посылать по команде на каждый пиксел, то рисовалось оно несколько минут. А хотелось, чтобы хотя бы меньше секунды.

Пришлось заняться определением одинаково раскрашенных областей, и посылать по команде на область (там была такая - "закрасить многоугольник, заданный последовательностью вершин"). Ну и упорядочивать, чтобы, если один регион лежит внутри другого, то сначала нарисовать внешний - тогда можно было не заморачиваться со связностью.

Помогло, конечно, то что тот Тектроникс в принципе мог отображать небольшое число цветов - не то 7, не то 15. А иначе бы такой номер не прошел.

[identity profile] burrru.livejournal.com 2010-06-04 08:20 am (UTC)(link)
Тогда эта технология Вам может понравиться:
http://gizmodo.com/5545623/these-technicolor-dream-hands-could-revolutionize-ui