zeratax / yacx

Yet Another CudaExecutor - wrapper to easily compile and execute cuda kernels
https://zeratax.github.io/yacx
MIT License
8 stars 4 forks source link

Exeception nvrct error message #105

Closed LukasSiefke closed 4 years ago

LukasSiefke commented 4 years ago

Wenn man mit nvrtc etwas kompiliert wird bisher eine Exception geworfen mit der Fehlerbeschreibung (z.B. NVRTC_ERROR_COMPILATION). Es wäre ganz nützlich, wenn man aber auch die Fehlernachricht (z.B. saxpy(4): error: identifier "m" is undefined) in die nvrtcException rein tun könnte, damit man, wenn man das JNI benutzt, auch die Fehlernachricht bekommt, die bisher nur mit dem Logger ausgegeben wird.

visualJames commented 4 years ago

Wenn ich es richtig verstehe, muss man beim Logger was verändert werden oder?

LukasSiefke commented 4 years ago

Ne, die nvrtcException muss geändert werden, sodass sowohl die Fehlernachricht als auch die Fehlerbeschreibung mit e.what() ausgegeben werden.

zeratax commented 4 years ago

hier https://github.com/ZerataX/yacx/blob/master/src/Program.cpp#L62 sollte ne nvrtcExceptionmit m_log als descripton erstellt werden

visualJames commented 4 years ago

Soll m_log bei NVRTC_SAFE_CALL mit übergeben werden? Ich frage, weil ich wüsste nicht, wie man nur von einem enum als Übergabeparameter m_log bekommen sollte. Bzw. was ist m_log genau?

zeratax commented 4 years ago

m_logist er kompilierungs log e.g.:

saxpy(4): error: identifier "m"

also würde man eher so was wie

throw nvrtcResultException(compileResult, m_log)
visualJames commented 4 years ago

Ich würde dann nvrtcResultException erweitern, sodass man ein String reingeben kann, und eine NVRTC_SAFE_CALL_LOG Fkt hinzufügen, sodass man nur "NVRTC_SAFE_CALL_LOG(compileResult, m_log);" einzugeben braucht.

visualJames commented 4 years ago

Hier ist meine Pull-Request für die Änderung https://github.com/ZerataX/yacx/pull/106

zeratax commented 4 years ago

neben bei wofür sind eig diese printf statements? https://github.com/ZerataX/yacx/blob/master/include/yacx/Exception.hpp#L97

visualJames commented 4 years ago

Der Sinn der printfs sind, dass sie anzeigen, wann eine Exception erstellt worden ist. Falls man diese abfängt und anderweitig behandelt, kann man immernoch im Programmablauf nachvollziehen, wann welche Exceptions aufgetreten sind. Ich kann sie auch rausnehmen, falls es nicht gewünscht ist. PS: Ich glaube, ich habe vorhin zu früh gemerged. Es stand approved und ich habe überlesen, dass Lukas noch nicht approved hat. Soll ich diesen Knoten nochmal öffnen oder passt es?

zeratax commented 4 years ago

Glaube nicht, dass lukas das stört tbh. naja wir haben halt nen logger damit wir nur wenn benötigt sowas angezeigt bekommen

visualJames commented 4 years ago

Ok, ich nehme sie dann raus

zeratax commented 4 years ago

du kannst halt auch den logger dann dort benutzen, wenn du sie hilfreich findest