64bit compile

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

mar
Posts: 2570
Joined: Fri Nov 26, 2010 2:00 pm
Location: Czech Republic
Full name: Martin Sedlak

Re: 64bit compile

Post by mar »

I think you should try g++ -std=c++11 -msee4.1
But it crashed on me all the time anyway.
If you don't want to bother with Makefile, try creating a single cpp file, where you #include all the other cpp files. That way you can compile using a one-liner directly from terminal.
User avatar
velmarin
Posts: 1600
Joined: Mon Feb 21, 2011 9:48 am

Re: 64bit compile

Post by velmarin »

I compile with Intel, "no intrinsic, only emulation"
Change std :: max to MAX (..), ect.

x32 works well,
x64, occasionally breaks, much.
In debug this line first:
Line 309 in Search.cpp

Code: Select all

	}
	else{
		Move tm;
		//tm.packed=0;
		refinedValue=board.eval<false>();//<-----------------------------CRAHS
		eval=refinedValue;
		board.transTT.save&#40;posKey,0,0,transTable&#58;&#58;TTempty,tm,ply,eval,tm&#41;;
		
		//evalCount++;
	&#125;
hope you helps.
http://www.mediafire.com/download/9qcqa ... c/Vajol.7z
Image
elcabesa
Posts: 855
Joined: Sun May 23, 2010 1:32 pm

Re: 64bit compile

Post by elcabesa »

thank you joseph, I'll try to investigate the problem.
I'll look into this problem.
but I think I need to delay my project until I set up a 64 bit computer on my home
flok

Re: 64bit compile

Post by flok »

phenri wrote:

Code: Select all

gcc vajolet.cpp -o vajolet.exe
In file included from movegen.h&#58;23&#58;0,
                 from vajolet.cpp&#58;34&#58;
search.h&#58; In constructor 'Search&#58;&#58;Search&#40;)'&#58;
search.h&#58;84&#58;37&#58; error&#58; 'log' was not declared in this scope
search.h&#58;86&#58;69&#58; error&#58; 'floor' was not declared in this scope
add:

#include <math.h>
to vajolet.cpp (at the top of the file)

Also, use:
g++ vajolet.cpp -lm -o vajolet.txt
phenri
Posts: 284
Joined: Tue Aug 13, 2013 9:44 am

Re: 64bit compile

Post by phenri »

Code: Select all

$ g++ vajolet.cpp -lm -o vajolet.txt
In file included from vajolet.cpp&#58;30&#58;0&#58;
board.h&#58;331&#58;13&#58; error&#58; default template arguments may not be used in function templates without -std=c++0x or -std=gnu++0x


$ g++ vajolet.cpp -lm -o vajolet.txt -std=c++0x
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0xf&#41;&#58; undefined reference to `checkCpuCapabilities&#40;)'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x14&#41;&#58; undefined reference to `comInit&#40;)'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x1b&#41;&#58; undefined reference to `Board&#58;&#58;KEY'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x20&#41;&#58; undefined reference to `HashKeys&#58;&#58;init&#40;)'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x25&#41;&#58; undefined reference to `dataInit&#40;)'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x2c&#41;&#58; undefined reference to `board'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x31&#41;&#58; undefined reference to `Board&#58;&#58;initPST&#40;)'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x38&#41;&#58; undefined reference to `board'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x3d&#41;&#58; undefined reference to `Board&#58;&#58;init&#40;)'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x4c&#41;&#58; undefined reference to `board'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x60&#41;&#58; undefined reference to `board'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x74&#41;&#58; undefined reference to `command&#40;)'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0xe8&#41;&#58; undefined reference to `Movegen&#58;&#58;genAll&#40;)'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x10e&#41;&#58; undefined reference to `board'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x113&#41;&#58; undefined reference to `Board&#58;&#58;makeMove&#40;Move&#41;'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x12c&#41;&#58; undefined reference to `board'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x131&#41;&#58; undefined reference to `Board&#58;&#58;unmakeMove&#40;)'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x143&#41;&#58; undefined reference to `Movegen&#58;&#58;getNext&#40;Move&)'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x1ec&#41;&#58; undefined reference to `Movegen&#58;&#58;genAll&#40;)'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x212&#41;&#58; undefined reference to `board'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x217&#41;&#58; undefined reference to `Board&#58;&#58;makeMove&#40;Move&#41;'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x230&#41;&#58; undefined reference to `board'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x235&#41;&#58; undefined reference to `Board&#58;&#58;unmakeMove&#40;)'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x247&#41;&#58; undefined reference to `Movegen&#58;&#58;getNext&#40;Move&)'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x2f5&#41;&#58; undefined reference to `board'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x2fa&#41;&#58; undefined reference to `Board&#58;&#58;makeMove&#40;Move&#41;'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x301&#41;&#58; undefined reference to `board'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x336&#41;&#58; undefined reference to `board'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x33b&#41;&#58; undefined reference to `Board&#58;&#58;unmakeMove&#40;)'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x355&#41;&#58; undefined reference to `Move&#58;&#58;display&#40;bool&#41;'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x3a8&#41;&#58; undefined reference to `board'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x3ad&#41;&#58; undefined reference to `Board&#58;&#58;unmakeMove&#40;)'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text+0x3bf&#41;&#58; undefined reference to `Movegen&#58;&#58;getNext&#40;Move&)'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN6Search13initReductionEv&#91;Search&#58;&#58;initReduction&#40;)&#93;+0x29&#41;&#58; undefined reference to `Search&#58;&#58;Reductions'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN6Search13initReductionEv&#91;Search&#58;&#58;initReduction&#40;)&#93;+0x3d&#41;&#58; undefined reference to `Search&#58;&#58;Reductions'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN6Search13initReductionEv&#91;Search&#58;&#58;initReduction&#40;)&#93;+0x7b&#41;&#58; undefined reference to `PVredQ'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN6Search13initReductionEv&#91;Search&#58;&#58;initReduction&#40;)&#93;+0xa2&#41;&#58; undefined reference to `PVredM'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN6Search13initReductionEv&#91;Search&#58;&#58;initReduction&#40;)&#93;+0xb0&#41;&#58; undefined reference to `nonPVRedQ'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN6Search13initReductionEv&#91;Search&#58;&#58;initReduction&#40;)&#93;+0xd7&#41;&#58; undefined reference to `nonPVRedM'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN6Search13initReductionEv&#91;Search&#58;&#58;initReduction&#40;)&#93;+0x13c&#41;&#58; undefined reference to `Search&#58;&#58;Reductions'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN6Search13initReductionEv&#91;Search&#58;&#58;initReduction&#40;)&#93;+0x193&#41;&#58; undefined reference to `Search&#58;&#58;Reductions'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN6Search17clearHistoryTableEv&#91;Search&#58;&#58;clearHistoryTable&#40;)&#93;+0x24&#41;&#58; undefined reference to `Search&#58;&#58;historyTable'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN6Search17clearHistoryTableEv&#91;Search&#58;&#58;clearHistoryTable&#40;)&#93;+0x3d&#41;&#58; undefined reference to `Search&#58;&#58;historyTable'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN7MovegenC1Eists&#91;Movegen&#58;&#58;Movegen&#40;int, short, unsigned short, short&#41;&#93;+0x6a&#41;&#58; undefined reference to `Movegen&#58;&#58;nextPool'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN7MovegenC1Eists&#91;Movegen&#58;&#58;Movegen&#40;int, short, unsigned short, short&#41;&#93;+0x73&#41;&#58; undefined reference to `Movegen&#58;&#58;captureMovesPool'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN7MovegenC1Eists&#91;Movegen&#58;&#58;Movegen&#40;int, short, unsigned short, short&#41;&#93;+0x7d&#41;&#58; undefined reference to `Movegen&#58;&#58;nextPool'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN7MovegenC1Eists&#91;Movegen&#58;&#58;Movegen&#40;int, short, unsigned short, short&#41;&#93;+0x86&#41;&#58; undefined reference to `Movegen&#58;&#58;quietMovesPool'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN7MovegenC1Eists&#91;Movegen&#58;&#58;Movegen&#40;int, short, unsigned short, short&#41;&#93;+0x91&#41;&#58; undefined reference to `Movegen&#58;&#58;nextPool'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN7MovegenC1Eists&#91;Movegen&#58;&#58;Movegen&#40;int, short, unsigned short, short&#41;&#93;+0x97&#41;&#58; undefined reference to `Movegen&#58;&#58;nextPool'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN7MovegenC1Eists&#91;Movegen&#58;&#58;Movegen&#40;int, short, unsigned short, short&#41;&#93;+0xe9&#41;&#58; undefined reference to `board'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN7MovegenC1Eists&#91;Movegen&#58;&#58;Movegen&#40;int, short, unsigned short, short&#41;&#93;+0x11c&#41;&#58; undefined reference to `Search&#58;&#58;killermoves'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN7MovegenC1Eists&#91;Movegen&#58;&#58;Movegen&#40;int, short, unsigned short, short&#41;&#93;+0x14c&#41;&#58; undefined reference to `Search&#58;&#58;killermoves'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN7MovegenC1Eists&#91;Movegen&#58;&#58;Movegen&#40;int, short, unsigned short, short&#41;&#93;+0x16c&#41;&#58; undefined reference to `board'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN7MovegenC1Eists&#91;Movegen&#58;&#58;Movegen&#40;int, short, unsigned short, short&#41;&#93;+0x182&#41;&#58; undefined reference to `board'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN7MovegenC1Eists&#91;Movegen&#58;&#58;Movegen&#40;int, short, unsigned short, short&#41;&#93;+0x19b&#41;&#58; undefined reference to `board'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN7MovegenC1Eists&#91;Movegen&#58;&#58;Movegen&#40;int, short, unsigned short, short&#41;&#93;+0x1a2&#41;&#58; undefined reference to `board'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN7MovegenC1Eists&#91;Movegen&#58;&#58;Movegen&#40;int, short, unsigned short, short&#41;&#93;+0x1b8&#41;&#58; undefined reference to `board'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN7MovegenC1Eists&#91;Movegen&#58;&#58;Movegen&#40;int, short, unsigned short, short&#41;&#93;+0x1d8&#41;&#58; undefined reference to `Search&#58;&#58;refutationMoves'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN7MovegenD1Ev&#91;Movegen&#58;&#58;~Movegen&#40;)&#93;+0x4&#41;&#58; undefined reference to `Movegen&#58;&#58;nextPool'
c&#58;\Temp\ccUNzNJ6.o&#58;vajolet.cpp&#58;(.text$_ZN7MovegenD1Ev&#91;Movegen&#58;&#58;~Movegen&#40;)&#93;+0xa&#41;&#58; undefined reference to `Movegen&#58;&#58;nextPool'
collect2&#58; ld returned 1 exit status
flok

Re: 64bit compile

Post by flok »

phenri wrote:

Code: Select all

$ g++ vajolet.cpp -lm -o vajolet.txt
In file included from vajolet.cpp&#58;30&#58;0&#58;
board.h&#58;331&#58;13&#58; error&#58; default template arguments may not be used in function templates without -std=c++0x or -std=gnu++0x
Ah yes sorry you also need -std=gnu++0x.

So:
g++ -O3 -std=gnu++0x *.cpp -lm -o vajolet.exe

Or use the makefile I created: http://vps001.vanheusden.com/~folkert/vajolet/Makefile
Then it is only a matter of "make". I've not tested a full build because it "command.cpp" uses all kinds of windows-stuff which won't compile on linux of course.
phenri
Posts: 284
Joined: Tue Aug 13, 2013 9:44 am

Re: 64bit compile

Post by phenri »

Code: Select all

$ g++ -O3 -std=gnu++0x *.cpp -lm -o vajolet.exe
In file included from bitops.cpp&#58;20&#58;0&#58;
c&#58;\mingw\bin\../lib/gcc/mingw32/4.6.2/include/smmintrin.h&#58;32&#58;3&#58; error&#58; #error "SSE4.1 instruction set not enabled"

Code: Select all

$ make
g++ -O3 -Wall -std=c++11 -fomit-frame-pointer   -c -o bitops.o bitops.cpp
cc1plus.exe&#58; error&#58; unrecognized command line option '-std=c++11'
make&#58; *** &#91;bitops.o&#93; Error 1
make with -std=c++0x

Code: Select all

$ make
g++ -O3 -Wall -std=c++0x -fomit-frame-pointer   -c -o bitops.o bitops.cpp
In file included from bitops.cpp&#58;20&#58;0&#58;
c&#58;\mingw\bin\../lib/gcc/mingw32/4.6.2/include/smmintrin.h&#58;32&#58;3&#58; error&#58; #error "SSE4.1 instruction set not enabled"
make&#58; *** &#91;bitops.o&#93; Error 1
flok

Re: 64bit compile

Post by flok »

phenri wrote:make with -std=c++0x

Code: Select all

$ make
g++ -O3 -Wall -std=c++0x -fomit-frame-pointer   -c -o bitops.o bitops.cpp
In file included from bitops.cpp&#58;20&#58;0&#58;
c&#58;\mingw\bin\../lib/gcc/mingw32/4.6.2/include/smmintrin.h&#58;32&#58;3&#58; error&#58; #error "SSE4.1 instruction set not enabled"
make&#58; *** &#91;bitops.o&#93; Error 1
Add:
-msse4.1

to the CFLAGS definition in the Makefile.
phenri
Posts: 284
Joined: Tue Aug 13, 2013 9:44 am

Re: 64bit compile

Post by phenri »

Nice :)

Code: Select all

$ make
g++ -msse4.1 -O3 -Wall -std=c++0x -fomit-frame-pointer   -c -o bitops.o bitops.cpp
g++ -msse4.1 -O3 -Wall -std=c++0x -fomit-frame-pointer   -c -o board.o board.cpp
g++ -msse4.1 -O3 -Wall -std=c++0x -fomit-frame-pointer   -c -o data.o data.cpp
g++ -msse4.1 -O3 -Wall -std=c++0x -fomit-frame-pointer   -c -o eval.o eval.cpp
g++ -msse4.1 -O3 -Wall -std=c++0x -fomit-frame-pointer   -c -o hash.o hash.cpp
g++ -msse4.1 -O3 -Wall -std=c++0x -fomit-frame-pointer   -c -o move.o move.cpp
g++ -msse4.1 -O3 -Wall -std=c++0x -fomit-frame-pointer   -c -o movegen.o movegen.cpp
g++ -msse4.1 -O3 -Wall -std=c++0x -fomit-frame-pointer   -c -o search.o search.cpp
search.cpp&#58; In member function 'Move Search&#58;&#58;think&#40;bool&#41;'&#58;
search.cpp&#58;1315&#58;16&#58; warning&#58; unused variable 'TTentry' &#91;-Wunused-variable&#93;
g++ -msse4.1 -O3 -Wall -std=c++0x -fomit-frame-pointer   -c -o see.o see.cpp
g++ -msse4.1 -O3 -Wall -std=c++0x -fomit-frame-pointer   -c -o timer.o timer.cpp
g++ -msse4.1 -O3 -Wall -std=c++0x -fomit-frame-pointer   -c -o transposition.o transposition.cpp
g++ -msse4.1 -O3 -Wall -std=c++0x -fomit-frame-pointer   -c -o vajolet.o vajolet.cpp
g++ -msse4.1 -O3 -Wall -std=c++0x -fomit-frame-pointer   -c -o command.o command.cpp
g++ bitops.o board.o data.o eval.o hash.o move.o movegen.o search.o see.o timer.o transposition.o vajolet.o command.o -lm -o vajolet.exe

Code: Select all

---------------------------
vajolet.exe - System Error
---------------------------
Unable to start the program because it lacks libgcc_s_dw2 -1.dll on your computer. Try reinstalling the program to fix this problem.
---------------------------
OK   
---------------------------
Edit: I am following this http://mingw.5.n7.nabble.com/missing-li ... 30933.html
phenri
Posts: 284
Joined: Tue Aug 13, 2013 9:44 am

Re: 64bit compile

Post by phenri »

The file is already there C:\MinGW\bin\libgcc_s_dw2-1.dll

Ok its works

Code: Select all

uci
id name Vajolet 2.23
id author Marco Belli
option name Hash type spin default 1 min 1 max 512
option name MultiPv type spin default 1 min 1 max 200
uciok