Protein Design by High Performance GPU-Computing

Yidaki

Lt. Commander
Registriert
Sep. 2003
Beiträge
1.433
Grüße euch,


Ich studiere Molekulare Biologie und komme bald Richtung Diplomarbeit. Spezialisiert habe ich mich auf Genetik, Biochemie und Strukturbiologie.


Diese Workstation sollte von mir als Zukunftsprojekt angesehn werden. Universitäten investieren schonmal Geld in die Forschung hier in Wien, vor allem wenn es sich um gute Projekte handelt.


Mein Vorhaben ist es, Proteininteraktionen zu analysieren (auf 3D-Ebene [graphische Leistung] und 2D Sequenzvergleiche/Analysen [system-lastig).


Die Hardware wäre wie folgt:

1x EVGA Classified SR-2, i5520 (dual Sockel-1366, triple PC3-10667R reg ECC DDR3)
2x Intel Xeon DP X5680, 6x 3.33GHz, Sockel-1366, boxed
2x Kingston ValueRAM DIMM Kit 24GB PC3-10667R reg ECC CL9 (DDR3-1333) 3x 8GB Module • dual rank • x4 • 1.5V • Intel verifiziert
4x PNY Quadro 6000, 6144MB GDDR5
1x Plextor PX-B940SA Bluray-Brenner
1x Enermax Revolution85+ 1250W ATX 2.3


Bei storage bin ich mir noch nicht sicher. Entweder Intel X25-E als Systemplatte und 4x2GB WD RE4 im RAID5, denn ich weiß nicht, ob bei Quad-SLI dann noch ein NAS-RAID-Controller reinpasst? Hier bräuchte ich Hilfe/Erfahrungsberichte.

Gekühl wird das ganze mit Wasser, sowohl Mainboard [NB, SB, mosfets], als auch CPU, Grafikkarten (hier eine weitere Frage: haben die Quadros ein anderes PCB-Design als die GTX Reihe? Denn dann ginge Wasser nicht ... oder ich bräuchte eine Spezialanfertigung) und HDDs.

Nun habe ich noch ein paar fragen, da ich mich Software-technisch nicht wirklich gut auskenne (in solchen Dingen eben).

Ist es prinzipiell möglich, die GPU Rechenleistung gut auf solche Strukturanalysen zu programmieren? An Programme wie folding@home denk ich jetzt nicht wirklich, sondern ein interaktives Programm wie pymol.


Danke
 
Ich denke an deiner Stelle würde ich da ganz gezielt auf OpenCL oder Cuda abzielen und nicht versuchen auf eigene Faust die Graka zum Arbeiten zu bewegen. Ich bezweifle, dass sich hier viele Cuda-Programmierer herum treiben, da das schon ein sehr sehr spezieller Bereich ist.
 
Hi,

mit einigen Dingen, die du ansprichst kenne ich mich nicht aus. Allerdings hab ich ein Jahr lang an der Uni Stuttgart als GPU Programmierer (CUDA) gearbeitet. Grundsätzlich gibts für alles, mit dem ich zu tun hatte (vor allem Lineare Algebra) auch gute parallel Algorithmen. Allerdings ist GPU Programmierung immer noch sehr viel zeitaufwändiger als das ganze auf der CPU zu machen. Das eigentlich Problem ist, dass die Algorithmen immer speziell auf die jeweilige GPU-Serie zugeschnitten werden müssen. Aus diesem Grund kann ich zu deiner doch irgendwie recht allgemeinen Beschreibung nur ziemlich ungenaues sagen...

Gruß,
misu

Edit: das vllt wichtigste hatte ich vergessen, die Performance ist schon genial, hab auf meiner GTX470 erst letzte Woche zum Spaß einen n-Damen Algorithmus parallelisiert, der etwa 6x schneller ist als eine optimierte Quad-Core Variante (Q6700). Und in diesem Fall ist die Optimierung noch nicht einmal abgeschlossen...

Edit2: Ach ja, und mit Multi-GPU hast du dann quasi einen Cluster in einem PC-Gehäuse :) Stell ich mir stressig zu programmieren vor :)
 
Zuletzt bearbeitet:
Hat sich CUDA noch nicht mal für Nvidia als standardisierte Sprache heraus entwickelt? Vielleicht kannst du mit OpenCL etwas kompatibleres entwickeln, da immerhin alle kommenden Grafikkarten das unterstützen sollten.
 
So grob hochgerechnet willst du 20.000€ für dein vorhaben investieren. Erwartest du jetzt das du für dein Projekt Geld von der Uni investiert bekommst oder zahlst du das, allein für deine Diplomarbeit aus eigener Tasche?:rolleyes:
 
Ja solche Projekte giebt es schon Folding @Home und noch ein Paar andere. Ich würde auf Cuda setzen ( sind auch die meisten Projekte (Protinfaltung usw). Um richtig Gas zu geben were eine Quadro nicht die richtige wahl sondern eine Tesla zb. C2050 oder größer.
Schau dir auch mal das Projekt QMC @Home der Unni Münster oder GPUGrid der Unni Bacelona meine ich. Rechne schon soo 2,5 Jahre bei diesen Projekten mit.
Mach ein Boinc Projekt raus dann bekomste die Rechenleistung ma eben nebenbei ;)


MfG
 
Zuletzt bearbeitet:
In Österreich bekommt man für so was Forschungsgelder...
 
Also ich würde da in Richtung Server Hardware gehen... 4 CPU x 8 Cores x 2 Theads reißen da auch schon ne Menge... ausserdem sparst du dir die komplizierte GPU Geschichte.

Zur jetzigen Konfig, Warum nen Blueray Brenner? Zum DVD lesen reicht nen DVD LW und für die entstehenden Datenmengen wird ne Blueray vermutlich nicht reichen. Spart zwar kaum Geld, aber ich verstehe den Sinn nicht so ganz ;)
 
paul1508 schrieb:
Ich denke an deiner Stelle würde ich da ganz gezielt auf OpenCL oder Cuda abzielen.


Das hatte ich auch vor. Da dann aber dann doch eher CUDA.


misu schrieb:
Hi,

mit einigen Dingen, die du ansprichst kenne ich mich nicht aus. Allerdings hab ich ein Jahr lang an der Uni Stuttgart als GPU Programmierer (CUDA) gearbeitet. Grundsätzlich gibts für alles, mit dem ich zu tun hatte (vor allem Lineare Algebra) auch gute parallel Algorithmen. Allerdings ist GPU Programmierung immer noch sehr viel zeitaufwändiger als das ganze auf der CPU zu machen.

Es gibt interessante Programme, siehe: http://www.nvidia.com/object/cuda_a...Open;aid=95ffb1e0-35c7-11de-8a39-0800200c9a66

Die Poisson-Boltzmann Gleichung sollte ein allgemein guter Standard sein. Vl lassen sich open source algorithmen noch modifizieren/ergänzen. Wär doch was. Geht sowas?
 
Mhh, klingt zwar gut, aber da sich das ganze auf der Nvidia Seite befindet und keine Sourcen dabei sind, wäre ich zunächst mal etwas verhalten optimistisch. 39x Speedup ist schön, aber ehrlich gesagt halte ich 10x (oder auch weniger) eher realistisch. Nvidia Partner haben teilweise noch ganz andere Informationen als nicht-Nvidia Partner (z.B. Matrizenmultiplikationen von einem Herr Volkov in den CUDA Foren).

Ansonsten kannst du sehr viel Zeit sparen, falls du Libraries von Nvidia einsetzen kannst, d.h. cuBLAS und cuFFT.
Da ich mich mit Molekularbiologie nicht auskenne, weiß ich nicht, ob da schon passende Open Source Libs existieren.
 
Yidaki schrieb:
Universitäten investieren schonmal Geld in die Forschung hier in Wien, vor allem wenn es sich um gute Projekte handelt.

Irgendwie kommt mir unsere Bildungs- bzw. Forschungspolitik nicht so vor als würde da Geld investiert werden.
Dein Projekt muss da schon sehr außergewöhnlich sein.
(Damit möchte ich nicht dein Projekt schlecht machen sondern den Frust über unsere Politik ausdrücken)
 
Zuletzt bearbeitet: (könnte falsch verstanden werden)
Ich hab ja auch noch nicht behauptet, dass ich diesbezüglich schon viel gemacht habe. Ich bin lediglich am Infos sammeln. Hab auch schon an das Department ein Mail geschrieben, mal abwarten wie die Reaktionen sind.

Aber eine Tesla 2050/2070 erscheint doch sinnvoller als die Quadro 6000
 
Ich bin selber gerade dabei eine Diplomarbeit zu tippen. Ich weiß jetzt nicht wie deine Studienordnung aussieht, aber ich vermute mal das du ein halbes Jahr dafür Zeit hast. Ich habe ein ganzes, und selbst dieses ganze Jahr ist erschreckend wenig. Genaugenommen 6Monate mal 4 Wochen = 24 Wochen(grobe Näherung :D)
Wenn ich das richtig verstehe sollen in diesem halben Jahr folgende Dinge passieren:
  1. Du möchtest einen PC zusammenbauen und alle Software zum laufen bekommen, das ist das schnellste [1 Woche]
  2. Dann möchtest du dich in die CUDA-Programierung einarbeiten. Ich hoffe mal das du mit "normaler" Programmierung sehr gut vertraut bist, weil wenn nicht würde das ja auch noch dazukommen. [8 Wochen]
  3. Ein komplett neues Programm zu einem Thema schreiben, in dem du bei google vermutlich zwecks Programmierung nicht viel Hilfe bekommen wirst, für eine Hardware bei der es mit der Hilfe nicht viel besser aussehen wird. [noch mal 8 Wochen bis es läuft]
  4. Dann in dem Programme ein bisschen was simulieren [3 Wochen]
  5. Die Rohdaten auswerten und aufbereiten[2 Wochen]
  6. Eine erste Fassung deiner Arbeit schreiben [4 Wochen, dann wärst aber sehr flink, und bist trotzdem schon über die 24 hinaus]
  7. Sie jemanden geben der sie ließt [1 Woche]
  8. Deine Arbeit nochmal komplett überarbeiten(zumindest ist das eher die Regel als die Ausnahme)[2 Wochen]
  9. Pünktlich abgeben
  10. Und nicht zu vergessen, schlafen, essen, mal saubermachen, ab und an mal auf Party gehen und vielleicht auch mal Freundin, Mutti, Oma besuchen
Ich will dir jetzt nicht den Mut nehmen, aber für mich klingt das ein klitzekleinesbisschen unrealistisch. Weil es dauert immer ALLES vieeeel länger als man vorher denkt.

Hast du jetzt einfach mal so ein PC zusammengestellt, oder hast du schon mal grob abgeschätzt[Matrizengröße, Iterationen ...] wie viel Leistung du wirklich benötigst. Und wie das Verhältnis von Investition in GPU zu Zeitersparnis in etwa sein wird.

Lass dich nicht entmutigen :)
 
Kallisto,

nur weil ich geschrieben habe, dass ich bald Richtung Diplomarbeit zusteuere, heißt doch nicht, dass ich das komplette Programm in einem halben Jahr (meinstens ists aber ein Jahr hab ich mir sagen lassen) durchziehen will. Als Diplomarbeit könnte man durchaus die Inbetriebnahme des Systems, allgemeine Grundlagen schaffen und teils verwirklichen. Also hier ist es auch so, dass eine Diplomarbeit nicht zangsmäßig zu Ende geführt werden muss, man kann auch ohne wirklichem Ergebnis "fertig werden". Man wirkt eben an einem Projekt mit, arbeitet gewisse Dinge aus.

Dies soll ja später auch meine Berufsbahn werden, wenn alles klappen sollte. Das heißt, dass ich dafür nicht nur ein paar Monate oder Jahre brauche. Die DNA wurde auch nicht von heute auf morgen "entdeckt" und auf molekularer Basis erklärt. Watson und Crick hatten zuerst auch die Annahme, die DNA Doppelhelix sei mit den Basen nach Außen. Im original paper wurden sowohl zwischen A und T als auch zwischen G und C nur 2 Wasserstoff-Brücken vermutet, die dritte bei C-G wurde auch erst später erkannt und korrigiert.

Was ich damit sagen will ist, dass ich mich dann später wohl auch später befassen werde, hier sei nur phD und postdoc genannt. Dass es länger dauert, als geplant, ist klar. Ich will das ganze Projekt auch nicht alleine machen, würde ein paar Leute schon finden. Der Group-Leader hat auch Erfahrung in diesem Bereich, hier sei nur genannt:

• member of the team of scientists who designed and used a super-cluster of more
than 250,000 volunteer computer processors to address fundamental challenges
in biomolecular simulations (Folding@Home project)

Also ich denke wenn der Ansporn da ist, die richtigen Leute sich finden und das ganze dynamisch vorranschreitet, sollte es doch durchaus machbar sein.

Aber vielen Dank für deine Hilfe, ich bin sowieso für jeden Rat dankbar.
 
Ich wollte es nur ansprechen. Kommt ja auch immer drauf an wie der Prof so drauf ist. Bei einem Freund war es nämlich so das er sich nicht bewusst war wie viel Arbeit das werden kann. Und dummerweise hatte der Professor nahezu keine Ahnung was überhaupt hinter dem Projekt steckt und konnte somit nicht nachvollziehen warum das Projekt nur teilweise in dem gegebenen Zeitrahmen bearbeitet werden konnte. Phd ist immer gut, bin auch gerade am kratzen beim BigBoss
 
Meine Stellungnahme war ja auch nicht negativ aufzufassen, wohl eher im Gegenteil :)
Ich bin gespannt, was in den nächsten Tagen diesbezüglich passieren wird. Hab erstmal angefragt, ob generelles Interesse vorhanden wäre. Aber auch ohne den PC-Bau ist da sicher einiges machbar (ich denke jetzt speziell an etwas günstigere workstations, die das Labor denke ich mal sowieso hat).
 
ich studiere selbst bioinformatik und du solltest dir echt mehr gedanken über den software-aspekt machen!
pymol ist z.b. afaik NULL auf gpu lauffähig, vll wäre da sowas wie ballview interessanter.
gängige sequenzanalysen bauen oft auf sog. dynamischer programmierung auf, auch hier ist die parallelisierung eher wenig gut.
sei mal etwas spezifischer was du softwareseitig machen möchtest, ein solches systemmacht echt nur bei gezieltem einsatz sinn.
bei dem jetzt genannten reicht eine einfache nette grafikkarte und ein dual/quad mit optimalerweise dynm. overclocking auf einzelnen cores mehr als aus.

edit:
für die proteininteraktionsgeschichte wären gpus eigentlich optimal, da werden sehr viele vorgehensweisen aus dre computergrafik verwendet....wenn man den solche software hat --> ansonsten sollte man sich verdammt gut auskennen.
 
So, nach vielen Edits..
nimms bitte nicht persönlich - es ist nicht gegen dich gerichtet. Aber das ganze hört sich ziemlich besch***** an.

Bei uns am Informatik FB kann jeder (auch Fachfremde) sehr unkompliziert ein VIELFACHES der von dir oben genannten Rechenleistung bekommen - komplett kostenfrei und auch ohne die unnötig komplizierte GPU-Programmierung.
Das MINDESTE was du imho tun solltest wäre mit dem Uni-Rechenzentrum UND dem Rechenzentrum des Informatik Fachbereich reden - die haben garantiert schon "mehr rechenpower" im Keller stehen und können dich beraten. Außerdem haben viele Unis über Forschungsprojekte die Möglichkeit Rechenzeit an wirklichen Großrechnern zu bekommen, die die Mittel jeder einzelnen Uni locker alt aussehen lassen.

Immer wieder über Nacht mehrere hundert reale Prozessorkerne rechnen zu lassen ist zumindest bei uns sehr unbürokratisch möglich und zigmal schneller als jede single-PC Lösung, egal ob nun quad-SLI oder 2 Xenons.
Nicht umsonst hat Google lange Zeit hauptsächlich auf Celeron-Prozessoren gesetzt, weil die bei Anschaffung wie auch beim Stromverbrauch einfach das beste Preis-/Leistungsverhältnis haben (hatten?).

Vor allem aber sollte dir immer klar sein, dass du dich mit C sehr sehr gut auskennen solltest - wenn das nicht schon der Fall ist, ist es auch unsinnig teure Hardware anzuschaffen anstatt direkt effizienten Code zu schreiben. Ne effiziente Implementation deines Algos ist auf einer CPU immer zig-mal schneller als eine mittelmäßige, die auf GPU(s) läuft.

Die modernste Lösung wäre natürlich das ganze kurz für 10€ von nem gemieteten Amazon Servercluster rechnen zu lassen. Wenn du dafür ca 2 Monate Zeit sparst (dich in GPU-Programmierung einzulernen und den Algo nochmal nach Cuda/OpenCL zu portieren, da du ihn wohl kaum direkt dort umsetzt) ist es das ganze garantiert zig mal wert.
Bei heise.de war neulich nen Artikel über einen, der für unter 3$ Servermiete irgendwas tolles entschlüsselt hat - finde nur gerad den Link nicht.

Ich würde sowieso die Hardware erst kaufen, wenn die erste Implementation ansatzweise fertig ist. OpenCL kann man auch auf der CPU ausführen und für kleine Tests ist das immer schnell genug. Das bringt sonst einen wahnsinns Wertverlust mit sich, der im IT Bereich ja immens ist. Wenn du erst in 4 Monaten ne lauffähige Version hast kann man doch immer noch kaufen. (Sandy-Bridge, Bulldozer, ...)

Für mich sieht das eh aus wie "ich will nen geilen PC hinstellen" und nicht wie "wir brauchen genau den für Forschung", sorry^^
BlueRay Brenner? Man Backuppt doch eh über Lan auf andere Festplatten
SSD? Jede Zugriffsintensive Anwendung muss Daten komplett im RAM haben. Sehr unwahrscheinlich, dass eine Anwendung ~50gb Daten braucht (und nicht etwa 500) auf die sie ständig zugreifen muss - und selbst wenn. Sofern das der Flaschenhals ist, wäre es sinnvoller entsprechend viel Ram einzubauen, da zigmal schneller als jede SSD.
(Da der PC hofftl 24/7 benötigt wird sollte er ja auch nicht all zu oft neu gebootet werden - und selbst wenn.. wayne die 30 Sekunden Startzeit bei Berechnungen die x Tage/Wochen laufen?).
Xeon? ich denk du willst gerade multi-gpu machen, was bringt denn dann noch nen Xenon (bzw 2?!).
Das gleiche Argument bei 24gb RAM. Sofern deine Multi-GPU Lösung auf RAM zugreifen muss ist das ganze eh witzlos weil der Datentransfer jede GPU-Rechenpower überflüssig macht. Die oft benötigten Berechnungsdaten müssen komplett im VRAM der Grakas liegen. Wenn sie da nicht hineinpassen ist ne GPU-Lösung eh das falsche. (Bei GamerGrakas wird der VRAM weder bei SLI noch bei Crossfire addiert - ka wie das bei den Teslas/Quadros ist)

Edit, um Kallisto Überschlagsrechnung evtl. noch zu ergänzen:
Die erste Fassung in 4 Wochen und ein Überarbeiten in 2 halte ich für KOMPLETT unrealistisch (hab meine Dipl mittlerweile abgegeben - spreche aus Erfahrung^^). Ich würde da jeweils locker das 2 bis 3-fache veranschlagen. Und dir muss immer klar sein: Die Note gibt es nicht für Quellcode oder Arbeitseinsatz/coole Simulationen sondern hauptsächlich für die lesbare wissenschaftliche Ausarbeitung. Insbesondere wenn du PhD/Postdoc oder allgemein wissenschaftliche Karriere vor hast ist also eine gute Note durchaus interessant (evtl. mit dem fertigen PhD 3-4 Jahre später nicht mehr soo).
 
Zuletzt bearbeitet:
Zurück
Oben