[osg-users] [ANN] Windows Binaries of OSG 3.4.0 : Visual C++ 2015 and Intel C++ 2016

79 views
Skip to first unread message

Stuart Mentzer

unread,
Apr 28, 2016, 4:02:14 PM4/28/16
to osg-...@lists.openscenegraph.org
Hello dear OSG-community,

OSG 3.4.0 Windows binaries built with Visual C++ 2015 and Intel C++ 2016 are now available from this page on my company's site:
http://objexx.com/OpenSceneGraph.html

A ReadMe.txt file in the root directory of the expanded package has some details.

These are 64-bit builds with the default GL2 OpenGL level and these dependencies: curl, freetype, giflib, glut, jpeg, lpng, minizip, tiff, zlib. We can add other plugins (GDAL, Collada, ...) based on community interest.

There is a vanilla VC++ build and also builds optimized for AVX2 (Haswell and later) CPUs. We are going to do some performance comparisons to see if the AVX2 and/or Intel C++ are beneficial for our application: we also welcome feedback on performance from the community.

The Intel C++ build should be binary compatible with VC++ 2015 so you don't need Intel C++ to use it. Note that it was built with /fp:fast=2 to enable auto-vectorization of floating point loops: this could cause small precision loss that might matter with larger/geo distance scales. If vectorization isn't significant/beneficial this option may be dropped: input on this is welcomed.

We hope to do some OSG profiling and experiment with tuning on the Windows side with VTune: if we find anything interesting we'll post it on our OSG page and submit code back to the developers.

We don't have a need for 32-bit builds or older compilers but feel free to ask ;) .

Since we need these ourselves we plan to post binaries for future OSG and compiler releases as a way to give back to the OSG community.

Best regards,
Stuart

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=67012#67012





_______________________________________________
osg-users mailing list
osg-...@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Sebastian Messerschmidt

unread,
Apr 28, 2016, 4:36:14 PM4/28/16
to osg-...@lists.openscenegraph.org
Hi Stuart,

First of all: Thank you for giving something back to the community.
Can you elaborate on the specific versions used for the 3rd-party
libraries? Especially if you compiled against Qt and possibly which version.
> Hello dear OSG-community,
>
> OSG 3.4.0 Windows binaries built with Visual C++ 2015 and Intel C++ 2016 are now available from this page on my company's site:
> http://objexx.com/OpenSceneGraph.html
>
> A ReadMe.txt file in the root directory of the expanded package has some details.
>
> These are 64-bit builds with the default GL2 OpenGL level and these dependencies: curl, freetype, giflib, glut, jpeg, lpng, minizip, tiff, zlib. We can add other plugins (GDAL, Collada, ...) based on community interest.
>
> There is a vanilla VC++ build and also builds optimized for AVX2 (Haswell and later) CPUs. We are going to do some performance comparisons to see if the AVX2 and/or Intel C++ are beneficial for our application: we also welcome feedback on performance from the community.
>
> The Intel C++ build should be binary compatible with VC++ 2015 so you don't need Intel C++ to use it. Note that it was built with /fp:fast=2 to enable auto-vectorization of floating point loops: this could cause small precision loss that might matter with larger/geo distance scales. If vectorization isn't significant/beneficial this option may be dropped: input on this is welcomed.
Interesting, can you point to some sources why the /fp:fast is needed
for auto-vectorization? I'm pretty sure I've seen at least SSE2
vectorization on some meta-programming matrix code of mine. Precision
is a real issue for me, so forgive my skepticism.

>
> We hope to do some OSG profiling and experiment with tuning on the Windows side with VTune: if we find anything interesting we'll post it on our OSG page and submit code back to the developers.
>
> We don't have a need for 32-bit builds or older compilers but feel free to ask ;) .
>
> Since we need these ourselves we plan to post binaries for future OSG and compiler releases as a way to give back to the OSG community.

Cheers
Sebastian

Stuart Mentzer

unread,
Apr 28, 2016, 6:04:12 PM4/28/16
to osg-...@lists.openscenegraph.org
Hi Sebastian,


SMesserschmidt wrote:
> Can you elaborate on the specific versions used for the 3rd-party libraries? Especially if you compiled against Qt and possibly which version.


I built against Qt 5.6 and osgQt was built. I used the latest version of dependencies:
curl 7.48.0
freetype 2.6.3
giflib 5.1.4
glut 3.7
libjpeg 9b
libpng 1.6.21
libtiff 4.0.6
minizip GitHub tip
zlib 1.2.8


> Interesting, can you point to some sources why the /fp:fast is needed
> for auto-vectorization? I'm pretty sure I've seen at least SSE2
> vectorization on some meta-programming matrix code of mine. Precision
> is a real issue for me, so forgive my skepticism.


Yes, it is hard to find the documentation on this. The "fast" option is required for floating point loops to fully auto-vectorize because vectorization can reorder operations, thus breaking strict IEEE rules. Similarly, if you put #pragma simd on a loop it will enable "fast" for you. A reference for this with VC++ is:
https://blogs.msdn.microsoft.com/vcblog/2015/10/19/do-you-prefer-fast-or-precise/ (see A7. Auto-Vectorization)
For Intel C++ one reference is the comment by Tim P. (who knows Intel compilers) in:
https://software.intel.com/en-us/forums/intel-c-compiler/topic/508146
where he says "/fp: options other than fast prevent vectorization which depends on optimizing order of operations"

It is probably most accurate to say that some vectorization is possible without the "fast" options but avoiding associativity limits vectorization. I'm not sure if /fp:fast=1 gives the full auto-vectorization with less precision loss. It would be good to have an option that allows reordering for loop vectorization but still uses the full precision math library calls, but I don't think that exists. I get the sensitivity to precision, which is why I'm trying to indicate that this first Intel C++ build is sort of experimental. Once we give it a workout and see the positive and negative effects of various options we'll know better what build variations are worth providing.

Regards,
Stuart

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=67017#67017

Chris Hanson

unread,
Apr 28, 2016, 6:33:10 PM4/28/16
to OpenSceneGraph Users
Hey Stuart, we should coordinate.
--
Chris 'Xenon' Hanson, omo sanza lettere. Xe...@AlphaPixel.com http://www.alphapixel.com/
Training • Consulting • Contracting
3D • Scene Graphs (Open Scene Graph/OSG) • OpenGL 2 • OpenGL 3 • OpenGL 4 • GLSL • OpenGL ES 1 • OpenGL ES 2 • OpenCL
Legal/IP • Code Forensics • Digital Imaging • GIS • GPS • osgEarth • Terrain • Telemetry • Cryptography • LIDAR • Embedded • Mobile • iPhone/iPad/iOS • Android
@alphapixel facebook.com/alphapixel (775) 623-PIXL [7495]

Stuart Mentzer

unread,
Apr 28, 2016, 8:09:47 PM4/28/16
to osg-...@lists.openscenegraph.org

Chris Hanson wrote:
> Hey Stuart, we should coordinate.


Sure. I'll email you directly for parts of the discussion that won't be of general interest.

Since the first info I posted for you I have got the builds scripted after the initial CMake setup tweaks.

Stuart

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=67019#67019
Reply all
Reply to author
Forward
0 new messages