2017-08-10 4 views
0

Ich möchte eine Python-Schleife auf GPU parallelisieren, aber ich möchte nicht pyCUDA verwenden, weil ich selbst viel tun muss. Ich suche nach etwas wie OpenACC wie in C++ für Python, um die einfache Parallelisierung zu implementieren, aber es scheint so etwas nicht zu geben. So denke ich nur mit OpenACC in C++ und dann System aufrufen ein Python-Skript, wie im folgenden Code. Ob das funktioniert? Oder gibt es eine einfache Alternative ohne pyCUDA zu verwenden?Kann ich OpenACC zum Systemaufruf der Python-Funktion verwenden?

void foo(float*parameters){ 

%%system call python function with parameters as input 

} 

#pragma acc parallel loop 
for (int i=0; i<n; ++i) { 
    foo(parameters[i]); 
    //call on the device 
} 

Antwort

1

Nein, das wird nicht funktionieren. Sie können keinen Hostsystemaufruf vom Gerät ausführen.

Für OpenACC-Gerätecode können Sie nur Routinen aufrufen, die die OpenACC-Anweisung "routine" oder eine CUDA-Routine "device" haben.