NVIDIA and TLS
Julian Elischer
julian at elischer.org
Mon Jun 16 17:30:11 PDT 2003
On Mon, 16 Jun 2003, Gareth Hughes wrote:
> On Mon, 16 Jun 2003, Andy Ritger wrote:
> >
> > So from an OpenGL point of view, here are several alternatives that
> > I see for atleast the near term:
> >
> > - make NVIDIA's OpenGL implementation not thread-safe (just
> > use global data rather that thread-local data)
> >
> > - accept the performance hit of using pthread_getspecific()
> > on FreeBSD. From talking to other OpenGL engineers,
> > conservative estimates of the performance impact on
> > applications like viewperf range from 10% - 15%. I'd like
> > to quantify that, but certainly there will be a performance
> > penalty.
>
> And these are *very* conservative estimates -- you're essentially adding a
> function call into a path that is, on average, less than ten instructions
> per OpenGL API call, where the number of API calls per frame is upward of 3
> million (3 calls per vertex, over a million vertices for some Viewperf
> benchmarks). The API was designed this way for a reason, and fast
> thread-local storage is a fundamental part of a high performance
> implementation.
Unfortunatly you are making an assumption about the threads that you
are only able to make in Linux "by chance" as they did something else
for their TLS. I gather that you don't keep a local variable
pointed to your local drawing context, but just use the 'global'
style of programming but using %gs as a 'roll-your-own' version of
'local context'. Can you just grab %gs on Microsoft? I thought they
were going to be using it for their TLS too.
BTW
Have you looked at the speed of that? At one time it was a lot slower
to dereference things through %gs than it was to simply have a normal
register allocated to the task (e.g. %esi) as would be done normally.
I don't know if that is true with any modern machines though.
HOWEVER..
as far as we know we still have %fs unused....
Maybe we could just switch registers :-)
(that too is of course non portable too but.....)
BTW what do you do for ia64/alpha/amd64 archtectures?
>
> --
> Gareth Hughes (gareth at nvidia.com)
> OpenGL Developer, NVIDIA Corporation
> _______________________________________________
> freebsd-threads at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-threads
> To unsubscribe, send any mail to "freebsd-threads-unsubscribe at freebsd.org"
>
More information about the freebsd-threads
mailing list