OpenCL: универсальность и высокая производительность или не так все просто?

На Хабре уже были статьи об OpenCL, CUDA и GPGPU со сравнениями производительности, базовыми понятиями и примерами, поэтому рассказывать об основах и принципах работы я тут не буду, даже код не покажу. Но я хочу описать в чем заключаются реальные трудности при использовании GPU (про ограничения и их последствия), почему нельзя сравнивать производительность CPU и GPU, а также про то насколько “универсален” OpenCL на самом деле.

Предисловие

Мое знакомство с GPGPU началось 1,5 года назад и продолжается до сих пор в виде активной разработки исследовательского проекта. Тогда у меня был выбор: OpenCL или CUDA, разницы в выборе особо, на тот момент, не было, но в университете начали читать курс про OpenCL, так я его и выбрал. Сразу скажу, что писал я только для карт с архитектурой от NVidia, поэтому буду говорить про нее (чаще всего о Fermi).

В этом месте был большой абзац об истории и состоянии дел в области расчетов на GPU, но после описания проблем пост оказался слишком длинным и абзац был жестоко урезан (есть надежда, что он вернется в следующей части). Поэтому перейдем сразу к тому, почему портированные на GPU алгоритмы далеко не всегда работают быстро, т.е. дают на практике 0.5Х-10Х прироста производительности вместо обещанных 20Х-100Х относительно CPU (иначе бы уже каждое приложение его использовало).

Читать

ОСРВ QNX: Немного о микроядре, потоках и процессах

Немного о POSIX

С выпуском каждой новой версии QNX (а надо отметить, что первая версия ОСРВ QNX появилась теперь уже в далёком 1981 году), разработчики использовали накопленный ранее опыт и делали систему лучше, в том числе и удобнее для разработчиков. Именно поэтому QNX Neutrino поддерживает стандарты POSIX 1003.1, например, управление потоками (threads), расширения реального времени (Realtime Extensions), дополнительные расширения реального времени (Additional Realtime Extensions) и профили прикладных окружений (Application Environment Profiles, AEP).

Зачем я об этом говорю? Очень просто. Хотелось бы отметить две вещи, которые характерны для QNX и связаны с POSIX. Есть мнение, что любая POSIX операционная система скрывает в себе UNIX. А раз так, то такая система слишком громоздкая и не может применяться во встраиваемых решениях. Однако, в случае QNX это неверно. Стандарт POSIX описывает интерфейс, а не реализацию. А значит, под слоем POSIX может скрываться что угодно, в том числе и микроядро.

Второй момент, на котором я бы хотел остановится, наверное, очевиден. Это, конечно, те преимущества, которые даёт POSIX в QNX:

  • Повторное использование кода. Однажды разработанный, отлаженный и протестированный код для одной POSIX операционной системы, может быть повторно использован в другой POSIX системе, в том числе и в QNX.
  • «Переносимость» программистов. Разработчик или группа разработчиков, знакомая c POSIX и UNIX могут легко приступить к разработке встраиваемой системы реального времени (я, конечно, имею в виду QNX). Ведь большая часть ОС им будет уже знакома.

Итак, можно сделать вывод, что POSIX в QNX обеспечивает ряд преимуществ.

Читать

Ускорение ядра Linux с помощью графического процессора GPU

Исследования Университета штата Юта, спонсированные частично компанией NVIDIA, направлены на изучение ускорения ядра Linux с использованием ускорения графического процессора GPU. Вместо того чтобы просто позволить приложениям пользователя использовать огромную силу предлагаемых современных графических процессоров, исследователи надеются ускорить части ядра Linux запустив его прямо на GPU.

Из страниц исследования: “Идея проекта KGPU состоит в том, чтобы графический процессор GPU рассматривался в качестве вычислительного сопроцессора для операционной системы, позволяющего производить параллельные вычисления внутри ядра Linux. Это даст возможность использовать SIMD (или SIMT в CUDA) для ускорения функциональности ядра Linux и внести новые функциональные возможности, которые ранее считались слишком интенсивными вычислениями для ядра. Проще говоря, проект KGPU делает возможными векторные вычисления внутри ядра”.

Кроме того, “это позволяет по-настоящему распараллелить ядро ​​Linux: не только обрабатывать несколько запросов одновременно, но также разделять одни большие запрашиваемые вычисления на части и распространять эти части через большое число ядер на GPU”.

Читать

Обзор практически всех *top утилит под linux (atop, iotop, htop, foobartop и т.д.).

top

Все мы знаем top — самую простую и самую распространённую утилиту из этого списка. Показывает примерно то же, что утилита vmstat, плюс рейтинг процессов по потреблению памяти или процессора. Совсем ничего не знает про загрузку сети или дисков. Позволяет минимальный набор операций с процессом: renice, kill (в смысле отправки сигнала, убийство — частный случай). По имени top суффикс “-top” получили и все остальные подобные утилиты в этом обзоре.

atop


Atop имеет два режима работы — сбор статистики и наблюдение за системой в реальном времени. В режиме сбора статистики atop запускается как демон и раз в N времени (обычно 10 мин) скидывает состояние в двоичный журнал. Потом по этому журналу atop’ом же (ключ -r и имя лог-файла) можно бегать вперёд-назад кнопками T и t, наблюдая показания atop’а с усреднением за 10 минут в любой интересный момент времени.

В отличие от top отлично знает про существование блочных устройств и сетевых интерфейса, способен показывать их загрузку в процентах (на 10G, правда, процентов не получается, но хотя бы показывается количество мегабит).

Незаменимое средство для поиска источников лагов на сервере, так как сохраняет не только статистику загрузки системы, но и показатели каждого процесса — то есть «долистав» до нужного момента времени можно увидеть, кто этот счастливый момент с LA > 30 создал. И что именно было причиной — IO программ, своп (нехватка памяти), процесор или что-то ещё. Помимо большего количества информации ещё способен двумя цветами подсказывать, какие параметры выходят за разумные пределы.

Читать

Разработка под андроид, не на Java

В последнее время на конференциях всё чаще обсуждается тема, как создавать приложения под Android на различных языках программирования, кроме Java.

Android — пусть и не идеальная, но для прагматического разработчика самая лучшая мобильная платформа для open source проектов. Но все приложения бегут под Dalvik VM, так что вам любом случае придётся иметь дело с окружением Java.

Читать

Черные разработчики: уволенные программисты возвращаются… с дьявольским кодом

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

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

Читать

Перехват HTTPS – трафика

Однажды встретился на просторах интернета один клиент-серверный продукт название которого я приводить пока не буду, назовём его просто «продукт TH». Работал он по технологии похожей на Free2Play, но бесплатно предоставлял дай бог 10% от своего функционала, остальные плюшки только по платной подписке. Какое время (год или около того) я смиренно ждал решения со стороны, но в конце концов любопытство оказалось сильнее лени и я засел за более глубокое изучение этого продукта.

TH — дитя тотальной вебдванольности, клиентская часть в отдельности не представляет никакого интереса, весь цимес находится на серверной стороне в виде среднеразвитой социальной сети, форума и магазина. Всю информацию о наличии/отсутствии плюшек клиент получает оттуда же, остаётся только взять её, изучить содержание и изменить по потребностям. Сразу оговорюсь, конечной целью не было создание т.н. «локального сервера» или клона коммерческого сайта с целью извлечения прибыли, причиной был зуд в известном месте и обычное детское «а что там внутри».

А внутри оказалось, что общение клиента с сервером проходит через HTTPS-канал. Поэтому если ваше любопытство в этой области совпадает с моим, то ниже рассказ о довольно запутанном для новичка в этой области, но успешно раскрытом вопросе.

Читать

Флеш-память: проблемы для компьютерной криминалистики

В конце 2010 года Грем Белл и Ричард Боддингтон опубликовали работу «Solid State Drives: The Beginning of the End for Current Practice in Digital Forensic Recovery?» («Твердотельные накопители: начало конца существующим методам судебного восстановления данных?»), которая вызвала неоднозначную реакцию интернет-сообщества. И хотя обсуждаемая в указанной статье особенность работы твердотельных накопителей была впервые озвучена в 2008 году на конференции DEFCON 16, исследована специалистами компании Майкрософт и представлена на конференции разработчиков машинных носителей информации в 2009-м [1, 6-й слайд] и даже упомянута на российских семинарах в 2010-м [2, слайды 10 и 11], признание проблемы и серьезное обсуждение этих особенностей в сообществе криминалистов пришлись на март 2011 года.

Читать

Игры с PS One и движек Havok портируют на Android и iOS

На прошлой неделе компания Sony Ericsson анонсировала несколько громких соглашений, которые проливают свет на перспективы как новейшего игрового смартфона Sony Ericsson Xperia PLAY, так и развития игрового сегмента на Android вообще.

Так, на завершившейся 4 марта Game Developers Conference 2011 в Сан-Франциско, ирландская компания Havok, один из ведущих разработчиков ПО для игр в мире, объявила о поддержке платформы Android, и первым игровым смарфтоном, на котором станут доступны возможности их знаменитого физического движка Havok Physics стал Sony Ericsson Xperia PLAY.

Технологии корпорации Havok используется в более чем двухста известных во всём мире играх, включая Halo 2, Halo 3, Halo Wars, BioShock, BioShock 2, Assassin’s Creed, Resident Evil 5, Red Faction: Guerrilla, Uncharted2 и других. И даже далёкие от мира игр люди знакомы с возможностями их технологий, которые уже более 10 лет используются при создании спецэффектов к лучшим голливудским блокбастерам.

Читать

Что нужно знать про оплату банковскими картами через интернет

Прочитав вот этот топик, я увидел, что очень многие хабралюди (в том числе и автор топика) не представляют себе, как работает оплата банковскими картами в интернете. Руководствуясь домыслами и предположениями, а не фактами, автор делает вывод, будто бы карты Сбербанка наиболее уязвимы для мошенничества в интернете. Поэтому я решил рассказать о том, как на самом деле устроена оплата банковскими картами в интернете, чтобы хабралюди на основании фактов, а не домыслов, представляли себе, как это работает, и где их могут поджидать реальные, а не мнимые, опасности.

Disclaimer: Я работаю в Сбербанке России. Моя работа связана с помощью клиентам, а не с карточками, однако раньше я работал в области e-commerce, и очень хорошо знаю, как работает схема оплаты карточками в интернете.

Читать