[osg-users] Using SSE within OSG
osg at eikel.org
Tue Jul 29 05:28:18 PDT 2008
Am Dienstag, 29. Juli 2008 14:04:59 schrieb David Spilling:
> Dear All,
> Any other suggestions?
> *Question 3 : (possibly the biggest) Should the core OSG include SSE?*
> There are several downsides to including SSE. Firstly, x-platform provision
> of SSE may be tricky due to the way different compilers define aligned
> data, and how SSE instructions are used within the code. I personally don't
> have much experience here, so any feedback on x-plaform issues is useful.
> Secondly, the code readability drops, and the "use the source" argument may
> be trickier when many might not know much SSE.
may I suggest that you check the assembler code that the compilers create when
compiling the OSG code? I have not done it for the OSG code, but for another
project I have done some time ago. There I tried to optimize the performance
for composing depth-buffer attached images for sort-last rendering. Somehow I
was not able to be much better than the compiler was. In some rare cases my
procedures were faster, but most of the time the compiler was the winner. The
code created by the compilers consider so many things - e. g. branch
prediction by the processer, code reordering - that it is quite hard for a
human programmer to beat them.
For example if you use g++ with -march=core2 -O3 (see man page for description
of parameters) the compiler automatically uses SSE or even SSE2, 3dNOW!, etc.
instructions. In some cases the compiler generates much better assembler code
than a normal programmer would do. There are some case though were manual
improvements could yield better results.
I heard that the Intel C++ compiler is able to optimize even better.
Furthermore the use of profiling first is a good approach. Maybe it would be
reasonable to compare profiling data of the Math/Vector/Matrix classes with
and without compiler optimizations and see if some bottlenecks disappear when
using the optimizations.
> So - your opinion, experience and suggestions welcome!
More information about the osg-users