Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 08.02.2010, 16:43   #1
Zealint
Пользователь
 
Регистрация: 08.02.2010
Сообщений: 51
По умолчанию Конкурс - перемножение матриц

Уважаемые программисты. Предлагаю принять участие в конкурсе, который проводится на моём сайте. Задача конкурса предельно простая - написать программу перемножения квадратных матриц, но она должна работать на матрицах размером до 5000x5000 и при этом укладываться в 15 минут. Победителем будет тот, чья программа работает быстрее. Конкурс бесплатный, поэтому приз всего 1000 р. Но это далеко не последний мой конкурс! Страница с правилами: http://zealint.ru/fast-matrix-multiplication-comp.html
Zealint вне форума
Старый 08.02.2010, 17:03   #2
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Полагаю, победит тот, кто владеет дополнительными наборами инструкций типа SSE. Мне это не по силам.
ds.Dante вне форума
Старый 08.02.2010, 17:39   #3
VovanZ
Веб-разработчик
Форумчанин
 
Регистрация: 23.05.2009
Сообщений: 279
По умолчанию

Возможно я поучавствую, потом.... Сейчас я пишу бота для игры Fortress, когда закончу может быть займусь этим....
VovanZ вне форума
Старый 08.02.2010, 17:55   #4
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Мой ассемблер не поддерживает столь большой адресации.
//Курсак или лаба?
Levsha100 вне форума
Старый 08.02.2010, 19:01   #5
Zealint
Пользователь
 
Регистрация: 08.02.2010
Сообщений: 51
По умолчанию

Цитата:
Сообщение от Levsha100 Посмотреть сообщение
Мой ассемблер не поддерживает столь большой адресации.
//Курсак или лаба?
5000^2 * 4 = 100 000 000 - не так много вроде бы для адресации.
// Не курсак и не лаба - я даже исходников не требую. Просто конкурс - кто быстрее!

Цитата:
Полагаю, победит тот, кто владеет дополнительными наборами инструкций типа SSE. Мне это не по силам.
Ради Бога, можете и их использовать, я же процессор указал, на котором буду тестировать.
Zealint вне форума
Старый 08.02.2010, 20:40   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Чепуха какая-то...
Ну, набросал я "втупую" за 2 минуты эту "задачу".
Перемножает матрицы 5000х5000 за 1-2 секунды. (Заполнение случайными числами - меньше полсекунды).
Проц 1,83 мгц, дуо...
Что-то тут нечисто, в ентом "конкурсе"...
Может, там числа с плавающей запятой ?

З.Ы. Правда, ввод-вывод в файл не делал, только вычисления...

И вообще, я так понял, что основная цель сего действа скрыта во фразах:
Цитата:
По мере проведения конкурса привлекайте новых участников. Мой блог не так сильно раскручен, поэтому участие хотя бы 10 человек я буду считать большим успехом.
То есть раскрутка.
А это бабла стоит. Вот товарищ и решил нашими руками раскрутиться... Есс-но, нахаляву.

Последний раз редактировалось mihali4; 08.02.2010 в 20:48.
mihali4 вне форума
Старый 08.02.2010, 20:43   #7
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

15 минут... Это ж чем надо забить программу, которая 100 кк байт перемножит...
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума
Старый 08.02.2010, 21:05   #8
Zealint
Пользователь
 
Регистрация: 08.02.2010
Сообщений: 51
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Чепуха какая-то...
Ну, набросал я "втупую" за 2 минуты эту "задачу".
Перемножает матрицы 5000х5000 за 1-2 секунды. (Заполнение случайными числами - меньше полсекунды).
Проц 1,83 мгц, дуо...
Что-то тут нечисто, в ентом "конкурсе"...
Может, там числа с плавающей запятой ?
Я указал в правилах, какие там числа. 1-2 секунды??? Отлично! У вас есть шанс выиграть. На самом деле, если Ваша программа правильно работает, то это абсолютный рекорд. Я такого еще не видел и будет интересно проверить самому...

Цитата:
Сообщение от mihali4 Посмотреть сообщение
То есть раскрутка.
А это бабла стоит. Вот товарищ и решил нашими руками раскрутиться... Есс-но, нахаляву.
Ну... Тов. mihali4, за эту 1000 р, я гораздо сильнее раскручу блог другими способами : ) Я вообще-то могу нахаляву получить PR4, если надо будет. Сейчас мне это просто не нужно. Тут нет подвоха, все честно. Да, я хочу, чтобы пользователи заходили, но не это цель. Мне нужны результаты именно по этой задаче и именно при тех ограничениях, которые я назвал.

Я тут подумал... Может вы перемножаете неправильно? Я имею в виду не произведения Адамара двух матриц (поэлементное), а алгебраическое произведение, которое и называется произведением матриц в стандартном курсе линейной алгебры. Кстати, в правилах есть пример, он у Вас правильно работает?

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
15 минут... Это ж чем надо забить программу, которая 100 кк байт перемножит...
Это я специально захватил побольше времени, чтобы было с чего начинать. Один товарищ на соседнем форуме под Linux написал программу, которая за 3 минуты работает, но он пока не хочет под Windows делать.

Последний раз редактировалось Stilet; 10.02.2010 в 13:21.
Zealint вне форума
Старый 09.02.2010, 01:42   #9
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 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.
Ulex вне форума
Старый 09.02.2010, 01:55   #10
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Не все так просто, уважаемый.
Вы не учли "накладные" расходы.
mihali4 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемножение матриц 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