-
Data: 2013-12-01 17:44:56
Temat: Re: Algorytmy gier na procesory wielordzeniowe - jak?
Od: Robert Winkler <n...@n...org> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 2013-12-01 11:42, Ghost pisze:
>
> Użytkownik "Robert Winkler" <n...@n...org> napisał w wiadomości
> news:529b0ec5$0$2169$65785112@news.neostrada.pl...
>> W dniu 2013-11-24 09:58, Marcin N pisze:
>>> Mamy nowe konsole i coraz więcej procesorów 6-8 rdzeniowych.
>>>
>>> Jak tworzy się algorytmy gier, które potrafią ogarnąć tyle rdzeni?
>>> Nie potrafię sobie tego wyobrazić. Powiedzcie w skrócie, jaką drogą idą
>>> te algorytmy.
>>>
>>>
>>
>> Jeśli dla ciebie 8 rdzeni to dużo to co powiesz
>> ma produkt firmy Adapteva.
>> Obecnie pzryjmują zamówienia na swój produkt o nazwie Epiphany-IV,
>> jest to moduł obliczeniowy stworzony na bazie procesora
>> posiadającego 64 niezależne rdzenie typu RISC,
>> każdy wykonujący swój własny kod.
>> Ich celem jest przygotowanie do roku 2018 procesora
>> posiadającego 64 tyś. rdzeni.
>> Czy im się uda, zobaczymy już za kilka lat.
>>
>>
>> Jeśli chodzi o zwykłe komputery PC, poczytaj sobie o OpenMP dostępnym
>> obecnie w wiekszości kompilatorów C++.
>> Z mojego podwórka mogę ci podrzucić Task Parallel Library (TPL)
>> które jakiś czas temu weszło w skład .NET Framework
>> http://msdn.microsoft.com/en-us/library/dd537608%28v
=vs.110%29.aspx
>
> Czytja ze zrozuminiem. Pytanie dotyczylo rdzeni na potrzeby gier (i to
> niegraficznych rdzeni).
Po pierwsze OpenMP to co innego niż OpenCL.
OpenMP pozwala co za pomocą "#pragma" określasz przykładowo,
że kod danej pętli ma zostać zrównoleglony automatycznie
przez kompilator i runtime.
Dotyczy to oczywiście kodu CPU a nie GPU.
O ile zapewni się synchronizacje przy dostępie do współdzielonych danych
można ten mechanizm z powodzeniem użyć do detekcji kolizji,
lub obliczania fizyki, czy też AI postaci.
We wszystkich przypadkach pracujemy przecież na listach obiektów
i pętlach kolejno je przetwarzających.
Piszesz wieć:
#pragma omp parallel for
for (int x = 0; x < imageWidth; x++) {
for (int y = 0; y < imageHeight; y++) {
Color shadedColor = shootRay(x,y);
image.SetPixel(x, y, shadedColor);
}
}
i masz zrównoleglony kod, podzielony na wątki,
a kod znajdujący się za pętlą zostanie uruchomiony
kiedy wszystkie wątki skończą już prace.
/Robert
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- Przenosiny systemu
- soft dla detekcji stanu DMA (on,czy off)
- jak w chrome (forku chrome) wyznaczyc katalog profilu w dowolnym miejscu?
- Dziwnie padający Seagate
- Kwestia UPSa i elektryki tegoż
- Drukowanie bezprzewodowe - jaki interface ?
- Libre Office Krok Po Kroku - Komentarz
- Dysk startowy z dosem - ktokolwiek widział, ktokolwiek zna?
- Sprzedawanie zaszyfrowanych filmów na płytach Blu-Ray bez kluczy deszyfrujących
- Re: Drugi ekran na Androidzie
- Vmware update
- Access point na zewnątrz
- dodanie karty graf zawiesza komp
- Jak wybrać laptopa?
- Router i USENET
Najnowsze wątki
- 2024-11-25 Karty przedpłacone (podarunkowe) Google Play - pytanie do korzystających
- 2024-11-26 wina Tóska
- 2024-11-26 Rewolucja/Rewelacja!
- 2024-11-25 grupa ożyła ;)
- 2024-11-24 Być jak Clint
- 2024-11-24 Rura kanalizacja konceptu Franke = problem
- 2024-11-25 Wrocław => Lead Java EE Developer <=
- 2024-11-25 Warszawa => Business Development Manager - Network and Network Securit
- 2024-11-25 Kraków => Programista Full Stack (.Net Core) <=
- 2024-11-25 Lublin => Senior PHP Developer <=
- 2024-11-25 Karlino => Konsultant wewnętrzny SAP (FI/CO) <=
- 2024-11-25 Warszawa => ECM Specialist / Consultant <=
- 2024-11-25 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-11-25 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2024-11-25 Lublin => Inżynier Serwisu Sprzętu Medycznego <=