Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/05/2017, à 14:03

Nuliel

calcul parallèle

Bonjour,

Ma question est assez particulière: j'ai fait un petit algorithme qui teste si un nombre N est un carré parfait (si sa racine est un entier naturel). Pour cela, je fais quelques tests du genre "est ce que le nombre finit par un 6?". Le truc, c'est que je teste pas un nombre mais vraiment BEAUCOUP de nombres (pas moyen de faire autrement). Ceci m'a donc amené à m'intéresser au calcul parallèle. Dans mon cas, je ne fais presque pas de calcul, c'est principalement des tests comme celui du dessus.

1) J'aimerais savoir si c'est possible par exemple de faire le test "est ce que le nombre finit par un 6?" sur beaucoup de nombres en même temps
2) j'ai vu que le gpu peut faire du calcul parallèle, ma carte graphique est une amd radeon r5 m330 (pc portable). J'ai aussi vu les fpga, mais je suis pas sûr d'avoir compris l'intérêt. Lequel est le plus adapté dans mon cas?
3) bien évidemment, il faudrait que la solution puisse tourner sur linux smile

Je précise que je n'ai jamais fait de calcul parallèle auparavant.

En vous remerciant par avance,
ublender

Dernière modification par Nuliel (Le 17/05/2017, à 14:05)

Hors ligne

#2 Le 18/05/2017, à 08:37

Arbiel

Re : calcul parallèle

Bonjour

Pour rechercher si un nombre est un carré, tu peux en prendre le logarithme, le diviser par 2, lever la base du logarithme à la puissance de ce dernier nombre et vérifier si le nombre entier le plus proche du résultat élevé au carré est égal au nombre initial.

Je n'ai jamais fait de calcul parallèle.

Arbiel


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#3 Le 18/05/2017, à 13:57

Nuliel

Re : calcul parallèle

Merci d'avoir répondu,

La méthode que j'ai adopté pour savoir si un nombre est un carré, c'est dans un premier temps de considérer le dernier chiffre afin d'éliminer par exemple les nombres qui finissent par 2, puis ensuite j'utilise la méthode de Héron (ça permet d'approcher la racine carrée d'un nombre assez rapidement) et tester les deux entiers les plus proches de la racine (c'est à dire la partie entière et la partie entière +1). Je sais pas trop comment on fait pour calculer le logarithme de grands nombres (mis à part se ramener à ln(1+x) pour développer en série entière, je sais pas trop), je sais que la méthode de Héron (c'est un cas particulier de la méthode de Newton) est assez rapide (convergence quadratique).

Le fait de savoir si un nombre est un carré n'est pas forcément mon plus gros problème (je me débrouille mieux en maths qu'en informatique, heureusement parce que je fais des études de maths smile ).
Ma question c'est plutôt: ma carte graphique est elle adaptée pour faire ce genre de choses (surtout la partie des tests), est ce qu'un fpga est adapté pour ça, est ce qu'on peut coder ça sur linux, avec quel langage et quel fpga choisir pour débuter si le fpga est plus adapté que ma carte graphique?

Hors ligne

#4 Le 18/05/2017, à 19:25

grigouille

Re : calcul parallèle

ublender a écrit :

dans un premier temps de considérer le dernier chiffre afin d'éliminer par exemple les nombres qui finissent par 2

Simple question par curiosité : que vient faire la base 10 dans ton problème ? Pourquoi pas une autre base (2, 8, 16, 256, 49, ...) ?


Debian (xfce) 12
HP LaserJet M1132 MFP

Hors ligne

#5 Le 18/05/2017, à 22:36

Nuliel

Re : calcul parallèle

J'ai pris la base 10 parce que c'est celle que j'utilise tout le temps -> ceci n'est pas une bonne raison smile

Hors ligne

#6 Le 19/05/2017, à 12:23

jamesbad000

Re : calcul parallèle

Bonjour.

le paquet opencl dispo dans les dépots ubuntu fournis les bibliothèques nécessaire pour utiliser les gpu et autres type de processeurs.

Ca marche avec des cartes nvidia et radeon récentes (Il faudrait vérifier si ta carte est compatible openCl)
Après, moi je n'ai fait qu'exploiter un outil qui l'utilise. Coder soit même des fonctions avec ça doit surement demander un investissement conséquent.

Comme base de départ il y a https://en.wikipedia.org/wiki/OpenCL

Edit: Attention, l'installation du paquet openCl risque d'entrainer l'installation du driver propriétaire le plus récent pour la carte graphique (avec carte nvidia. Pour les radeon, je ne sais pas...). Ce qui n'est pas forcément souhaitable si celui si ne correspond pas au driver "recommandé" tel qu'indiqué par la commande

sudo ubuntu-drivers devices 

(vérifier les paquets dépendant qui seront affichés lors de apt-get install opencl)

Dernière modification par jamesbad000 (Le 19/05/2017, à 12:53)


L'espace et le temps sont les modes par lesquels nous pensons, et non les conditions dans lesquelles nous vivons. (Signé Albert)

Hors ligne

#7 Le 19/05/2017, à 13:52

Nuliel

Re : calcul parallèle

Merci de m'avoir répondu,
Ma carte est compatible opencl1.2.
Merci pour le lien, l'exemple de produit matrice vecteur va m'être utile.

Je crois pas qu'il y ait de pilotes propriétaires pour ma carte graphique, le choix de driver est assez rapide smile

Hors ligne