Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Best compiler options for MSVC?

Author: Robert Hyatt

Date: 10:52:54 02/16/04

Go up one level in this thread


On February 16, 2004 at 11:32:40, Bryan Hofmann wrote:

>On February 16, 2004 at 10:30:21, Peter Skinner wrote:
>
>>On February 16, 2004 at 05:11:31, Bryan Hofmann wrote:
>>
>>>On February 16, 2004 at 04:32:25, Peter Skinner wrote:
>>>
>>>>On February 16, 2004 at 04:26:43, Peter Skinner wrote:
>>>>
>>>>CFLAGS   = /Ox /G6 /Gr /Ob2 /DFUTILITY /DEPD
>>>>COPTS    = /DFAST /DEGTB6 /DVC_INLINE_ASM /DUSE_ASSEMBLY
>>>>
>>>>Those are the target options that I have in my makefile. Other than adding
>>>>/DFUTILITY and /DEPD it is pretty standard.
>>>>
>>>>Under the Intel 8 compiler I use: (Mostly from Mike)
>>>>
>>>>CFLAGS   = /O3 /G6 /Gr /Ob2 /Qunroll /Qip /Qipo /QaxiW /W0 /DEPD /DFUTILITY
>>>>COPTS    = /DFAST /DEGTB6 /DVC_INLINE_ASM /DUSE_ASSEMBLY

In all of my testing with Crafty O2 is slightly faster than O3.

I don't have a G6 option on my linux gcc 8.0, nor a Gr.

I do use the Ob2 but I do not do the loop unrolling.  I also compile "crafty.c"
so the QIP and Qipo are not needed as the Ob2 does the same thing forcing inline
stuff whenever possible.

I also use xN to specifically target the PIV, rather than producing code that
runs on all flavors of processors.

Here is my options for profiling:

                CFLAGS='$(CFLAGS) -D_REENTRANT -O2 \
                        -xN -prof_genx -prof_dir ./profdir \
                        -Ob2 -fno-alias' \

And after the profile run, here are the options to re-compile using the PGO data
produced by profiling:

                CFLAGS='$(CFLAGS) -D_REENTRANT -O2 \
                        -xN -prof_use -prof_dir ./profdir \
                        -Ob2 -fno-alias' \

PGO gives me another 10% or so, although I haven't tried without PGO in a long
time so I am not sure of the actual number.  It is definitely faster, however.



>>>>
>>>>I am wondering if I am using the best options under MSVC. Are there better
>>>>options when compiling for the P4 processor?
>>>>
>>>>Peter.
>>>
>>>For the Intel 8 compiler I would remove the /Qunroll option. Normally AMD
>>>systems run faster when loops are unrolled and Intel system run slower. You
>>>might try removing the /DFAST option for the MSVC compile as Russell found it to
>>>be faster without this option under MSVC 2003 .NET.
>>
>>Intel 8 /wo /Qunroll
>
>>
>>Both of your options seem to slighty make a faster exe.
>>
>>Peter.
>
>Two other things you might try that will normally give you the best results are
>to compile crafty as a single object (I belive in the Makefile.nt this is the
>craftyx option). This will allow the compiler to optimize it as one large
>object. The second item is for the Intel compiler and use the PGO option. To do
>this;
>
>1. compile crafty with the additional options of "/prof_genx /prof_dir ."
>2. run crafty with the following command "crafty < prof"
>Note the prof file is below. Make sure you have a normal crafty.rc, book file
>and EGTB path when you run this and in the same directory as the source as it
>will create a file that will be used in the second stage.
>3. del crafty.exe crafty.o egtb.o
>4. compile crafty with the additional options of "/prof_use /prof_dir ."
>
>-----Begin prof file----------------
>st=10
>ponder=off
>display nomoves
>setboard rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq
>move
>book off
>setboard rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq
>move
>setboard 1k1r4/pp1b1R2/3q2pp/4p3/2B5/4Q3/PPP2B2/2K5 b
>move
>setboard 3r1k2/4npp1/1ppr3p/p6P/P2PPPP1/1NR5/5K2/2R5 w
>move
>setboard 2q1rr1k/3bbnnp/p2p1pp1/2pPp3/PpP1P1P1/1P2BNNP/2BQ1PRK/7R b
>move
>setboard rnbqkb1r/p3pppp/1p6/2ppP3/3N4/2P5/PPP1QPPP/R1B1KB1R w KQkq
>move
>setboard r1b2rk1/2q1b1pp/p2ppn2/1p6/3QP3/1BN1B3/PPP3PP/R4RK1 w
>move
>setboard 2r3k1/pppR1pp1/4p3/4P1P1/5P2/1P4K1/P1P5/8 w
>move
>setboard 1nk1r1r1/pp2n1pp/4p3/q2pPp1N/b1pP1P2/B1P2R2/2P1B1PP/R2Q2K1 w
>move
>setboard 4b3/p3kp2/6p1/3pP2p/2pP1P2/4K1P1/P3N2P/8 w
>move
>setboard 2kr1bnr/pbpq4/2n1pp2/3p3p/3P1P1B/2N2N1Q/PPP3PP/2KR1B1R w
>move
>setboard 3rr1k1/pp3pp1/1qn2np1/8/3p4/PP1R1P2/2P1NQPP/R1B3K1 b
>move
>setboard 2r1nrk1/p2q1ppp/bp1p4/n1pPp3/P1P1P3/2PBB1N1/4QPPP/R4RK1 w
>move
>setboard r3r1k1/ppqb1ppp/8/4p1NQ/8/2P5/PP3PPP/R3R1K1 b
>move
>setboard r2q1rk1/4bppp/p2p4/2pP4/3pP3/3Q4/PP1B1PPP/R3R1K1 w
>move
>setboard rnb2r1k/pp2p2p/2pp2p1/q2P1p2/8/1Pb2NP1/PB2PPBP/R2Q1RK1 w
>move
>setboard 2r3k1/1p2q1pp/2b1pr2/p1pp4/6Q1/1P1PP1R1/P1PN2PP/5RK1 w
>move
>setboard r1bqkb1r/4npp1/p1p4p/1p1pP1B1/8/1B6/PPPN1PPP/R2Q1RK1 w kq
>move
>setboard r2q1rk1/1ppnbppp/p2p1nb1/3Pp3/2P1P1P1/2N2N1P/PPB1QP2/R1B2RK1 b
>move
>setboard r1bq1rk1/pp2ppbp/2np2p1/2n5/P3PP2/N1P2N2/1PB3PP/R1B1QRK1 b
>move
>setboard 3rr3/2pq2pk/p2p1pnp/8/2QBPP2/1P6/P5PP/4RRK1 b
>move
>setboard r4k2/pb2bp1r/1p1qp2p/3pNp2/3P1P2/2N3P1/PPP1Q2P/2KRR3 w
>move
>setboard 3rn2k/ppb2rpp/2ppqp2/5N2/2P1P3/1P5Q/PB3PPP/3RR1K1 w
>move
>setboard 2r2rk1/1bqnbpp1/1p1ppn1p/pP6/N1P1P3/P2B1N1P/1B2QPP1/R2R2K1 b
>move
>setboard r1bqk2r/pp2bppp/2p5/3pP3/P2Q1P2/2N1B3/1PP3PP/R4RK1 b kq
>move
>setboard r2qnrnk/p2b2b1/1p1p2pp/2pPpp2/1PP1P3/PRNBB3/3QNPPP/5RK1 w
>move
>setboard /k/3p/p2P1p/P2P1P///K/ w
>move
>setboard /k/rnn////5RBB/K/ w
>move
>quit
>-------End prof file--------------------
>
>Bryan



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.