Programowanie w systemie UNIX/CPU: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
literówki, interpunkcja, drobne formatowanie
Linia 13:
 
===procesor===
Sprawdzamy ile rdzeni (wątków) ma procesor :<ref>[http://www.linux-mag.com/id/4609/ OpenMP in 30 Minutes By Joe Landman]</ref>
 
grep 'processor.*:' /proc/cpuinfo | wc -l
Linia 20:
===kompilator===
 
W konsoli sprawdzamy wersję :<ref>[https://gcc.gnu.org/wiki/openmp gcc wiki : openmp]</ref>
 
gcc --version ## get compiler version
Linia 27:
echo |cpp -fopenmp -dM |grep -i open
 
przykładowy wynik :
 
#define _OPENMP 201307
Linia 35:
* libgomp (GNU Offloading and Multi Processing Runtime Library)<ref>[https://gcc.gnu.org/onlinedocs/libgomp/ libgomp]</ref>
 
Wyszukujemy pakiety ( uwaga na openmpi - to inna biblioteka )
 
sudo apt-cache search openmp
Linia 41:
 
 
Stan biblioteki :
 
Stan biblioteki :
 
dpkg --status libgomp1
 
wyniki :
<pre>
Package: libgomp1
Linia 68 ⟶ 67:
 
 
lub :
 
ldconfig -p | grep gomp
 
przykładowy wynik :
 
libgomp.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libgomp.so.1
Linia 78 ⟶ 77:
==Instalacja==
 
nieNie instalujemy biblioteki, ponieważ OpenMP jest to opcja kompilatora<ref>[http://askubuntu.com/questions/144352/how-can-i-install-openmp-in-ubuntu askubuntu question how-can-i-install-openmp-in-ubuntu]</ref>
 
ale :
 
apt-get install libgomp1
Linia 86 ⟶ 85:
 
==użycie ==
Użycie OpenMP<ref>[[w:OpenMP|OpenMP w wikipedii]]</ref><ref>[http://www.linux-mag.com/id/4609/ OpenMP in 30 Minutes By Joe Landman]</ref> polega na dodaniu do istniejącego kodu ( tu przykład z kodem w C ) :
* [[C/Preprocesor#Dyrektywy_preprocesora|dyrektywy preprocesora]]: <code>#include <omp.h></code>
* Tworzenie wątków za pomocą dyrektywy : <code>#pragma omp parallel</code>
* kompilacji z dodaną opcję : <code>-fopenmp</code><ref>[http://openmp.org/wp/openmp-compilers/ OpenMP - kompilatory]</ref>
 
Ta niewielka ingerencja w istniejący kod<ref>[http://www.cmmsigma.eu/labs/parallel_comp/openmp_tutorial/index.pl.html Kurs openMP - Paweł Przybyłowicz - asystent na Wydziale Matematyki Stosowanej AGH.]</ref> pozwala na przyspieszenie wykonywania ''n''-razy ( na''n'' jest liczbą możliwych wątków = liczba rdzeni * liczba wątków_na_rdzeń ).
 
==Przykłady==
Linia 152 ⟶ 151:
 
</source>
==BlędyBłędy==
Najczęstsze błędy<ref>[http://www.viva64.com/en/a/0054/ 32 OpenMP Traps For C++ Developers 20.11.2009 by Alexey Kolosov, Andrey Karpov, Evgeniy Ryzhkov]</ref><ref>[http://www.michaelsuess.net/publications/suess_leopold_common_mistakes_06.pdf Common Mistakes in OpenMP and How To Avoid Them A Collection of Best Practices by Michael Suß and Claudia Leopold]</ref>
==Poradniki==
* [http://bisqwit.iki.fi/story/howto/openmp/ Guide into OpenMP: Easy multithreading programming for C++ . By Joel Yliluoma, ]
* [https://www.youtube.com/watch?v=Y34jGSIb1yQ Fractal - Mandelbrot Set using OpenGL C++ OpenMP video by Marek Bruchatý ]
 
=Źródła=