[avis] nVidia CUDA pour la bioinformatique

1er
OP
Axilatis

Axilatis

Elite
merci pour ces infos mais l'école n'a pas le budget pour du FPGA lol, loin de la ! XD

en effet je me penche d'abord sur l'intégration de l'algorithme en CUDA, j'ai déjà trouvé des implémentations, mais apparemment il faut les adapter au modèle de GPU...
 

Le_Pev

Elite
C'est pour Tesla, tu sais combien ca coute un GPU Tesla? :proud:
This algorithm has been fully tested on Tesla C1060, Tesla C2050, GeForce GTX 280 and GTX 295 graphics cards, and has been incorporated to NVIDIA Tesla Bio Workbench.
 
1er
OP
Axilatis

Axilatis

Elite
D'apres ce que je vois, c'est LE truc dans ton domaine, et il y a du lourd et gratuit qui existe

http://ugene.unipro.ru/

Edit : http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2323659/

http://bioinformatics.cribi.unipd.it/cuda/swcuda.html

Oui je suis également tombé sur ces articles ! :)

En réalité, étant donné que l'algorithme de Smith-Watermann envisage toutes les possibilité, c'est extremement lourd en terme de "computing", et l'échelle de temps explose très vite. Pour contourner ça on utilise des algorithmes heuristiques, c'est à dire qu'on n'obtient pas la solution optimale, mais une solution très bonne en gagnant un temps fou.

Et avec des moyens comme CUDA, la parallélisation, le calcul distribué, les FPGA (que je ne connaissais pas la), des serveurs à 192Go de RAM, les clusters, et le GPGPU, on essaye de voir si on peut, de manière optimale, arriver à faire ça dans des échelles de temps acceptables ^^

Donc oui, en effet, c'est LE sujet à la mode dans la bioinformatique.

Mais ça s'applique aussi à la modélisation structurelle (quel atome va où dans une structure linéaire qui doit se replier ?), et à la modélisation de systèmes (quel entité fait quoi ? meurt, bouge, se reproduit, mute, ...).

Merci à tous en tout cas pour vous intéresser à ce topic, je ne pensais pas avoir tant de réponses car c'est un sujet qui n'est pas connu en général ^^)

Ca fait plaisir !!! :D:-D

J'en parle à mon prof demain, je donnerai également la config précise des PC de l'école et je me penche sur UGENE car ça me semble la manière la plus facile d'y arriver :)
 
1er
OP
Axilatis

Axilatis

Elite
NB : pour ceux qui se le demande, pourquoi on utilise des cartes graphiques professionnelles genre "Quattro" ou "Tesla" au lieu des GPU gamers plus puissants genre "GTX590" : c'est pck qd une GTX se trompe sur un pixel (il ne s'affiche pas ou donne une couleur erronnée) le gamer ne le verra pas. Les Tesla et autres Quattro ne peuvent pas se tromper car la moindre erreur fausserait toute la démarche de calcul et donc le résultat final !
(Arguement donné par nVidia lui-meme, mais je ne trouve plus où j'ai lu ça)
 

Le_Pev

Elite
J'ai jeté un oeil sur la doc de ugene. Page 153 tu trouveras ton bonheur ;)
C'est pas un petit projet open source vite fait. C'est propre, la doc est propre.
En gros "ugene" gère le matériel et les interfaces et distribue le calcul. Les plug in in et out font juste ce que leur nom indique :)
J'ai déjà test des programmes bien plus inutiles. Ce soir j'essaye.
 
1er
OP
Axilatis

Axilatis

Elite
Tu veux dire quoi par "j'ai déjà test des programmes bien plus inutiles" ?

Merci de t'intéresser autant à ce topic ! Tu es dans le domaine de la bioinfo ??
 

Le_Pev

Elite
Tu veux dire quoi par "j'ai déjà test des programmes bien plus inutiles" ?
Que ça ne va me servir a rien directement, donc on pourrait dire que c'est inutile.
Il est meme probable que je n'y pige rien.
Mais je suis curieux.

Merci de t'intéresser autant à ce topic ! Tu es dans le domaine de la bioinfo ??
Pas du tout. Et je vais meme t'avouer qu'avant ton post je ne savais meme pas que ça existait en tant que discipline à part entière. Je voyais plutot les biologistes d'un coté qui demandait au dévellopeurs d'un autre coté.

Mais on te demande quoi exactement ? De "dévelloper" un outil ou de te démerder pour que le job soit fait en utilisant les outils disponibles. Ou un entre les deux ou tu utiliserais des outils modifiés.
 

Le_Pev

Elite
Ugene utilise Blast aussi. En fait il y a plus que simplement les plug-in. En prenant le package complet il y a plein de programmes externes, dont blast.
 
1er
OP
Axilatis

Axilatis

Elite
Blast est la version heuristique la plus répandue pour les alignements de séquences ^^
Oui en effet il existe toute une flopée de logiciels et autres petits scripts pour manipuler des séquences, c'est vraiment incroyable ! (il suffit d'aller voir le logiciel galaxy, ou encore emboss, ou ebiokit, etc. NB : ce sont tous des interfaces graphiques un peu moches et il est bien plus marrant de faire ça à la commande sous linux, soyons clairs ^^).

J'ai DL & installé UGENE (full package) sur mon Windows hier pour voir et tester sur ma nVidia 230M, il suffit dans le programme ugene de cocher la case "CUDA" mais lorsque je run un alignement c'est mon cpu qui travaille et pas mon gpu.
Pourtant mon GPU est à jour...
Il faut surement un genre de plugin CUDA à installer séparément mais y'en a tellement chez nvidia que je sais pas lequel prendre... -_-"

Sinon je peux utiliser ce que je veux, si ça existe déjà tant mieux, si ça existe je peu l'adapter, ou essayer de l'optimiser pour mon cas, ou je peux tout coder mais honnetement je suis plus un scripteur qu'un programmeur ^^)
 

Le_Pev

Elite


Regarde a 1min35 si tu as bien choisis l'algo cuda
 

Le_Pev

Elite
Ugene c'est peace of cake à installer. Meme si t'y piges kedal. Un peu comme Seti finalement.
Des cartes Nvidia et des machines de ouf sur gamerz c'est pas ce qui manque.
Le jours de ta présentation tu utilises les machines de ceux qui veulent aidé. Et tu kill le score de noob de ton prof mouhahahahah
I'm in.
 
1er
OP
Axilatis

Axilatis

Elite
oui j'ai vu que c'etait super facile à installer : next, next, next, done. \o/ lol
pour l'instant je suis entrain de mettre en place mon serveur et mon client SOAP,
en gros c'est du python avec le module soap importé.

la stratégie c'est :
- chaque client a la base de données de protéines en local.
- chacune des 6000 protéines a son propre ID
- le serveur donne a chaque client une 100ène d'ID a aligner
- le client aligne et retourne les scores (ex: ID1 vs ID2 = 58points) (c'est donc très léger pour le réseau)
- un client doit faire une demande par laps de 2min, histoire de ne pas devoir pinger le serveur trop souvent, il va être sur les genoux sinon.
- un client doit demander le serveur maximum 1x/2min, un petit script tournera donc en local afin d'estimer (en fonction de la puissance du pc client) combien d'alignements il doit demander pour arriver à 2min (en gros).
- le serveur doit biensur garder les résultats (en cas de coupure de courant, il doit savoir ce qui a déjà été fait, et ce qu'il reste à faire ^^)

bref il n'y a pas beaucoup de difficulté dans chaque problème pris séparément, mais après il faut tout mettre dans le meme script

et surement faire un script d'installation du client sur chaque machine également, lol ^^

Merci pour tes infos sur UGENE ! :D
 

Le_Pev

Elite
- un client doit faire une demande par laps de 2min, histoire de ne pas devoir pinger le serveur trop souvent, il va être sur les genoux sinon.
- un client doit demander le serveur maximum 1x/2min, un petit script tournera donc en local afin d'estimer (en fonction de la puissance du pc client) combien d'alignements il doit demander pour arriver à 2min (en gros).
J'aime pas trop cette partie. Tu vas induire de la latence. J'essayerai d'abord sans, pour voir si effectivement ton serveur ne suit pas, ce qui m'étonnerait vu le matos que tu utilises.
 

titoum

OPTC:970342646
yep, surtout si tu envoie que des petite sequences... ca doit pas tellement le ralentir. De plus, tu es dans un system que tu controle entierement (labo) donc bon...pas de risque de latence
 
1er
OP
Axilatis

Axilatis

Elite
en réalité je n'envoi meme pas les séquences.

Chaque client possède la banque complète de protéines en local.
chaque protéine possède un ID unique (of course) et le serveur n'envoit au client qu'une paire d'ID à aligner.

Disons, par exemple :

prot_001 prot_002
 

Le_Pev

Elite
en réalité je n'envoi meme pas les séquences.

Chaque client possède la banque complète de protéines en local.
chaque protéine possède un ID unique (of course) et le serveur n'envoit au client qu'une paire d'ID à aligner.

Disons, par exemple :

prot_001 prot_002
Raison de plus

Edit: Et pourquoi ne pas faire ça en une fois. Tu sais combien de machine tu as et tu sais combien de paire a comparer. Et de ce que tu dis tu dois toutes les comparer.
 

titoum

OPTC:970342646
yep,

si possible tu fais un hash de tes seq et tu les envoi au x nbr de pc. si les pc ont des puissances +/- equivalente.

sinon tu commence le push par les plus lents :)
 
Haut