divyang4481 / mipt-hw

Automatically exported from code.google.com/p/mipt-hw
0 stars 0 forks source link

task_03 TMatrix #192

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago

/ayvazyan_yuliy/task03_matrix/

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

Original issue reported on code.google.com by dmitryba...@gmail.com on 24 Mar 2013 at 9:06

GoogleCodeExporter commented 9 years ago
/baldin_dima/task03_matrix/
Тесты все сделал, только диаграмму не 
построил, потому что Штрассен отчего то 
очень медленно работает.

Original comment by dmitryba...@gmail.com on 27 Mar 2013 at 8:29

GoogleCodeExporter commented 9 years ago
1. А Вы сделали оптимизиацию: ограничить 
рекурсию, вычисляя при малых N произведение 
алгоритмом по умолчанию?

2. На каких размерах тестируете?

Original comment by aivyu...@gmail.com on 27 Mar 2013 at 9:13

GoogleCodeExporter commented 9 years ago

Original comment by aivyu...@gmail.com on 27 Mar 2013 at 9:13

GoogleCodeExporter commented 9 years ago
������ ������. ���� ������ ������ 32 �� �� ��� �������, ����������, ���
200*200 ������� �������� �� 3 �������, � ���������� �� 9 ���.

Original comment by dmitryba...@gmail.com on 27 Mar 2013 at 10:58

GoogleCodeExporter commented 9 years ago
Я не могу прочитать Ваше сообщение.

Насколько знаю, такая фигня получается, 
если отвечать через почту, а не через сайт 
code.google.com/p/mipt-hw/

Original comment by aivyu...@gmail.com on 27 Mar 2013 at 10:59

GoogleCodeExporter commented 9 years ago
Извините, в общем Штрасс работает в 3 раза 
медленнее, я убрал все операции деления, но 
там осталась еще одна проблема, которую я 
пока не знаю как решить, но я постараюсь.

Original comment by dmitryba...@gmail.com on 28 Mar 2013 at 12:18

GoogleCodeExporter commented 9 years ago
В 3 раза медленнее на каких размерах матриц?

Original comment by aivyu...@gmail.com on 28 Mar 2013 at 8:14

GoogleCodeExporter commented 9 years ago
200 * 200

Original comment by dmitryba...@gmail.com on 28 Mar 2013 at 10:35

GoogleCodeExporter commented 9 years ago
Мало. Пробуйте 512 на 512 хотя бы.
В моих тестах Штрассен начинаем обгонять 
примерно с этих размеров.
Рекурсию я ограничивал кажется при 128 на 128.

Original comment by aivyu...@gmail.com on 28 Mar 2013 at 10:37

GoogleCodeExporter commented 9 years ago
Я внес правку в Ваш код. Выполните, 
пожалуйста, svn update прежде чем дальше 
что-либо менять локально.

Original comment by aivyu...@gmail.com on 6 Apr 2013 at 8:35

GoogleCodeExporter commented 9 years ago
1. В конструкторе по умолчанию и operator= у Вас 
копи-паст. Правильнее реализовать один из 
них. Потом другой реализовать через первый.

2. Метод Transpose у Вас имеет квадратичную 
сложность. Подумайте как его реализовать 
быстрее.

3. Я уже говорил Вам, что Ваш operator+= (и 
подобные) выдяют дополнительно память. А 
можно реализовать in-place. Так что, правильнее 
реализовать operator+=, а через него - operator+.

4. Для тестов либо вбейте в коде готовые 
матрицы, либо предоставьте файл с ними. 
Чтобы можно было запустить тесты так:
./mybinary < test_input.txt
Иначе запуска Ваших тестов превращается в 
консольный ад :)

5. Где таблички и графики с резальтатами 
сравнения алгоритмов умножения?

В остальном достаточно хорошее решение. 
Доведите до ума. Пока не принято.

Original comment by aivyu...@gmail.com on 6 Apr 2013 at 8:43

GoogleCodeExporter commented 9 years ago
Сейчас исправляю. А сравнение до какого N 
нужно делать? И мне какжется или все-таки 
метод Transpose не сделать быстрее по 
асимптотике? За N^2/2 самое быстрое разве нет?

Original comment by dmitryba...@gmail.com on 19 May 2013 at 12:42

GoogleCodeExporter commented 9 years ago
Все исправил, всё построил.

Original comment by dmitryba...@gmail.com on 19 May 2013 at 4:44

GoogleCodeExporter commented 9 years ago
1. Transpose можно реализовать за O(1). Как - 
подумайте сами.

2. Давайте сделаем так. Я запускаю 
программу. Она:
  - генерирует случайные матрицы размера N
  - умножает их сначала одним алгоритмом, потом другим
  - сравнивает результаты двух разных алгоритмов
  - выводит на экран время работы каждого алгоритма
Все пункты выполняются для 
N=16,32,64,128,256,512,1024,2048

Решение не принято.

Original comment by aivyu...@gmail.com on 26 May 2013 at 11:36

GoogleCodeExporter commented 9 years ago
Чтобы выводилось, нужно просто 
раскомментить MulTime 4ая строчка снизу. С 
транспонированием за O(1)... там наверное 
можно просто поставить флажок, но тогда 
нужно делать проверки в методах At, cols и rows

Original comment by dmitryba...@gmail.com on 26 May 2013 at 10:43