IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Optimiser un noyau


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    isty
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : isty
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Par défaut Optimiser un noyau
    Bonjour,

    Quelqu’un peut m'aider pour optimiser ce noyau avec :
    1) Les directives OpenMP pour paralléliser le noyau.
    2) Les intrinsics pour écrire/optimiser le code, voir modifiez directement l'assembleur.

    Voila le noyau :
    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
     
    void kernel (int n, double a[n], double b[n], double c[n])
    {
    	int i, j;
    	for (j=0;j<n;j++)
    	{
    		for(i=0;i<n;i++)
    		{
    			c[i]+=b[n-1-i];
    			if (i<j)
    			{
    				c[i]+=a[j];
    			}
    		}
    	}
    }
    Merci d'avance.



    Cordialement.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Je vois ce post-ci...

    Puis, je vois ce post-...

    Et, d'un coup, je ne me dis pas du tout qu'en fait, tu veux que l'on fasse tes exercices de cours C à ta place.. !

  3. #3
    Membre actif
    Homme Profil pro
    isty
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : isty
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Par défaut Optimisation en C
    C'est pas ça, en fait j'ai réussi à faire la première partie avec l'aide des membres de forum, maintenant, j'ai besoin d'aides sur la deuxième partie (qui est plus compliquée que l'autre) !!

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Deuxième partie de quoi?

  5. #5
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Si ce n'est pas ça, c'est quoi ?

    Les forums sont là pour fournir de l'aide, mais c'est contre notre philosophie de faire ton travail à ta place. Ta demande est tellement vaste qu'elle s'apparente à "faites mon travail". Montre-nous ce que tu as déjà fait, explique nous sur quels points tu bloques ou tu doutes, et là on pourra t'apporter une aide précise et utile.

  6. #6
    Membre actif
    Homme Profil pro
    isty
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : isty
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Par défaut Optimisation en C
    J'ai fait des efforts (des recherches bien évidement)

    Pour faire la parallélisation il faut en fait que le "n" soit supérieur à 100 miles, et si c'est le cas faut que je fais : pragma OpenMP parallel for sur la première boucle

    et sinon pour optimisation final j'ai fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    a_cumul=j=0; 
    for (i=n-1;i>0;i--) { 
     a_cumul+=a[i]; 
     c[i]=a_cumul+n*b[j++]; 
    } 
    c[0]=n*b[j];
    et du coup je passe de N carré à N (coté complexité).

  7. #7
    Membre Expert
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Par défaut
    Bonjour,

    Il y a la première optimisation de Foetus dans l'autre discussion.

    On peut également réécrire le code ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    pour j de 0 à n-1    // boucle 1
      pour i de 0 à n-1    // boucle 1.1
        c[i] += b[n-1-i]
      pour i de 0 à j-1    // boucle 1.2
        c[i] += a[j]
    La boucle 1.1 est exécutée n fois et ne dépend pas de j dans les calculs. On peut donc la sortir de la boucle 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    pour i de 0 à n-1    // boucle 0
      c[i] += n * b[n-1-i]
    pour j de 0 à n-1    // boucle 1
      pour i de 0 à j-1    // boucle 1.1
        c[i] += a[j]
    La boucle 0 est facilement paraléllisable. Vois-tu comment réduire les boucles 1 et 1.1 ? combien de fois ajoute-t-on a[j] à tous les c[i] ? Fais quelques essais à la main ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Optimisation de votre SGBDR et de vos requêtes...
    Par SQLpro dans le forum Langage SQL
    Réponses: 35
    Dernier message: 11/01/2013, 11h49
  2. [VB6] [BDD] Optimisation de l'accès aux données
    Par LadyArwen dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 30/01/2003, 13h27
  3. [langage]Problème de temps de lecture, optimisation
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 08/01/2003, 08h47
  4. Primitive du noyau
    Par freud dans le forum Programmation d'OS
    Réponses: 5
    Dernier message: 25/11/2002, 03h17
  5. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 10h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo