Не существует "универсальной" библиотеки по физике. Например. Можете ли вы представить себе полезную хирургическую симуляцию мягких тканей, которая бы учитывала релятивистские эффекты? Вы можете представить еще десятки примеров.
Вы говорите как о научном моделировании, так и о моделировании твердого тела, поэтому неясно, насколько реалистичным вы хотите быть. Твердое тело является приблизительным: ничто не является абсолютно жестким. Но если в вашей симуляции ничего не искажается, и вас устраивает куча нереалистичных приближений к трению и быстрому движению (общее для всех видеоигр), и вы хотите готовое решение, я подозреваю, что 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 (и более) потокам. Но если вы хотите иметь гору твердых тел, смоделированных так же, как игры в настоящее время, вам не повезло