![]() |
|
Модераторы: bsa |
![]()
|
|
| hello19 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.7.2011 Репутация: нет Всего: нет |
Привет всем!
Нужен код для перемножения матрицы и столбца за минимально возможное время. Порядок матрицы ( и столбца ) огромен - около 100000. Помогите найти оптимальный код! Ищу уже 2 день... что-то безрезультатно как то((( |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Это не подходит? http://www.boost.org/doc/libs/1_47_0/libs/...s/doc/index.htm
|
|||
|
||||
| Silent |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 3.10.2006 Репутация: 1 Всего: 9 |
эм... а в чем проблема?
либо берем стандартную библиотеку (atlas, blas, gotoblas, intel mkl...), либо пишем ручками сами. Самописная простейшая версия на моем i3 без учета ввода-вывода работает 2 минуты на одном ядре, так что 100000 - мне не кажется слишком суровым порядком, можно предположить, что общее время будет равно времени чтения файла с данными с диска |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Каков размер матрицы по двум измерениям? Матрица разряженая или плотная? И частью какой задачи является данная операция?
Классическое произведение матрица-вектор самая популярная операция в линейной алгебре, реализаций вагон и маленькая тележка, в том числе в открытых библиотеках которые уже перечислили. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
матрица поди разреженная? как представлена? Добавлено через 2 минуты и 34 секунды это медленно. решение системы уравнений такого порядка для сильно разреженной матрицы (например, МКЭ) идет быстрее |
|||
|
||||
| Silent |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 3.10.2006 Репутация: 1 Всего: 9 |
baldina, не выдирайте цитату из контекста. 2минуты = (i3+HT) / 4,
Я всего лишь хотел показать, что задача решается за разумное время, и чтобы автор топика не боялся этой "зубастой" задачи. |
||||
|
|||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
это немного другое: те ускорения основаны в первую очередь на эффективном использовании кеша. а матрица 1^6 даже в ОП не поместится. на практике матрицы такого размера обычно содержат гораздо больше нулевых элементов, поэтому решение связано с эффективным представлением матрицы. В этом случае порядок роста зависит не от размерности матрицы, а от числа ненулевых элементов. |
|||
|
||||
| Silent |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 3.10.2006 Репутация: 1 Всего: 9 |
Автор топика молчит и не появляется ))
Предлагаю первый вариант "а-ля-блочное-решение", чтобы было от чего отталкиваться:
Комментарии к коду: предполагаю что матрица не разрежена, формат хранения данных бинарный, компилировалось и проверялось под WinXP, VS2008. Время выполнения = время на чтение данных с диска, процессор практически простаивал. На тестовой машинке эти 40Гб (N*N*sizeof(int)) обработались (хы, "прочитались") за 30 минут. P.S. По прикидкам, необходимо памяти 3*N*sizeof(int) ~ 1,2Mb, хотя замеряющая прога по факту намеряла 7,8Mb (сей факт объяснить не могу) Это сообщение отредактировал(а) Silent - 27.7.2011, 11:53 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |