Форум программистов, компьютерный форум CyberForum.ru

Перемножение матриц 6000Х6000 - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Где найти ответы к самоконтролю в книге Шилдта "С++ руководство для начинающих" http://www.cyberforum.ru/cpp-beginners/thread604817.html
В книге сказано,что ответы есть на сайте осборне ком, но он перенаправляет на другой сайт,на котором ничего нет кроме продажи книг,по крайней мере мне так показалось.
C++ Автоматическое объявление объекта произвольного типа Помогите найти информацию по "Автоматическому объявлению объекта произвольного типа". Что это такое, как работает и т.д. http://www.cyberforum.ru/cpp-beginners/thread603519.html
C++ Как интегрировать Notepad++ с MinGW компилятором?
Уважаемые форумчане, подскажите как можно грамотно интегрировать Notepad++ (или аналогичный редактор с подcветкой разных синтаксисов) с MinGW компилятором (или опять же аналогичным по windows).
C++ На каком с++ лучше начать писать?
Здравствуйте. Я не особо разбираюсь в с++. Но написав одну из своих первых программ на C++/cli столкнулся с крешами из-за фреймврока на другой ОС. Сразу возникло подозрение что надо было писать на чистом c++ с использованием win api(но я не имею представления, как например использовать элемент activex в такой программе). Возможно мой вопрос покажется Вам некорректным и косноязычным, но я хочу...
C++ WideCharToMultiByte и std::string http://www.cyberforum.ru/cpp-beginners/thread600926.html
Легален ли такой код? На мой взгляд, все правильно, но программа в 3 случаях из 1000 портит память, если в коде есть эта функция. std::string tomb(const std::wstring &str, size_t code_page) { int cnt = WideCharToMultiByte((UINT)code_page, NULL, str.c_str(), -1, 0, 0, NULL, NULL); if(!cnt) return std::string(); std::string f(cnt);
C++ Вещественные числа с плавающей точкой, точность вычислений Работаю над проектом, требующим большую точность вычисления вещественных чисел. Решила использовать long double в надежде получить точность побольше. Столкнулась с тем, что C++ Builder просто отказывается давать желаемую точность. Точность необходима до 10^20. То есть до 20 числа после запятой. Подскажите пожалуйста как решить данную проблему. подробнее

Показать сообщение отдельно
Sanyur
11 / 11 / 0
Регистрация: 19.03.2010
Сообщений: 101
14.06.2012, 22:04     Перемножение матриц 6000Х6000
Нужно перемножить матрицы размером в 6000 на одном ядре(один поток).
Рассчитать теоретическое время.

Кто-нибудь, подскажите пожалуйста: почему препод говорит, что время выполнения операции с плавающей точкой при частоте 2.5 GHz 10^10(процессоры вычисляют 4 операции с плавающей точкой одновременно, то есть 2.5*4*10^9) и почему он говорит, что в эту величину внесено время выборки из ОП.

В теории должно быть 500Х10^9 операций / 10^10 = 50 секунд.(Я так понимаю препод округлил 432=6*6*6*2)

На практике получается больше часа, если еще получится вычислить.

Почему такие различия в результатах?

компилятор vs2010, обычный проект с++, платформа х64.

алгоритм обычный(матрица здесь умножается на себя для экономии времени написания программы и памяти выделяемой в программе. как мне кажется если таким же способом перемножать разные матрицы время не уменьшится)
C++
1
2
3
4
5
6
7
8
9
10
11
12
for (int i = 0; i< 6000; i++)
    {
        for(int j = 0; j< 6000; j++)
        {
            float buf = 0;
            for(int k = 0; k< 6000; k++)
            {
                buf += pfltMasA[6000*k+i]*pfltMasA[6000*j+k];
            }
            pfltMasC[j*6000+i] = buf;
        }
    }

Прошу сделать подсказки(или привести код) КАК обычным алгоритмом(без кеша и распараллеливания) получить 50с и/или обосновать почему получается такое ужасное время. Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru