Свежие комментарии
Title | Comment |
---|---|
Не, ну понятно, что 95% статей "про алгоритмы" - это "крутил |
Не, ну понятно, что 95% статей "про алгоритмы" - это "крутили гайку номер 6 ключом на 18". Новые алгоритмы появляются нечасто, а большинство вполне серьезных и "настоящих" работ - это компоновка решения из готовых кусков. Ну та и 95% научных работ - они такие. То что мы называем исследователей природы (комбинирующих известные методы) "учеными", а исследователей компьютерного железа хочется назвать "инженерами" - это дело привычки. |
Вне всякого сомнения, идеи того же Волкова сильно выделяются |
Вне всякого сомнения, идеи того же Волкова сильно выделяются на фоне остальной массы "докладчиков". Но это не потому что его идеи достойны восхищения абсолютно-объективно, а потому что в индустрии не так много людей, которые сочетают в себе понимание архитектуры устройств, критического мышления, базовых аналитических способностей, минимальной креативности (интересно, по каким причинам). У Волкова все это есть, вот на него и ссылаются как на гуру. Не подумайте, что я принижаю как то его заслуги, ни в коем случае. Но ориентироваться на него (и на авторов статьи о реализации SYMV в магме) как на абсолютных столпов в области - это прежде всего ограничивать самих себя. Вот Вы можете сказать, в чем именно состоит новаторская идея в реализации SYMV в магме? Читать один элемент симметричной матрицы один раз, а не два? Хранить сравнительно небольшие промежуточные результаты в глобальной памяти и собирать их потом отдельным ядром? Организовать эту работу так, чтобы уложиться в давно усвоенные авторами ограничения аппаратной платформы? Как это ни прискорбно (а может и наоборот, обнадеживающе), но скорость работы MAGMA, в несколько раз большая, чем CUBLAS, говорит скорее о том, что над MAGMA работали разумные, многосторонне развитые люди, у которых была цель - получить максимальную скорость. А при работе над CUBLAS скорее всего цель была другая - получить достаточную скорость. Достаточную, чтобы железо покупали. Вполне разумный подход, не так ли? |
Как раз "научность" статей не удивляет. Изучаются свойства м |
Как раз "научность" статей не удивляет. Изучаются свойства материального объекта, созданного человеком - ну и что? Какой-нть условный "криптоанализ хэшей MD5" - очевидно что прекрасная (очень научная) тема научной работы, а объект для изучения тоже создан человеком и при этом нематериален. А по поводу "минимальных умственных усилий" я абсолютно не согласен. Если *GEMM реализовывать "минимальными умственными усилиями" (для CUDA), то получится как выше процитировано (270 при возможных 844 и теоретических 1344). И нужны свежие дебютные идеи, вроде тех что у Волкова (все на регистрах, плюем на occupancy). Они, наверное, несколько более прямолинейные, чем для SYMV, но все едино нужны. |
Но ведь это не GEMM. Тут ведь необходимо приложить минимальн |
Но ведь это не GEMM. Тут ведь необходимо приложить минимальные умственные усилия (удивительно, что люди пишут научные статьи на эту тему), чтобы начать таргетить (прошу прощения) теоретическую производительность. Но за ссылку на статью спасибо. |
В-принципе, да, про это место я как-то не подумал. Vtune (и |
В-принципе, да, про это место я как-то не подумал. Vtune (или KernelShark про который я впервые услышал) покажут мне все просто в разрезе конкретного процесса, а не системы целиком. |
Два 12-ядерных AMD попались на пути. |
Два 12-ядерных AMD попались на пути. |
4 процессора по шесть ядер в каждом, например i7-980X :-) |
4 процессора по шесть ядер в каждом, например i7-980X :-) |
Не знаю что такое mpstat, но |
Не знаю что такое mpstat, но может быть tuna поможет? |
откуда столько ядер??? |
откуда столько ядер??? |
Можно вроде kernelshark для этого приспособить... |
Можно вроде kernelshark для этого приспособить... |
Да, пардон, сцылко: http://cseweb.ucsd.edu/~rknath/sc11.pdf |
Да, пардон, сцылко: http://cseweb.ucsd.edu/~rknath/sc11.pdf |
Вот сорока принесла на хвосте свежую статью (4-й автор - Дон |
Вот сорока принесла на хвосте свежую статью (4-й автор - Донгарра) про реализацию *SYMV в MAGMA 0.2/0.3 Никакой мультиплатформенности, ну кроме Fermi/не ферми, однако А ведь CUBLAS, по идее, тоже не левой ногой делалась, это вендорская библиотека для вендорского оборудования, если она будет неэффективной, то оборудования меньше купят. |
блин, только с третьего |
блин, только с третьего захода прочитал "Русский Стандарт" как "Русский Стандарт", а не как "Тинькофф". |
А причем тут ставка |
А причем тут ставка рефинансирования, по ней разве кто-то занимает? А зачем она тогда нужна? |
1 килоевро - да, уже год как, |
1 килоевро - да, уже год как, но "товары для личного потребления". А личность потребления определяется таможней. Нет, понятно, если речь об одноразовых батарейках, то в наихудшем случае все должно кончиться написанием бумаги на таможне "мамой клянусь, не для продажи", но это же ехать, писать, я и отвык уже. |
Вроде бы уже как почта россии |
Вроде бы уже как почта россии пролобировала закон по которому единственное ограничение не больше чем на 40000р посылок в месяц, а однотипного товара сколько хотите, хотя на практике не проверял. |
Может Вы и правы, и я со своими заявлениями о переносимости |
Может Вы и правы, и я со своими заявлениями о переносимости производительности в 40%-50% несколько оптимистичен :) |
Из общих соображений имею возразить следущее: 1) *GEMM (и m |
Из общих соображений имею возразить следущее: Как следствие, я не вижу как нормально параметризовать код на рантайме. Конечно, подход как у ATLAS, с тренировкой в уголочке и выбором наиболее быстрой реализации - вероятно сработает. Возможно, что вышеуказанные соображения существенны, когда мы хотим шагнуть далеко за 50% от теоретического peak. Правда вот сегодня я весь день мучал поминавшийся выше CALDGEMM на 6990 (который вовсе даже не OpenCL, а даже немножко тюнился под HD6xxx, хотя основная платфрма у авторов - HD5870) и получил 62% от теоретического пика на одном GPU и чуть больше 50% на четырех GPU (2x 6990). |
ifdef-ы не нужны. Нужен код, |
ifdef-ы не нужны. Нужен код, который зависит от этих параметров. Переводя на нормальный язык: |
Вопрос в оффтопик. |
Вот тут интервью австралийской фирмы Euclideon, которые смогли на современном уровне сделать воксельную графику, которую лет 10 назад похоронили. Вам подробности не попадались? |
> Если генерировать код "под размер" (и под особенности архи |
> Если генерировать код "под размер" (и под особенности архитектуры, скажем "тут - на регистрах, а в этой архитектуре - на LDS"), что OpenCL позволяет, то ситуация сильно лучше. Нет-нет, я несколько другое имею ввиду. Даже в рамках одной архитектуры для написания эффективного OpenCL кода необходимо учитывать значения некоторых параметров (размер локальной памяти, максимальный размер группы, размер wavefront/warp). ifdef-ы не нужны. Нужен код, который зависит от этих параметров. И вот имея уже такие динамически настраиваемые исходные коды OpenCL-ядер, вполне можно ожидать их адекватной производительности на схожей архитектуре. В этом смысле все чипы NVidia, AMD (в том числе и будущая архитектура Southern Island) схожи. |
Если генерировать код "под размер" (и под особенности архите |
Если генерировать код "под размер" (и под особенности архитектуры, скажем "тут - на регистрах, а в этой архитектуре - на LDS"), что OpenCL позволяет, то ситуация сильно лучше. А acml-gpu - ну да, ~220 GFLOP/s на 8k-матрицах (double) при том что peak - 550 или около того. |
Я не предлагаю отказываться от использования локальной памят |
Я не предлагаю отказываться от использования локальной памяти и регистров. OpenCL предоставляет достаточно возможностей для автоматического тюнинга кода. Ведь можно узнать и размер локальной памяти, и размер wavefront/warp, и максимальный размер группы, и #pragma unroll расставить. Я сейчас скачал acml-gpu, посмотрел код. Все очень странно. Там пиксель-шейдеры, написанные на IL (#include "cal.h", ага). Один шейдер считает 4x4. Все должно очень быстро работать. Говорите, 40%? Ну очень странно. Может, кривые ручки программиста, может с драйверами проблемы (все лето AMD колбасило с драйверами). |
ну, естественно на него же. со своими в ауле за жизнь поразг |
ну, естественно на него же. со своими в ауле за жизнь поразговаривать:) |
Архитектура будет другая уже в следующих чипах, выпуск котор |
Архитектура будет другая уже в следующих чипах, выпуск которых запланирован на конец этого года. |
Я не думаю что так быстро, все-таки оно как-то распространен |
Я не думаю что так быстро, все-таки оно как-то распространено. Мое предсказание: только с полной сменой архитектуры, так что CAL придется эмулировать и оттого станет медленно. |
LLVM (а он вроде у всех вендоров OpenCL на PC сейчас) - хоро |
LLVM (а он вроде у всех вендоров OpenCL на PC сейчас) - хороший компилятор. Только вот матрицы умножать "как-то" - просто, а быстро - вылезают подробности (какой размер блока взять, что использовать под local storage). У меня 5870 под рукой нет (засунута в другую машину, лень грузить), зато есть GTX480 и AMD-шный пример перемножения матриц из SDK. Пример - "обычный", ну там блок 4x4 и простой код. Так вот, на GTX480 у него получается ~270 GFLOP/s при том что MAGMA делает 844 (втрое больше), а peak там за терафлопс. С double - сильно лучше, там оно bandwidth-limited, поэтому проседание производительности не в 8 раз, а всего в ~5. И на GTX480 получается 60 gflops (при том что у магмы - 166). Ну то есть да, конечно, примеры пишут чтобы попроще, а не чтобы побыстрее, но вот что один и тот же код, не использующий особенности железа (где-то local storage, где-то регистры для хранения блока - это для GEMM, плюс размер блока, плюс текстурный кэш...) будет на 50% от peak для двух-трех разных железок - я верю с трудом. |
Библиотеку, в которой такой |
Этот музей называется Rhythm & Hues :) |
Да, соглашусь. Но через годик легко уже смогут прекратить по |
Да, соглашусь. Но через годик легко уже смогут прекратить поддерживать CAL уже в драйверах. |
У меня есть какой-никакой опыт отладки ядер, считающий сверт |
У меня есть какой-никакой опыт отладки ядер, считающий свертки. Причем на матрицах очень небольшого размера (но их много) и с не очень большим окном. Так вот, компилятор AMD генерирует неплохой IL и, соответственно, ISA код, А компилятор NVidia генерирует PTX код еще лучше. Ну вот смотришь на него и видишь, что молодец какой, замечательно развернул циклы, сообразил, где можно из локальной памяти не читать и т.д. Получается эффективность от 20% (для AMD) до 30% (для NVidia), в среднем. А матрицы перемножать - еще проще. acml-gpu не смотрел, взгляну. |
Pages
