2010-03-01 18 views
6

Có động cơ vật lý nào có mục đích chung cho phép mô phỏng rất lớn các vật cứng không? Tôi đang sử dụng PhysX từ Nvidia, nhưng trọng tâm của động cơ này là phát triển game, thân mềm. Tôi muốn biết nếu tồn tại động cơ vật lý chạy trên đầu trang của bộ vi xử lý di động PS3 hoặc lõi CUDA cho phép mô phỏng vật lý khoa học lớn.Động cơ vật lý đa năng

Trả lời

2

Không có thư viện vật lý "phổ quát". Ví dụ. bạn có thể tưởng tượng một mô phỏng mô mềm phẫu thuật hữu ích mà có thể đưa các hiệu ứng tương đối vào tài khoản không? Bạn có thể tưởng tượng hàng chục ví dụ khác.

Bạn nói về cả mô phỏng cơ thể khoa học và cứng nhắc, do đó, không rõ bạn thực tế như thế nào. Cơ thể cứng nhắc là một xấp xỉ: không có gì là hoàn toàn cứng nhắc. Nhưng nếu không có gì biến dạng rất nhiều trong mô phỏng của bạn, và bạn tốt với một loạt các xấp xỉ không thực tế để ma sát và chuyển động nhanh (chung cho tất cả các trò chơi), và bạn muốn giải pháp out-of-the-box, tôi nghi ngờ chạy Havok trên CPU hiện đại sẽ cung cấp cho bạn hiệu suất tốt nhất.

PS/3 hiện là gen cuối cùng. Trong khi tôi rất thích viết vật lý cho nó trong ngày của tôi rất nhiều, tôi phải thừa nhận rằng một i7 hiện đại với 6 lõi mang lại cho bạn hiệu suất nhiều hơn - cả về mặt lý thuyết và trong thực tế - hơn một tế bào.

CUDA hiện chưa được chứng minh về công nghệ vật lý. Tôi không viết bất cứ điều gì từ nó, nhưng tôi là người đọc rất quan tâm :) Những thách thức của việc viết CUDA dựa trên vật lý khá không quan trọng nếu bạn muốn tiếp cận IPC (tỉ lệ chỉ thị trên mỗi chu kỳ) của một CPU hiện đại, và tôi không biết ai đã đi cùng thành công. Và nếu bạn không tiếp cận IPC của vật lý dựa trên CPU, không có điểm nào trong vật lý CUDA, vì nó cần nhiều nỗ lực hơn.

Chỉ cần thực hiện phép toán: GPU Kepler $ 500 có 1536 lõi @ 1GHz = 1,5 petaflop. Một CPU Sandy Bridge 590 đô la có 6 lõi/12 hyperthreads AVX (8-rộng) @ 3.8GHz = 0.36 petaflop. Bây giờ, nếu bạn có thể đạt được tính chẵn lẻ 5 đến 1 (sử dụng chu kỳ 5 GPU trung bình cho 1 chu kỳ CPU), vật lý CUDA lý thuyết của bạn sẽ chạy ở cùng tốc độ với vật lý CPU. Bây giờ, sử dụng 12 hyperthreads và AVX (8-SIMD rộng) hiệu quả là không thực sự dễ dàng. Nhưng song song với các nhiệm vụ vật lý qua các chủ đề CUDA 1536 (!), Mà phải rất mạch lạc và sử dụng bộ nhớ theo cách được kiểm soát nhiều hơn cũng không phải là một thành tích nhỏ. Tôi không nói điều đó là không thể (và tôi rất thích thử nó, nhưng tôi có một công việc ban ngày và các dự án thú cưng khác :)) nhưng sẽ mất một thời gian trước khi cộng đồng vật lý xuất hiện với thứ gì đó có thể mở rộng trên hàng nghìn chủ đề.

Và cuối cùng sự cải thiện tốc độ chỉ là 5 lần hoặc lâu hơn ... :)

Dù sao, nếu bạn viết các sim chính mình, và bạn không muốn có một mô phỏng cơ thể cứng nhắc chung, sau đó CUDA có thể là bạn của bạn. Ví dụ. Nếu bạn muốn mô phỏng chuyển động của tất cả các ngôi sao trong dải Ngân hà, với thuyết tương đối rộng, nhưng không có siêu tân tinh và các hiệu ứng rời rạc khác ... Nó khá rõ ràng cách lan truyền trên 1536 (và nhiều hơn nữa). Nhưng nếu bạn muốn có một ngọn núi cứng nhắc, mô phỏng các trò chơi tương tự như vậy hiện tại, bạn đang ở ngoài may mắn

0

Thư viện động lực multibody được sử dụng cho các mô phỏng phân tử chứa hàng nghìn phân tử (cơ thể cứng nhắc) . Xem GIF tại kho lưu trữ GitHub của Simbody: http://github.com/simbody/simbody.

Thư viện cũng được sử dụng rất nhiều bởi cộng đồng cơ sinh học để mô phỏng chuyển động của con người. Trong trường hợp này, con người được mô hình hóa như một hệ thống các cơ thể cứng nhắc.

Nếu bạn đang tìm kiếm thư viện khoa học, thì bạn nên xem Simbody. Tuy nhiên, nó đã không được sử dụng trên bộ xử lý tế bào PS3 hoặc lõi CUDA.