Физический движок общего назначения - PullRequest
6 голосов
/ 01 марта 2010

Есть ли какой-нибудь физический движок общего назначения, который позволяет проводить гигантские симуляции твердых тел? Я использую PhysX от Nvidia, но в центре внимания этого движка - разработка игр, мягкие тела. Я хочу знать, существует ли физический движок, работающий поверх процессоров ячеек PS3 или ядер CUDA, позволяющий проводить массивные научные физические симуляции.

Ответы [ 2 ]

2 голосов
/ 04 июня 2012

Не существует "универсальной" библиотеки по физике. Например. Можете ли вы представить себе полезную хирургическую симуляцию мягких тканей, которая бы учитывала релятивистские эффекты? Вы можете представить еще десятки примеров.

Вы говорите как о научном моделировании, так и о моделировании твердого тела, поэтому неясно, насколько реалистичным вы хотите быть. Твердое тело является приблизительным: ничто не является абсолютно жестким. Но если в вашей симуляции ничего не искажается, и вас устраивает куча нереалистичных приближений к трению и быстрому движению (общее для всех видеоигр), и вы хотите готовое решение, я подозреваю, что Havok работает современный процессор даст вам лучшую производительность.

PS / 3 в настоящее время является последним поколением. Хотя мне очень нравилось писать физику для нее в свое время, я должен признать, что современный i7 с 6 ядрами дает вам большую производительность - как теоретически, так и на практике - чем одна ячейка.

CUDA в настоящее время не проверенная технология для физики. Я ничего не написал из этого, но я очень заинтересован читателем :) Проблемы написания физики на основе CUDA довольно нетривиальны, если вы хотите приблизиться к IPC (соотношение команд на цикл) современного процессора, и я не знаю никого, кто бы успешно это сделал. И если вы не подходите к IPC физики на базе процессора, в физике CUDA нет никакого смысла, так как это требует больше усилий.

Просто сделайте математические расчеты: графический процессор Kepler стоимостью $ 500 имеет 1536 ядер при 1 ГГц = 1,5 петафлопс. Процессор Sandy Bridge стоимостью 590 долларов США имеет 6 ядер / 12 гиперпотоков AVX (шириной 8) при 3,8 ГГц = 0,36 петафлоп. Теперь, если вам удастся достичь четности 5: 1 (используйте в среднем 5 циклов графического процессора для одного цикла процессора), ваша теоретическая физика CUDA будет работать с той же скоростью, что и физика процессора. Теперь эффективно использовать 12 гиперпотоков и AVX (SIMD шириной 8) не так-то просто. Но распараллеливание физических задач между 1536 (!) Потоками CUDA, которые должны быть очень связными и использовать память гораздо более контролируемым образом, тоже немалое достижение. Я не говорю, что это невозможно (и я хотел бы попробовать это, но у меня есть дневная работа и другие проекты для домашних животных :)), но пройдет некоторое время, прежде чем физическое сообщество придумает что-то масштабируемое на тысячи потоков.

И в итоге улучшение скорости всего в 5 раз или около того ...:)

В любом случае, если вы пишете сим самостоятельно, и вам не нужна общая симуляция твердого тела, то CUDA может быть вашим другом. Например. Если вы хотите смоделировать движение всех звезд в Млечном Пути с релятивизмом, но без сверхновой и других дискретных эффектов ... Совершенно ясно, как распределить это по 1536 (и более) потокам. Но если вы хотите иметь гору твердых тел, смоделированных так же, как игры в настоящее время, вам не повезло

0 голосов
/ 28 марта 2014

Многотельная динамическая библиотека Simbody используется для молекулярного моделирования, которое содержит тысячи молекул (твердых тел). Смотрите GIF в репозитории Simbody на GitHub: http://github.com/simbody/simbody.

Библиотека также активно используется сообществом биомехаников для моделирования движения человека. В таком случае люди моделируются как система твердых тел.

Если вы ищете библиотеку для науки, то вам стоит проверить Simbody. Однако он не использовался на процессорах с ячейками PS3 или ядрами CUDA.

...