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 

Code 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 21 Fév - 18:14 (2013)    Sujet du message: Code Spoc Répondre en citant

Devices:
* Pour ne récupérer que les devices OpenCL ou que Cuda voir Chat Cinquième réunion.

Bon usage:
* Il faut d'abord mettre device.init puis Vector.create sinon risque de bug.

ID Thread:
* get_global_id dans fichier .cl pour récupérer ID du thread.

Float:
* float64 lourd mais précis, float32 rapide moins précis mais pas besoin d'utiliser fonction "float32_of_float" (fonction intermédiaire SPOC). Float simple précision écire 0.0f.

Divers:

* Cuda compile pas à l’exécution (.ptx).


Revenir en haut
Publicité






MessagePosté le: Jeu 21 Fév - 18:14 (2013)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
sam
Administrateur

Hors ligne

Inscrit le: 15 Jan 2013
Messages: 83

MessagePosté le: Jeu 21 Fév - 18:34 (2013)    Sujet du message: Code Spoc Répondre en citant

1) Récupérer tableaux avec unités de calculs (possible supprimer Opencl ou Cuda de la recherche) :

 
Code:

let devices = Spoc.Devices.init ();;
let dev2 = ref devices.(0);;
let dev1 = ref devices.(1);;
let auto_transfers = ref true;; [b]//Appliqué les changements il me semble[/b]


2) Inclure fonction à lancer par thread :

 
Code:

kernel maFonctionOCAML : Spoc.Vector.vfloat32 -> float/int -> ... -> float/int -> unit
          = "Dossier_ou_je_stock_mes_kernels/maFonctionKERNEL" "maFonctionKERNEL
 


3) Initialisation Vecteur de données :

 
Code:

monVecteurSpoc.[<0>] <- 0.0f;
monVecteurSpoc.[<1>] <- 0.0f;
monVecteurSpoc.[<2>] <- 0.0f;
monVecteurSpoc.[<3>] <- 0.0f;
monVecteurSpoc.[<4>] <- 0.0f;
... etc (boucle) 



4) Configurer Cube Memoire (je l'apelle comme ca...pas encore bien compris):
 
 
Code:

     let threadsPerBlock = (*nbre threads*)
    match (!dev1).Devices.specific_info with
    | Devices.OpenCLInfo clI ->
      (
        match clI.Devices.device_type with
        | Devices.CL_DEVICE_TYPE_CPU -> 1
        | _  ->   256
      )
    | _  -> 256
      in
      let blocksPerGrid = (*nbre blocks/grille*)
    (!largeur* !hauteur + threadsPerBlock -1) / threadsPerBlock in
      let block = (*block sur ligne*)
    {Spoc.Kernel.blockX = threadsPerBlock;
     Spoc.Kernel.blockY = 1;
     Spoc.Kernel.blockZ = 1}
      and grid=  (*grille sur ligne ligne*)
    {Spoc.Kernel.gridX = blocksPerGrid;
     Spoc.Kernel.gridY = 1;
     Spoc.Kernel.gridZ = 1}      



5) Compiler fonction du kernel :
     
 
Code:

maFonctionOCAML#compile ~debug:true !dev1; 



6) Executer programme du kernel :
     
 
Code:

 maFonctionOCAML#run (monVecteur, arg1, ..., argN) (block, grid) 0 !dev1; 



7) Accéder au Vecteur de données :


 
Code:

var1 := monVecteur.[<0>];
var2 := monVecteur.[<1>];
var3 := monVecteur.[<2>];
var4 := monVecteur.[<3>];
... 



Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 18:20 (2018)    Sujet du message: Code 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