Rost:XpertVision:не способны просчитывать более-менее реальную физику
Ну, реальную физику они еще долго не смогут просчитывать, что видеокарты, что ЦП. А вот на счет
более-менее реальной физики - весьма интересно, что понимается под данным понятием, и почему это ЦП такие ущербные в данном плане
![laugh :laugh:](./images/smilies/laugh.gif)
Ну под более-менее реальной физикой я имел ввиду (для примера возьмём физику воды) когда для обработки воздействия с объектом берутся для просчёта не все молекулы воды (в программе они будут некими точками объекта), а намного меньшее их количество, но достаточное для отображения реального поведения водного объекта. Как-то так.
А теперь подробней о ущербности CPU при обработке идентичных пакетов данных по сравнению с GPU :
Берём для процессора архитектуру Intel Core i7 -
![Зображення](http://i069.radikal.ru/1001/92/f14d40a82e58t.jpg)
, а для GPU архитектуру Nvidia GT200 (GTX275, GTX280, GTX285) -
![Зображення](http://s006.radikal.ru/i213/1001/bc/86db0ec564e5t.jpg)
. Как мы видим в процессоре 4 ядра, а в GPU 24 в кластере, 10 кластеров в чипе и естественно 240 ядер в чипе, вот и полноценный GT200. Как видно 4 : 240 в пользу видеокарты, но почему тогда они не вытеснили процессоры из наших компьютеров? Вот тут и сказывается особенность архитектуры. CPU делали для общих задач и каждое ядро может обрабатывать один поток, и к каждому из этих четырёх потоков может применятся любая вычислительная операция (их две, отнять и добавить). Следовательно за один такт (1 Гц) 4-х ядерный процессор может обработать 4 пакета данный. А вот ядра GPU (потоковые процессоры) объединяются в кластеры и там каждое ядро может выполнять обработку одного потока, но!!! в пределах одного кластера к потоку может применяться только одна вычислительная операция. К примеру : кластер, процесс обрабатываемый им распараллелили на 24 потока (по потоку на каждое ядро), 19 ядер должны сделать операцию "+", а 5 операцию "-". За первый такт 19 ядер делают свою операцию, а 5
простаивают. З а второй такт 5 ядер работают, а теперь уже 19
простаивают. Потери вычислительной мощности будут огромны. А ведь надо учесть что не всегда удается розбить процесс на 4 потока, а про 24 можно и не мечтать. Выходит что GPU будет обрабатывать те же четыре потока, по одному на кластер, а в каждом кластере работает лишь одно ядро. А теперь частоты, в среднем 700 Мгц против 3 Ггц. Здесь CPU нету равных.
А если нужно обработать хорошо распараллеливаемый процесс в котором нужно работать с большим количеством
однотипных данных? Пример : Анабиоз+PhysX. Если процессор обрабатывает физику то мы получаем всё те же 4 обработанных пакета за такт или 12 млрд. за секунду при частоте 3 Ггц, но CPU должен просчитывать ещё системные процессы и процессы самой игры. Так что реально будет не больше 6-8 млрд. обраб. пакетов. Теперь что будет если видеокарта обрабатывает физику : Берём опять физику воды. Процесс можно распараллелить на колоссальное количество потоков, ведь нужно обработать огромное количество "молекул" (дальше "точки объекта"). Обработка каждой "точки объекта" равняется обработке одного потока. Примером игра выделила 1 кластер под PhysX, в этом кластере работают уже все!!! 24 ядра. (потому что процесс хорошо распараллеливается и операции над этими потоками однотипны (прорвало трубу, под давлением воду выталкивает из неё, нужно просчитать силу воздействующею на воду, знак операции будет одинаков к каждой "точке объекта")). А теперь считаем, за одну секунду кластер обработает около 16 млрд. пак. данных (при частоте 700 Мгц), а теперь вспомним что Nvidia настоятельно рекомендует использовать для обсчёта физики не меньше 32 потоковых процессоров. Значит скорее всего под физику выделили 2 кластера. 16 умножаем на 2 и получаем 32 млрд. пакт. данных. Это (32/8) в 4 раза больше CPU. Вот по этой причине PhysX может просчитать в реальном времени только видеокарта. Главное что бы хватило оставшихся кластеров на обработку графики.
P.S.: Если где ошибся, поправьте.