Author: Robert Hyatt
Date: 19:48:02 12/15/03
Go up one level in this thread
On December 15, 2003 at 22:26:29, Aaron Gordon wrote: >On December 15, 2003 at 20:51:47, Robert Hyatt wrote: > >>On December 15, 2003 at 13:47:48, Aaron Gordon wrote: >> >>One note to try. Replace the objects with crafty.obj, which will compile >>the crafty.c file that includes everything into one big wad. You need to >>edit crafty.c and remove the reference to "enprise.c" as that no longer >>exists. >> >>I did this on the opteron and it ran a bit faster, but I have to use gcc >>there. I've not tried it on my dual 2.8 yet, but will, also... > >Is this what nmake -f makefile.nt wcraftyx does? I see it copies stuff into x1.c >& x2.c then compiles that way.. I get small speedup by doing this vs making with >just wcrafty It is a variant. I think the two files are used because an old compiler somewhere maybe choked with all the long long stuff in one big file, but I am not sure. Inlining doesn't always help, as it can increase the cache footprint, and for non-opteron it places more pressure on the few X86 registers. > >>># Makefile version 3 for Crafty 16.15 >>># Crafty v16.x makefile for Windows NT Intel >>># Written by Jason Deines (jdeines@mindspring.com) April 1998 >>># Version modified by Gregor Overney (gregor_overney@hp.com) Nov 1998 >>># Version modified by Peter Karrer (pkarrer@active.ch) Dec 1998 >>># Version modified by Gregor Overney (gregor_overney@hp.com) Sep 1999 >>># >>># This makefile is designed to be used from the command line with >>># Microsoft's nmake. Either rename this # file to "Makefile" or name it >>># explicitly when invoking nmake: >>># nmake -f Makefile.nt >>># >>># The makefile is set up for Microsoft Visual C++ 6.0 Intel. >>># >>># The default target produces a file called "wcrafty.exe". This compiles >>># all the .c files separately, producing individual .obj files, which are >>># then linked to create the executable. You can also specify a target >>># called "wcraftyx". This creates a file called "wcraftyx.exe" by combining >>># all of the .c files into two large .c files before the compile step. >>># The large files generally provides more optimization possibilities for >>># the compiler, and usually results in slightly faster code. To try it, >>># type "nmake wcraftyx" instead of just "nmake". The .c files x1.c and x2.c >>># will be created if needed and built automatically. >>> >>> >>># Build target is defined here. >>>TARGET = NT_i386 >>> >>># Command-line compiler and linker invocation commands: >>>CC = icl >>>LD = xilink >>> >>># Base compiler flags needed for build: >>>BFLAGS = /D_CONSOLE /DWIN32 >>> >>># Compiler flags: >>># /O2 optimize for speed >>># /Oa assume no aliasing (no good for VC 6 without SP3) >>># /Gr fastcall calling convention >>># /G5 target Pentium (but will run on all x86 architectures) >>># /G6 target Pentium Pro (but will run on all x86 architectures) >>># /Ob2 inline function calls if suitable >>># >>># For debugging use these flags instead: >>># CFLAGS = /Od /Zi >>># LDFLAGS = /DEBUG /DEBUGTYPE:CV >>># >>> >>>#CFLAGS = /O2 /G6 /Gr /Ob2 >>>#CFLAGS = /Od /Zi >>>CFLAGS = -O3 -G6 -Qunroll -QxiK -Qipo -Qip -Qprof_use -Qprof_dir c:\opt >>> >>># Linker flags, normally not needed except for debug builds: >>>LDFLAGS = >>>#LDFLAGS = /DEBUG /DEBUGTYPE:CV >>> >>># See the default crafty makefile for a description of the options below. >>># With VC++, defines like COMPACT_ATTACKS, etc, makes the code slower, so >>># those # options are disabled by default. FAST is normally not defined >>># so that hash statistics are reported -- for the fastest possible >>># executable, define FAST below. for 6 piece EGTB support, add /DEGTB6. >>> >>>COPTS = /DFAST >>> >>># For an SMP build use/add the following build options. >>># NT_INTEREX is defined if you want to use the built-in InterlockedExchange() >>># function for thread resource locking, instead of the inline asm routine. >>># (This shouldn't be needed, at least on Intel.) >>># /MT is a compiler flag needed for multithreaded builds. >>> >>>#COPTS = /MT /DSMP /DCPUS=4 /DNT_INTEREX >>>#COPTS = /MT /DSMP /DCPUS=2 >>> >>># If you are using any external assembler routines, put the name of the >>># object code file(s) here. Any such files will need to be generated >>># separately -- there is no assembler step defined in the makefile. >>> >>>asmobjs = >>> >>># To enable assembly optimizations in x86.c and vcinline.h, use /DVC_INLINE_ASM. >>> >>>AOPTS = /DVC_INLINE_ASM >>> >>>ALLOPTS = $(COPTS) $(AOPTS) /D$(TARGET) >>> >>>cobjs = analyze.obj annotate.obj attacks.obj bench.obj book.obj boolean.obj \ >>> data.obj drawn.obj edit.obj epd.obj \ >>> epdglue.obj evaluate.obj evtest.obj hash.obj history.obj init.obj \ >>> input.obj interupt.obj iterate.obj learn.obj make.obj main.obj \ >>> movgen.obj next.obj nexte.obj nextr.obj option.obj output.obj \ >>> phase.obj ponder.obj preeval.obj quiesce.obj repeat.obj resign.obj \ >>> root.obj search.obj searchmp.obj searchr.obj setboard.obj swap.obj \ >>> test.obj thread.obj time.obj unmake.obj utility.obj valid.obj \ >>> testepd.obj validate.obj probe.obj x86.obj >>> >>>xcobjs = x1.obj x2.obj >>> >>>allobjs = $(cobjs) $(asmobjs) egtb.obj >>> >>>xallobjs = $(xcobjs) $(asmobjs) egtb.obj >>> >>>includes = chess.h data.h epd.h epddefs.h epdglue.h evaluate.h vcinline.h >>> >>>wcrafty : $(allobjs) >>> $(LD) $(LDFLAGS) $(allobjs) /out:wcrafty.exe >>> >>>wcraftyx : $(xallobjs) >>> $(LD) $(LDFLAGS) $(xallobjs) /out:wcraftyx.exe >>> >>>$(cobjs) : $(includes) >>> >>>.c.obj : >>> $(CC) $(BFLAGS) $(CFLAGS) $(ALLOPTS) /c $*.c >>> >>>.cpp.obj : >>> $(CC) $(BFLAGS) $(CFLAGS) $(ALLOPTS) /Zm500 /c $*.cpp >>> >>>$(xcobjs): $(includes) >>> >>>x1.c: searchr.c search.c repeat.c next.c nextr.c history.c nexte.c \ >>> quiesce.c evaluate.c movgen.c make.c unmake.c attacks.c swap.c \ >>> boolean.c utility.c valid.c searchmp.c thread.c x86.c >>> copy /b x86.c+boolean.c+swap.c+attacks.c+evaluate.c+make.c+\ >>> unmake.c+movgen.c+quiesce.c+search.c+next.c+searchr.c+repeat.c+\ >>> nextr.c+history.c+nexte.c+utility.c+valid.c+searchmp.c+\ >>> thread.c x1.c >>>x2.c: book.c data.c drawn.c edit.c epd.c epdglue.c init.c \ >>> input.c interupt.c iterate.c main.c option.c output.c phase.c \ >>> ponder.c preeval.c resign.c root.c learn.c setboard.c test.c time.c \ >>> validate.c annotate.c analyze.c evtest.c bench.c hash.c testepd.c >>>probe.c >>> copy /b book.c+data.c+drawn.c+edit.c+epd.c+epdglue.c+\ >>> init.c+input.c+interupt.c+iterate.c+main.c+option.c+output.c+\ >>> phase.c+ponder.c+preeval.c+resign.c+root.c+learn.c+setboard.c+\ >>> test.c+time.c+validate.c+annotate.c+analyze.c+evtest.c+bench.c+\ >>> hash.c+probe.c+testepd.c x2.c >>> >>>clean: >>> del /q $(cobjs) >>> del /q egtb.obj >>> del /q $(xcobjs) >>> del /q log.* >>> del /q game.** >>> del /q *.bak >>> del /q x1.c >>> del /q x2.c
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.