Физический движок общего назначения

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


person Lucas    schedule 01.03.2010    source источник


Ответы (2)


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

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

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

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 тактов графического процессора для 1 такта ЦП), ваша теоретическая физика CUDA будет работать с той же скоростью, что и физика ЦП. Теперь эффективно использовать 12 гиперпотоков и AVX (8-диапазонный SIMD) не так-то просто. Но распараллелить физические задачи в 1536 (!) потоках CUDA, которые должны быть очень согласованными и использовать память гораздо более контролируемым образом, тоже немалый подвиг. Я не говорю, что это невозможно (и я бы хотел попробовать, но у меня есть дневная работа и другие любимые проекты :)), но пройдет некоторое время, прежде чем сообщество физиков придумает что-то масштабируемое для тысяч потоков.

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

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

person Sergiy Migdalskiy    schedule 03.06.2012

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

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

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

person chrisdembia    schedule 28.03.2014