pstlspoc Index du Forum

pstlspoc
SPOC

 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Extension de la bibliothèque SPOC

 
Poster un nouveau sujet   Répondre au sujet    pstlspoc Index du Forum -> pstlspoc -> pstlspoc
Sujet précédent :: Sujet suivant  
Auteur Message
sam
Administrateur

Hors ligne

Inscrit le: 15 Jan 2013
Messages: 83

MessagePosté le: Jeu 17 Jan - 17:00 (2013)    Sujet du message: Extension de la bibliothèque SPOC Répondre en citant

Description générale
Les processeurs graphiques (GPU) ont considérablement évolué ces dernières années. D’outils dédiés à la visualisation, ils sont désormais devenus des accélérateurs de calcul programmables. Dans ce cadre, des environnements de développement sont proposés afin de permettre l’écriture de programmes de plus en plus généralistes. Actuellement, les deux principaux environnements sont Cuda et OpenCL. Ils sont fournis avec des bibliothèques de bas niveau pour les langages C et C++. Pour aider les programmeurs, des bibliothèques de plus haut niveau ont vu le jour. Nous avons développé une bibliothèque pour la programmation GPGPU (General Purpose GPU) dédiée au langage de programmation OCaml dans le cadre du projet OpenGPU.
SPOC consiste en une extension à OCaml associée à une bibliothèque d’exécution. L’extension permet la déclaration de noyaux GPGPU externes utilisables depuis un programme OCaml, tandis que la bibliothèque permet de manipuler ces noyaux ainsi que les données nécessaires à leur exécution. SPOC offre, de plus, une abstraction supplémentaire en unifiant les deux environnements de développement GPGPU en une même bibliothèque. Enfin, SPOC abstrait les transferts mémoires via l’utilisation de jeux de données spécifiques.
Dans ce projet on cherche à enrichir cette bibliothèque pour pouvoir traiter des structures de données plus complexes que des vecteurs de type primitif. On pourra s’inspirer de travaux issus du monde Haskell (voir références).
Travail à réaliser
La bibliothèque SPOC permet de travailler sur des données plus complexes que les vecteurs de types primitifs numériques. Il faut néanmoins écrire les fonctions de codage et décodage de ces données, ainsi que les kernels permettant de les manipuler du coté GPU. On s’intéressera à des structures de données plus symboliques (listes d’association, arbres, ...) et aux opérations les manipulant. Il est alors demandé de :
  • définir de nouvelles structures de données manipulables par des kernels GPU
  • d’écrire ces kernels GPU
  • d’effectuer des mesures de performances en comparant des versions CPU, multi-coeur et GPU

Liens  :


Revenir en haut
Publicité






MessagePosté le: Jeu 17 Jan - 17:00 (2013)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Mathias


Hors ligne

Inscrit le: 23 Jan 2013
Messages: 57

MessagePosté le: Mer 23 Jan - 11:18 (2013)    Sujet du message: Extension de la bibliothèque SPOC Répondre en citant

Des liens en plus qui peuvent servir : 
https://developer.nvidia.com/blog?term=2


Et en particulier :
https://developer.nvidia.com/content/thinking-parallel-part-i-collision-detection-gpu
https://developer.nvidia.com/content/thinking-parallel-part-ii-tree-traversal-gpu
https://developer.nvidia.com/content/thinking-parallel-part-iii-tree-construction-gpu


qui présentent des travaux sur des arbres sur GPU (attention c'est du cuda et le cas d'utilisation n'est pas forcément 100% comparable a ce que l'on attends)


Revenir en haut
Junt


Hors ligne

Inscrit le: 23 Jan 2013
Messages: 13

MessagePosté le: Jeu 28 Mar - 13:14 (2013)    Sujet du message: Extension de la bibliothèque SPOC Répondre en citant

Bonjour,

On a normalement une réunion skype dans 2h, j'en profite pour vous envoyé un petit pdf qui sera intégrer au rapport final du projet je pense.
Si vous avez le temps de le lire et me dire ce que vous en pensez avant la réunion, et bien, c'est cool =).

A tout à l'heure.


Revenir en haut
Junt


Hors ligne

Inscrit le: 23 Jan 2013
Messages: 13

MessagePosté le: Jeu 28 Mar - 13:16 (2013)    Sujet du message: Extension de la bibliothèque SPOC Répondre en citant

https://dl.dropbox.com/u/81076192/SPOC_Structure_Avancee.pdf

Revenir en haut
Mathias


Hors ligne

Inscrit le: 23 Jan 2013
Messages: 57

MessagePosté le: Jeu 28 Mar - 13:22 (2013)    Sujet du message: Extension de la bibliothèque SPOC Répondre en citant

Ça marche, on en discute tout à l'heure.

Revenir en haut
Junt


Hors ligne

Inscrit le: 23 Jan 2013
Messages: 13

MessagePosté le: Lun 1 Avr - 22:24 (2013)    Sujet du message: Extension de la bibliothèque SPOC Répondre en citant

Après réflexion j'ai une question:
La méthode de SPOC Spoc.Vector.create Spoc.Vector.float64(!vec_size), est ce que derrière cette méthode c'est du code C qui crée le tableau de float64? Car si je ne me trompe pas, le variable en Ocaml ne sont pas représenter de la même manière que en C dans la mémoire, notamment à cause du bit dans la variable utilisé pour le Cargabe Collector de Ocaml.

Après de nouvelle réflexion, voilà ce que j'ai à proposé pour un couple en SPOC:

En Ocaml, on a les types simples bool, int, float, char et string. On avait dit qu'on oublie les string et les bool et char sont considéré comme des int en C. Il y a donc 2 types de valeur en C dans le couple, int et float. Sauf erreur de ma part, un int en Ocaml est un int en C et non pas un long et un float en Ocaml est un float en C et non un double.

Ce qui nous donne les structures suivantes:

union val
{
  int asInt;
  float asFloat;
};

struct couple
{
  union val val1;
  union val val2;
};

Le problème avec ces structures, c'est qu'une fois dans le code du kernel, on a aucun moyen de savoir si c'est un int ou un float.
La solution que je proposerai serai qu'on sacrifie un bit dans val pour definir si c'est un int ou un float, car de toute manière, en Ocaml on sacrifie un bit pour le Garbage Colector.

Dite moi si je ne suis pas assez clair.


Revenir en haut
Junt


Hors ligne

Inscrit le: 23 Jan 2013
Messages: 13

MessagePosté le: Mer 1 Mai - 13:02 (2013)    Sujet du message: Extension de la bibliothèque SPOC Répondre en citant

Bonjour Mathias,

Je vous ai envoyé quelque mail concernant une erreur OpenCL, et après quelque test et recherche, j'ai vu que l'erreur provenait de la lib SPOC, plus exactement dans le fichier Mem_c.c du repertoire Spoc à la ligne 427 sur la fonction spoc_opencl_alloc_vect.
Je pense que c'est du au fait que j'ai changer la signature de certaine fonction qui n'est plus compatible avec cette fonction, dans l’immédiat je ne trouve pas de solution, je m'en remet donc à vous.


Revenir en haut
Junt


Hors ligne

Inscrit le: 23 Jan 2013
Messages: 13

MessagePosté le: Jeu 9 Mai - 16:56 (2013)    Sujet du message: Extension de la bibliothèque SPOC Répondre en citant

Bonjour, je viens de terminer le code pour trouver les nombres premiers via un tableau.
Et le résultat est que le code C est généralement 3 fois plus rapide que la version spoc sur un tableau de taille 102400.
256 threadperblock and 400 blockpergrid pour la configuration du GPU.
Je vous envois le code par mail.


Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 13:46 (2018)    Sujet du message: Extension de la bibliothèque SPOC

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    pstlspoc Index du Forum -> pstlspoc -> pstlspoc Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  

Index | Panneau d’administration | creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com