Author: Peter Skinner
Date: 02:39:37 02/19/05
Go up one level in this thread
On February 19, 2005 at 04:20:19, Mike Byrne wrote: >On February 18, 2005 at 13:38:57, Peter Skinner wrote: > >>On February 18, 2005 at 13:34:35, Eugene Nalimov wrote: >> >>>On February 18, 2005 at 13:30:09, Peter Skinner wrote: >>> >>>>On February 18, 2005 at 12:43:20, Eugene Nalimov wrote: >>>> >>>>>2 remarks: >>>>> >>>>>(1) You mentioned /GL -- that is link-time code genration, not POGO. Did you >>>>>really compiled with POGO, e.g. built instrumented version, trained it, and then >>>>>built optimized one? >>>>> >>>>>(2) Output that you provided says "System is SMP, not NUMA". When I start Carfty >>>>>of Windows Server on AMD64 it correctly recognizes it as NUMA. I am not sure who >>>>>is guilty here -- Windows XP or BIOS settings. If later than there should be a >>>>>way to turn NUMA support on. >>>>> >>>>>Thanks, >>>>>Eugene >>>> >>>>In the help file it states you first have to use the /GL switch to enable the >>>>possiblility of POGO compiles. >>>> >>>>If I read it right, you have to use the /GL switch first to compile the .c nodes >>>>to objects, then use /LTCG:PGINSTRUMENT to generate the exe with the pgi file, >>>>then train it, and then recompile using the trained info. >>> >>>Yes, exactly so. But you can also use /GL by itself -- usually it provides nice >>>speedup over "plain" /O2 (or /Ox). >>> >>>Thanks, >>>Eugene >> >>Interesting that I right... >> >>Then the question of why I can not get it to work. This is what I am doing: >> >>I first compile the .c nodes using this: >> >>cl /G6 /GL /Gs /GA /GF /GT /Gr /MT /arch:SSE /DSMP /DCPUS=4 /DNT_INTEREX >>/DNT_i386 /DWIN32 /D_CONSOLE /DWINDOWS /DFAST /DEGTB6 /DEPD /DFUTILITY >>/DVC_INLINE_ASM crafty.c egtb.cpp -c >> >>Then I use: >> >>cl /G6 /LTCG:PGINSTRUMENT /Gs /GA /GF /GT /Gr /MT /arch:SSE /DSMP /DCPUS=4 >>/DNT_INTEREX /DNT_i386 /DWIN32 /D_CONSOLE /DWINDOWS /DFAST /DEGTB6 /DEPD >>/DFUTILITY /DVC_INLINE_ASM crafty.obj egtb.obj >> >>Here is where I get stuck. There is no empty pgi file generated. >> >>Where exactly am I going wrong? >> >>Peter > >Peter do this: > > >use this makefile, named "makefile.nt" > ># 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 = /GL /O2 /Ox /Ot /Gr /Ob2 /w >#/GL > >#CFLAGS = /Od /Zi >#CFLAGS = /Ox /G6 /Gr /Ob2 > ># Linker flags, normally not needed except for debug builds: >#LDFLAGS = >LDFLAGS =/ltcg:pgi /pgd:wcrafty.pgd > >#LDFLAGS = /ltcg:pgo /pgd:wcrafty.pgd >#Nmake /A -f makefile.nt >#Nmake -f makefile.nt > >#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 /DNUMA /DFUTILITY >COPTS = /MT /DSMP /DCPUS=2 /DFAST /D_M_AMD64 /DFUTILITY > ># 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 vcinline.h, use >/DVC_INLINE_ASM.DINLINE_AMD > >#AOPTS = /DVC_INLINE_ASM /DUSE_ASSEMBLY > > >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 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 validate.obj probe.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 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 > copy /b 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 \ > 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 > 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 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 > >=============================================== >select your command compiler > >->START>PROGRAMS>MICROSOFT VISUAL STUDIO 5 BETA>VISUAL STUDIO TOOLS><select >command compiler> > >navigate through the "dos" window to where your crafty sources are and copy >paste this into the window: > >Nmake craftyx /A -f makefile.nt > >start the wcrafty.exe and type bench - let it run ... > >quit wcraftyx > >type/copy this at the command prompt > >"link =/ltcg:pgi /pgd:wcrafty.pgd" > >Best, > >Mike Hi Mike, I did all that, but I get this error: Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.40904 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. x1.c x1.c(8636) : fatal error C1083: Cannot open include file: 'sys/times.h': No such file or directory NMAKE : fatal error U1077: 'cl' : return code '0x2' Stop. I have looked through my entire system, and I have time.h, but no times.h. Really odd. Any clue? Peter
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.