<HTML>
<BODY>

<H2>Overview</H2>
Parallel seismic simulation that demonstrates use of parallel_for.

<H2>Files</H2>
<DL>
<DT><A HREF="SeismicSimulation.cpp">SeismicSimulation.cpp</A>
<DD>Source code that does wave propagation.
<DT><A HREF="Makefile">Makefile</A>
<DD>Makefile for building example.
</DL>

<H2>Directories</H2>
<DL>
<DT><A HREF="msvs">msvs</A>
<DD>Contains Microsoft* Visual Studio* 2005 workspace for building and running the example.
<DT><A HREF="xcode">xcode</A>
<DD>Contains Xcode* IDE workspace for building and running the example.
</DL>

<H2>To Build</H2>
General build directions can be found <A HREF=../../index.html#build>here</A>.
The following additional options are supported:
<DL>
<DT><TT>make [(general targets: {release, debug} [test])] UI={con, gdi, dd, x, mac}</TT>
<DD>Build and run as usual, but build with the specified GUI driver: console, GDI+*, Direct Draw*, X11, or OpenGL*
	(see the description of the <A HREF=../../common/index.html>common GUI code</A>
	for more information on available graphics support).
    For Linux* and Mac OS* X systems, the best available driver is detected automatically by the Makefile.
    For Windows* systems, UI=gdi is the default GUI driver; compiling with UI=dd may offer superior
	performance, but can only be used if the Microsoft* Direct Draw* SDK is installed on your system 
	and if overlay is supported by your graphics card.
    Use UI=con to build without the GUI for use in making performance measurements
	<I>(strongly recommended when measuring performance or scalability; see note below)</I>.
<DT><TT>make [(above options or targets)] XARCH=x64</TT>
<DD>Build and run as above, but also specify XARCH=x64
    (or XARCH=AMD64 for older compilers) when building the example on Windows* as a 64-bit binary.
<DT><TT>make [(above options or targets)] DDLIB_DIR=&lt;<I>specify path to library directory of Direct Draw* SDK here</I>&gt;</TT>
<DD>If you experience ddraw.lib linking problems, specify the correct library directory via this option.
<DT><TT>make [(above options or targets)] CXXFLAGS=-DX_FULLSYNC</TT>
<DD>Build and run as above, but enable full X11 synchronization if you experience "tearing" of motion on slower video systems.
</DL>

<H2>Usage</H2>
<DL>
<DT><TT>seismic [<I>M</I>[:<I>N</I>] [<I>F</I>]]</TT>
<DD>For non-interactive mode, <I>M</I> and <I>N</I> are a range of numbers of threads to be used.
    For interactive mode,  <I>N</I> is the number of threads to use while <I>M</I> indicates if
    a separate thread will be used for the GUI (&gt;0) or not (0).  For example,
    <TT>seismic&nbsp;1:3</TT> will use 3 threads for computation and a separate thread for
    processing GUI events; this option may give better visible performance on a 4-processor
    system when using GDI+ graphics.
<DD><I>F</I> is the number of frames the example processes internally. Default value is 100;
    reduce it to shorten example run time.
<DT>To run a short version of this example, e.g., for use with Intel&reg; Threading Tools:
<DD>Build a <I>debug</I> version of the example
    (see the <A HREF=../../index.html#build>build directions</A>).
    <BR>Run it with the desired number of threads and smaller number of frames, e.g., <TT>seismic 4 5</TT>.
</DL>

<H2>Hot keys</H2>
The following hot keys can be used in interactive execution mode when the example is compiled with the graphical
user interface:
<DL>
<dt>&lt;left mouse button&gt;
<dd>Starts new seismic wave in place specified by mouse cursor.
<dt>&lt;space&gt;
<dd>Toggles between parallel and serial execution modes.
<dt>&lt;p&gt;
<dd>Enables parallel execution mode.
<dt>&lt;s&gt;
<dd>Enables serial execution mode.
<dt>&lt;e&gt;
<dd>Enables screen updates.
<dt>&lt;d&gt;
<dd>Disables screen updates <I>(strongly recommended when measuring performance or scalability; see note below)</I>.
<dt>&lt;esc&gt;
<dd>Stops execution.
</DL>

<H2>Notes</H2>
<UL>
<LI>While running with the GUI display turned on should yield reasonable performance in most cases, <I>running with the GUI
    display turned off is strongly recommended</I> in order to demonstrate the full performance and scalability of the example.
<LI>If using the X-windows (X11) GUI on Mac OS* X systems, X11 might not be installed on the system by default.
    To install X11 on Mac OS* X systems, use the operating system install disk, choose "Optional installs" and select X11 from
    the "Applications" list.  Alternatively, if X11 is not available, build without the GUI (see build targets above).
</UL>

<HR>
<A HREF="../index.html">Up to parent directory</A>
<p></p>
Copyright &copy; 2005-2010 Intel Corporation.  All Rights Reserved.
<p></p>
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are 
registered trademarks or trademarks of Intel Corporation or its 
subsidiaries in the United States and other countries. 
<p></p>
* Other names and brands may be claimed as the property of others.
</BODY>
</HTML>
