Здравствуйте, VladD2, Вы писали:
VD>Сопроцессоры начиная с 486 DX встрены в процессор и являются его неотемлемой частью.
Кто бы возражал. Но инструкции сопроцессора ведь остались.
GZ>>Посмотри дизассемблер через cordbg с оптимизацией. У меня на Net 2.0 и movq встречаются.
VD>movq — это, если мне не изменяет память, команда ММХ. Причем совершенно целочисленная — пересылка данных между регистрами и памятью.
Это я так, для примера Просто не ожидал встретить MMX.
VD>Еще раз повторяю. Тест не содержит плавающей точки в принципе.
Это еще почему. Как тебе такое:
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, GlebZ, Вы писали:
PD>А это к моему случаю не относится. Я не прохожу элементы diagonally or randomly.
Какая разница как это называется. Ты обращаешься к разным массивам. Значения распределены по месту и непоследовательны. Можно считать что диагональ обладает такими же свойствами.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, Alexey Axyonov, Вы писали:
AA>>Time 1000 = 18,20987 AA>>Time 2000 = 214,3378
PD>Не понял. Это C++ или C# ? И все же, просьба — проверь на 5000. На обоих языках. Внешний цикл до 50, внутренние до 5000 и результат умножь на 100.
Это был C#. Сегодня попробую запустить на AthlonXP 2500+ 512k cache.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Я что-то плохо понимаю. Там же матрицы из float. Как же умножение их элементов идет, эмуляцией, что ли, как в добрые DOS-овскме времена ?
Ой, это я что-то напутал. Что-то в друг вголову засело, что массивы бвли целочисленные. Конечно массивы float... В общем фигню говорю.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Ну, вот и смотри зависимость. Самый быстрый оказался Pentium M 1.7 Ггц. Частота у него самая дохлая, но кэш метровый.
Воторой к финишу пришел AMD64 с реальной частотой 2.2 Ггц. Частота у него выше, но кэш полуметровый, т.е. в два раза меньший. Третьим к финишу пришел Pentium 4 3.0 Ггц. Частота у него заоблочная, а кэш четверть метра. При этом именно Pentium 4 очень боится сбросов кэша и конвеера команд, так как имеет очень длинный конвеер и его перезаполнение дико дорого. Видимо после какого-то раммера массива кэш и конвеер начинает сбрасываться и приходит приплызд.
По хорошему нужно бы поиграться с настройками компилятора С++. Задать ему генерацию кода под SSE/MMX и потом наоборот для Pentium (1). Ну, чтобы поглядеть какие при этом изменения в производительности происходят.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, VladD2, Вы писали:
VD>>то есть нармальная квадратичная зависимость.
PD>Да здравствует Net Framework, который для кубического алгоритма обеспечивает квадратичную зависимость!
Не да здравсвтвует Интел который умудрился сделать процессор который хуже чем предыдущие поколения.
PD>P.S. А нельзя ли с его помощью NP-полные задачи свести к полиномиальным ?
Пробуй. Как известно терпение и труд все перепрут.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Pavel Dvorkin, Вы писали:
VD>>Что-то больно сказочный результат. 16 секунд дохлятина вроде P4 1.8 выжать не должна. У меня на 3-х гигогерцовом процессоре результат был 13 секунд.
PD>Так ведь такой же результат был и на моем P4 1.6. Дает. Сказочный или нет, а дает.
Ага. А еще почти такой же на моем P4 3.0. Не кажется странным?
VD>>А это уже совсем сказочный результат. Тут данные уже должны были по любому выйти за кэш.
PD>Влад, я пишу то, что вижу. Сказочный или нет — не знаю.
Ну, значит кроме сброса кэша есть еще какая-то причина. Но чтобы ее осмыслить нужно уже совсем на разбор отдельных инструкций переходить.
Если интересно можно дизасемблировать код генерируемый джитом для разных процессоров и сравнить его с С++-ным. Но это уже очень серьезная задачка. К тому же я в новых инструкциях не очень секу. Да и вообще ассемблер недолюбливаю.
PD>Чем рассуждать о бессмысленности рассуждений, приведи лучше данные, какие у тебя получились на 5000. Для C++ и C#. Чтобы ты не говорил, что я предлагаю тебе четырехчасовой тест, сделай как и я — внешний цикл до 50, внутренние до 5000 и результат умножь на 100.
Да, мне пофигу что компьютеры делают когда меня нет. Ладно, запустил тут на P4 (на других процессорах разница в процентах от увеличения матрицы, после 800, не изменяется).
Итак 5000 на P4 C#:
7:33:45 (короче 7 с половиной часов :)) ).
С++:
04:12:45 (то есть 15165 сек).
То есть разница менее чем в два раза. Так что не знаю что там, у тебя получается. Конечно 2 раза это не 20 процентов, но и не 14 раз все же.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
PD>>Чем рассуждать о бессмысленности рассуждений, приведи лучше данные, какие у тебя получились на 5000. Для C++ и C#. Чтобы ты не говорил, что я предлагаю тебе четырехчасовой тест, сделай как и я — внешний цикл до 50, внутренние до 5000 и результат умножь на 100.
VD>Да, мне пофигу что компьютеры делают когда меня нет. Ладно, запустил тут на P4 (на других процессорах разница в процентах от увеличения матрицы, после 800, не изменяется). VD>Итак 5000 на P4