Witam,
Chciałbym napisać aplikacje, która będzie dość optymalnie wykorzystywała procesory <ort>kilku rdzeniowe</ort>.
Sam podział na wątki/procesy nie gwarantuje że będą one rozdzielone na różne rdzenie.
Możecie mi podać jak tego dokonać - jakie języki programowania , jakie metody (interesuje mnie zarówna system windows jak i linux/unix).
Możecie polecić jakąś literature?
Poszperaj tutaj:
http://software.intel.com/en-us/articles/getting-started-with-parallel-programming-for-multi-core
http://software.intel.com/en-us/forums/
Jeżeli znasz sie na programowaniu wielowątkowym, to tam masz kilka wskazówek związanych z wykorzystaniem wielu rdzeni
Dla Windows:
SetProcessAffinityMask, SetThreadAffinityMask - przydzielisz nimi proces/wątek na konkretne procesory logiczne.
Numery dostępnych procesorów odczytasz funkcją GetProcessAffinityMask.
a coś pod linuxa?
Wątki w systemie Linux
pod linuxem dzisiaj w "linux magazine" czytalem jest biblioteka OpenMP do wielordzeniowych prockow. Rzeczywiscie jest tam prosty podzial zadan :D
OpenMP jest również dla Win. Visual C++ ładnie go wspiera (http://msdn.microsoft.com/en-us/library/tt15eb9t.aspx).
adf88 napisał(a)
OpenMP jest również dla Win. Visual C++ ładnie go wspiera (http://msdn.microsoft.com/en-us/library/tt15eb9t.aspx).
niestety express - przynajmniej w wersji 2005 nie wspiera :-( tj. nie ma dll w instalacji, a dociągniecie ich z wersji standard/pro pewnie inelegalne.
W takim razie możesz ręcznie obsługiwać wątki. Jest to bardziej pracochłonne niż użycie dyrektyw OpenMP. Windows powinien umożliwić korzystanie z pthread (czyli sposób ktory poleciła osoba dając link do wątków w linux).
Pozdrawiam
skalniak
Jest jeszcze MPI i pewnie wiele innych.
jeszcze cos takiego jak POSIX jest...
Johny_Morfina napisał(a)
jeszcze cos takiego jak POSIX jest...
Czyli pthread (wcześniej proponowane) ( pthreads jest ze standardu POSIX).
Pozdrawiam
skalniak