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 

Intéropérabilité SPOC - OpenGL
Aller à la page: <  1, 2, 3, 4, 5, 6, 7, 8  >
 
Poster un nouveau sujet   Répondre au sujet    pstlspoc Index du Forum -> pstlspoc -> pstlspoc
Sujet précédent :: Sujet suivant  
Auteur Message
Mathias


Hors ligne

Inscrit le: 23 Jan 2013
Messages: 57

MessagePosté le: Mer 20 Fév - 23:39 (2013)    Sujet du message: Intéropérabilité SPOC - OpenGL Répondre en citant

blocs et grid définissent le nombre de kernels qui vont s’exécuter en parallèle sur le GPU.
Attention, les erreurs GPU sont parfois (souvent) trompeuses. Regardez l'erreur que vous avez en passant par Cuda (ça peut donner une piste).


Revenir en haut
Publicité






MessagePosté le: Mer 20 Fév - 23:39 (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: Lun 25 Fév - 22:33 (2013)    Sujet du message: Intéropérabilité SPOC - OpenGL Répondre en citant

J'ai modifier mon exemple de la sphère conformément aux suggestions de Jeudi dernier:

Avant:
Un thread calculait tout les points.

Maintenant:
V3.0 Sphère paresseuse http://www.sendspace.com/file/4dohlc (toujouts pas fonctionnel à 100%)
le kernel contient le code pour le calcule d'un seul point, en prenant en compte l'idée d'exploiter get_global_id(0).


Malheureusement j'ai toujours un problème avec le nombre de threads à lancé (grid/block).

PS: dans kernels,  dossier testKernel pour faire un petit test du kernel par rapport aux supposées erreurs de segmentations.


Revenir en haut
sam
Administrateur

Hors ligne

Inscrit le: 15 Jan 2013
Messages: 83

MessagePosté le: Jeu 28 Fév - 14:48 (2013)    Sujet du message: Intéropérabilité SPOC - OpenGL Répondre en citant

Sphère V4.0: http://www.sendspace.com/file/qy2iuv
- Bug compilation résolu.
- Modification Code kernel (gama, teta et gama incr).
- Modification habillage (couleur, position sphere...).
- Ajout commande clavier augmenter détail.

Problème calcul sphère GPU incr supérieur à 1.



Revenir en haut
sam
Administrateur

Hors ligne

Inscrit le: 15 Jan 2013
Messages: 83

MessagePosté le: Jeu 28 Fév - 17:56 (2013)    Sujet du message: Intéropérabilité SPOC - OpenGL Répondre en citant

Du coté Spoc:
J'ai ajouté Cl_Gl_Sharing.c Cl_Gl_Sharing.ml (contient juste fonction print hello world)



et makefile:

Citation:
ligne 17
...

CSRC = cuda_drvapi_dynlink.c Spoc_c.c Cl_Gl_Sharing.c Mem_c.c Kernel_cuda.c Kernel_opencl.c Spoc_cu.c Opencl_dynlink.c Custom.c
...
ligne 63
...

Cl_Gl_Sharing.cmi: Cl_Gl_Sharing.mli
...
à partir de ligne 122
...

#%%%%%%%%%%%%%%





#Cl_Gl_Sharing.ml
Cl_Gl_Sharing.cmx: Vector.cmx Cuda.cmx OpenCL.cmx Devices.cmx Cl_Gl_Sharing.cmi Cl_Gl_Sharing.ml
    $(CAMLOPT) -for-pack Spoc -c Cl_Gl_Sharing.ml

Cl_Gl_Sharing.cmo: Vector.cmo Cuda.cmo OpenCL.cmo Devices.cmo Cl_Gl_Sharing.cmi Cl_Gl_Sharing.ml
    $(CAMLC) -for-pack Spoc  -c Cl_Gl_Sharing.ml






#%%%%%%%%%%%%%%
...
ligne 194

...

#Spoc
Spoc.cmx: Cl_Gl_Sharing.cmx Devices.cmx Mem.cmx Vector.cmx Kernel.cmx  Kernel.cmx Tools.cmx
    $(CAMLOPT) -pack Cl_Gl_Sharing.cmx Cuda.cmx OpenCL.cmx Devices.cmx Vector.cmx Mem.cmx Kernel.cmx Tools.cmx -o Spoc.cmx

Spoc.cmo: Cl_Gl_Sharing.cmo Devices.cmo Mem.cmo Vector.cmo Kernel.cmo Tools.cmo 
    $(CAMLC) -pack Cl_Gl_Sharing.cmo Cuda.cmo OpenCL.cmo Devices.cmo Vector.cmo  Mem.cmo Kernel.cmo Tools.cmo -o Spoc.cmo
...



voila l'erreur à la compilation:



Code:
/usr/local/lib/ocaml/../../bin/ocamlmktop  /usr/local/lib/ocaml/dynlink.cma -I +camlp4 camlp4o.cma -I extension  kernels_ext.cmo bigarray.cma str.cma  spoc.cma -I . -cclib -lspoc  -custom -o spoclevel
/tmp/ccEVnGHg.o:camlprim70dc9e.c:function caml_builtin_cprim: error: undefined reference to 'spoc_clCreateFromGLBuffer'
collect2: erreur: ld a retourné 1 code d'état d'exécution
File "_none_", line 1:
Error: Error while building custom runtime system
make: *** [spoclevel] Erreur 2





dans Samples/src dossier HelloWorld:
helloworld.ml ne fait que lancer spoc_clCreateFromGLBuffer ();

et forcément marche pas...


Code:
/usr/local/lib/ocaml/../../bin/ocamlopt  -I "+glMLite" GL.cmxa Glu.cmxa Glut.cmxa vertArray.cmxa VBO.cmxa -pp  "/usr/local/lib/ocaml/../../bin/camlp4of -I /usr/local/lib/ocaml/spoc  kernels_ext.cmo" str.cmxa bigarray.cmxa unix.cmxa graphics.cmxa   -I  /usr/local/lib/ocaml/spoc -cclib -lpthread -cclib -lbigarray -cclib  -lunix -g spoc.cmxa -c helloworld.ml 
File "helloworld.ml", line 6, characters 0-25:
Error: Unbound value spoc_clCreateFromGLBuffer
make: *** [helloworld.cmx] Erreur 2
 







Archive light (SPOC modifications, mettre dans SPOC + helloworld sample, mettre dans Sample/src)

http://www.sendspace.com/file/rrjevf



Archive avec tout (Spoc original + mes fichiers, lourd):

http://www.sendspace.com/file/ao6bxe


Revenir en haut
sam
Administrateur

Hors ligne

Inscrit le: 15 Jan 2013
Messages: 83

MessagePosté le: Jeu 28 Fév - 17:57 (2013)    Sujet du message: Intéropérabilité SPOC - OpenGL Répondre en citant

J'arrive à calculer le FPS et à l'afficher sur terminal...reste plus qu'à l'afficher sur l'image.

Revenir en haut
Mathias


Hors ligne

Inscrit le: 23 Jan 2013
Messages: 57

MessagePosté le: Jeu 28 Fév - 17:59 (2013)    Sujet du message: Intéropérabilité SPOC - OpenGL Répondre en citant

première chose, il ne faut pas appeler les fichiers pareils en c et ml, du genre fichier.c fichier.ml ça ne marche pas je vous conseille fichier_c.c 

Revenir en haut
Mathias


Hors ligne

Inscrit le: 23 Jan 2013
Messages: 57

MessagePosté le: Jeu 28 Fév - 18:14 (2013)    Sujet du message: Intéropérabilité SPOC - OpenGL Répondre en citant

Regardez le mail que je vous ai envoyé. Essayer de corriger vous-même en faisant une bibliothèque séparée de SPOC. Si vous n'y arrivez toujours pas, renvoyer moi un message et je regarderai plus en détail.

Revenir en haut
sam
Administrateur

Hors ligne

Inscrit le: 15 Jan 2013
Messages: 83

MessagePosté le: Jeu 28 Fév - 18:19 (2013)    Sujet du message: Intéropérabilité SPOC - OpenGL Répondre en citant

D'accord, merci.

Revenir en haut
sam
Administrateur

Hors ligne

Inscrit le: 15 Jan 2013
Messages: 83

MessagePosté le: Dim 3 Mar - 23:25 (2013)    Sujet du message: Intéropérabilité SPOC - OpenGL Répondre en citant




Sphère Paresseuse V5.0:
http://www.sendspace.com/file/srda00


Problème calcul sphères bizarres :
- Le problème de calcul en mode GPU est réglé.
Cependant la sphère va moins vite en GPU qu'en CPU...(pb réglages grid/block?)

Affiche FPS :
- Je calcul et affiche correctement le FPS sur terminal.
Cependant pour l'afficher du texte il faut compiler correctement le module Ftgl.
Mon code ftgl (en commentaire) fonctionne j'en suis sûr, mais cela ne compile pas ...libftgl.a ??....wrap.ftgl??.
Il manque qq chose au Makefile en plus de ftgl.cma ftgl.cmxa

Switch Cuda / OpenCL au clavier :
- 'o' OpenCL
- 'g' Cuda
- 'c' CPU
Cependant bug avec OpenCL (réglages Grid/Block???)


Revenir en haut
sam
Administrateur

Hors ligne

Inscrit le: 15 Jan 2013
Messages: 83

MessagePosté le: Dim 3 Mar - 23:27 (2013)    Sujet du message: Intéropérabilité SPOC - OpenGL Répondre en citant

J'ai cherché à terminer cet exemple pour qu'il soit plus fonctionnel qu'avant, je ne me suis pas encore penché sur mon problème de makfile (interop).
Je vais regardé le makfile de Kirk.


Revenir en haut
Mathias


Hors ligne

Inscrit le: 23 Jan 2013
Messages: 57

MessagePosté le: Lun 4 Mar - 08:30 (2013)    Sujet du message: Intéropérabilité SPOC - OpenGL Répondre en citant

J'ai testé la version 5. Chez moi, ça va un poil plus vite sur GPU que sur CPU mais c'est vraiment pas grand chose. Je pense que le vecteur de points est très grand et que le temps de transfert est très important pour assez peu de calculs au final sur le GPU. On pourrait tneter d'optimiser cet exemple mais je pense qu'il vaut mieux passer a l'interop. En enlevant completement les transferts on devrait gagner beaucoup en performances.
Sinon pour faire fonctionner FTGL il faut reotucher ua makefile et mettre :


MLCLIBS = -cclib -lbigarray -cclib -lunix  -cclib /usr/lib/libftgl.a -cclib -lfreetype


au lieu de 


MLCLIBS = -cclib -lbigarray -cclib -lunix




Revenir en haut
sam
Administrateur

Hors ligne

Inscrit le: 15 Jan 2013
Messages: 83

MessagePosté le: Mar 5 Mar - 01:18 (2013)    Sujet du message: Intéropérabilité SPOC - OpenGL Répondre en citant

Sphere paresseuse sans interop:
La FTGL fonctionne bien avec cette ligne. merci.
Je posterais la version 6.0 sur le gestionnaire de version.
Donc avec affichage FPS en plus.
Cependant il y a un bug avec OpenCL (touche 'o')...


Sphere paresseuse avec interop:
J'ai beaucoup de difficulté avec la compilation.
Citation:

ocamlopt -pp "camlp4of -I /usr/local/lib/ocaml/spoc kernels_ext.cmo" str.cmxa bigarray.cmxa   -verbose  -I /usr/local/lib/ocaml/spoc -cclib -lpthread -I /usr/local/cuda/lib64 -cclib -lcudart -cclib -lunix -cclib -lbigarray -cclib Spoc_sharing.o -g spoc.cmxa spoc_sharing.cmxa -c helloworld.ml 
+ camlp4of -I /usr/local/lib/ocaml/spoc kernels_ext.cmo 'helloworld.ml' > /tmp/ocamlppc2847b
+ as -o 'helloworld.o' '/tmp/camlasm151e8f.s'
ocamlopt  -pp "camlp4of -I /usr/local/lib/ocaml/spoc kernels_ext.cmo" str.cmxa bigarray.cmxa   -verbose -I /usr/local/lib/ocaml/spoc -cclib -lpthread -I /usr/local/cuda/lib64 -cclib -lcudart -cclib -lunix -g -cclib -lbigarray -cclib Spoc_sharing.o spoc.cmxa spoc_sharing.cmxa unix.cmxa helloworld.cmx   -o helloworld.nat
+ as -o '/tmp/camlstartupdaea3d.o' '/tmp/camlstartup43f967.s'
+ gcc -o 'helloworld.nat'   '-L/usr/local/lib/ocaml/spoc' '-L/usr/local/cuda/lib64' '-L/usr/local/lib/ocaml'  '/tmp/camlstartupdaea3d.o' '/usr/local/lib/ocaml/std_exit.o' 'helloworld.o' '/usr/local/lib/ocaml/unix.a' 'spoc_sharing.a' '/usr/local/lib/ocaml/spoc/spoc.a' '/usr/local/lib/ocaml/bigarray.a' '/usr/local/lib/ocaml/str.a' '/usr/local/lib/ocaml/stdlib.a' '-lunix' '-lspoc_sharing' '-lspoc' '-lbigarray' '-lcamlstr' '-lpthread' '-lcudart' '-lunix' '-lbigarray' 'Spoc_sharing.o' '/usr/local/lib/ocaml/libasmrun.a' -lm  -ldl
/usr/bin/ld: error: cannot find -lspoc_sharing
collect2: erreur: ld a retourné 1 code d'état d'exécution
File "caml_startup", line 1:
Error: Error during linking
make: *** [helloworld.nat] Erreur 2
rm helloworld.cmx
Je me suis inspiré du makefile de cublas. La compilation de mon ML + WRAP.C passe, mais pas mon Sample HelloWorld.
Suis-je obligé d'installer ma propre lib?

Cl_Gl_Sharing:
http://www.sendspace.com/file/5xynit


Revenir en haut
Mathias


Hors ligne

Inscrit le: 23 Jan 2013
Messages: 57

MessagePosté le: Mar 5 Mar - 09:48 (2013)    Sujet du message: Intéropérabilité SPOC - OpenGL Répondre en citant

Il faut dire au compilateur ou trouver libspoc_sharing, soit en l'installant quelque part de connu soit en utilisant -I /chemin/vers/la/lib  .
C'est ce que fait -I /usr/local/lib/ocaml/spoc qui dans le Makefile doit ressembler a -I $(SPOCPATH) ou qqch dans le genre


Revenir en haut
sam
Administrateur

Hors ligne

Inscrit le: 15 Jan 2013
Messages: 83

MessagePosté le: Mer 6 Mar - 02:47 (2013)    Sujet du message: Intéropérabilité SPOC - OpenGL Répondre en citant

Effectivement, cette ligne avec ma lib de sharing fonctionne, donc:
- Je compile bien ma LIB
- et dans le helloworld.ml "open Sharing" pose plus de problème à la compilation.
 
Code:
open Spoc
open Sharing

spoc_clCreate... ()
;;


Cependant j'obtient tout de même une erreur:
Citation:

Error: Unbound value spoc_clCreateFromGLBuffer
make: *** [helloworld.cmx] Erreur 2


Cl_Gl_Sharing:
http://www.sendspace.com/file/0tfyef


Revenir en haut
Mathias


Hors ligne

Inscrit le: 23 Jan 2013
Messages: 57

MessagePosté le: Jeu 7 Mar - 08:32 (2013)    Sujet du message: Intéropérabilité SPOC - OpenGL Répondre en citant

2 choses:
d'abord
Code:
 external clCreateFromGLBuffer : unit -> unit = "spoc_clCreateFromGLBuffer" 


indique que le fonction caml  clCreateFromGLBuffer utilise l'external c  spoc_clCreateFromGLBuffer.
Du coup dans votre code caml il faut utiliser   clCreateFromGLBuffer et pas spoc_clCreateFromGLBuffer


ensuite, dans votre Makefile il risque de manquer la liaison avec la library c  pour spoc_sharing:
Code:
MLCLIBS = -cclib -lbigarray -I $(SHARINGPATH) -cclib -lspoc_sharing


au lieu de 
Code:
MLCLIBS = -cclib -lbigarray -I $(SHARINGPATH) -cclib -lspoc_sharing





Code:
$ ./helloworld.nat
Hello world!



Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 17:56 (2018)    Sujet du message: Intéropérabilité SPOC - OpenGL

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
Aller à la page: <  1, 2, 3, 4, 5, 6, 7, 8  >
Page 2 sur 8

 
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