С подробными техническими характеристиками платы Gigabyte H55M-USB3 можно ознакомиться на сайте производителя.
Бюджетная системная плата, построенная на базе набора системной логики среднего класса Intel P55 Express. Ориентировочная розничная цена – 3400 рублей.
Классическая материнская плата собственной разработки корпорации Intel – на базе таких плат обычно собираются офисные или школьные компьютеры с минимальными возможностями расширения и разгона (например, у этой модели всего три (2+1) канала питания процессора), но с упором на долговечность и надёжность. Тот факт, что за основу был взят набор логики P55, а не более простые H55/H57/Q57, объясняется исключительно тем, что плата была разработана ещё до их появления на рынке. Проблема с ним заключается в том, что чипсет P55 не поддерживает вывод видео со встроенного в процессоры Core i5 и i7 видеоядра, поэтому плата требует установки дискретной видеокарты.
Дополнения по сравнению с возможностями чипсета минимальны: восьмиканальный (5.1+2) звуковой кодек Realtek ALC888, гигабитный сетевой контроллер с использованием микросхемы Intel 82578DC, а также контроллер Texas Instruments TSB43AB22A на два порта. Порты FDD и IDE конструкцией не предусмотрены, интерфейсов SATA-III и USB 3.0 нет.
Плата формфактора microATX предназначена для процессоров Core i5 серии 700 и i7 серии 800 для разъёма LGA1156, поддерживает установку до шестнадцати гигабайт оперативной памяти DDR3-1333/1066, до шести накопителей SATA-II (в том числе один внешний eSATA) с поддержкой дисковых массивов RAID 0,1,5,10 и Intel Matrix Storage Technology.
На заднюю панель платы выведены восемь портов USB 2.0, порты FireWire IEEE 1394a и Gigabit Ethernet а также многоканальный аналоговый аудиовыход. Вывод цифрового звука возможен через видеокарту с выходом HDMI.
С подробными техническими характеристиками платы Intel DP55WB можно ознакомиться на сайте производителя.
Бюджетная плата на основе младшего набора системной логики семейства H55 Express. Ориентировочная розничная цена – 2900 рублей.
На плате присутствует разъём для подключения флоппи-дисковода, но нет поддержки PATA. Число слотов для установки оперативной памяти уменьшено до двух. В стабилизаторе питания процессора применяется схема 4+1+1 с выделенным каналом для питания встроенной графики. Возможности разгона полностью отсутствуют.
Дополнений по сравнению с функциональностью чипсета всего два: 7.1-канальный звуковой кодек Realtek ALC888S и гигабитный сетевой контроллер Realtek RTL8111DL.
Плата формфактора microATX предназначена для процессоров Core i3/i5/i7 для разъёма LGA1156, поддерживает установку до восьми гигабайтов оперативной памяти DDR3-1333/1066, до шести накопителей SATA-II.
На заднюю панель платы выведены шесть портов USB 2.0, порт Gigabit Ethernet, один порт PS/2, многоканальный аналоговый и оптический цифровой аудиовыход, COM-порт (!), видеоинтерфейс DVI-I, а также порт HDMI.
С подробными техническими характеристиками платы Foxconn H55MX-S можно ознакомиться на сайте производителя.
Высокопроизводительная плата для топовых процессоров Core i7 для LGA1366 на основе набора микросхем Intel X58 Express. Ориентировочная розничная цена – 11600 рублей.
Как и полагается изделию этого класса, в нём присутствуют практически все доступные технологии, включая PCI Express 2.0, SATA-III и USB 3.0. Полноскоростной интерфейс PCI Express 2.0 (шесть линий x1500 Мбайт/с) обеспечивается на уровне "южного моста" ICH10. В качестве контроллера SATA-III применяется чип Marvell 88SE9128, а в роли контроллера USB 3.0 выступает микросхема NEC µPD720200. За 7.1-канальный звук отвечает кодек Realtek ALC889.
Контроллер PATA JMicron JMB363 позволяет подключать два устройства IDE, а контроллер FireWire Texas Instruments TSB43AB23 обеспечивает поддержку двух портов. Кроме того, распаяны два гигабитных сетевых контроллера Realtek RTL8111D.
В стабилизаторе питания процессора используются 24+2+2 каналов с двумя выделенные каналами для графического ядра процессора.
Плата адресована, прежде всего, любителям разгона, поэтому на ней установлена массивная система охлаждения чипсета Hybrid Silent-Pipe 2, состоящая из алюминиевых радиаторов и тепловых трубок, которая может работать как в режиме отвода воздуха, так и в режиме водяного охлаждения при разгоне. Прямо на плате распаяны индикатор кодов POST, а также миниатюрные кнопки включения и сброса. В плате реализована технология Ultra Durable 3, что означает использование компонентов высшего качества, включая конденсаторы с твёрдым полимером.
Плата стандартного формфактора ATX предназначена для процессоров Core i7 серии 900 (включая Extreme Edition) для разъёма LGA1366, поддерживает установку двух или трёх видеокарт в режимах ATI CrossFire X и NVIDIA SLI (в комплекте есть "мостики" для двух или трёх (3-way SLI) карт), до 24 Гбайт оперативной памяти DDR3-2200/1600/1333/1066 (шесть слотов), до восьми накопителей SATA-II (RAID 0,1,5,10 и Intel Matrix Storage Technology) и до двух накопителей SATA-III (6 Гбит/с с поддержкой RAID 0,1).
На заднюю панель платы выведены четыре порта USB 2.0, два комбинированных порта eSATA/USB, два порта USB 3.0, два порта FireWire IEEE 1394a (шести- и четырёхконтактный), два порта Gigabit Ethernet, многоканальный аналоговый и цифровой оптический и коаксиальный аудиовыходы, два порта PS/2 и кнопка сброса CMOS.
С подробными техническими характеристиками платы Gigabyte GA-X58A-UD7 можно ознакомиться на сайте производителя.
Хорошо оснащённая плата на базе набора микросхем среднего уровня Intel Р57 Express. Ориентировочная розничная цена – 7000 рублей.
Необычность этой модели заключается в том, что плата на чипсете, поддерживающим процессоры со встроенной графикой, способна работать с двумя видеокартами в режимах ATI CrossFire X или NVIDIA SLI. Ограничение заключается в том, что "двойное видео" будет работать только с чипами без интегрированного графического ядра – встроенный в комбинированные процессоры Clarkdale контроллер PCI Express x16 способен работать только с одной дискретной видеокартой. Иными словами, два видеоускорителя одновременно на этой плате можно использовать исключительно с чипами Core i5 cерии 700 или Core i7 серии 800.
В дополнение к функциональности чипсета на плате реализован полноскоростной слот PCI Express 2.0 (500 Мбайт/с) через коммутатор PLX PEX8608, контроллер SATA-III на чипе Marvell 88SE9123 и контроллер USB 3.0 на микросхеме NEC µPD720200. За 7.1-канальный (7.1+2) звук отвечает кодек Realtek ALC889. Контроллер PATA Marvell 88SE6111 позволяет подключать два устройства IDE, микросхема FireWire VIA 6308P обеспечивает поддержку двух портов, а чип Realtek RTL8112L заведует гигабитной сетью.
Стабилизатор питания процессора располагает одиннадцатью каналами (8+2+1), включая выделенный канал для интегрированного графического ядра, поддерживается технология T.Probe (аппаратный контроллер плюс программная утилита). На плате используются японские полимерные конденсаторы.
В комплект поставки водит новая фирменная утилита TurboV EVO, отвечающая за мониторинг состояния системы и предоставляющая различные возможности разгона. При помощи входящего в её состав модуля GPU Boost можно даже попробовать разогнать встроенное в процессор графическое ядро.
Плата стандартного формфактора ATX предназначена для процессоров Core i3/i5/i7 для разъёма LGA1156, поддерживает установку двух видеокарт в режимах ATI CrossFire X и Nvidia SLI (для чипов без встроенного видео), до 16 Гбайт оперативной памяти DDR3-2200/1600/1333/1066, до шести накопителей SATA-II (RAID 0,1,5,10 и Intel Matrix Storage Technology) и до двух накопителей SATA-III (6 Гбит/с).
На заднюю панель платы выведены четыре порта USB 2.0, два порта USB 3.0, порты FireWire IEEE 1394a и eSATA, порт Gigabit Ethernet, многоканальный аналоговый и цифровой оптический и коаксиальный аудиовыходы, порта PS/2, видеоинтерфейсы VGA и DVI-D, а также интерфейс HDMI.
С подробными техническими характеристиками платы ASUS P7H57D-V EVO можно ознакомиться на сайте производителя.
Как видим, серийные материнские платы, построенные на чипсетах "пятидесятого семейства" с лёгкостью охватывают все рыночные ниши: на их основе можно собрать и доступный компьютер эконом-класса, и стандартную универсальную машину, и компьютер для геймера или оверклокера. Кроме того, производители успешно дополняют платы интерфейсами, не реализованными на уровне системной логики, причём USB 3.0 можно получить и в бюджетном сегменте, а SATA-III доступен уже на платах средней ценовой категории.
Уимблдонская дополненная реальность
Автор: Олег Парамонов
Корпорация IBM занимается технической поддержкой теннисного турнира в Уимблдоне ровно двадцать лет. К турниру 2010 года, который начался в минувший понедельник, в компании разработали новый сервис для болельщиков - получение информации о происходящем на кортах и в их окрестностях посредством дополненной реальности.
Приложение для доступа к нему называется IBM Seer. Чтобы им воспользоваться, потребуется одна из новых моделей iPhone или мобильный телефон на основе платформы Google Android (причём подойдёт далеко не всякий - у приложений дополненной реальности специфические требования к железу).
Если запустить Seer и перейти в режим дополненной реальности, то на дисплее появится видеокартинка с камеры на обратной стороне аппарата. На некоторые строения и объекты, появляющиеся на экране, приложение накладывает разноцветные ярлыки. Каждый такой ярлык - это своего рода гиперссылка, ведущая к дополнительной информации.
На теннисном корте, если посмотреть на него "сквозь" экран телефона, появляются ярлыки, ведущие к расписанию матчей, объяснению, что происходит на корте прямо сейчас, и даже - этим в IBM, похоже, гордятся больше всего - живому видео с камер, снимающих ход матча.
Одним лишь теннисом дело не ограничивается. Seer снабжает ярлыками все сооружения, представляющие интерес для посетителей турнира. В дополненной реальности достаточно оглядеться по сторонам, чтобы понять, где можно перекусить или где искать выход. Камеры, к котором можно подключиться через приложение, тоже показывают не только теннисные матчи. С их помощью можно, например, посмотреть, что происходит за пределами стадиона.
Хотя исследования в области дополненной реальности ведутся с начала девяностых, до середины 2008 года о существовании этой технологии знали только специалисты, а все попытки практического использования можно было пересчитать по пальцам. Год спустя дополненной реальностью занимались десятки компаний, а в специализированной прессе всерьёз обсуждался вопрос, скоро ли эта технология всем наскучит.
IBM со своим уимблдонским приложением - далеко не пионер в этой области. Компания всего лишь решила поучаствовать в назревающем буме. А бум действительно будет: за 2009 год количество приложений для iPhone, основанных на использовании дополненной реальности в той или иной форме, выросло с нуля до двух сотен. Для Android тоже хватает подобных программ. В конце года в игру вступил сам Google с визуальным поисковиком Google Goggles, а Nokia, наконец, доделала давно обещанное приложение Point&Find.
Игровые компании тоже внимательно присматриваются к дополненной реальности: несколько использующих её игр показали ещё на прошлогодней выставке E3, и можно не сомневаться, что как минимум столько же разрабатывают без лишнего шума прямо сейчас. Зато рекламщики бросились осваивать дополненную реальность с таким рвением, что публика и в самом деле может пресытиться технологией, так её и не распробовав.
При этом сам термин "дополненная реальность" толкуют совершенно по-разному. Когда речь идёт о рекламных или развлекательных применениях, как правило, имеется в виду встраивание трёхмерных объектов и персонажей в живое видео - что-то вроде кинематографических спецэффектов в реальном времени. Дополненная реальность в IBM Seer и других информационных приложениях относится совсем к другому сорту.
Виртуальные ярлыки-гиперссылки на реальных объектах - это характерный признак так называемых AR-браузеров (AR - это сокращенная форма словосочетания augmented reality, "дополненная реальность" по-английски). Тут есть два лидера: австрийская Mobilizy и SPRX из Нидерландов. Первая компания разрабатывает AR-браузер Wikitude, а другая - Layar.
Описание работы Seer в равной степени подходит для описания работы любого AR-браузера: чтобы увидеть информацию, связанную с объектом в реальности, нужно посмотреть на него "сквозь" мобильный телефон с запущенным приложением дополненной реальности. Правда, в отличие от узкоспециализированного Seer, и Layar, и Wikitude действуют не только в одном строго определённом месте. Обе компании пытаются построить и стандартизовать эдакий AR-интернет, в котором вместо сайтов - слои информации с привязкой к географическим координатам.
Распространённость AR-браузеров объясняется простотой изготовления. Они эффектно выглядят, но имеют совершенно элементарное устройство. Программе не нужно обрабатывать видео или распознавать образы (вот это было бы действительно сложно). Всю необходимую информацию она получает со встроенных в телефон датчиков: точку, где стоит владелец телефона, сообщает GPS, направление, куда направлена камера, выдаёт встроенный компас, а движение телефона по другим осям - акселерометр. Ей остаётся лишь запросить с сервера доступные в этом месте ярлыки и определить, какие из них будут видны в данные момент.
Увы, сам по себе избыток приложений, использующих этот сорт дополненной реальности, не транслируется в их реальную популярность. В большинстве случаев они совершенно непрактичны. Даже простой список объектов, доступных поблизости, был бы удобнее - по крайней мере, чтобы заметить и выбрать один из них, не нужно "шарить" камерой телефона по окрестностям. Не случайно даже в Seer из дополненной реальности можно перейти к обычной плоской карте. Не так красиво, зато удобно.
Что с этим делать - непонятно. Возможно, простого решения у этой проблемы нет, и нужно дожидаться появления недорогих очков со встроенными дисплеями (именно на них рассчитывали изобретатели дополненной реальности двадцать лет назад). Не исключено, впрочем, что всё проще. Большинство "гигантов" рынка дополненной реальности появились меньше двух лет назад, и у них не было времени придумать что-то получше. Ещё придумают?
Кафедра Ваннаха: Левиафан как форма искусственной жизни
Автор: Ваннах Михаил
Одно из самых интересных направлений информационных технологий - искусственная жизнь, ИЖ, artificial life. Под этим термином подразумевают обычно изучение жизни, биологических систем и их эволюцию при помощи моделей. Ну, чаще всего - математических, прокручиваемых на цифровой машине. Работы Крейга Вентера по замене ДНК на синтезированную, по перепрограммированию живой клетки, также проходят по ведомству искусственной жизни. Англосаксы обзывают такие работы wet a-life. Есть и термин wetware - "мокрое", то бишь - живое, обеспечение, аппаратная часть биологических компьютеров или элементов - вроде медицинских или химических сенсоров на биологической основе. Но, вообще то, этот термин применим к изучению самых общих живых систем, вне зависимости от их природы.
Под жизнью рассмотрим ниже то, что один из отцов отечественной кибернетики А. А. Ляпунов в начале 1960-х определил, как "высокоустойчивое состояние вещества, использующее для выработки сохраняющих реакций информацию, кодируемую состояниями отдельных молекул". А вообще - возьмём да и позволим себе вольность, недопустимую в научной работе публикуемой в реферируемом журнале. Вот возьмём да и урежем определение Ляпунова на последние четыре слова. Зачем ограничиваться отдельными молекулами (у А. А. Ляпунова были весьма серьёзные основания для этого, приведённые в его же труде "Об управляющих системах живой природы и общем понимании жизненных процессов", М., 1962) - расширим понятие жизни до всего, что для повышения собственной устойчивости и выЖИВАЕМОСТИ (без тавтологии - никак) использует информацию. А на чем эта информация записана - не суть важно. Это могут быть и современные технические средства, логические схемы, магнитные домены... Это могут быть и некие квантовые состояния, в перспективных и фантастических устройствах. Неважно - главное то, что система функционирует на основе информации.
Мы подчас с тоской вспоминаем простые и надежные устройства индустриальной эры. Но вот тулупчик с завернутым в него инструментом, занимавший большую часть багажника старенького "Москвича", как-то уже подзабылся. А зря - без такого малого джентльменского набора из гаража лучше было не выезжать... И при такой надёжности цифровая электроника была невозможна - оставим на совести авторов паропанка (steampunk) сугубо реалистичные описания вычислительных машин викторианской эры, насчитывающих мириады шестерёнок и зубчатых реек, да обслуживаемых толпами смазчиков... Владелец современной машины с нутром её не сталкивается за весь цикл эксплуатации, а о необходимости сервиса говорит ему бортовой компьютер. Ну а следующим шагом технологии вполне могли бы быть машины, которые добиваются повышения своей надежности не советуя заехать в сервис или встать и вызвать эвакуатор, а сами - заказывая по Сети нужные запчасти в сервисной сети; сами устанавливая их; ну, а по мере повышения точности и уменьшения допусков, повышения стандартизации путем оперирования такими стандартными деталями, как отдельные атомы, обходясь и без запчастей. Причём первое для современных технологий - вопрос организации и потребности. Ну а последнее - перехлёстывает то, что принято называть нанотехнологиями. Но законов природы всё это не нарушает, и поэтому можно постулировать грядущее появление "живых" механизмов. При одном условии - если этому не будут препятствовать социальные механизмы. Все знают трогательную любовь, питаемую властями России к автозаводу в городе Тольятти. И все знают, как нам повезло, что в стране не было крупного города, благосостояние которого зависело б от производства арифмометров "Феликс-М". А то не видать бы нам ИТ-чудес, как и своих ушей... А представьте "живой" автомобиль, который сам себя чинит, используя для этого даже не запчасти, а так - подобранные на обочине атомы... Ну а если ещё он станет питаться не углеводородами, а солнечным светом - так это ж вообще будет подрыв основ и стабильности!
Но в любом случае кажется, что понятие искусственной жизни - это нечто весьма современное. Сугубо из последних десятилетий, после кибернетики... Ан нет! Понятие это относится к заре нового времени и прозвучало в одной из кардинальных книг европейской цивилизации. Книга эта звалась "Левиафан", а автором её был Томас Гоббс (Thomes Hobbes, 1588-1679), человек, в котором интеллектуальная смелость сочеталась с поразительной житейской осторожностью. Хотя, возможно, на Гоббса повлиял пример его папы, викария холерического характера, отлучённого от должности после драки у церковных дверей с другим викарием, и оставившего детей на попечение брата. Переведя ещё в детстве "Медею" латинским стихом, Гоббс подвизался в роли домашнего учителя в семье графов Девонширских. Путешествуя в этом качестве по Европе, он впитал идеи Кеплера и Галилея, с последним он был лично знаком. Впрочем, тяга к прогрессу научному сочеталась в нём с консерватизмом политическим. В 1628 году он переводит Фукидида, видя в нём оружие против демократических идей. Это, вкупе с другими работами, доставляет ему место наставника будущего короля Карла II. И на службе ему бежавший в Париж от гражданской войны Гоббс создает знаменитый "Левиафан, или Материя, форма и власть государства церковного и гражданского" (1651). Исследование о сути государства. Апологию власти, любой власти, хоть Кромвеля, хоть Карла II, лишь бы сильной. Занятно, что такой "государственно-патриотический" шедевр принес создателю мало пользы. Роялисты видели в "Левиафане" оправдание власти Кромвеля. Гоббс бросает принца-изгнанника и возвращается в Англию - но сильное там духовенство не может простить ему атеизма. Гоббс сходится с Кромвелем, но без особой пользы для себя. После смерти лорда-протектора бежит опять на континент. После Реставрации "Левиафана" запрещают (1666). А бывший ученик сторонится бывшего учителя... Бывает - и трусость с конформизмом не приносят плодов.
Но вот интеллектуально "Левиафан" хорош. Особенно его начало - представление о том, "что все автоматы (механизмы, движущиеся при помощи пружин и колес, как, например, часы) имеют искусственную жизнь". Наивно? Но ведь это писано в те годы, когда друг Гоббса аббат Мерсенн пытался запустить пушечное ядро на орбиту спутника земли... И далее - представление о государстве, Левиафане, как об объекте искусственной жизни, созданном искусством человека. То что дальше - это историкам политической философии. Пусть сегодня bella omnia contra omnes, война всех против всех, с которой началась человеческая история, кажется более правдоподобной, - в свете находок обглоданных прачеловеческих костей в прачеловеческих же становищах, - чем сторонникам либерального "естественного состояния" Локка. И пусть идея блага, достигаемого подчинением власти, не привлекает после тоталитаризмов ХХ века. Всё равно - идея о подобии социальных структур живым существам золотыми буквами вписана в историю науки.
Ну, и под конец вспомним, что перед крахом СССР появилась тенденция рассматривать тогдашний аппарат управления как некие "големы", объекты искусственной жизни - ну, например, в самиздатовской статье А. Лазарчука и П. Лелика "Голем хочет жить" http://lazandr.lib.ru/web/books027.html. Идея забавная, но отводящая внимание от конкретных людей, сначала управлявших, а потом и - владевших собственностью. Когда то Бернард Рассел отметил, что в передовых странах практика ведет за собой философию, а в странах отсталых чужие теории определяют практику...
Нет ничего проще
Автор: Герман Царев
Орфография и пунктуация автора сохранены. - прим. ред.
Наверное, каждый человек, занимающийся разработкой программного обеспечения, когда-либо сталкивался с задачей обработки больших объемов данных. Такая потребность могла возникнуть при реализации сложных математических алгоритмов, обработки сетевого трафика, создания различного рода игр и так далее. И тогда приходилось принимать очень важное, определяющее решение для дальнейшей разработки. Либо обрабатывать все данные в одном потоке, что, конечно же, занимает огромное количество времени и не реализует все возможности и ресурсы многоядерных машин, которые на настоящий момент, мягко говоря, не редкость, либо заниматься многопоточным программированием, которое в свою очередь существенно может ускорить выполнение программы.
Естественно, что более опытные и подготовленные специалисты выбирали второй путь развития событий. Их выбор является вполне понятным и логичным. Однако при попытке его реализации можно наткнуться на следующие проблемы.
Первой проблемой является то, что программист должен самостоятельно определять, создавать и запускать потоки, подготавливать данные для их выполнения, следить за целостностью общих данных и заниматься сборкой общего результата. Отсюда вытекает множество ошибок при синхронизации, трудности с разделением работы по времени с общими данными, да и в целом подобная задача не является тривиальной.
Вторая проблема такого подхода связана со сложностью отладки подобных приложений. Практика и статистика показывает, что при реализации больших проектов, более 40% времени разработки тратится на исправление ошибок, тестирование и отладку приложения. В случае многопоточной реализации на этот процесс уйдет в 2-3 раза больше времени.
Отсюда возникает желание создавать многопоточные "быстрые" приложение, однако, затрачивая на это меньше времени и сил. Было бы здорово, если бы процесс создания, контроля, синхронизации потоков проходил в автоматическом режиме без участия разработчика.
И такой механизм уже существует, однако, далеко не всем о нем известно. В настоящей статье я попытаюсь раскрыть суть и основы этого удобного и полезного инструмента для разработчиков многопоточных приложений.
И так, знакомьтесь – MapReduce. Эта модель программирования для обработки больших объемов данных. Ее создателем считается небезызвестная компания Google. В своей работе она активно применяет этот механизм, что позволяет говорить о его удобности, быстродействии и практичности.
Рассмотрим обработку данных с применением этой технологии. MapReduce включает в себя 3 этапа. Подготовка данных, определение функции map и определении функции reduce. Рассмотрим каждый их этих этапов.
Подготовка данных. Все данные, которые необходимо каким-либо образом обработать, программист должен разбить на некоторое количество частей. Количество этих частей программист выбирает самостоятельно, основываясь на размере данных и количестве обрабатывающих устройств (количестве ядер, процессоров, ЭВМ в кластера и т.д.).
Определение функции map. Функция map является, по сути, обработчиком данных. В последующем эта функция будет запускаться в каждом потоке для обработки тех частей данных, которые подготовил программист на первом этапе. Параметром является часть данных для обработки. Возвращать функция должна результат обработки этих данных. Возвращаемое значение определяется программистом в зависимости от решаемой задачи.
Определение функции reduce. Функция reduce служит для сборки обработанных частей данных в единый результат. Программист определяет эту функции исходя из поставленной задачи и требуемого результата.
После этого, для запуска обработки данных необходимо вызвать всего одну функцию (ее название зависит от реализации механизма MapReduce, например в Qt подобная функция имеет название mappedReduced), указав в ее параметрах: подготовленные разбитые на части данные, функцию map и функцию reduce.
После вызова этой функции будет автоматически запущено необходимое количество потоков, которые обработают все входные данные и соберут единый результат. В итоге – минимум затрат от программиста и максимальная производительность. Как показывает практика, приложения, написанные с применением MapReduce, оказываются минимум в 2 раза быстрее, чем приложения, использующие обычный механизм запуска потоков.
Данная технология реализована для различных языков программирования, например, для С++, С#, Java и других.
Удобной, простой в использовании с одной стороны, и показывающие прекрасные результаты быстродействия с другой, является реализация механизма MapReduce в объектно-ориентированной кроссплатформенной библиотеке Qt.
Рассмотрим простой пример. Пусть имеется вектор чисел, имеющий очень большую длину. Необходимо посчитать количество вхождений какого-либо числа в этом векторе.
Однопоточное приложение будет в цикле по-очереди перебирать все значения вектора, сравнивать их с заданным значением и в случае совпадения, увеличивать счетчик вхождений на единицу.
В случае применения MapReduce, программист должен разбить исходный вектор на несколько векторов. Функция map в таком случае будет действовать по алгоритму однопоточной версии, параметром будет являться вектор чисел, возвращаемым значением будет количество вхождений заданного числа. Функция reduce будет проводить операцию сложения результатов после каждого выполнения функции map.
В итоге, после запуска обработки будут автоматически созданы несколько потоков в зависимости от числа обрабатывающих устройств и количества входных данных. Каждый поток будет обрабатывать свою часть входного вектора и считать количество вхождений в нем. После завершения всех потоков будет доступен конечный результат.