Pull to refresh
171
0
Вадим Карпусенко @Vadikus

Пользователь

Send message

Субтитры уже залиты на ютьюб — можно просто влючить нажав на СС кнопку.
Файлы достаточно большие, и пока отдельно кроме ютьюба не выкладывались.

Планировались. Но я не стал этого делать, т.к. качество перевода на русский было не очень…
Есть предположение, что перевод будет пользоваться популярностью?

Держи:
https://www.youtube.com/playlist?list=PLqKQk2j2Il5mMqNHwJM9CLUAHLW5XFtw3


Планы переводить на русския язык были. Но переводчики плохо справились с техническими терминами и т.д.
Если кто-то хочет заняться переводом — дайте знать. Могу скинуть субтитры отдельными файлами.

У Интела сейчас задача заставить программистов переписать старый legacy код, который разрабатывался в 80х-90х без учета векторных операций и мульти- и много-ядерности под новые архитектуры. И мы говорим о коде в сотни тысяч строк или даже нескольких миллионов строк. Переписывать все это богатство с нуля отвыжится только сумасшедший. Поэтому стратегически было принято решение поддерживать х86 инструкции и устоявшуюся инфроструктуру, векторизацию спихнуть на компилятор, а параллелизм нитей реализовать с помощью OpenMP стандарта — прагмы проще вставлять, чем переписывать сам код. Это далеко не идеальное решение, но уж какое Интел придумал. MIC первого покаления — это первый шаг в направлении такое системы, где без векторизации и нитей нифига летать не будет. Со вторым поколением (KNL) схожая ситуация, хотя и чуть ускорился одно-поточный код. И плюс в KNL с memkind библиотекой специальными аллокаторами можно будет управлять где выделяется памить: в MCDRAM или DDR4, если чип во flat mode памяти находится.
Вопрос автору, при использонии алгоритма Штрассена, чем/как перемножались малые матрицы?
MKL тем и хорош, что исбользует правильные алгоритм кеш-блокинга/рекурсивное деление матриц, что бы запихнуть правильные плитки (tiles) матриц в разные уровни кешей. Без этого мы говорим не о compute-bound имплементации, а намного замедленном коде, т.к. в нем будет слишком много кеш промохов.
А еще для Xeon Phi 1.2 TFLOP/s — это только максимально возможная производительность на double precision, для FMA инструкций при использовании 512-битных векторных инструкций на всех ядрах. Только одна нить из 4-х на ядро смоежет использовать VPU за цикл. Но это я отвлекся. Т.е нужно еще думать как векторизовать весь код, если он не bandwidth-bound.
Если есть желание побеседовать по этой теме — прошу в личку.
Если очень кратко, то у них разный механизм расписаний (scheduling). Cilk Plus использует подход work-stilling, когда освободившийся рабочий лезет в очередь соседа и перетягивает себе неначатые елементы работы.
Кроме того Cilk Plus был задуман как детерменистический, в то время как OpenMP таким может и не быть.
Прошу прощения, описочка вышла. Хотя, если честно, я его имени даже и не помнил. Будучи тогда студентом аспирантуры я осмелился его называть только «мистером Дреппером». До обращения к нему по первому имени я тогда ещё не дорос.
Да, это хорошая статья. Я её всем рекомендую, тем более, что с Уричем Дреппером я лично знаком, с тех пор когда он ещё работал в Red Hat, и приезжал к нам на кампус в North Carolina State University, где главный офис «красных шапочек» и находился. Но опять, это только работа памяти. А где векторизация, где неоднородные распределённые вычисления, я спрашиваю?..
Учтём.

Я согласен, сейчас это странно выглядит. Связано это с тем, что в начале были сняты два отдельных видео ролика: теоретическая часть отдельно от практической. Они были просто склеены вместе, когда я занялся русской озвучкой.
В дальнейшем, я думаю, стоит объединять их в месте. Т.е. при показе слайда с теоретическим объяснением можно сбоку ещё показывать изменение исходного кода программы.

В любом случае, спасибо за комментарий.
Префикс «со-» произошёл от латинского «cum», который читается как «кум» — cum laude (кум лауде) с похвалой. Как в русском «к» стало «с» — ума не приложу. Но я и не филолог, так что мне можно.

Предлагаю лучше на темы производительных вычислений поговорить.
Спасибо за поправку. Учту при дальнейших переводах. Хотя себя будет сложно переучить, т.к. в ангийской транскрипции это слово читается именно как «ко-», а не «со-». Это как в названии штата «Техас» отродясь не было буквы «х» (американцы произносят его как «Тексыс»), но в русском произношении — появилась, думаю из-за схожего написания ;)
Упомянутая книга рассматривает особенности реализации параллельного доступа к С++11 структурам данных. При этом векторизация, распределённые вычисления в кластерах, оптимизация траффика, оптимизация доступа к памяти, и остальные 90% материала нашего учебного курса она не рассматривает. Так что можете, конечно, сомневаться, но я расскажу намного больше, чем покрыто в упомянутой книге.
Вы правы. Данный пример очень прост. Хуже дела, например, обстоят с кодом для оптимизации использования кеша. там снипет кода может не помочь, и проще будет выслушать чьё-то объяснение. В нашей книге (xeonphi.com/book) есть и такие примеры. А в целом, видео лекции создаются с двойной целью: 1) некоторые ученики предпочитают видео материал, чем чтение книг. 2) дальнейшее распространение учебного материала в странах не говорящих по-английски можно сделать просто переведя субтитры на нужный язык.
Если кратко, то пока только в тех случаях, где есть compute-bound или bandwidth-bound задачи. Т.е. много вычислений на каждое число, так как доступно до 2.2 TFLOP/s для одинарной точности; или же последовательный доступ к памяти — т.к. 8 контроллеров памяти с прифетчингом справятся с этой задачей лучше (реальные 160 GB/s), чем CPU (~60GB/s). Проблемы возникают, если есть случайный доступ к данным. Тут пиши — «пропало!». Прифетчинг становится бесполезным и наблюдается резкое падение пропускной способности. Такая же картина будет на GPGPU, если у вас есть опыт программирования для этих архитектур.

Можно ещё добавить, что пока Xeon Phi имеют только in-order ядра, т.е. параллелизм на уровне инструкций, как при out-of-order buffers — отсутствует. Это поменяется со следующим поколением Xeon Phi — Knights Landing.

Ну и пока мы ограничены шириной PCIe шины, которая для 2ого поколения устройств (PCIe v2 with 16 lanes) может пропускать до 7 GB/s (реальных я видел только 6.5 GB/s). Т.е. из простого расчёта можно прикинуть, что нужно минимум где-то 1200 FLOPs на каждый double, что бы оправдать перегон этих данных по шине. Опять таки это поменяется со следующим поколением, т.к. Интел решил выпустить Knights Landing как CPU чип, т.е. все куча ядер будут сидеть прям на материнской плате с доступом к сотням гигабайт памяти.

Как-то так… Я об этом буду подробно в курсе говорить.
На сайте для англоязычных товарищей найдено следующее: «transcript or other document confirming that you are a higher school student.»
Просто поясню, что этим словом у них называется средняя школа с 10 по 12 классы. Я бы поменял фразу на следующее:
«transcript or other document confirming that you are a higher school, college, or grad school student.» — что вы ученик школы, университета или аспирантуры. И для примера, студак будет выглядеть вот так:
image
Неа, не проходится. Попробуйте сами.
Т.е.
1) придумайте случайную выборку из 10 чисел
2) выберете одно из них.

Это как минимум — другая задача. И придуманное число, по теории вероятности, скорее окажется больше 10.
После визита Lockheed Martin в Fort Worth, TX, USA, я начинаю думать, что это весьма возможно…
Проверил из дома (Санта Клара) — та же песня.
ЗЫ: Приятно познакомиться, сосед!

Information

Rating
Does not participate
Location
Santa Clara, California, США
Date of birth
Registered
Activity