>Gibst mir so eine Aufgabe, und wartest nichtmals das Wochenende ab...
Der Standardspruch einer meiner Profs vor 30 Jahren zum Theme "zu wenig Zeit" war: "Was macht ihr nachts?" ![]()
Wenn man eine Lastanalyse für einen Kernel auf allen Devices durchführen möchte, dann muß ich doch so vorgehen das der Kernel auf jedem Device einzeln für nur einige Durchläufe ausgeführt werden soll - dabei die Zeit stoppen.
Ja, zwei Möglichkeiten: Erstens die Datengröße in "Teilstücke" ändern, dazu muss dem Kernel über einen Parameter der "Teiler" mitgegeben werden, problemlos!
Zweitens die Anzahl der Workgroups über den zweiten Parameter bei _CL_RunKernel() (ist Standardmäßig null) einstellen. Das ist aber "finetuning", wenn OCL die verwendeten Workgroups festlegt, ist man eigentlich immer nah am Optimum!
Theoretisch kann man Kernel im vorraus so Planen, das diese Multi fähig sind.
Das wäre natürlich optimal, macht aber nur dann Sinn, wenn die Kernellaufzeiten (reine Berechnungen auf der GPU) so lange dauern, dass der Overhead durch das weitere Übertragen des Speichers , also _CL_ReadBuffer(), nicht den Gewinn wieder auffrisst! Macht imho nur bei wirklich aufwendigen Berechnungen Sinn!