Ich habe helper_cuda.h
aufgenommen und verwende den Makro checkCudaErrors
bei jedem CUDA-Aufruf in meinem Code. Ich habe einen Fehler durch den folgenden Code gezwungen:checkCudaErrors druckt keine Fehlerinformationen
checkCudaErrors(cudaMalloc(&GPUCameraData, sizeof(float) /*<-- Should be HCameraData */));
checkCudaErrors(cudaMemcpy(GPUCameraData, CPUCameraData, sizeof(HCameraData)
, cudaMemcpyHostToDevice));
Die Anwendung einfach beendet mit Fehlercode 1, wie es soll, aber keine Informationen gedruckt werden. Wenn ich in der ersten Zeile abbruche und in die zweite Zeile gehe, sehe ich, dass _cudaGetErrorEnum()
in "cudaErrorInvalidValue"
zurückgibt, aber keine Information wird in der Ausgabe gedruckt.
Die Entwicklungsumgebung, die ich verwende, ist Visual Studio 2013, und ich habe dies sowohl im Debug- als auch im Release-Modus getestet.
Hinweis: Ich habe das gleiche Problem mit OpenGL und glGetError. Es scheint, als ob irgendwelche Aufrufe von fprintf(stderr, ...);
aus Code, der nicht direkt in meiner eigenen Dateistruktur ist, nichts drucken wird.
Führen Sie das Programm über die Befehlszeile oder in VS? Wenn Sie das Programm innerhalb von VS ausführen, versuchen Sie es über die Befehlszeile auszuführen. Wenn der Fehlerausdruck dort aber nicht innerhalb von VS auftritt, müssen Sie Ihre VS-Konfiguration überprüfen (z. B. [herauszufinden, wohin die stderr-Pipe weitergeleitet wird ...] (http://stackoverflow.com/questions/2683249/redirect-). stdout-und-stderr-zu-der-ausgang-debug-konsole-of-microsoft-visual-studi)) –
@RobertCrovella Ich leitete die Stderr-Leitung in eine Fehlerprotokoll-Textdatei und die Fehlermeldungen werden nun korrekt gedruckt. Ich werde versuchen, herauszufinden, wie sie an das Ausgabe-Log in der VS IDE weitergeleitet werden. Fühlen Sie sich frei, Ihren Vorschlag als Antwort hinzuzufügen. – henrikdahlberg