HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > BLAS (базовые подпрограммы линейной алгебры)
Страницы (3): [1] 2 3 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
underworlddemon
Житель форума
Девойс

Дата регистрации: Jun 2011
Проживает: Россия/Москва
Сообщений: 469
Возраст: 37

Рейтинг



BLAS (базовые подпрограммы линейной алгебры)

У меня тут назрел вопрос о использовании оптимизаций в движках, а конкретно оптимизации математики (учитывая как много происходит расчётов матриц, векторов и т.п.).
Вопрос об использовании библиотек Eigen, ACML, MKL и т.п.

Какая ситуация в использовании таких оптимизаций в движках местного разлива ?
А в коммерческих ?

Сообщить модератору | | IP: Записан
Сообщение: 100154

Старое сообщение 10-06-2012 12:59
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34509
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Я работал слушал лекции про CUBLAS, так вот там память маллокается в вызове каждой функции. Это, может быть, и оправдано при решении СЛАУ офигенного размера, но в движках таких расчётов обычно нет. Максимум матрицы 3х3 да 4х4.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 100159

Старое сообщение 10-06-2012 13:27
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32202
Нанёс повреждений: 392 ед.

Рейтинг



Самая главная апчхимизхация математических рассчётов - это кеширование результатов, там где это по смыслу даст прирост.
Либо как lord Havok сидеть и считать операции в каждой мат.функции, пытаясь её апчхимизировать. Правда от евонных апчхимизаций оно глючить начинает в некоторых случаях.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 100165

Старое сообщение 10-06-2012 13:49
-
underworlddemon
Житель форума
Девойс

Дата регистрации: Jun 2011
Проживает: Россия/Москва
Сообщений: 469
Возраст: 37

Рейтинг



поначитался умных мыслей:

Цитата:
Любимое упражнение в учебниках по С++ – это создание класса, инкапсулирующего векторы и матрицы. Таких классов созданы сотни, но все они имеют крайне низкую производительность и никогда не используются для серьезных задач. Компилятор С++, в отличие от Fortran, даже не подозревает, что векторы и матрицы надо обрабатывать поэлементно.
В результате, в сумме матриц:
mat1 = mat2 + mat3
сначала будет вычислена правая часть и присвоена временному объекту. Затем временный объект будет скопирован в mat1 и разрушен. Ясно, что вызов конструктора и деструктора временного объекта и копирование данных совершенно излишни.


Цитата:

Любой мало-мальски сложный вычислительный алгоритм включает в себя действия с векторами и матрицами. По большому счету, почти все вычислительное программирование держится на операциях над одно- или двумерными массивами. Массивы С++ для таких операций приспособлены плохо.
Каждый массив – это всего лишь указатель, по которому приходится вручную выделять и освобождать память. Для матриц это приходится делать для каждой строки, что является сомнительным удовольствием. Массивы не знают своего размера, так что приходится использовать с каждым из них отдельную переменную с числом элементов. Любые действия
с массивами как с целым приходиться расписывать поэлементно в виде циклов. Если используются только векторы (что бывает редко), то некоторую помощь дает класс std::valarray из STL. Если же нужно работать с матрицами, то волей-неволей приходится использовать сторонние библиотеки.


и это не считая векторизации (про неё 2 страницы текста)

тут вопрос именно в скорости выполнения кода (разнице оптимизированного под вычисления и написанного в надежде на магию компилятора)

Сообщить модератору | | IP: Записан
Сообщение: 100172

Старое сообщение 10-06-2012 14:31
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32202
Нанёс повреждений: 392 ед.

Рейтинг



это, я извиняюсь, бред понаписан.
во первых почему это обязательно в виде циклов?
во вторых, кто мешает заставляет динамически выделять память под матричные операции?
В третьих, что это за идиотская операция такая - сложение матриц?
Может быть имелась в виду конкатенция?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 100174

Старое сообщение 10-06-2012 14:46
-
underworlddemon
Житель форума
Девойс

Дата регистрации: Jun 2011
Проживает: Россия/Москва
Сообщений: 469
Возраст: 37

Рейтинг



написал именно чтобы разобраться (сам нуб нубом, потому и собираю умные мысли)

чаще всего в том тексте были отсылке к коду генерируемому компилятором
т.е. если дать на откуп компилятору, то выйдет мягко говоря не самый быстрый код

p.s. яндекс на фразу "сумма матриц" выдаёт даже специальный инструмент по вычислениям матриц =)

Сообщить модератору | | IP: Записан
Сообщение: 100175

Старое сообщение 10-06-2012 15:05
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32202
Нанёс повреждений: 392 ед.

Рейтинг



да ково. Я вон в ксаш-моде кэширование вертексов замутил. Еле-еле 5 фпс выиграл на карте freeman.bsp из моего знаменитого бенчмарка.
Шо вы там надеетесь апчхимизировать?
И эта. Ачхимизированная матчлиба зачастую брешет. И брешет достаточно сильно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 100176

Старое сообщение 10-06-2012 15:10
-
underworlddemon
Житель форума
Девойс

Дата регистрации: Jun 2011
Проживает: Россия/Москва
Сообщений: 469
Возраст: 37

Рейтинг



Цитата:
Дядя Миша писал:
И эта. Ачхимизированная матчлиба зачастую брешет. И брешет достаточно сильно.

чем она может брешить ?
эти библиотеки разрабатываю для удобства вычисления (синтаксис ближе к математическому) и повышению скорости проектов с сильным использованием математики.

неужели ты думаешь, что разработчики идиоты и пишут то, что будет мешать их вычислениям ?
другое дело непривычный синтаксис и написание могут натолкнуть на ошибки логики программы, которые по первости не сразу заметишь

Сообщить модератору | | IP: Записан
Сообщение: 100177

Старое сообщение 10-06-2012 15:18
- За что?
CrazyRussian
ололо

Дата регистрации: Apr 2009
Проживает: Город-курорт Ессентуки
Сообщений: 790
Возраст: 31

Рейтинг



Награды
 
[1 награда]


Цитата:
underworlddemon писал:
чем она может брешить ?

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

__________________
Трагическая новость: Пятеро инженеров Casio умерли от смеха, узнав что Samsung анонсировали часы с заявленным временем работы в 25 часов

Сообщить модератору | | IP: Записан
Сообщение: 100178

Старое сообщение 10-06-2012 15:26
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34509
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
Дядя Миша писал:
В третьих, что это за идиотская операция такая - сложение матриц?
Может быть имелась в виду конкатенция?

Стандартная операция покомпонентного сложения матриц.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 100179

Старое сообщение 10-06-2012 15:27
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32202
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
underworlddemon писал:
неужели ты думаешь, что разработчики идиоты и пишут то, что будет мешать их вычислениям ?

разработчики этих библиотек крайне далеки от разработки, собственно игр. Я на собственном опыте убедился, что самое надежное - это использовать стандартный матчлиб из WInAPI.
Цитата:
XaeroX писал:
Стандартная операция покомпонентного сложения матриц.

а

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 100180

Старое сообщение 10-06-2012 15:30
-
underworlddemon
Житель форума
Девойс

Дата регистрации: Jun 2011
Проживает: Россия/Москва
Сообщений: 469
Возраст: 37

Рейтинг



Цитата:
CrazyRussian писал:
тем что используются приближенные методы вычислении чего либо, что уменьшает точность и повышает скорость.

гммм... найди мне хоть 1 такую операцию в Eigen (в ней проще всего ибо чисто h-едерная и исходники открыты)

Сообщить модератору | | IP: Записан
Сообщение: 100181

Старое сообщение 10-06-2012 15:34
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34509
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


underworlddemon
Да хотя бы использование float вместо double.
Или GPGPU вычисления без ECC.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 100182

Старое сообщение 10-06-2012 15:38
-
underworlddemon
Житель форума
Девойс

Дата регистрации: Jun 2011
Проживает: Россия/Москва
Сообщений: 469
Возраст: 37

Рейтинг



Цитата:
XaeroX писал:
Да хотя бы использование float вместо double.
Или GPGPU вычисления без ECC.

бегло просматривая не заметил подобного
только свёртка-развёртка кода так, чтобы компилятору было удобнее генерировать наибыстрейшие последовательности
хотя я нуб

p.s. что-то вы зациклились на непогрешимости компилятора
вы считаете автоматика может предусмотреть все варианты и выбрать наилучший, что верите так религиозно в это ?

Добавлено 10-06-2012 в 19:53:

http://eigen.tuxfamily.org/dox/Topi...genExample.html

Добавлено 10-06-2012 в 20:11:

http://wiki.linuxformat.ru/index.ph...%B1%D1%80%D1%8B
старая статья... но в матрицах 3x3 очень показательна разница даже среди специализированных библиотек

Сообщить модератору | | IP: Записан
Сообщение: 100183

Старое сообщение 10-06-2012 16:11
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34509
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
underworlddemon писал:
бегло просматривая не заметил подобного

Так там double или float?
Цитата:
underworlddemon писал:
что-то вы зациклились на непогрешимости компилятора

Скажем так, в 2012 году я больше доверяю компилятору, чем среднестатистическому программисту А вот лет 15 назад ситуация была иной.

Добавлено 10-06-2012 в 23:17:

Цитата:
underworlddemon писал:
но в матрицах 3x3 очень показательна разница даже среди специализированных библиотек

А где данные для "безо всяких библиотек, сам только что написал на си"?

__________________

Сообщить модератору | | IP: Записан
Сообщение: 100185

Старое сообщение 10-06-2012 16:17
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 04:50. Новая тема    Ответить
Страницы (3): [1] 2 3 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > BLAS (базовые подпрограммы линейной алгебры)
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024