On Tue, Nov 04, 2014 at 10:20:53AM -0700, Jeff Law wrote: > On 11/04/14 09:11, Jakub Jelinek wrote: > > On Tue, Nov 04, 2014 at 07:41:42AM -0800, Steve Kargl wrote: > >> On Tue, Nov 04, 2014 at 03:34:43PM +0100, Bernd Schmidt wrote: > >>> The ptx port by its nature is lacking features that are expected on > >>> "normal" machines, such as alloca and indirect jumps. We have a subset > >>> of the C library which contains functions that can be implemented on the > >>> target (excluding things like file I/O other than printf which is a ptx > >>> builtin). > >>> > >>> It would be good to be able to also build as much of libgfortran as > >>> possible, and the following patch is what I've been using so far. It > >>> recognizes the target at configure time and restricts the list of > >>> compiled files, as well as providing a LIBGFOR_MINIMAL define for #ifdef > >>> tests. There's also a new file minimal.c which contains alternative > >>> implementations of some functionality (using printf to write error > >>> messages rather than fprintf and such). Constructors are currently > >>> unimplemented on ptx and therefore the init function is commented out. > >>> > >>> Comments on the approach, do the Fortran maintainers have a preference > >>> how this should look? The whole thing is good enough to substantially > >>> reduce the number of failures when trying to run the Fortran testsuites > >>> on nvptx (although many remain). > >>> > >> > >> It is unclear to me from reading the diff whether this patch > >> cause gfortran on ptx to knowingly violate the fortran standard. > >> If the answer is "yes, this patch causes gfortran on ptx to > >> violate the standard", then the patch is IMHO unacceptable. > > > > The point is, if the target can implement just a subset of the Fortran (or > > C or C++) standards, then ideally if you use anything that is not supported > > would just cause always host fallback, the code will still work, but will > > not be offloaded. So even supporting a subset of the standard is > > worthwhile, usually one will just offload the most performance critical > > parts of his code. > Also note there's a reasonable chance that the GPUs will continue to > evolve and will be able to support more of the standard language > features. Not sure if they'll ever do the IO side of Fortran, but they > could always surprise us. >
Thanks for the explanation. Certainly mapping Fortran's array syntax and many of the intrinsic subprograms to an accelerator may provide a nice speed improvement. It wasn't clear to me from Bernd original message that the patch was intended for OpenACC offloading. I was assuming that ptx was a new cpu architecture, which had limited capabilites. -- Steve