Salut les développeurs
J'ai un petite question concernant la parallélisation du déterminant d'une matrice
Le programme est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
 
#define SWAP(a,b){temps=a;a=b;b=temps;}
 
const int MAX = 100;
int n;
using namespace std;
int R[MAX];
double a[MAX][MAX];
double determinant(int);
 
void begin(){
    int i,j;
    cout<<"Entrez la dimension de la matrice "<<endl;
    cin>>n;
    for(i=0;i<n;i++)
    {
        R[i]=i;
        for(j=0;j<n;j++){
            cout<<"Entrez la valeur de a["<<i<<"]["<<j<<"]"<<endl;
            cin>>a[i][j];
        }
    }
}
 
int main(){
    begin();
    cout<<"le déterminant de la matrice est: "<<determinant(0) <<endl;
    return 0;
}
 
double determinant(int p){
    int i,temps;
    double sum=0;
    if(p==n-2){
        sum=a[n-2][R[n-2]]*a[n-1][R[n-1]]- a[n-2][R[n-1]]*a[n-1][R[n-2]];
    }
    else{
        //Le début de code?
        for(i=p;i<n;i++){
            if(i!=p){
                SWAP(R[p],R[i]);
                sum-=a[p][R[p]]* determinant (p+1);
                SWAP(R[p],R[i]);
            }
            else
                sum+=a[p][R[p]]* determinant (p+1);
        }
        //La fin de code?
    }
    return sum;
}
est-ce que je peut définir la partie parallélisé dans l'anti-slash ??
Et est-ce que le temps d'exécution sera : tps/p^n, avec le p le nombre de processeur et tps le temps d'exécution dans le cas normal (non parallélisé) ???
Merci d'avance