|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
08.02.2010, 16:43 | #1 |
Пользователь
Регистрация: 08.02.2010
Сообщений: 51
|
Конкурс - перемножение матриц
Уважаемые программисты. Предлагаю принять участие в конкурсе, который проводится на моём сайте. Задача конкурса предельно простая - написать программу перемножения квадратных матриц, но она должна работать на матрицах размером до 5000x5000 и при этом укладываться в 15 минут. Победителем будет тот, чья программа работает быстрее. Конкурс бесплатный, поэтому приз всего 1000 р. Но это далеко не последний мой конкурс! Страница с правилами: http://zealint.ru/fast-matrix-multiplication-comp.html
|
08.02.2010, 17:03 | #2 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
Полагаю, победит тот, кто владеет дополнительными наборами инструкций типа SSE. Мне это не по силам.
|
08.02.2010, 17:39 | #3 |
Веб-разработчик
Форумчанин
Регистрация: 23.05.2009
Сообщений: 279
|
Возможно я поучавствую, потом.... Сейчас я пишу бота для игры Fortress, когда закончу может быть займусь этим....
|
08.02.2010, 17:55 | #4 |
Заблокирован
Старожил
Регистрация: 20.07.2008
Сообщений: 4,032
|
Мой ассемблер не поддерживает столь большой адресации.
//Курсак или лаба? |
08.02.2010, 19:01 | #5 | ||
Пользователь
Регистрация: 08.02.2010
Сообщений: 51
|
Цитата:
// Не курсак и не лаба - я даже исходников не требую. Просто конкурс - кто быстрее! Цитата:
|
||
08.02.2010, 20:40 | #6 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Чепуха какая-то...
Ну, набросал я "втупую" за 2 минуты эту "задачу". Перемножает матрицы 5000х5000 за 1-2 секунды. (Заполнение случайными числами - меньше полсекунды). Проц 1,83 мгц, дуо... Что-то тут нечисто, в ентом "конкурсе"... Может, там числа с плавающей запятой ? З.Ы. Правда, ввод-вывод в файл не делал, только вычисления... И вообще, я так понял, что основная цель сего действа скрыта во фразах: Цитата:
А это бабла стоит. Вот товарищ и решил нашими руками раскрутиться... Есс-но, нахаляву. Последний раз редактировалось mihali4; 08.02.2010 в 20:48. |
|
08.02.2010, 20:43 | #7 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
15 минут... Это ж чем надо забить программу, которая 100 кк байт перемножит...
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
08.02.2010, 21:05 | #8 | ||
Пользователь
Регистрация: 08.02.2010
Сообщений: 51
|
Цитата:
Цитата:
Я тут подумал... Может вы перемножаете неправильно? Я имею в виду не произведения Адамара двух матриц (поэлементное), а алгебраическое произведение, которое и называется произведением матриц в стандартном курсе линейной алгебры. Кстати, в правилах есть пример, он у Вас правильно работает? Это я специально захватил побольше времени, чтобы было с чего начинать. Один товарищ на соседнем форуме под Linux написал программу, которая за 3 минуты работает, но он пока не хочет под Windows делать. Последний раз редактировалось Stilet; 10.02.2010 в 13:21. |
||
09.02.2010, 01:42 | #9 |
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
Меня другой вопрос интересует.
Как время будет засекаться? И что значит нельзя пользоваться dll. И системными тоже? Ну а вообще, я тут любопытства ради прикинул на калькуляторе (если где ошибся, поправьте) Выходная матрица квадратная 5000*5000 элементов. Для расчёта одного элемента вых. матрицы просто в лоб (строка на столбец) потребуется 5000 циклов умножения и сложения. Итого, для расчёта всей матрицы потребуется таких циклов уже 5000*5000*5000=125 млрд. Допустим, что один такой цикл будет выполняться 10 тактов проца. Тогда уже потребуется 1250*10^9 тактов машины. Если у нас есть процессор, частотой 3ГГц, значит он (в первом приближении) выполняет 3 млрд. тактов в секунду. Получается, что для вычисления такой матрицы потребуется ~ 7 мин. И ещё. А почему не сделать входные и выходные файлы бинарными? Тогда можно будет не напрягать программу разбором текстовых файлов. А то может получиться так, что быстрее окажется не тот, кто матрицы перемножит, а тот, кто с входными/выходными файлами быстрее разберётся. Файлы, кстати, (для матрицы 5000*5000) получаются input~2 Мбайт, output в два раза меньше.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru Последний раз редактировалось mihali4; 09.02.2010 в 01:53. |
09.02.2010, 01:55 | #10 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Не все так просто, уважаемый.
Вы не учли "накладные" расходы. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перемножение матриц | stscolt | Помощь студентам | 0 | 09.10.2009 16:54 |
Перемножение матриц | jorjinho10 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 11.05.2009 12:56 |
Перемножение матриц | Blad47 | Общие вопросы C/C++ | 1 | 02.02.2009 00:21 |
Перемножение матриц | Арина | Помощь студентам | 1 | 18.05.2007 19:21 |