Monthly Archives: February 2013

Udacity Introduction to Parallel Programming CS344 VS 2012 Solution

I’m currently folowing the great Udacity lessons about parallel programming and CUDA.

I made a Visual Studio 2012 solution to do some quick test for the assignement and I was thinking that it could be usefull to someone, so I put it on GitHub. I’ll try to update it for each lessons.

You can find it there.

Before being able to launch it you may need to do some steps.

First, you need to download openCV and unzip it to C:/Program Files/opencv, or change the directory accordingly in the “VC++ Directories” of the projet properties. Of course, you also need the CUDA SDK.

You also may need to change the Build Customizations in the Visual Studio solution. Right click on the project and select Buil Customization. If you don’t see a CUDA configuration file, click on “Find existing” and add the CUDA target files located at “C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations”

Right click on the .cu file, and make sure that the Item Type is set to “CUDA C/C++”

Hope it helps, and let me know if there is any trouble.

Particles – Collision and Flow Maps

Un nouveau post sur les particules pour présenter deux features, les collisions et l’utilisation de flow maps.

Tout d’abord les collisions avec une petite vidéo:

 

 

Ces particules sont ce que l’on appelle statefull, ce qui signifie qu’elles conservent leur état précédent, et peuvent l’utiliser pour réagir en fonction de l’environnement.
Cela me permet de leur appliquer une physique rudimentaire (la gravité et l’attraction par exemple), et de réagir aux collisions avec les bords de l’écran. Mais cela permet aussi de réagir avec un environnement potentiellement dynamique. J’utilise une texture de collision. Pour chaque particule, je regarde si à sa nouvelle position se trouve une information dans cette texture. Si c’est le cas il y a une collision et la particule réagis en conséquence.
Ici j’écris du texte dans la texture de collision, mais cela peut être n’importe quoi, et peut même être dynamique.

La vidéo suivante montre l’utilisation de flow map pour diriger simultanément toutes les particules:

 

 

J’ai tout d’abord utilisé Flow Map Painter pour créer la flow map, qui est en fait un ensemble de vecteurs.

 

Flow Map Painter

 

Cette map étant créé, je l’utilise dans la passe de physique pour influencer la direction des particules. Cela permet de coordonner facilement le mouvement d’un million de particules.