SPEED CONSIDERATIONS
####################################################################################

From version 10.1 onwards the Intel compiler ICC seems to work flawlessly together
with the Qt4/OpenGL-stuff of Zhu3D. Whether isosurface-generation is multithreaded
so far, ICC gives another magic speed boost of arround 240 % over GCC approximately.
No idea why, because the SMP-stuff is handled compiler independent and the auto-
vectorization of ICC finds only minor code-parts not influencing the general speed.

NOTE: compiling with ICC-Linux needs the switch -use-msasm mandatory! Enable this
in the file zhu3d.pro before the next step!!!

To utilize ICC instead of GCC simply invoke the qmake with an option:

qmake -spec linux-icc


GENERAL NOTES FOR ICC
####################################################################################

If you can not even compile a simple C++ "Hello world" program and get some error
message sounding like:

... /usr/include/c++/4.2.1/ext/atomicity.h ...
... __sync_fetch_and_add(ptr,addend) not declared ...

you may have to patch your atomicity.h file as follows:

1) Search atomicity.h
2) Add the following immediately after the line _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx):

#ifdef __ICC
#define __sync_fetch_and_add(ptr,addend) _InterlockedExchangeAdd(const_cast<void*>(reinterpret_cast<volatile void*>(ptr)), addend);
#endif


This patch was suggested from Johannes Singler. This is his original notice:


/***************************************************************************
 *   Copyright (C) 2007 by Johannes Singler                                *
 *   singler@ira.uka.de                                                    *
 *   Distributed under the Boost Software License, Version 1.0.            *
 *   (See accompanying file LICENSE_1_0.txt or copy at                     *
 *   http://www.boost.org/LICENSE_1_0.txt)                                 *
 *   Part of the MCSTL   http://algo2.iti.uni-karlsruhe.de/singler/mcstl/  *
 ***************************************************************************/

/** @file intel_compatibility.h 
 *  @brief Intel compiler compatibility work-around. */

#ifdef __ICC
/** @brief Replacement of unknown atomic function. Bug report submitted to Intel. */
#define __sync_fetch_and_add(ptr,addend) _InterlockedExchangeAdd(const_cast<void*>(reinterpret_cast<volatile void*>(ptr)), addend);
#endif


ICC BUGS IN COMBINATION WITH GCC 4.3.X
####################################################################################

It seems that the current ICC-versions have a serious problem in combination with
gcc 4.3.x header files. There are some patches out, but none of them makes me happy
due to various reasons. Maybe it is the best to wait for ICC 10.2/11.0 which
fixes these bugs. Hopefully:-)
