[FIX] Make all nvcc warnings into errors - #8916
Conversation
|
I would love to enable this. But the recursive device function and the initialization of shared memory are really hard to work around... Is there a pragma we can use to disable those warnings only at those two locations? |
|
For the unused parameters, just delete the parameter name from the parameter list. |
I tried my hand at fixing those. I converted the recursive method into iterative with a separately allocated stack. The shared mem should be easy. Just need to replace the span with a data ptr and size and add a method that returns a span from it. |
|
@devavret are you working on the cuIO changes, then? |
Yep. PR will be ready shortly. |
jrhemstad
left a comment
There was a problem hiding this comment.
We should not enable this. There are types in both libcu++ and cuCo where the shared memory static initialization warning cannot be worked around.
|
@jrhemstad We can disable errors based on that warning, while enabling all others. But fixing the cuIO static initialization warning should be done regardless. |
Contributes to #8916 Authors: - Devavret Makkar (https://github.com/devavret) Approvers: - Vukasin Milovanovic (https://github.com/vuule) - David Wendt (https://github.com/davidwendt) URL: #8975
|
This PR has been labeled |
|
@jrhemstad are you still opposed to this? As of today (just tested) our build succeeds with |
|
I don't install arrow thus cudf cmake pulls and builds it. I just tried to compile Spark JNI (https://github.com/NVIDIA/spark-rapids-jni) and also see these errors pop up. |
How about building cudf source file (like Apparently I don't build Arrow every time I build |
|
I think we need to do more, to cover the case when somebody (like me) buid Arrow from souce. How about disable the warning from Arrow headers ( |
|
I am fine with doing more, but that seems way too broad. It looks like the error is just in arrow's Could you try adding the pragmas locally and see if tests pass for you? If so, then we can add that in this PR and hopefully be set. I'm not really convinced that will fix the issue though because you are seeing the error when compiling arrow itself. I think we need to avoid propagating the new option to the arrow build itself. However, testing this out should confirm that theory. |
|
I see warnings with |
|
Sorry yes I missed that that S3FileSystem was in a different header file. The problems are all the same, not overloading all signatures of |
|
Humnn, |
|
@ttnghia the pragmas you want are documented in the page I linked above. You should use the narrowest possible, so something like |
Codecov ReportBase: 87.47% // Head: 88.11% // Increases project coverage by
Additional details and impacted files@@ Coverage Diff @@
## branch-22.12 #8916 +/- ##
================================================
+ Coverage 87.47% 88.11% +0.63%
================================================
Files 133 135 +2
Lines 21826 21985 +159
================================================
+ Hits 19093 19372 +279
+ Misses 2733 2613 -120
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. ☔ View full report at Codecov. |
|
Okay using |
|
@ttnghia I've pushed the changes, let me know if those are consistent with what you needed to do. |
|
We still miss this: when building |
|
OK I don't see any direct inclusions of |
Yes, I confirm that the latest patch fixes all errors for me. Thanks for working on this 😄 👍 |
Compiling with |
robertmaynard
left a comment
There was a problem hiding this comment.
I would like this behavior to be controlled with a CMake option ( default to ON ). The big issue is that when new compiler versions are released they will have new warnings / errors are better heuristics which will cause hard build failures.
During this bringup phase it is nice to be able to compile with warnings not as errors, verify correctness of the binary and go back to fixing the warning or submitting a compiler regression.
|
@gpucibot merge |
Seeing what impact
-Werror=all-warningshas on device-side compilation.Device warnings now treated as errors: