Módosítások

Intel Xeon Phi

1 133 bájt hozzáadva, 2016. május 2., 15:56
Offload + OpenMP
====Offload + OpenMP====
Amennyiben nem csak 1 processzort szeretnénk használni a Phi kártyánkon és az alkalmazásunkban használt számítás megengedi a párhuzamosítást, akkor az OpenMP segítségével párhuzamosíthatjuk a megfelelő számítást.
Példánk maradjon ugyanúgy a mátrix-vektor szorzás. Amennyiben a teljes kártya adta kapacitást ki szeretnénk használni, akkor az OMP threadek számát 240-re kell beállítani. Azért nem 244-re, mivel 1 CPU-t dedikáltan csak a kommunikációra használ a rendszer és 1 CPU 4 hardver threaddel rendelkezik.
Ekkor a példánk így változik:
<pre>
#include <omp.h>
 
#pragma offload_attribute(push, target(mic))
void multiply(int n, int m, double* A, double* b, double* c){
const int nCPUs = omp_get_max_threads(); //240
omp_set_num_threads(nCPUs);
#pragma omp parallel for schedule(dynamic, 1)
for ( int i = 0 ; i < m ; i++)
for ( int j = 0 ; j < n ; j++)
c[i] += A[i*n+j] * b[j];
}
#pragma offload_attribute(pop)
 
int main(){
double * A = (double*) malloc(sizeof(double)*n*m);
...
#pragma offload target(mic) in(A:length(n*m))
multiply(n, m, A, b, c);
</pre>
==Alkalmazások optimalizálása a kártyára==
98
szerkesztés

Navigációs menü