Российские распределенные вычисления на платформе BOINC
Форум участников распределённых вычислений.

Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

7 Страницы«<567
Опции
К последнему сообщению К первому непрочитанному
Offline evatutin  
#121 Оставлено : 6 марта 2016 г. 15:18:32(UTC)
evatutin


Статус: Старожил

Медали: Первооткрывателю: Результат в проекте SAT@homeРазработчику: За организацию проекта Gerasim@home

Группы: Editors, Member
Зарегистрирован: 08.06.2010(UTC)
Сообщений: 3,499
Откуда: Russia, Kursk

Сказал(а) «Спасибо»: 973 раз
Поблагодарили: 1669 раз в 805 постах
Автор: Disel Перейти к цитате
А чем его можно подменить?


Есть алгоритм Штрассена например. Если у классического умножения временная асимптотика O(n^3), то у этого O(n^{log_2^{7}}). Достигается за счет того, что на одном уровне рекурсии производится 7 операций над подматрицами, а у базового алгоритма 8. Вроде бы круто, но обращений в память больше, сегодня это критично. Сам пока не проверял, планирую попозже, но автор упомянутой статьи пишет, что реальный выигрыш начинается с N=25000, а такие матрицы в оперативу не поместятся, т.е. на практике алгоритм проигрывает. Я это планирую перепроверить...
Есть предел Коперсмитта-Винограда, который сегодня считается минимально известной временной асимптотикой, но у него граничное значение для N еще выше на несколько порядков, на практике он не используется.
У Intel'ов вполне может быть какая-то хитрая модификация, основанная на этом принципе. Кроме того, при умножении маленьких матриц эффективнее полностью раскрутить циклы, что компилятор может выполнить с легкостью, если N задано как константа.

PS. В качестве аналогии, при умножении больших чисел (например, в GIMPS'е) умножение делается не совсем в столбик 199 Если мне память не изменяет, там вообще Фурье делается, но могу ошибаться, искать статьи мне лень

kvt.kurskstu team founder
Gerasim@home scientist
My numbers are 5056994653507584 and 1835082219864832081920. Why not? smile
Offline Disel  
#122 Оставлено : 7 марта 2016 г. 6:25:06(UTC)
Disel


Статус: Старожил

Медали: Первооткрывателю: Нахождение пар ОДЛК в RakeSearch! Донор: За финансовую помощь сайту

Группы: Member, Russia Team Group
Зарегистрирован: 08.07.2013(UTC)
Сообщений: 3,554
Мужчина
Российская Федерация

Сказал «Спасибо»: 487 раз
Поблагодарили: 420 раз в 320 постах
Кстати забыл сказать. При численном интегрировании функции sin gfortran выдает на 2 знака больше после запятой (в коде забита 2-я точность). Возможно это объяснение, либо просто ifort последние 2 знака не выводит на экран. Но опять же только для этого примера, целочисленные операции с матрицами ставят компиляторы в равные условия.
Ubuntu Linux 14.04 LTS - 64 bit / Boinc 7.2.42(х64) / Core 2 DUO E6300 1.8 Ггц / GeForce GT-630
Offline Disel  
#123 Оставлено : 9 марта 2016 г. 16:16:38(UTC)
Disel


Статус: Старожил

Медали: Первооткрывателю: Нахождение пар ОДЛК в RakeSearch! Донор: За финансовую помощь сайту

Группы: Member, Russia Team Group
Зарегистрирован: 08.07.2013(UTC)
Сообщений: 3,554
Мужчина
Российская Федерация

Сказал «Спасибо»: 487 раз
Поблагодарили: 420 раз в 320 постах
Еще один эксперимент. Перемножение вещественных матриц 2048х2048 происходит за 10 секунд, перемножение таких же размером матриц, заполненных комплексными числами a=(1-j2.2) и b=(2+j3) происходит уже за 37 секунд. Почти в 4 раза медленнее. Это с использованием компилятора gfortran. То же самое с использованием компилятора ifort выполняется за 7.1 и 17 секунд соответственно. Т.е. в операциях с комплексными числами ifort быстрее более чем в 2 раза!
Ubuntu Linux 14.04 LTS - 64 bit / Boinc 7.2.42(х64) / Core 2 DUO E6300 1.8 Ггц / GeForce GT-630
Offline evatutin  
#124 Оставлено : 9 марта 2016 г. 23:29:02(UTC)
evatutin


Статус: Старожил

Медали: Первооткрывателю: Результат в проекте SAT@homeРазработчику: За организацию проекта Gerasim@home

Группы: Editors, Member
Зарегистрирован: 08.06.2010(UTC)
Сообщений: 3,499
Откуда: Russia, Kursk

Сказал(а) «Спасибо»: 973 раз
Поблагодарили: 1669 раз в 805 постах
Автор: Disel Перейти к цитате
Перемножение вещественных матриц 2048х2048 происходит за 10 секунд


10 секунд — это примерно 1,7 GFLOP/s, не очень много. Можно попробовать закодить блочное или буферизованное умножение (код в моих статьях есть), будет быстрее. И векторизацию Фортран скорее всего не делает, что скорее всего должен сделать компилятор от Intel 199

kvt.kurskstu team founder
Gerasim@home scientist
My numbers are 5056994653507584 and 1835082219864832081920. Why not? smile
Offline Disel  
#125 Оставлено : 10 марта 2016 г. 15:37:53(UTC)
Disel


Статус: Старожил

Медали: Первооткрывателю: Нахождение пар ОДЛК в RakeSearch! Донор: За финансовую помощь сайту

Группы: Member, Russia Team Group
Зарегистрирован: 08.07.2013(UTC)
Сообщений: 3,554
Мужчина
Российская Федерация

Сказал «Спасибо»: 487 раз
Поблагодарили: 420 раз в 320 постах
Автор: evatutin Перейти к цитате
что скорее всего должен сделать компилятор от Intel 199

Применение в ifort опции компилятора -О3 дало результат перемножния вещественных матриц 2048х2048 за время 1.640 с.

Ubuntu Linux 14.04 LTS - 64 bit / Boinc 7.2.42(х64) / Core 2 DUO E6300 1.8 Ггц / GeForce GT-630
Offline AlexA  
#126 Оставлено : 1 декабря 2016 г. 12:31:38(UTC)
AlexA


Статус: Administration

Медали: Переводчику: За помощь в создании сайта

Группы: Editors, Member, Administration, Russia Team Group, Moderators
Зарегистрирован: 02.10.2007(UTC)
Сообщений: 6,127
Мужчина
Российская Федерация
Откуда: "Russia Team"

Сказал «Спасибо»: 1234 раз
Поблагодарили: 1508 раз в 833 постах
Попытался протестировать 460-ю карточку в Колобке. В итоге получил сообщения об ошибках Не получается

Ну и тест пропускной способности

thanks 1 пользователь поблагодарил AlexA за этот пост.
evatutin оставлено 04.12.2016(UTC)
Offline evatutin  
#127 Оставлено : 4 декабря 2016 г. 16:55:18(UTC)
evatutin


Статус: Старожил

Медали: Первооткрывателю: Результат в проекте SAT@homeРазработчику: За организацию проекта Gerasim@home

Группы: Editors, Member
Зарегистрирован: 08.06.2010(UTC)
Сообщений: 3,499
Откуда: Russia, Kursk

Сказал(а) «Спасибо»: 973 раз
Поблагодарили: 1669 раз в 805 постах
По пропускной способности: карточка лучше GTS 450, но хуже современных (7xx, 9xx). Насчет умножения матриц: такая ошибка возникала у меня в том случае, если CUDA-ядро выполняется больше определенного таймаута, винды считают драйвер повисшим и ресетят его, все CUDA-задачи падают с ошибкой. У вас во время тестов такого поведения не было?

PS. Во время конференции мне еще наводку на алгоритмы дали, как время появится, планирую попробовать... Если я правильно понял на пальцах, то там блочно-блочный подход получится, хотя может быть на практике все и сложнее окажется 199

kvt.kurskstu team founder
Gerasim@home scientist
My numbers are 5056994653507584 and 1835082219864832081920. Why not? smile
Offline evatutin  
#128 Оставлено : 6 февраля 2018 г. 15:05:20(UTC)
evatutin


Статус: Старожил

Медали: Первооткрывателю: Результат в проекте SAT@homeРазработчику: За организацию проекта Gerasim@home

Группы: Editors, Member
Зарегистрирован: 08.06.2010(UTC)
Сообщений: 3,499
Откуда: Russia, Kursk

Сказал(а) «Спасибо»: 973 раз
Поблагодарили: 1669 раз в 805 постах

kvt.kurskstu team founder
Gerasim@home scientist
My numbers are 5056994653507584 and 1835082219864832081920. Why not? smile
thanks 1 пользователь поблагодарил evatutin за этот пост.
vk_DiMoH оставлено 06.02.2018(UTC)
Пользователи, просматривающие эту тему
Guest
7 Страницы«<567
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.

AlexA theme. Created by AlexA
Форум YAF 2.1.1 | YAF © 2003-2018, Yet Another Forum.NET
Страница сгенерирована за 0.119 секунды.