[PATCH] Emulate clock and other stubs on nvptx

Corinna Vinschen vinschen@redhat.com
Thu Aug 19 10:34:06 GMT 2021

On Aug 19 12:22, Corinna Vinschen wrote:
> Hi Roger,
> On Aug 18 17:43, Roger Sayle wrote:
> > 
> > Please be gentle, this is my first patch to newlib.
> > 
> > This patch to the libc/machine/nvptx port of newlib implements an
> > approximation of "clock" and provides some additional stub routines.
> > These changes not only reduce the number of (link) failures in the GCC
> > testsuite when targeting nvptx-none, but also allow the NIST scimark4
> > benchmark to compile and run without modification.
> > 
> > newlib already contains support for backends to provide their own
> > clock implementations via -DCLOCK_PROVIDED.  That functionality is
> > used here to return an approximate elapsed time based on the NVidia
> > GPU's clock64 cycle counter.  Although not great, this is better than
> > the current behaviour of link error from the unresolved symbol
> > _times_r.
> > 
> > The other part of the patch is to add a small number of stub functions
> > to nvptx's misc.c.  Adding isatty, for example, resolves linking
> > problems in libc from the dependency in __smakebuf_r, and the sync
> > stub, for example, fixes the failure with GCC's
> > testsuite/gfortran.dg/ISO_Fortran_binding_14.f90 [which simply tests
> > that gfortran can call a/any C function].
> > 
> > Hopefully, these changes are acceptable.  If so, if someone could
> > please commit
> They are, but your patch submission is a bit weird and more work to
> apply than necessary.
> Please commit your patches to your local git repo, including a nice
> commit message, create a git patch file via `git format-patch' and send
> it via `git send-email --to="newlib@..." to this mailing list.  Note
> that providing Makefile.in is nice, but you don't *have* to provide
> Makefile.in.  We'll regenerate that as required.
> Another point:  Given the HW support for a monotonic clock tick,
> wouldn't it make more sense to implement clock_gettime() with support
> for CLOCK_REALTIME and CLOCK_MONOTONIC, and implement clock() by calling
> clock_gettime()?

Oh, btw., since your comment enumerates the CPU variants, isn't there
a runtime method to check the CPU and use more accurate values per
CPU?  Just an idea...


More information about the Newlib mailing list