2017-09-27 4 views
2
import pycuda.driver as cuda 
import pycuda.autoinit 
from pycuda.compiler import SourceModule 
import numpy 
a = numpy.random.randn(4,4) 
a = a.astype(numpy.float32) 
a_gpu = cuda.mem_alloc(a.nbytes) 
cuda.memcpy_htod(a_gpu, a) 
mod = SourceModule(""" 
__global__ void doublify(float *a) 
{ 
int idx = threadIdx.x + threadIdx.y*4; 
a[idx] *= 2; 
} 
""") 

I CUDA gerade installiert 9.0 und pycuda, und ich bin nach dem Tutorial das erste CUDA Programm auszuführen. Aber es stellt sich immer Fehler aus:CUDA 9.0 und pycuda, Fehler: CompileError: nvcc Kompilation ... fehlgeschlagen kernel.cu

CompileError: nvcc Erstellung von c: \ users \ rl74173 \ AppData \ Local \ temp \ tmp6nww2c \ kernel.cu

fehlgeschlagen

ich tat etwas Forschung und einige Antworten auf diese finden Vor. Also füge ich das vor dem Ausführen hinzu:

import os 
os.system("vcvarsamd64.bat") 

Aber es ist immer noch Fehler.

Ich sehe jemanden, der es auch unten durch Zugabe Linie herauszufinden nvcc.profile

COMPILER-BINDIR = C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64 

ich Visual Studio Gemeinschaft 2017, so in meinem Fall installiert ist, habe ich versucht,

COMPILER-BINDIR = C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\lib\amd64 

Aber es doesn Hilf mir nicht.

+0

Haben Sie das jemals behoben? Wo befindet sich 'nvcc.profiles'? edit: Übrigens sollte dies nicht "C: \ Programme (x86) \ Microsoft Visual Studio 14.0 \ VC \ bin \ Hostx64 \ amd64" oder neuerdings "C: \ Programme (x86) \ Microsoft Visual" sein Studio \ 2017 \ Community \ VC \ Tools \ MSVC \ 14.12.25827 \ bin \ Hostx64 \ x64 " – JHBonarius

+0

Ich habe viele verschiedene Möglichkeiten in verschiedenen Maschinen ausprobiert, bin aber noch nie erfolgreich. Ich kann nicht herausfinden, warum, Cuda funktioniert einfach nicht mit mir. – billinair

+0

Ich habe es geschafft, CUDA v9.1.xxx mit Visal Studio 2017 zu installieren, indem ich eine ältere Version (V15.4) installiert habe. Ich kann jetzt eine DLL erstellen, die ich wahrscheinlich von Python beziehen kann. Ich würde jedoch lieber PyCuda verwenden. Immer noch mit diesem Fehler. – JHBonarius

Antwort

1

OK, also reparierte ich es für mich. Das Problem ist, dass vcvars64.bat die Pfadumgebung in einer Sub-Shell ... und dann schließt, damit der festgelegte Pfad wieder verschwindet.

Sie möchten den Pfad selbst ändern: Fügen Sie den Pfad zur Compilerdatei cl.exe hinzu. Dafür referenzierte ich this post. In meinem Fall musste ich dies am Anfang zu meiner .py-Datei hinzufügen:

import os 
if (os.system("cl.exe")): 
    os.environ['PATH'] += ';'+r"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64" 
if (os.system("cl.exe")): 
    raise RuntimeError("cl.exe still not found, path probably incorrect") 

Ich hoffe, das funktioniert für Sie.

Bearbeiten: Sie müssen eine MSVS-Version ausführen, die mit CUDA kompatibel ist. I.e. CUDA v9.0 unterstützt MSVS2017 nicht und CUDA v9.1 unterstützt nur Version 15.4, nicht spätere Versionen. Probieren Sie es aus, indem Sie nvcc.exe über die Native Tools-Eingabeaufforderung für Visual Studio ausführen.

+0

Danke! Ich würde es gerne versuchen. – billinair

+0

Ich habe es mit alten Versionen versucht, aber es ist wieder fehlgeschlagen. Also gehe ich einfach zu Visual Studio 2017 und CUDA 9.0 über, aber ich bin jetzt verwirrt. Nachdem ich diese beiden installiert habe, muss ich noch einen bestimmten Pfad zur Systemumgebung hinzufügen? Oder muss ich noch irgendwelche Zeilen in CUDA-Dateien hinzufügen? BTW: Ich habe die Pycuda aus der PyCUDA vorgefertigten Binärdatei von Christoph Golke installiert. In Anaconda Prompt tpye: pip installieren \ pycuda-2017.1.1 + cuda9185-cp36-cp36m-win_amd64.whl – billinair

+0

CompileError: nvcc Kompilierung von C: \ Benutzer \ rl74173 \ AppData \ Local \ Temp \ tmpy396ip6k \ kernel.cu fehlgeschlagen – billinair