-
Notifications
You must be signed in to change notification settings - Fork 170
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Workarounds for the PGI compiler #107
Comments
Until PGI 19.4, PGI struggled with Fortran 2003 and 2008 is really buggy if there at all. 19.10 was the first PGI that was usable with Fortran 2008 syntax in my opinion. |
I just tested NVHPC 20.9 and it still fails to compile stdlib, with roughly the same errors as already highlighted in this issue. |
Our code never worked with NVHPC or its predecessor PGI. There were so many errors already at the level of F2003 code. And it really compiles a factor 3-5 slower than ifort.
|
Since Intel oneAPI:
and since as above PGI/NVHPC still has trouble with Fortran 2003 support, I don't really consider using it in my work. Those who need to use NVHPC for GPU are already stuck with Fortran 95 syntax and stdlib would, in my opinion, become significantly more of a maintenance burden and more heavily reliant on preprocessors. |
So true... 😢 |
Also, there's the triumvirate of NVHPC, Flang classic, and LLVM/F18 Flang. I am not sure what Nvidia's long term plan is, it could be that they're pouring effort into f18 Flang to then rebase NVHPC on. That would be pretty awesome. I am almost always able to avoid compiler preprocessors by using CMake or Meson |
Quick update:
|
Did you actually report all those compiler bugs and problems to the nVidia team? Our lab didn't continue the license, so I only regularly post on their forum, and their support picks it up from there. We never managed to successfully compile and run our code with nVidia (or PGI before). |
I will try to collect some more errors, update my comment and then report them. |
I've posted my problems in the nvidia forum: |
FYI, I'm looking into these issue now and have mails out to engineering about items #1 and #3. I'll post an update on our forums once I can give complete answers. For #1, the initial issue does look more to be a parse error with the variable name beginning with "module_" but I don't think it's still quite right even if the variable name is changed. It only works when using literal strings or if the variable name's has the same or more number of characters as the string that's being printed. Again, waiting on feedback from engineering. For #2, I reported the issue (TPR #31784) For #3, Still looking into it. For #4, these are known. I'll push on engineering to see if we can get them added. To respond to scivision's earlier comment, yes, much of our effort is focused on F18 development and our current plan is to move nvfortran to use the F18 code base. No idea on when that will be, but hopefully sometime in the next few years if all goes well. For the missing F2008/F2018 features in nvfortran/"classic" flang, we'll still add them depending on the feature, difficulty to implement, and if there's enough demand. We're just not proactively adding them. Reporting on our forums which features you're looking for helps with gauging demand. Big items, like co-arrays, will need to wait for F18. |
Thanks @mcolg! I recently hit 3. with nvfortran trying to build neural-fortran and found this thread: It looks like you filed it as TPR #30461 (thank you!) |
It looks like TPR #30461 should be fixed in our upcoming 22.5 release. I just tested it, and it no longer fails.
My usual caveat is that I'm testing with a pre-released version still under going testing. While unlikely, there have been cases when a fix causes other issues so is pulled at the last minute. Hence, I can't guarantee the fix will be in final 22.5, it's just likely to be. Hopefully, this fixes your item as well. |
I've tried to compile my library (that uses stdlib) with nvfortran and got the following error:
It seems that |
I would not waste too much time on nvfortran. As far as I know the future of this compiler is uncertain. It never fully supported even Fortran2003, let alone Fortran2008. nVidia now supports a lot their new LLVM-based implementation, flang(-new), and I would guess that the same will happen as to the "classical" ifort: it will be deprecated sometime in the future. |
I am using PGI 18.10 and the latest master (f300f4a):
error stop
andstderr
:It does not support
qp
and it can't even declarereal(qp)
(it says "kind must be positive", but it is negative becauseqp
is not supported). So one has to remove allqp
code. How to implement same procedures for different numeric kinds #35 will fix this.Then there is an internal compiler error that I haven't figured out yet what causes it:
The text was updated successfully, but these errors were encountered: