Google випустила TensorFlow 1.0


TensorFlow 1.0 з моделлю нейромережі нового покоління Inception підтримує апаратне прискорення на DSP Hexagon в мобільні процесори Qualcomm Snapdradon 820. Швидкість роботи додатків на зразок Prism і програм машинного зору збільшиться у 8 разів, а енергоспоживання знизиться в 4 рази. Фільтри від нейромереж можна буде накладати на відео майже в реальному часі

На першій конференції для розробників TensorFlow Dev Summit Google оголосила про вихід мажорного релізу бібліотеки TensorFlow 1.0, назад несумісного з попередніми версіями. Це означає, що програми, які працювали на версіях TensorFlow 0.n, можуть не працювати на версії TensorFlow 1.0. Розробники з Google говорять, що зміни в API були необхідні «для забезпечення внутрішньо узгоджених програмних інтерфейсів», і більше такого не повториться: ламають зворотну сумісність змін в майбутніх версіях 1.x не планується. Зараз розробникам рекомендується вивчити керівництво з міграції і скрипт для перетворення.

TensorFlow — вільна програмна бібліотека для машинного навчання в застосуванні до різних видів завдань на сприйняття і розуміння мови. В даний момент вона використовується в науково-дослідній роботі і в десятках комерційних продуктів Google, в тому числі в Google Search, Gmail, Photos, Youtube, Translate, Assistant, а так само всіляких системах розпізнавання, в тому числі розпізнавання мови.

Читати далі →

Багатопотокова казка про втрачений час

У публікації Казка про втрачений час crea7or розповів, як він спростовував Гіпотезу Ейлера на сучасному CPU.

Мені ж було цікаво дізнатися як покаже себе GPU, і я порівняв однопотоковий код з багатопотоковою для CPU і зовсім багатопотоковою для GPU, з допомогою архітектури паралельних обчислень CUDA.

Читати далі →

Порівняння продуктивності GPU-розрахунків на Python і C


Python має ряд привабливих переваг, до яких відноситься простота реалізації програмних рішень, наочність і лаконічність коду, наявність великої кількості бібліотек та численного активного ком'юніті. У той же час, відома всім повільність пітона часто обмежує його придатність для «важких» обчислень. Для ряду задач можна добитися істотного прискорення розрахунків шляхом використання технології CUDA для паралельних обчислень на GPU. Мета цього невеликого дослідження — аналіз можливостей ефективного використання python для розрахунків на GPU і порівняння продуктивності різних python-рішень з реалізацією на C.

Читати далі →

Швидше швидкого або глибока оптимізація Медіанної фільтрації для GPU Nvidia

Введення
У попередньому пості я постарався описати, як легко можна скористатися перевагою GPU для обробки зображень. Доля склалася так, що мені підвернулася можливість спробувати поліпшити медіанну фільтрацію для GPU. У цьому пості я постараюся розповісти яким чином можна отримати ще більше продуктивності від GPU в обробці зображень, зокрема, на прикладі медіанної фільтрації. Порівнювати будемо GPU GTX 780 ti оптимізованим кодом, запущеному на сучасному процесорі Intel Core i7 Skylake 4.0 GHz з набором векторних регістрів AVX2. Досягнута швидкість фільтрації квадратом 3х3 в 51 GPixels/sec для GPU GTX 780Ti і питома швидкість фільтрації квадратом 3х3 в 10.2 GPixels/sec на 1 TFlops для одинарної точності на даний час є найвищими з усіх відомих у світі.
Читати далі →

Як ми зробили конвертер і плеєр для CinemaDNG на CUDA

На Хабре у мене вже було дві статті (1 і 2), обидві вони стосувалися реалізації швидкого стиснення зображень у форматі JPEG на CUDA. Тепер я б хотів розповісти про інший, набагато більш масштабне завдання — як ми зробили конвертер відео плеєр для серій DNG зображень на CUDA. При цьому ми отримали дуже високу швидкість роботи, тому що вся обробка вихідних даних у форматі DNG тепер виконується на відеокарті NVIDIA.


Початкове зображення у форматі DNG взято з сайту blackmagicdesign.com

Незважаючи на те, що в світі вже є дуже велика кількість конверторів RAW, які працюють з форматом DNG, ми вирішили зробити ще один, але дуже швидкий, який можна було б використовувати в тому числі для відбракування і сортування. Відео плеєри DNG теж є, але вони зазвичай працюють зі зменшеним дозволом, тому переглянути тільки що знятий у форматі DNG матеріал на повному дозволі — це проблема. За допомогою нашого конвертера ми зробили спробу опрацювати картинки настільки швидко, щоб вміти переглядати серії DNG зображень в режимі реального часу при повному дозволі. Природно, що крім швидкості необхідно було отримати прийнятну якість обробки і шумозаглушення, і мені здається, що нам це вдалося.

Читати далі →

VIM: навіщо, якщо є IDE, і як?

Сьогодні вийшов текст про те, як людина перейшов з Sublime на VIM. У коментарях, як зазвичай це буває, з'явилися повідомлення в дусі "Навіщо мені витрачати час на Vim, якщо є IDE, де все працює?" (люди навіть статті на ці теми пишуть). Хотів внести свої п'ять копійок, але обсяг написаного плавно перевів текст з розряду "коментар" в розряд невеликої статті.
В цілому, все, що нижче — це смаківщина, звичайно. Подобається вам ваша IDE (або поточний інструмент), так і будь ласка. Використовуйте для поточних задач те, чим ви володієте краще всього, це аксіома ефективної роботи. Але якщо у вас раптом з'явилося трохи часу на підвищення вашої ефективності в цілому, то спробую вас зацікавити саме Vim'ом, порівнюючи його з якоїсь узагальненої IDE.

Читати далі →

Швидке кодування відео в Linux c Nvidia NVENC з SDK 7.5 і ffmpeg 3.0.2 на Nvidia GTX 960/970/980

image

Дана стаття була написана за мотивами статті Ефективне кодування відео в Linux c Nvidia NVENC: частина 1, загальна, проте має свої особливості і, на відміну від оригінальної статті, де чомусь упустили цей момент, я застосував перероблений патч Nvidia Acceleration до FFmpeg 3.0.2, отримавши крім енкодера nvenc ще й швидкий фільтр ресайза — nvresize.

Разом я отримав можливість апаратно кодувати відео в H. 264 і HEVC за допомогою відеокарти Nvidia GTX 960 на досить слабкому комп'ютері (Xeon L5420) зі швидкістю (для H. 264), що перевищує можливості даного процесора до 10 разів та у 3 рази щодо Core i7)! Причому на моєму улюбленому Debian 8 Jessie.

Отже, почнемо!

Читати далі →

PyNSK #3 — третя зустріч Новосибірського Python спільноти

image

IT-дозвілля в Новосибірську не відстає від столиці — майже щотижня можна поспілкуватися про технології в колі однодумців.

Для любителів Python організоване співтовариство PyNSK.

11-го жовтня (неділя) відбудеться третя зустріч. Вона пройде в анти-кафе «Самовар» і почнеться 13-00.
На зустрічі вас чекає море спілкування та 2 доповіді:

Читати далі →

10+ рад з написання швидкого коду в Mathematica

Переклад поста Джона Маклуна (Jon McLoone) "10 Tips for Writing Fast Mathematica Code".
Висловлюю величезну подяку Кирилу Гузенко KirillGuzenko за допомогу в перекладі.

Пост Джона Маклуна розповідає про поширені прийоми прискорення коду, написаного на мові Wolfram Language. Для тих, хто зацікавиться цим питанням ми рекомендуємо ознайомитися з відео «Оптимізація коду в Wolfram Mathematica», з якого ви докладно і на безлічі цікавих прикладів дізнаєтеся про прийоми оптимізації коду, як розглянутих у статті (але більш детально), так і інших.

Коли люди говорять мені, що Mathematica недостатньо швидко працює, зазвичай я прошу подивитися код і часто виявляю, що проблема не в продуктивності Mathematica, а її не оптимальному використанні. Я хотів би поділитися списком тих речей, на які я звертаю увагу в першу чергу при спробі оптимізувати код Mathematica.

1. Використовуйте числа з плаваючою крапкою, і переходите до них на як можна більш ранній стадії.
Найпоширеніша помилка, яку я помічаю, коли розбираюся з повільним кодом — завдання надто високої точності для даної задачі. Так, недоречне використання точної символьної арифметики — самий поширений випадок.

У більшості обчислювальних програмних систем немає такого поняття, як точна арифметика — для них 1/3 це те ж саме, що і 0,33333333333333. Це розходження може грати велику роль, коли ви стикаєтеся зі складними і нестійкими завданнями, однак для більшості завдань числа з плаваючою точкою цілком задовольняють потребам, і що важливо — обчислення з ними проходять значно швидше. В Mathematica будь-яке число з крапкою і з менш ніж 16 цифрами автоматично обробляється з машинною точністю, тому завжди слід використовувати десяткову точку, якщо в даній задачі швидкість важливіше точності (наприклад, ввести третину 1./3.). Ось простий приклад, де робота з числами з плаваючою точкою проходить майже у 50,6 рази швидше, ніж при роботі з точними числами, які лише потім будуть переведені в числа з плаваючою точкою. І в цьому випадку виходить такий же результат.









Читати далі →

Ефективне кодування відео в Linux c Nvidia NVENC: частина 1, загальна


Ця стаття містить практичні відомості, корисні для організації ефективного кодування відео на Linux з використанням останніх відеопроцесорів Nvidia.
Чим не є ця стаття:
  • Не є посібником з вибору технології апаратного кодування або агітацією на користь описуваної. Крім Nvidia NVENC є Intel QuickSync, є AMD VCE, напевно, є і ще щось. Всі ці технології мають різні характеристики, які важко навіть укласти на одну шкалу для порівняння. Тим не менш, я зробив свій вибір.
  • Не є претензією на найшвидший/якісний спосіб кодування. З причин, вказаних вище.

Читати далі →