Как стать автором
Обновить

Ученые из МГУ показали: сложные вычисления на персоналке с эффективностью, не уступающей суперкомпьютеру, возможны

Время на прочтение 4 мин
Количество просмотров 25K
Всего голосов 39: ↑23 и ↓16 +7
Комментарии 101

Комментарии 101

масштабной двумерной таблицы в составе десятков миллионов строк и столбцов
Эмм. А как хранили состояние этой матрицы на лабоработном ПК? Это ж как минимум (30'000'000*30'000'000*2байта=1'800'000'000'000'000) = 2Тбайта RAM.
Очевидно, что на диске, подгружая блоками по мере необходимости.
Даже считать с типичного HDD данные объемом 2ТиБ даже с RAID будет много больше 15 минут
Ну так в статье никто и не говорил о том, сколько времени занимает процесс чтения/записи данных. Только про то, что «что считает суперкомпьютер за 2-3 дня, мы считаем за 15 минут».
Напомнило
Новый русский» купил фотосалон. Дал объявление в газету: «Требуется фотомодель на эротику. Час работы 10.000 баксов!»
Пришло много претенденток, отобрали одну. Фотографировали ее три часа. Потом выходит хозяин, объявляет:
— Расчет на месте, наличкой. Слышь, фотограф, сколько раз щелкнул?
— Сто двадцать кадров.
— Выдержку, какую ставил?
— Одна пятисотая секунды.
Хозяин поворачивается к фотомодели:
— Ну, ты, в натуре, и на полсекунды не наработала…
Для проведение вычислений нужно иметь данные. Поскольку в памяти они не помещаются — их читают/пишут на диск. Значит в 15 минут вычислений должно быть включено время чтения/записи, разве нет?
Да. Но какой рыбак не любит приукрасить улов.
> Значит в 15 минут вычислений должно быть включено время чтения/записи, разве нет?
Ничего это не значит. Это научно-популярная заметка, в которой цифры выражают лишь то, какое впечатление её авторы хотели произвести на читателя.
Если предположить, что расчет той же самой задачи на суперкомпьютере сталкивается с той же самой проблемой чтения/записи, то для адекватного сравнения методов затраты времени и ресурсов на чтение/запись нужно «вычесть» из общих затрат в обоих случаях.
2Tb SSD Intel P3600 Series, например. Думаю могут себе позволить.
Опять же, как по мне, 15 минут занял непосредственно расчет. Сопутствующие задачи, для солидности, могли из расчета исключить.
НЛО прилетело и опубликовало эту надпись здесь
SSD — измеренная скорость 400~450 МЕГАБАЙТ в СЕКУНДУ,
т.е. 2 ТБ / 450МБ = 4444,44… сек = 74,07 мин = 1 час 14 минут
GPU RAM память на PCI-Ex в 16 Гигабит(2 гигабайта) в секунду «сидит».
Узкое место «пинг» между cpu ram и gpu ram около 1 милисекунды.
Действительно речь не о минутах :(

На некоторых задачах быстрее данные заново пересчитать, чем «тянуть» их по «медленным» интерфейсам.

А что если эту матрицу раскидать на несколько SSD, да параллельно в GPU «лить», возможно прирост скорость будет существенный?
400-450 мегабайт в секунду это для SATA дисков
да и по сравнению с суперкомпьютером, стоимость топового PCI-e SSD и хорошей видеокарты — копейки.
Хотя все равно 15 минут выглядит слишком хорошо для правды.
Никто не мешает подключить внешний рейд контроллер на пару десятков дисков.
а толку? всё упрётся в скорость интерфейса между рэйдом и шиной.
PCI-e 3.0 16x Скорость 128/256 Гбит/с Довольно таки не мало.
И сколько же займёт это процесс внешней подгрузки матрицы? Даже если сами вычисления будут быстрыми сколько времени потребуется чтобы гонять туда — сюда терробайты?
Логично, что пока работает GPU, CPU может подготовить следующую порцию данных. Для такого объема разумно было бы использовать быстрые алгоритмы сжатия после чтения/перед записью на hdd, постраничная обработка данных и прочие трюки.
Думаю эти два терабайта в сжатом виде могут уменьшиться до 500Гб на диске.
Предполагаю, что матрица была сильно разреженной.
Предполагаю, что 15 минут взяты с потолка.
Совершенно верно, там даже картинки есть на этот счет. Хотя кто здесь читает источники…
Возможно, так же, как хранятся матрицы слово-словоместо в поисковиках.
Там размеры могут достигать десятков миллионов (слов) на десятки миллиардов (словомест).
А как они хранятся?
Кратко посмотрите здесь: Инвертированные списки. Если нужны подробности, то там же есть ссылка на статью с разъяснением.
На сколько я знаю — его не требуется хранить, эту матрицу потом сильно сжимают и получают красивые картинки вполне себе разумного разрешения.
Есть множество способов упаковывать разряженные матрицы, компрессия и скорость вычислений очень высокие получаются.
На самом деле нет ничего удивительного.

1. Вычислительные ядра BlueGene довольно медленные. Фактически, 1 чип BlueGene (16 вычислительных ядер) имеет производительность меньшую, чем современный Core i7.

2. BlueGene имеет «неродную» для большинства программистов архитектуру и собственный компилятор (к тому же ооочень медленный). Если для x86 архитектуры можно добиться значительного ускорения за счёт векторизации с помощью SIMD intrinsics, то в случае BlueGene придётся от этих инструкций отказываться и полностью полагаться на компилятор.

3. Написание кода для GPU (к тому же ещё и непереносимого) или даже под CPU с векторными инструкциями занимает очень много времени. Во многих случаях выгоднее запустить неоптимальный код и подождать неделю, работая над другими задачами, чем неделю этот код писать.

4. (не ругайтесь только, сужу по своему опыту) Человек редко бывает и хорошим математиком, и хорошим программистом. Математики редко пишут эффективный код. А программисты могут просто не потянуть математические задачи.

В статье показано преимущество GPU над CPU где-то на 2-2.5 порядка. Т.е. CPU-версия на современном десктопе должна работать вместо 15 минут около 2-3 суток. Как же так получилось, что ровно столько же времени нужно для работы суперкомпьютера?
НЛО прилетело и опубликовало эту надпись здесь
Если вы про картинки, то сравнивают они с одним CPU (вероятно). А в пресс-релизе, конечно, они все что угодно могут говорить. Там за бугром, может, они скрипт на матлабе жучат в котором матрицы не sparse и операции перемножения в виде вложенных циклов.
1. Так и один поток GPU очень медленный сам по себе. Быстродействие обеспечивается лишь параллелизмом.
2. С чего бы? BlueGene, AFAIK, поддерживает Power ISA v.2.06 specification, где SIMD инструкции есть.
3. Под GPU писать и проще чем под SIMD на CPU как раз из-за программной модели и сложнее одновременно из-за наличия т.н. glass jaws. Неаккуратная работа и игнорирование особенностей архитектуры гарантированно убьёт производительность.
1. Закон Амдала никто не отменял. Лучше мало процессоров, но быстрых, чем много, но медленных, но с такой же суммарной произодительностью.

2. Да, там тоже есть SIMD. Но вот в чём проблема: если использовать эти инструкции явно, то придётся тестировать и отлаживать программу непосредственно на суперкомьютере. Либо писать просто код и надеяться, что компилятор сделает авто-векторизацию.
Как известно, лучше быть богатым и здоровым, чем бедным и больным.
Но быстрые (в однопотоке) процессоры неэффективны ни с точки зрения энергопотребления, ни с экономической.
А закон Амдала для сабжа, по-видимому не критичен. Иначе бы никакого ускорения на GPU не было.
НЛО прилетело и опубликовало эту надпись здесь
Слава яйцам! Ученые открыли возможность использования CUDA вычислений.
Вот только что им мешает делать тоже самое на оборудовании суперкомпьютеров? Те же NVIDIA TESLA есть у МГУ.
> Слава яйцам! Ученые открыли возможность использования CUDA вычислений.
Осталось теперь дорасти до распределённых CUDA-вычислений.

> Вот только что им мешает делать тоже самое на оборудовании суперкомпьютеров?
Наверное то, что нет необходимости использовать суперкомпьютер для задачи, на решение которой уходит 15 минут.

> Те же NVIDIA TESLA есть у МГУ.
Единственный суперкомпьютер МГУ, где есть GPU — это Ломоносов, там около 2 тысяч NVIDIA Tesla X2070 (что примерно равно 200 современным Tesla K80). Но там свои заморочки — иногда проще посчитать на обычном десктопе.

Ещё есть просто вычислительная станция с довольно посредственными характеристиками.
«Также карта Tesla K20c была вы_й_грана в конкурсе… „
Если уж на сайте МГУ такие ошибочки…
Предложенный учеными вычислительный алгоритм было предложено запустить на персональном компьютере лаборатории, оснащенном графическим чипом Nvidia для игровых приставок.

На Playstation 3 считали?
На playstation 3 amd radeon.
Считали скорее всего на Geforce GTX 9XX.
Вы ошибаетесь. На PS3 установлена карточка Nvidia. На Xbox 360 установлена карточка Ati. В этом и заключался смысл шутки про карту Nvidia для игровой приставки — она слишком старая.

Вот ссылки на спеки:
https://en.wikipedia.org/wiki/PlayStation_3_technical_specifications
https://en.wikipedia.org/wiki/Xbox_360_technical_specifications

P. S.
Позволю себе занудство — в ту пору Ati ещё не была куплена AMD, и карта была не Radeon.
1) Здесь присутствует какая-то специфика задачи или же тоже самое можно провернуть с широким кругом физических задач?
2) Не понял, они считали тем же методом, что и производились вычисления на суперкомпьютере или дополнительно что-то упрощали?
3)оффтоп: а у меня в задаче матрицы ~10^5 элементов, и если дальше увеличивать размеры, то численная погрешность ощущается очень сильно (возникают комплексные собственные числа, когда их не должно быть и т.д.), как с такими проблемами бороться?
Если вопросы действительно конструктивны, вы можете попробовать отписать автору исследования: kukulin@nucl-th.sinp.msu.ru
Ну расковыряли ребята cuBLAS, молодцы чо…
В планне инновайций новость опоздала лет эдак на 8.
Ну собственно ваша информация и подтверждает сегодняшнее положение в нашей науке.
Сумели наконец скопировать то, что за рубежом сделали 8 лет назад.
Учитывая то, каким образом у нас сокращается финансирование науки, плюс крайне неравномерное распределение этого финансирования, плюс курс на самоизоляцию, наверно и это можно считать достижением и писать об этом статьи.
Вообще МГУ были одни из первых в мире кто расковыряли CUDA и начали обучать студентов.
Неожиданно то что публикация по ссылке доступна для скачивания за деньги, и сложно сказать что именно было сделано (если вообще текст публикации позволяет в принципе это сделать).
Препринт легко находится в Google Scholar
http://arxiv.org/pdf/1508.07441.pdf
Спасибо за ссылку. Беглый просмотр подтвердил мое предположение — задача сведена к операциям с матрицами (в т.ч. разреженными), где GPU по определению на порядок-другой быстрее.
Вы такие матрицы имеете ввиду?

EnLight256 – это гибридный оптический процессор
Производительность процессора составляет 8 триллионов операций в секунду: за один такт (8 нс) процессор умножает 256-байтный на матрицу 256х256.
как это работает http://dkws.narod.ru/linux/etc/optical/pic5.jpg
точнее фирму быстро купили и больше об оптике ни слуху ни духу.
Хотя я пару лет назад прикидывал и пришёл к выводу, что если очень захотеть можно на таком же принципе свой оптический проц на коленке в гараже собрать. По нынешним ценам нужно около 1млн.руб.
Практически все научные публикации на IEEE, Elsevier и т.д. скачиваются за деньги, в среднем 30$ за статью. Факультеты институтов оформляют подписку, позволяющую скачивать бесплатно для студентов и научных сотрудников.
Поэтому правилом хорошего тона считается выкладывать препринт статьи в открытый доступ (издательства пока ещё это разрешают официально).
На этом всё, с вами был Dronk.Ru. Не забывайте возвращать деньги за покупки в Китае и подписываться на наш блог, будет ещё много интересного.

Не требуйте многого. Весь смысл статьи заключён в этих двух последних строчках
Самый главный плюс этой работы в том, что учёные доказали что даже бедный колледж, при минимальном желании с его стороны, может заниматься научными расчетами, практически на равных с ведущими мировыми центрами вычислений.
И не только заниматься научными расчетами, но и играть в игровые новинки в свободное от расчётов время.
Опередил
Кстати, не понимаю несогласных со мной — я писал на полном серьёзе.

Работаю научным сотрудником преимущественно из дома, соответственно, основной рабочий компьютер — домашний десктоп. Днём работаю, вечером играю, на ночь ставлю вычисления (если есть). Планирую обновиться до GTX 1080, чтобы поиграть в современные игры. А то, что просчёт нейросети будет занимать около суток вместо 3-5 дней — это просто приятный бонус.
НЛО прилетело и опубликовало эту надпись здесь
Хорошая задача. Ещё и лазер с автонаведением приспособить для возгонки ччужеродных объектов.
А если серьёзно, то есть интерес со стороны металлургов.
НЛО прилетело и опубликовало эту надпись здесь
Нисколько. В научной среде финансирование исследований идёт по следующей схеме:

1. Делаем исследование.
2. Получаем финансирование под почти полностью выполненное исследование.
3. Пока есть финансирование, занимаемся другими задачами.
НЛО прилетело и опубликовало эту надпись здесь
Ученым понравились ПК с мощными графическими картами и они хотят еще… а то приходится ждать пока коллега наиграется закончит вычисления. Чего только ради этого не придумаешь.
Подозреваю, что в этой заметке не все сказано. Вычислительная мощность суперкомпьютера типа BlueGene несоизмеримо выше, чем мощность одиночной видеокарточки при сравнимой архитектуре (массивная параллелизация). Любую задачу, которую видеокарточка решает за 15 минут, BlueGene (на полной мощности) должен решить за секунду. Причин такого разброса скорости вычислений, которую заявляют наши доблестные ученые, может быть 2:
— либо они решают не совсем ту же задачу, что их коллеги из Тюбингенского университета (меньшее количество данных, меньшее разрешение, меньшая точность и т.д.)
— либо они нашли какой-то новый революционный способ решения задачи.
Важно ещё уметь использовать эту вычислительную мощность. Разница в пиковой производительности указанных в работе процессора и видеокарты — около 10 раз. В реальности при работе со своими задачами я это и наблюдал (CUDA-код работал в 10 раз быстрее CPU).

В статье же пишут, что удалось достигнуть преимущество до 400 раз. Это означает только одно: код под CPU крайне неоптимизирован. Указание в тексте статьи языка и компилятора только подтвердило мои догадки.
Ну а что в этом удивительного-то?
Оптимизация — не есть революция, так или иначе все вычисления сводятся к двоичным простым операциям, но тормозит не всегда вычислительный блок, чаще именно программа.
Ближайший пример — игры. Возьмите какую-нибудь годную игру на приставке, а затем запустите ее версию для ПК на конфиге, аналогичном приставочному. Будут жуткие тормоза. Так и здесь, ничего революционного.
— либо для BlueGene написан крайне не оптимизированный код
Я вот лично не пойму почему многие тут обратили внимание на CUDA и пытаются выставить ученых некими «тормозами» которые его повторно открыли.
Когда ключевая часть поста, в том что они смогли составить свой алгоритм для вычисления решения уравнений который позволил решать их используя CUDA быстрей чем они решались раньше используя старый алгоритм на суперкомпьбтерах.

То есть используя этот алгоритм на суперкомпьютерах, решение будет еще быстрей.

Ощущение, что люди внимательно прочитали только заголовок.
При вычислении на суперкомпьютерах есть один момент, существенно ограничивающий использование суперкомьютеров: скорость обмена данными между узлами не мгновенна и на порядок медленнее, чем копирование данных в памяти. Возможно, при использовании старого метода это и было самым узким местом.
65 тысяч потоков. Tesla k80 имеет 4992 CUDA-ядер.
Либо я что-то не понимаю, либо напрашивается одно: WAT?

Ученые открыли GPGPU? Так многие современные суперкомпьютеры используют GPGPU. Что-то нечисто.
The calculations are performed on a PC with the processor i7-3770K (3.50GHz) and the video card NVIDIA GTX-670

А что касается потоков — изучайте матчасть, как работает CUDA.
«Поток» в данном случае переводится как Stream.

65 тысяч потоков означает, что задачу разбили на соответствующее число независимых по данным подзадач.
Ясно. Спасибо, не прав был.
«приблизиться к конченой цели ученым долгое время не удавалось.»
О чем статья? Что именно эти ребята придумали? Т.е. что до них не получалось у тех, кто тоже этой задачей занимается. Я так и не понял. То, что GPU сейчас позволяют прилично ускорить решение многих задач — вроде не ново.
Ребята придумали алгоритм решения специфической задачи, под который архитектура GPU легла настолько хорошо, что получилось очень быстро.
Или, если сформулировать несколько иначе, у них получилось придумать алгоритм с учетом специфики архитектуры GPU, что получилось очень быстро

А по вашей логике получается, что в любой программе ничего нового, поскольку уже давно (еще до появления GPU) компьютеры могут выполнять программы.
У меня нет в сообщении такой логики. У меня в сообщении — вопрос. Возникший после того, как я в статье несколько раз прочитал капитанство о преимуществах GPU (которое не ново и всем известно). Но не прочитал, почему весь мир эту задачу не пытался еще на GPU переложить. Может трудность в чем была. Может еще что. А может и вовсе не уникально решение и аналоги есть (т.е. заявление, что весь мир считает 2-3 дня вместо 15 минут — всего-лишь пафос). Вот об этом и спросил.
О, дошла очередь – импортозамещение британских учёных!
Господа, я не могу понять, почему статья снова вызвала такой шквал саркастического негодования в духе «Ахаха, русские ученые только-только добрались до CUDA»? Прослушав несколько курсов по этой технологии, я пришел к выводу: написать эффективную программу на CUDA не так-то просто, как кажется. В CUDA нетривиальная модель памяти, потоки далеки от потоков в смысле CPU + миллион тонкостей с кэшами, константной памятью, ветвлениями и циклами. Это не openMP, где можно тупо расставить #pragma omp parallel for и добиться ускорения. Часто алгоритм приходится почти полностью перерабатывать или даже создавать новый, учитывающий особенности архитектуры. Безусловно, без глубокого понимания уравнений, которые решали авторы статьи, невозможно создать эффективный численный метод решения.

Т.е. если кратко: идея использовать GPU для вычисления — далеко не новая, а вот сама адаптация каждого конкретного алгоритма под графические карты — это уже достижение.
Потому что по вот таким статьям https://habrahabr.ru/company/epam_systems/blog/245503/ на одном известном ресурсе, сейчас каждый школьник может писать под CUDA, а тут речь про Учёных(с большой буквы).

И лично для меня эта ситуация выглядит так:
Сидят деды и кубаторят, как же им сделать расчёты на суперПК не имея суперПК?
Один из студентов сидевший неподалёку: Иван Иваныч, а вы слышали про CUDA, 4096 ядер в потоке и память DDR5?
Иван Иваныч: ну вроде да, но это баловство какое-то детское, впрочем, хочешь попробуй, а мы научную статью потом накатаем. profit.
и ведь «стрельнуло».
(нажимая отправить не покидало чувство, что хабрасуицид делаю :)
Рассказываю мой личный опыт. Участвовал я в этом конкурсе: http://www.dislab.org/GraphHPC-2015/en/contest.php Суть конкурса кратко: есть 3 вида систем: 2xCPU, CPU+GPU, какой-то суперкомпьютер, нужно: реализовать наиболее эффективный алгоритм построения минимального остовного дерева в графе.

В один момент я решил воспользоваться мощью CUDA. Все написал, исправил баги, работает правильно… но в 4 раза медленней чем на CPU в 8 потоков. Как же так? А вот в CUDA каждое ветвление в коде (if, for, while) работает не как на обычном CPU: группы потоков в CUDA выполняет одни и те же операции с разными данными. В случае ветвлений группы приходится делить на части по ветви условий. Причем группы сопоставляются каким-то вычислительным частям, которых ограниченное количество. В итоге все начинает дико тормозить. Сейчас точно всех тонкостей не помню, т.ч. выше могу где-то быть не прав.

В общем: CUDA поддается для изучения даже школьникам — там нет сложного API. Но написать алгоритм так, чтобы он всеми инструментами мог эффективно воспользоваться — нетривиально. В качестве примера можете посмотреть стандартные вещи — нахождения максимума в массиве, подсчет суммы элементов или перемножение матриц. Это довольно простые вещи, но чтобы работали эффективно на CUDA приходится придумывать нетривиальные приемы.
Больше 10 лет пишу код(с++, cpu, arm), а вот CUDA как-то не пришлось, к сожалению.
Потому не могу с вами предметно беседовать, но послушать было приятно.

В ключе статьи(в «защиту» наших ученных) вспомнилась статья на храбре, где наши разработали технологию «собирующую суперрэйды» из практически любого HDD-хлама. Выжав из интерфейсов и шин всё, что можно они вроде даже в прошивки жёстких полезли для наимаксимальнейшей оптимизации работы. И даже если один из жестких в этом «рейде» кочурился скорость практически не проседала. Попробовал поискать, неудачно, может кто подскажет, я бы еще раз почитал.
Так этож тут традиция, хлебом не корми дай пофапать на америку/европу и обосрать свою/соседскую страну. Модно это нынче среди тех кто ничего не добился, сваливать вину в своей никчемности на других :)
Хороший результат.
Самое главное: «260 миллионов… интегралов». Интегралы ОЧЕНЬ хорошо параллелятся,
Мы как-то на GTX 660 запрограммировали расчет неких интегралов — получили ускорение в 110 раз по сравнению с одним ядром на i7-4770.
C расчетом на всех 4-х ядрах (8-ми потоках) CPU не сравнивали.
Сейчас собираемся сделать кластер на коленке и на нескольких видеокартах. Сделаем — напишу статью.
Во, давай, давай!!! я уже второй год всё вокруг да около хожу, как-бы свой кластер на GPU собрать.
Глядишь после Вашей статьи всё-таки хватит духу.
Машинка у них такая: «i7-3770K (3.50GHz) and the video card NVIDIA GTX-670»

Меня больше интересует вопрос точности. Видюха игровая и обычно в таких видюхах в драйверах идёт приоритет скорости перед точностью. При выполнении на quadro той же частоты (что и игровая) скорость ниже. Если сравнивать по программам рендеринга, то качество рендернига на игровых уступает. Но что с вычислениями? Хорошо бы кто сравнил теслу или квадро с игровой, чтобы понять, есть ли смысл использовать игровые для таких целей. А то получится, что быстро что-то посчитали, а потом ракета не в ту страну приземлится.
Точность будет одинакова, т.к. устройства следуют стандарту IEEE 754.
Отличие игровой видеокарты от профессиональной заключается в повышенной производительности последней для double. Если же считать только во float, то игровая видеокарта будет предпочтительнее (как минимум, из-за цены).
Стандарты стандартами, но это не мешает регулярно создавать процессоры, которые делают вычисления с ошибками. Пример у компании интел:
https://habrahabr.ru/company/pt/blog/274939/
Вопрос в том, в каком масштабе это у энвидиа?
Ошибка в вычислениях — это действительно что-то из ряда вон выходящее. Ещё более вероятно просто битую память получить (частое явление для видеокарт).

А небольшие различия бывают, это да:
http://stackoverflow.com/questions/13937328/division-of-floating-point-numbers-on-gpu-different-from-that-on-cpu

Но существенными я бы их не назвал. Если результат вашего алгоритм зависит от значения бита в младшем разряде, значит, вы что-то делаете не так. Гарантируется только определённая точность до определённого разряда.
НЛО прилетело и опубликовало эту надпись здесь
CUDA для некоторых операций позволяет отходить от IEEE 754 (--use_fast_math) и получать дополнительный выигрыш в скорости за счет потери точности (от одинарной). А с какими настройками проводились бенчмарки обычно не пишут)
Если посмотреть документацию по CUDA, то можно увидеть, что применение этой опции приводит к приближённому вычислению наиболее дорогих операций: деления и извлечения корня, а также к приближённому вычислению трансцендентных функций (тригонометрия, логарифм, экспонента).
Операции сложения и умножения же выполняются с той же точностью.

И, кстати, для CPU эта опция также доступна: там тоже есть возможно быстро (в ~3 раза быстрее) вычислять обратное значение и корень.
А что с вычитанием? Ведь именно от него и появляются ошибки из-за округления не там. Пример при вычитании близких по значению чисел и отличающихся по значениям лишь на доли процента. А потом умножении или делении результата. При особо неудачном округлении ответ может отличаться на несколько порядков.

Или Вы под сложением подразумеваете и вычитание?

Был у меня случай с исправлением ошибок профессоров из МИФИ, которые неудачно округляли.
Вычитание должно выполняться так же, как и на CPU.
Ну а если алгоритм неустойчивый и зависит от точности округления — это плохой алгоритм.
Да в принципе любые операции сложения и вычитания могут дать нехорошие результаты.
Сейчас вспомнил ещё случай, когда надо было выполнить множественное сложение через цикл. Там вроде бы надо было какую-то статистику посчитать чего-то там.
И получалось, что из-за слишком маленького прироста, считалось, что финальная цифра не росла и получалось, что работа не идёт.
Пришлось объединять данные в группы по 100, чтобы они не срезались.
Не знаю почему, но вспомнился Волков Коммандер, 64кб. В условиях ограниченных ресурсов иногда такие вещи получаются!
CUDA не нужна. OpenCL.
НЛО прилетело и опубликовало эту надпись здесь
Основная проблема с OpenCL — его не развивают так как развивают CUDA. Хотя вроде видеокарты от AMD/ATI более выгодны (в плане терафлопс на доллар — хотя не уверен). По CUDA имеются тонны инфы, проводятся бесплатные курсы, семинары, выходит журнал, и т.п… А по OpenCL — увы. Инфы на порядки меньше. У меня вокруг есть люди кто программирует на CUDA — но ни одного кто бы прогал на OpenCL — а среда вроде научная. Я думаю это существенная недоработка AMDшников.
Ребята молодцы, они сделали то что и должны делать настоящие программисты, оптимизировали решение одной из задач. (мы все снимаем шляпу когда видим intro на 4kb которая показывае то что в гигабайт обычные прогеры не запихнут). И я рад если они на этом сделают денег.
Нельзя ли хоть капельку технической информации добавлять? Это всё же хабр(гиктаймс), а не первый канал. Там случаем не тензорный поезд использовали? Вроде его давно уже крутят в МГУ: https://www.youtube.com/watch?v=W7zkRQda98k
То-есть нежелание государства покупать суперкомпьютеры принесло свои плоды?
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре , чтобы оставить комментарий