Symulator EU07 (i nie tylko) > Poszukuję, chcę zrobić
Optymalizacja symulatora
panthero:
Ok, w końcu znów siedzę przed komputerem, bo wracałem do domu z Opola - swoją drogą - 3 x Kiblem podróż czasem może być męcząca, a czasem fascynująca - dziś to drugie, ale do rzeczy.
Tak pobieżnie czytam te Wasze posty i przyznaję, że nie ogarniam całego forum - jeśli wcześniej się podobny temat postu do mojego pojawił, to przepraszam za powtórzenie. Sedno całej sprawy - z mojego punktu widzenia jest takie - nie neguję tego, że symulator jest optymalnie napisany:
--- Cytat: youBy w 17 Kwietnia 2008, 19:58:19 ---
--- Cytat: queuedEU w 17 Kwietnia 2008, 19:50:27 ---Witam, i jednoczenie nie rospisujac sie o zawilosci i balaganie w kodzie zaproponuje funkcje Ground.Update(dt, n);, ale jako ze to jest zbyt obszerne to moze cos innego... uno momento ...
--- Koniec cytatu ---
To akurat jest dosyć dobrze zrobiona funkcja jednak :)
--- Koniec cytatu ---
Po prostu - w Delphi pisze od kilku lat, funkcje "inline" asemblera też już pisałem - teraz na studiach zabrałem sie ostro za "myślenie" w asemblerze z dobrym efektem, więc pomyślałem, że mogę jakoś się Wam przydać. Przyznam się na przykład, że też próbowałem (na projekt) zrobić grę w OpenGL(Tetris) ale jakoś to zarzuciłem, zaliczyłem czym innym - jednak pojęcie o tym pewne mam - ale mnie najbardziej chodzi o doraźne przepisanie metod typowo obliczeniowych - koprocesor, liczby nawet z precyzją większą niż double (tbyte) to wszystko potrafię wykorzystać - instrukcję typu MMX i SEE też można wykorzystać. Ogólnie temat rzeka. Naprawdę chce też coś dać od siebie - kabin ani modeli nie zrobię bo grafik ze mnie marny, ale programowaniem mogę pomć.
Ra:
Myślę, że potencjał może być w wykorzystaniu równoczesnego (równoległego?) mnożenia liczb zmiennoprzecinkowych...
panthero:
--- Cytat: Ra w 17 Kwietnia 2008, 23:14:15 ---Myślę, że potencjał może być w wykorzystaniu równoczesnego (równoległego?) mnożenia liczb zmiennoprzecinkowych...
--- Koniec cytatu ---
A to m. in. można właśnie uzyskać na określonych instrukcjach SSE - http://pl.wikipedia.org/wiki/Streaming_SIMD_Extensions
Wszystkie nowsze procesory - od Pentium III wzwyż to posiadają, więc można tą technologię wykorzystać. Jednym słowem - wiem, że w OpenGL np. w określaniu współrzędnych wykorzystuje się typ Single. Rejestr XMM w SSE może jednocześnie przeprowadzić CZTERY równoległe operacje mnożenia na tym typie. Możliwości są - nie można ich nie wykorzystać. Ja proponuję coś takiego - napiszę sobie np. w Delphi jakiś program, który będzie wykonywał jakieś złożone obliczeniowo operacje. I zrobię go w dwóch lub trzech wersjach - pierwsza "normalna" tj. bez wstawek asemblerowych, druga - wstawki asemblera, ale tylko z wykorzystaniem FPU i trzecia - wstawki asemblera z wykorzystaniem MMX/SSE. Następnie przesłałbym to chętnym developerom, a oni mogliby wyrazić swoje zdanie i odrzucić lub ewentualnie zaaprobować mój pomysł.
Winger:
Mi sie pomysl podoba, tymbardziej iz to wlasnie liczenie fizyki jest najwiekszym obciazeniem starego projektu. Jesli mozna to uproscic/zoptymalizowac, to czemu nie?
Ktokolwiek ma najnowsza wersje kodu, niech ja koledze Panthero udostepni.
youBy:
150 FPS w Mocznikach mam, gdy renderuje się tylko kabina; Normalnie w granicach 15 - 30, a
maksimum wyciągane na moim sprzęcie to jakieś 350-400 FPS. Jak widać to rendering daje ostro po czasie przetwarzania.
(Dane zostały zebrane przypadkowo podczas testów funkcji - wynik negatywny).
A najbardziej aktualne źródła ma chyba @KURS90.
Nawigacja
[#] Następna strona
Idź do wersji pełnej