Pull to refresh
43
Артём Н. @artiom_nread⁠-⁠only

Технарь-психопат

Send message

Lock-free структуры данных. Основы: Модель памяти

Reading time18 min
Views98K

В предыдущей статье мы заглянули внутрь процессора, пусть и гипотетического. Мы выяснили, что для корректного выполнения параллельного кода процессору необходимо подсказывать, до каких пределов ему разрешено проводить свои внутренние оптимизации чтения/записи. Эти подсказки – барьеры памяти. Барьеры памяти позволяют в той или иной мере упорядочить обращения к памяти (точнее, кэшу, — процессор взаимодействует с внешним миром только через кэш). “Тяжесть” такого упорядочения может быть разной, — каждая архитектура может предоставлять целый набор барьеров “на выбор”. Используя те или иные барьеры памяти, мы можем построить разные модели памяти — набор гарантий, которые будут выполняться для наших программ.

В этой статье мы рассмотрим модель памяти C++11.
Читать дальше →
Total votes 72: ↑69 and ↓3+66
Comments8

О SAN (Storage Area Network) на пальцах

Reading time5 min
Views204K
image

В деле познания SAN столкнулся с определённым препятствием — труднодоступностью базовой информации. В вопросе изучения прочих инфраструктурных продуктов, с которыми доводилось сталкиваться, проще — есть пробные версии ПО, возможность установить их на вирутальной машине, есть куча учебников, референс гайдов и блогов по теме. Cisco и Microsoft клепают очень качественные учебники, MS вдобавок худо-бедно причесал свою адскую чердачную кладовку под названием technet, даже по VMware есть книга, пусть и одна (и даже на русском языке!), причём с КПД около 100%. Уже и по самим устройствам хранения данных можно получить информацию с семинаров, маркетинговых мероприятий и документов, форумов. По сети же хранения — тишина и мёртвые с косами стоять. Я нашёл два учебника, но купить не решился. Это "Storage Area Networks For Dummies" (есть и такое, оказывается. Очень любознательные англоговорящие «чайники» в целевой аудитории, видимо) за полторы тысячи рублей и "Distributed Storage Networks: Architecture, Protocols and Management" — выглядит более надёжно, но 8200р при скидке 40%. Вместе с этой книгой Ozon рекомендует также книгу «Искусство кирпичной кладки».

Что посоветовать человеку, который решит с нуля изучить хотя бы теорию организации сети хранения данных, я не знаю. Как показала практика, даже дорогостоящие курсы могут дать на выходе ноль. Люди, применительно к SAN делятся на три категории: те, кто вообще не знает что это, кто знает, что такое явление просто есть и те, кто на вопрос «зачем в сети хранения делать две и более фабрики» смотрят с таким недоумением, будто их спросили что-то вроде «зачем квадрату четыре угла?».

Попробую восполнить пробел, которого не хватало мне — описать базу и описать просто. Рассматривать буду SAN на базе её классического протокола — Fibre Channel.
Читать дальше →
Total votes 31: ↑29 and ↓2+27
Comments83

Перевод книги Эндрю Ына «Страсть к машинному обучению» Главы 1 — 14

Reading time24 min
Views61K

Некоторое время назад в моей ленте в фейсбуке всплыла ссылка на книгу Эндрю Ына (Andrew Ng) "Machine Learning Yearning", которую можно перевести, как "Страсть к машинному обучению" или "Жажда машинного обучения".


image<img src="<img src="https://habrastorage.org/webt/ds/rc/ct/dsrcctfottkedkf7o1hxbqsoamq.png" />" alt="image"/>


Людям, интересующимся машинным обучением или работающим в этой сфере представлять Эндрю не нужно. Для непосвященных достаточно сказать, что он является звездой мировой величины в области искусственного интеллекта. Ученый, инженер, предприниматель, один из основателей Coursera. Автор отличного курса по введению в машинное обучение и курсов, составляющих специализацию "Глубокое обучение" (Deep Learning).

Читать дальше →
Total votes 40: ↑40 and ↓0+40
Comments3

Архитектура хранения и отдачи фотографий в Badoo

Reading time20 min
Views25K


Артем Денисов ( bo0rsh201, Badoo)


Badoo — это крупнейший в мире сайт знакомств. На данный момент у нас зарегистрировано порядка 330 миллионов пользователей по всему миру. Но, что гораздо более важно в контексте нашего сегодняшнего разговора, — это то, что мы храним около 3 петабайт пользовательских фотографий. Каждый день наши пользователи заливают порядка 3,5 миллионов новых фотографий, и нагрузка на чтение составляет порядка 80 тысяч запросов в секунду. Это достаточно много для нашего бэкенда, и с этим иногда бывают трудности.

image

Я расскажу про дизайн этой системы, которая хранит и отдает фотки в целом, и приведу на нее взгляд с точки зрения разработчика. О том, как она развивалась, будет краткая ретроспектива, где я основные вехи обозначу, но уже более подробно буду говорить только о тех решениях, которые мы сейчас используем.
Total votes 31: ↑29 and ↓2+27
Comments38

Оптическая нейросеть

Reading time3 min
Views22K

Обученная многослойная фазовая маска (классификатор рукописных символов). Справа показана физическая модель оптической нейросети D²NN, напечатанная на 3D-принтере: слои 8×8 см с расстоянием 3 см друг между другом

Группа исследователей из Калифорнийского университета в Лос-Анджелесе разработала новый тип нейронной сети, которая в работе использует свет вместо электричества. В журнале Science опубликована статья с описанием идеи, рабочего устройства, его производительности и типов приложений, которые, по мнению авторов, хорошо вычислять в нейросети нового типа.

Полностью оптический фреймворк глубокого обучения Diffractive Deep Neural Network (D²NN), который физически сформирован из множества отражающих или прозрачных поверхностей. Эти поверхности работают сообща, выполняя произвольную функцию, усвоенную в результате обучения. В то время как получение результата и прогнозирование в физической сети организовано полностью оптически, обучающая часть с проектированием структуры отражающих поверхностей рассчитывается на компьютере.
Читать дальше →
Total votes 46: ↑45 and ↓1+44
Comments33

Основы работы с фьютексами

Reading time10 min
Views35K
Фьютекс (futex — сокращение от «Fast userspace mutex») — это механизм, предложенный разработчиками Linux из IBM в 2002 году и вошедший в ядро в конце 2003 года. Основной идеей было предоставить более эффективный способ синхронизации пользовательских потоков с минимальным количеством обращений к ядру ОС.

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

Важный момент: фьютексы — это достаточно низкоуровневый инструмент, напрямую его использовать стоит лишь при разработке фундаментальных библиотек, вроде стандартной библиотеки C/C++. Очень маловероятно, что вам понадобится использовать фьютексы в обычном прикладном приложении.
Читать дальше →
Total votes 30: ↑30 and ↓0+30
Comments4

Сколько стоит для студента микросхему выпустить?

Reading time15 min
Views40K

1. Введение


Всем нам известна проблема курицы и яйца: работодатели не хотят брать на работу выпускников без опыта работы, но где же в таком случае выпускникам получить опыт работы? В микроэлектронике эта проблема стоит особо остро ввиду требуемого огромного количества специфического опыта. Наши ВУЗы с советских времен знамениты широчайшей теоретической подготовкой, которая должна помочь выпускнику в любой сложной ситуации в жизни. Однако, современная индустрия требует практического опыта. Добавим сюда еще отсутствие мотивации, приводящее к тому, что по специальности работает процентов 15% выпускников, и получим жесточайший кадровый голод в отрасли, которая очень требовательна к качеству кадров. А ведь если бы каждый студент мог "поморгать лампочкой" со своего собственного кристалла ситуация могла бы развиваться совсем иначе.



Рисунок 1. КДПВ


Что же мешает таким грандам подготовки кадров отечественной микроэлектроники, как, например, МИФИ и МИЭТ, поступать аналогично своим зарубежным коллегам (например, MIT или UZH), а именно — давать возможность студентами-дипломникам выпускать свои собственные кристаллы? Можно, конечно, предположить, что выпуск собственного кристалла занятие крайне долгое, сложное и дорогое, а потому для института — дорого, а для студента — непосильно. Однако, это не так. Давайте же взглянем на одну из доступных технологий на отечественном рынке микроэлектроники, знакомство с которой позволит студенту стать значительно более привлекательным в плане будущего трудоустройства, а предложение которой для студента — позволит университету значительно поднять свой рейтинг в глазах абитуриентов и работодателей.

Читать дальше →
Total votes 100: ↑99 and ↓1+98
Comments80

Event Tracing for Windows на стороне зла. Но это не точно

Reading time6 min
Views18K


В предыдущих статьях про сниффер на PowerShell и сбор данных о загрузке с удаленного сервера я уже немного писал про возможности ETW (Event Tracing for Windows). Сегодня я хочу подробнее рассказать про эту технологию.


Заодно покажу на примере разбора HTTPS и создания кейлоггера на PowerShell, как ее можно использовать во благо. Или не совсем во благо.

Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments6

Reverse engineering тестового crackme от Лаборатории Касперского v2.0

Reading time2 min
Views24K
В продолжение моего предыдущего разбора «Reverse engineering тестового crackme от Лаборатории Касперского». Нашел на просторах интернета ещё один вариант crackme от Лаборатории Касперского. Автор применил брутфорс для его решения. Этот грубый «крякерский» метод нам тут не подойдёт. Нас интересует разбор алгоритма проверки лицензионного ключа. Можно, конечно, сделать огромную выборку правильных ключей и попробовать найти закономерность, но мне кажется, что лучше немного пореверсить. И так начнем. Начало у crackme такое же, как и в предыдущей статье: ключ должен содержать 19 символов, каждый 5-ый символ должен быть "-" и все символы должны быть цифрами. Перейдем к интересному. Используем в качестве пробного ключа 1234-5678-9012-3456.

image

Читать дальше →
Total votes 36: ↑34 and ↓2+32
Comments29

Пример программирования FPGA-ускорителя

Reading time14 min
Views15K


Не так давно мы рассказали о новой услуге Selectel — облачных высокопроизводительных вычислениях на FPGA-ускорителях. В новой статье на эту тему рассмотрим пример программирования FPGA для построения множества Мандельброта, — известного математического алгоритма для визуализации фрактальных изображений. В статье использован материал с сайта Эйлер Проджект.


Total votes 29: ↑28 and ↓1+27
Comments23

Как «Додо Пицца» решает проблемы бизнеса с помощью машинного обучения

Reading time6 min
Views27K
image
«Пиццерии будущего» появляются по всему миру. На фото – Zume Pizza из Калифорнии

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

Облачные решения в ближайшие годы изменят мир ритейла. VR, AR, видеоаналитика, нейросети – все эти технологии связаны с облаками и попадают в прямую зону ответственности VSaaS.
Читать дальше →
Total votes 32: ↑25 and ↓7+18
Comments31

Уроки 3D Печати. Печать тонкостенных моделей от 3Dtool

Reading time4 min
Views6.6K
Доброго времени суток!

Как всегда наши клиенты помогают нам с идеями для статей. Сегодня будем печатать яйцо. На его примере протестируем встроенную функцию Slic3r-а, о которой почему то мало кто упоминает.

Яйцо нужно напечатать не простое, а прочное, с минимальным расходом пластика и быстро.
Оно в дальнейшем будет подвешиваться к потолку за крючок на верхушке. Низ яйца будет лицевой частью, вверх с крючком — черновой, т. к. будет высоко висеть и видно верхнюю часть не будет. Можно печатать яйцо целиком петелькой вниз с поддержками в нижней части, но печать и удаление поддержек займет время.

Для выполнения данного задания мы выбрали 3D принтер Hercules 2018 — это весьма универсальный 3D принтер так как умеет печатать всеми видами пластика и обладает большой рабочей камерой.


Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments1

Новые Google Compute Engine образы VM для Deep Learning

Reading time8 min
Views6.2K

Cоавтор статьи: Mike Cheng


Google Cloud Platform теперь в своем портфолио имеет образы виртуальных машин, разработанные специально для тех, кто занимается Deep Learning. Сегодня мы поговорим о том что эти образы из себя представляют, какие преимущества они дают разработчикам и исследователям, ну и само собой о том, как создать виртуальную машину на их базе.

Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments0

Как я стандартную библиотеку C++11 писал или почему boost такой страшный. Глава 4.3

Reading time13 min
Views5.3K
Продолжаем приключения.

Краткое содержание предыдущих частей


Из-за ограничений на возможность использовать компиляторы C++ 11 и от безальтернативности boost'у возникло желание написать свою реализацию стандартной библиотеки C++ 11 поверх поставляемой с компилятором библиотеки C++ 98 / C++ 03.

Были реализованы static_assert, noexcept, countof, а так же, после рассмотрения всех нестандартных дефайнов и особенностей компиляторов, появилась информация о функциональности, которая поддерживается текущим компилятором. Включена своя реализация nullptr, которая подбирается на этапе компиляции.

Настало время type_traits и всей этой «особой шаблонной магии». В предыдущих частях данной главы мы рассмотрели мою реализацию базовых шаблонов стандартной библиотеки и в данной части речь пойдет про комбинацию техники SFINAE с шаблонами и немного о кодогенерации.

Ссылка на GitHub с результатом на сегодня для нетерпеливых и нечитателей:
Коммиты и конструктивная критика приветствуются
Больше шаблонов C++ под катом.
Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments15

Как роботы могут работать с человеком вместе (а не вместо)

Reading time11 min
Views13K
В прошлом посте мы рассказали, какие проекты интеллектуальной робототехники интересны Сбербанку. Сегодня разберем коботов: историю, классификацию, как на них можно зарабатывать или использовать для решения своих задач.


Источник: Universal Robots
Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments18

AI, практический курс. Современные архитектуры глубоких нейронных сетей для классификации изображений

Reading time7 min
Views17K


В предыдущей статье, Обзор нейронных сетей для классификации изображений, мы ознакомились с основными базовыми понятиями сверточных нейронных сетей, а также лежащими в их основе идеями. В данной статье мы рассмотрим несколько архитектур глубоких нейронных сетей, обладающих большой вычислительной мощностью — таких как AlexNet, ZFNet, VGG, GoogLeNet и ResNet — и подытожим основные преимущества каждой из этих архитектур. Структура статьи основана на записи в блоге Основные понятия сверточных нейронных сетей, часть 3.
Читать дальше →
Total votes 25: ↑23 and ↓2+21
Comments8

В Стэнфорде разработаны потоковые аккумуляторы, работающие при комнатной температуре

Reading time2 min
Views11K

Натриево-калиевый расплав находится в потоковых аккумуляторах при комнатной температуре, позволяя получить устройства с высоким рабочим напряжением. Источник: Antonio Baclig

Как мы знаем, в последние годы бурно развивается сектор возобновляемой энергетики, и поэтому постоянно требуются дополнительные мощности для хранения, дешёвые и ёмкие, выдерживающие много циклов перезарядки и способные оперативно и эффективно отдавать энергию обратно в сеть. Исследователи из Стэнфордского университета считают, что могут решить эту проблему с помощью нового применения нескольких широко распространённых материалов.
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments25

Получаем данные со счетчиков Меркурий 203.2Т по RS-485

Reading time3 min
Views33K


Организовать удаленный сбор показаний с электросчетчиков — задача вроде не сложная, счетчики с каждым годом все умнее и умнее и должны сами все отправлять, ан нет, информация конечно есть, но она разрозненная. Производители оборудования видимо тоже хотят зарабатывать на продаже своего ПО. Пишу эту статью чтобы сэкономить время всем, у кого есть похожие задачи.
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments23

«Туда и обратно» для нейронных сетей, или обзор применений автокодировщиков в анализе текстов

Reading time9 min
Views20K
Мы уже писали в самой первой статье нашего корпоративного блога о том, как работает алгоритм обнаружения переводных заимствований. Лишь пара абзацев в той статье посвящена теме сравнения текстов, хотя идея достойна гораздо более развернутого описания. Однако, как известно, обо всем сразу рассказать нельзя, хоть и очень хочется. В попытках воздать должное этой теме и архитектуре сети под названием «автокодировщик», к которой мы питаем очень теплые чувства, мы с Oleg_Bakhteev и написали этот обзор.


Источник: Deep Learning for NLP (without Magic)

Как мы упоминали в той статье, сравнение текстов у нас было “смысловое” – мы сопоставляли не сами текстовые фрагменты, а векторы, им соответствующие. Такие векторы получались в результате обучения нейронной сети, которая отображала текстовый фрагмент произвольной длины в вектор большой, но фиксированной размерности. Как получить такое отображение и как научить сеть выдавать нужные результаты – отдельный вопрос, о которой и пойдет речь ниже.
Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments4

Курс MIT «Безопасность компьютерных систем». Лекция 4: «Разделение привилегий», часть 2

Reading time13 min
Views5.6K

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
Total votes 24: ↑23 and ↓1+22
Comments0

Information

Rating
Does not participate
Location
Россия
Registered
Activity