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