nVidia Tools für PureBasic
Verfasst: 23.12.2009 14:54
Wir wir alle (hoffentlich) wissen, stellen die Grafikkarten-Hersteller uns einige Tools zur Verfügung, die wir benutzen dürfen, um Programme mit ihren Grafikkarten zu verwenden. So stellt nVidia ein CUDA SDK (Ausführen von Threads auf der Grafikkarte), ein PhysX SDK (Ausführen von Physikberechnungen auf der Grafikkarte) und in Kürze hoffentlich auch das OptiX SDK (RayTracing auf der Grafikkarte) zur Verfügung.
Ich würde nun gern sehen, dass diese Toolkits für PureBasic zur Verfügung stehen (auch, weil es mich in den Fingern juckt, damit zu arbeiten), aber allein werde ich wohl kaum in der Lage sein, diese Aufgabe zu bewältigen. Wer würde mir denn mit Rat und Tat zur Seite stehen?
Für CUDA stelle ich mir ein einfaches Interface vor..
InitCUDA() soll die Umgebung initialisieren und gleichzeitig die anzahl der CUDA-Prozessoren zurückliefern. Wenn InitCUDA() als Rückgabewert 0 zurückgibt, heißt das dann neben "Init gescheitert" auch, dass keine CPUs zur Verfügung stehen.
RunCUDA(*Pocedure, [Parameter]) wäre dann für eine Prozedurausführung zuständig. Es ist mir bisher bekannt, dass diese Prozeduren nur die Parameter verwenden darf, die mitgeliefert werden (also Global kann auch in einem CUDA-Thread nicht verwendet werden).
Natürlich sollten dann noch ein paar Befehle dazu kommen, das ist erst mal ein Beginn (und das wichtigste).
Mit PhysX und OptiX habe ich noch nicht allzu viele Erfahrung, aber ich habe mit Mirror's Edge und Quake:Raytraced (zumindest ansatzweise) gesehen, wozu die Technologien fähig sind.
Natürlich wären auch Tools denkbar, die das gleiche für AMD-GPUs bereitstellen. Havoc statt PhysX zum Beispiel, aber mit gleichen Befehlen.
Ich würde nun gern sehen, dass diese Toolkits für PureBasic zur Verfügung stehen (auch, weil es mich in den Fingern juckt, damit zu arbeiten), aber allein werde ich wohl kaum in der Lage sein, diese Aufgabe zu bewältigen. Wer würde mir denn mit Rat und Tat zur Seite stehen?
Für CUDA stelle ich mir ein einfaches Interface vor..
InitCUDA() soll die Umgebung initialisieren und gleichzeitig die anzahl der CUDA-Prozessoren zurückliefern. Wenn InitCUDA() als Rückgabewert 0 zurückgibt, heißt das dann neben "Init gescheitert" auch, dass keine CPUs zur Verfügung stehen.
RunCUDA(*Pocedure, [Parameter]) wäre dann für eine Prozedurausführung zuständig. Es ist mir bisher bekannt, dass diese Prozeduren nur die Parameter verwenden darf, die mitgeliefert werden (also Global kann auch in einem CUDA-Thread nicht verwendet werden).
Natürlich sollten dann noch ein paar Befehle dazu kommen, das ist erst mal ein Beginn (und das wichtigste).
Mit PhysX und OptiX habe ich noch nicht allzu viele Erfahrung, aber ich habe mit Mirror's Edge und Quake:Raytraced (zumindest ansatzweise) gesehen, wozu die Technologien fähig sind.
Natürlich wären auch Tools denkbar, die das gleiche für AMD-GPUs bereitstellen. Havoc statt PhysX zum Beispiel, aber mit gleichen Befehlen.