All streams
Search
Write a publication
Pull to refresh
15
0
Тарасов Глеб @Pilot34

User

Send message
самая первая и с синусами очень даже неплохие)
С синусами просто надо ставить на специфических ресурсах
все это сборщики мыла для спамерских баз)
пизанские башни))
если уменьшить масштаб, то будет понятно, что север африки (Ливия вроде)
мне кажется фотка из топика из-за склеивания разных версий карт. Откуда такое прикольное еще может получиться?! ТАм даже не хребет по линии смены цвета.

А остальные картинки чудо как хороши!
всмысле? если они квадратные, то у всех размеры будут одинаковые
если не сложно - можете набросать маленькую программку на фортране (чтобы еще время считала), я её скомпилирую на своем компе и посмотрю время. Действительно интересно.
для некомпилируемых языков мне кажется совсем другая история. Там же код наверняка даже не оптимизируется как в компиляторе, хотя точно не могу сказать.
в той книге кстати тоже есть функция для подобного алгоритма, но я специально не стал её перепечатывать, а попробывал сделать все что усвоил сам.
я всё это извлек из семинаров К.Ю. Богачева
и из его книги http://www.book.ru/69565 Основы параллельного программирования
ну естественно потом оставшиеся 0-3 числа прогнать если останутся.

В большинстве случаев не стоят конечно. И даже противопоказано если там будет 5-10%. Но все-таки этот пример с матрицами чем хорош - прирост больше чем в 10 раз, ради такого уже и можно запариться
странно что нам в универе про него не рассказывали. Может там какие-то подводные камни все-таки, что нам его не рекомендвали..
imac-gleb:Desktop gleb$ icc matrix_test.cpp -O3
matrix_test.cpp(285): (col. 2) remark: LOOP WAS VECTORIZED.
matrix_test.cpp(276): (col. 2) remark: LOOP WAS VECTORIZED.
imac-gleb:Desktop gleb$ ./a.out 2000 200 3
multMatrixSqBad: 74.2494
multMatrixSq: 26.1671
multMatrixBlock: 6.08273
imac-gleb:Desktop gleb$ ./a.out 2000 200 3
multMatrixSqBad: 74.2678
multMatrixSq: 25.3441
multMatrixBlock: 6.04398
imac-gleb:Desktop gleb$


Еще быстрее! Жалко что его только на месяц бесплатно дают :(
ну так без ужасного кода ускорить иногда не получается. Тут не просто избавление от циклов, а их разворачивание, т.е. если вы пишете
for (i=0; i<n; i++){
s+=какие-то вычисления с участием a[i];
}
то иногда можно ускорить вроде бы ничего не меняющим:
for (i=0; i<n; i+=4){
s+=какие-то вычисления с участием a[i];
s+=какие-то вычисления с участием a[i+1];
s+=какие-то вычисления с участием a[i+2];
s+=какие-то вычисления с участием a[i+3];
}
Ускорение будет если все переменные внутри цикла поместятся в регистры процессора.
Заметьте - в теле цикла банальный копипаст..
ага, алгоритм Штрассена, про него уже тут написали
http://habrahabr.ru/blog/i_am_clever/368…

возможно это еще ускорит, правда может будет больше конфликтов по памяти и из-за этого ускорения не получится, хз, надо пробовать
нет, тут обычное перемножение влоб с n^3 операций, просто организовано так, чтобы данные чаще всего брались их кэша.
Суть алгоритма: делим матрицу на маленькие подматрицы и перемножаем наши матрицы из подматриц как будто это матрицы из чисел. Вместо чисел перемножаются маленькие матрицы по обычному перемножению матриц.
Возможно Штрассена тоже можно так оптимизировать и он будет работать еще быстрее, чем этот блочный алгоритм.
ну просто я использовал формулы, где зависит от n число (например чтонить вроде (i+j)/2n или т.п.). Оттуда осталось.
http://umputun.habrahabr.ru/ - грех не знать =)

да, алгоритмы, для которых нужно меньше чем n^3 я просмотрел, перед тем как писать топик, но понял, что это жесть)
ну если расписать все формулы при умножении с подматрицами для одного ij-го элемента, то как раз получится формула для обычного умножения матриц. Тут просто неудобно это расписывать, но это 100% верно
такая оптимизация из-за жестких требований в ВУЗе ))

А применение - думаю в вычислениях, например как у Умпутуна, (ежедневная обработка огромного количества данных с вычислением каких-то коэффициентов причем за наименьшее время) можно использовать подобную технику оптимизации

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity