PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit OpenCL und Dell-Notebook


Nakai
2013-01-20, 19:44:40
Heyho,
evtl hat einer schonmal das Problem gehabt.
Ich will OpenCL auf meiner Grafikkarte in meinem Notebook laufen lassen.

Notebook:
Dell Vostro 3450
AMD HD 6630m
Intel HD Dreck
Umschaltbare Grafik(Dreck)

Immer wenn ich einen eigenen Kernel laufen lassen will, gibts nen BSOD mit typischem Fehlercode. Treiberreset hat nicht geklappt.
Tja, nach 5 Sekunden wird nämlich der AMD Treiber resettet, wenn der Kernel zu lange läuft. Anscheinend funkt der Intel-Treiber dazwischen.

So, wie kann man nun den AMD-Chip als Hauptchip auswählen?
Intel muss komplett runter, weil einfach großer Mist.

Problem 1: BIOS erlaubt keine Intel-Deaktivierung.
Problem 2: Intel lässt sich bis auf den Neustart deaktivieren. Deinstallation des Treibers hilft nicht.

Wenn ich AMDs CodeXL Teacup Beispiel laufen lassen will, funktioniert das ohne Probleme. Eigene Kernels funktionieren nicht.

Ich benutze ITK(Insight Toolkit) für OpenCL. In diesem SDK wird OpenCL extra gekapselt. Die Auswahl des Devices geht nur über dieses Toolkit.
Aber das ist erstmal egal.

Lass ich clinfo in cmd laufen, werden zwei GPU-Devices(wohl Intel und AMD-GPU) erkannt und ein CPU-Device.
Deaktiviere ich den Intelchip, wird nur CPU angezeigt. Dann lässt sich die Auflösung nicht höher als 1024*768 stellen

Andere Art und Weise, wie ich die Intel GPU deaktivieren kann gibt es dank AMD CCC nicht. Und selbst der Intel Treiber bietet keine Option.

Gemoddete Treiber wurden schon getestet, aber ohne Erfolg.

Wenn jemand eine Lösung hat, bitte her damit. Ansonsten muss ich wohl auf einen anderen PC ausweichen.

Achja kleines Resumee bzgl Notebooks, AMD und DELL.

Ich hatte noch nie Probleme mit AMD/ATI und DELL.
Ich fand AMD immer gut und ausreichend.
Aber diesmal reichts. AMD für professionellere Einsätze kann man vergessen.

gedi
2013-01-20, 20:15:14
Dass du die Intel HD nicht deaktivieren kannst liegt daran, dass die Ausgabe weiterhin über den IGP läuft, obwohl die AMD das Bild rendert.

Über den Menüpunkt "umschaltbare Grafiken konfigurieren" solltest du allerdings der Anwendung die gewünschte GPU zuweisen können.

Alternativ würde ich das NB einstecken und unter Netzbetrieb max. Performance auswählen. Zudem noch den 13.1WHQL installen und sollte eigentlich funktionieren.

Nakai
2013-01-20, 20:38:06
Ahja, ich hab vergessen zu erwähnen, wenn ich den Mobility-Driver(egal welche Version) installiere kann ich nicht mehr zu Umschaltbare Grafik gehen(gibts einfach nemmer).

Dafür gibt es gemoddete Treiber:
http://leshcatlabs.net/index.php/2013/01/leshcats-catalyst-13-1-whql-unifl-for-amdintel-laptops/

Die gehen auch nicht, weil dann kein OpenCL-Device mehr erkannt wird.

Über den Menüpunkt "umschaltbare Grafiken konfigurieren" solltest du allerdings der Anwendung die gewünschte GPU zuweisen können.

Alternativ würde ich das NB einstecken und unter Netzbetrieb max. Performance auswählen. Zudem noch den 13.1WHQL installen und sollte eigentlich funktionieren.

Wurde alles schon gemacht. Funktioniert nicht.
Möglichweise liegt es an meinem Kernel(hab schon andere Kernels implementiert, geht trotzdem nicht), ich poste ihn einfach mal:

#define WORKGROUPSIZE 64
__kernel void MinMax(
__global float* input,
__global float * output,
float min,
float max,
int sizex,
int sizey,
int sizez
)
{
int idx = get_global_id(0);
int idy = get_global_id(1);
int idz = get_global_id(2);

int idx_local = get_local_id(0);
int idy_local = get_local_id(1);
int idz_local = get_local_id(2);

int local_x = get_local_size(0);
int local_y = get_local_size(1);
int local_z = get_local_size(2);

int group_x = get_num_groups(0);
int group_y = get_num_groups(1);
int group_z = get_num_groups(2);

int groupid_x = get_group_id(0);
int groupid_y = get_group_id(1);
int groupid_z = get_group_id(2);

int gid = idx + sizex*idy + sizex*sizey*idz;
int gid_local = idx_local + local_x*idy_local +local_x*local_y*idz_local;
int group_id = groupid_x + group_y*groupid_y + groupid_z*group_z*groupid_z;

int group_count = group_x*group_y*group_z;

int offset = 1;

bool isValid = true;

if(idx >sizex) isValid = false;
if(idy >sizey) isValid = false;
if(idz >sizez) isValid = false;
if(idx_local >local_x) isValid = false;
if(idy_local >local_y) isValid = false;
if(idz_local >local_z) isValid = false;

if(isValid)
{
barrier(CLK_LOCAL_MEM_FENCE);
__local float Minvals[WORKGROUPSIZE];
__local float Maxvals[WORKGROUPSIZE];

Minvals[gid_local] = input[gid];
Maxvals[gid_local] = input[gid];

int offset = 1;
int jump = 2;
barrier(CLK_LOCAL_MEM_FENCE);
for(;gid_local%jump==0;)
{
Minvals[gid_local] = fmin(Minvals[gid_local],Minvals[gid_local+offset]);
Maxvals[gid_local] = fmax(Maxvals[gid_local],Maxvals[gid_local+offset]);

offset *= 2;
jump *= 2;
}

barrier(CLK_GLOBAL_MEM_FENCE);

if(gid_local == 0)
{
//global Rueckschreiben
output[gid*2] = Minvals[gid_local];
output[gid*2 +1] = Maxvals[gid_local];

}

barrier(CLK_GLOBAL_MEM_FENCE);
if(gid==0)
{
float mint;
float maxt;
for(int i =0; i < group_count; i=i+2)
{
mint = fmin(mint,output[i]);
maxt = fmax(maxt,output[i+1]);

}

output[0] = mint;
output[1] = maxt;
}

}
}

Achja Debuggen mit CodeXL oder andere Debugger ist unmöglich -> Treibereset oder Bluescreen.

gedi
2013-01-20, 21:11:31
Ahja, ich hab vergessen zu erwähnen, wenn ich den Mobility-Driver(egal welche Version) installiere kann ich nicht mehr zu Umschaltbare Grafik gehen(gibts einfach nemmer).

Zuerst mit ccleaner komplette ATI-Software runterschmeißen, anschließend aktuellen Intel-Treiber und schlußendlich dann noch den aktuellen Ati drauf. So sollte es gehen. Funktioniert bei meinem Clevo auch nicht anders. Ist mühseelig, funktioniert aber normalerweise :)


BTW. was sagt denn GPU-Z - ist OpenCL aktiviert? Wenn nicht, dann dies (http://developer.amd.com/wordpress/media/files/AMD-APP-SDK-v2.8-Windows-64.exe?364200777484) installen.

Nakai
2013-01-20, 21:51:15
Opencl ist aktiv, da das Teapot-Example vom CodeXl geht.
Außerdem benötigt das InsightTookit(ITK) eine gültige OpenCl SDK-Installation.
Ich find auch genug Plattformen und Devices, wenn ich clinfo in cmd eingebe.


Zuerst mit ccleaner komplette ATI-Software runterschmeißen, anschließend aktuellen Intel-Treiber und schlußendlich dann noch den aktuellen Ati drauf. So sollte es gehen. Funktioniert bei meinem Clevo auch nicht anders. Ist mühseelig, funktioniert aber normalerweise

Letzter Versuch für Heute...

Nakai
2013-01-21, 00:30:56
Das Problem lag am Kernel. Siehe hier:
http://www.forum-3dcenter.org/vbulletin/showthread.php?p=9624346#post9624346

Werd das aber erst morgen genauer anschauen.

Vielen Dank für die Hilfe.

Spasstiger
2013-01-21, 09:27:12
Du kannst doch im Catalyst Control Center dauerhaft auf die Radeon HD 6630M schalten, brauchst nur eine entsprechend aktuelle Bios-Version: http://www.hardwareluxx.de/community/f270/dell-vostro-3350-3450-3550-3750-a-818647-17.html#post17611937.
Das ist zwar aufs Vostro 3550 bezogen, aber das Update für das Vostro 3450 kam kurz danach.