|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.11.2010, 12:26 | #1 |
Форумчанин
Регистрация: 29.10.2009
Сообщений: 259
|
6-ти ядерные процессоры?
Зашел на официальные сайты компаний AMD и INTEL, на каждом из которых нашел информацию о продаже ими 6-ти ядерных процессоров. Всегда думал, что по причине использования в ПК двоичной системы счисления, все величины должны быть "степенью числа 2", но как-то число 6 совсем даже не смахивает на 2 в какой-либо степени(целочисленной). До этого, насколько мне помнится, все процессоры обладали либо одним, либо двумя, либо четырьмя ядрами, по логике - следующие процессоры должны были быть восьми-ядерными, но между шестью и восемью огромная разница! Скажите, все таки по какому принципу строится количество ядер в процессоре, может быть в частности эти "6-ти ядерные Core i7-980X" являются просто модификацией обычных четырех-ядерных Core i7?
Кстати, вот эти вот 6-ти ядерные процессоры стоят около 38тыс.р, в то время как четырех-ядерные Core i7 стоят в пределах 15т.р. - значительная разница! Почему между ними такая огромная разница в цене - 6-ти ядерные являются новинкой, а все компании любят на новинки цены поднимать до небес?
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
|
10.11.2010, 13:18 | #2 |
C++, Java
Старожил
Регистрация: 10.04.2010
Сообщений: 2,665
|
Ну всё-таки на 6 ядерных процессоров можно одновременно запускать 12 потоков, т.е. производительность будет очень высокая. Например, недавно журнал "Мир ПК" проводил испытания какого-то там 6 ядерного процессора и и видеокарты NVIDIA GeForce GTX 480. Проверяли, что быстрее посчитает факториал 250000: оказалось, что видеокарта быстрей, хоть и процессор работал в 12 потоков; у процессора на всё про всё ушло 6,6 сек, а у видяхи - 0,6 сек. Неплохо?
|
10.11.2010, 13:27 | #3 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
а чем тебе помогут 12 потоков(кстати а с чего это 12, если ядер 6?) считать факториал? он считается в основном же одним потоком(или я не прав?)
так что тут шло более сравнение мощности одного ядра с мощностью видюхи. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
10.11.2010, 13:35 | #4 | ||
C++, Java
Старожил
Регистрация: 10.04.2010
Сообщений: 2,665
|
Цитата:
Цитата:
|
||
10.11.2010, 13:38 | #5 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Представляете как он греться будет?
Между прочим зимой они как "горячие" пирожки разлетятся - вместо батарей будут дома отапливать
I'm learning to live...
|
10.11.2010, 13:42 | #6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
мне просто интерестно как раскладывается вычисление факториала для многих потоков, ведь это же линейная операция поидее.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
10.11.2010, 13:50 | #7 | |||
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
Цитата:
Цитата:
Цитата:
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
|||
10.11.2010, 14:33 | #8 | |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Цитата:
делим промежуток от 1 до n на нужное кол-во частей. (для простоты примера n будет 20, а потока 2) 20!=1*2*3*4*5*6*7*8*9*10*11*12*13*1 4*15*16*17*18*19*20. Мы ведь можем попилить это выражение на куски и потом куски перемножить? (для чисел порядок операндов, при умножении, не имеет значения, так что мы можем себе это позволить). Т.е., например, первый поток считает у нас x1=1*2*3*4*5*6*7*8*9*10, а второй x2=11*12*13*14*15*16*17*18*19*20, а после этоого ответ n!=x1*x2. Ну это примитивно очень, наверняка в математике есть способы считать факториал "не в лоб", но я их не знаю, возможно в них можно что-то еще придумать.
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
|
10.11.2010, 18:01 | #9 | |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Цитата:
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
|
10.11.2010, 18:15 | #10 |
Форумчанин
Регистрация: 15.06.2010
Сообщений: 740
|
Да, есть алгоритмы, которые вообще никак не паралелятся, а есть на подобии вышеприведенного факториала - паралелятся запросто. Тем не менее, существует огромная проблема синхронизации результатов. На вышеприведенном примере x1 может например посчитаться быстрее, чем x2. Тогда, чтобы получить x1*x2 процессору необходимо все равно дождаться результатов работы вычисления x2. В этот состоит основная сложность. Можно конечно мониторить, и если x1 уже посчитался, тогда разделить подсчет x2 опять на несколько чястей и тд. Но даже современные компиляторы не такие умная как бы хотелось..
Чтобы понять рекурсию, сперва нужно понять рекурсию.
|