Lachex is specifically designed for the architecture of the Cray XMP and YMP series of machines. The highly repetitive parts of the program are written in assembly language, the rest in Fortran. Low level parallelism is achieved by extensive use of vector functional units and pipelining. High level parallelism is obtained by means of multiple independent processors splitting up the search using a self-scheduling algorithm and communicating with each other through a large common memory.

Lachex spends 1/3 of its time generating moves, 1/3 doing bookkeeping, and 1/3 evaluatingleaf nodes. The evaluation function is symmetric wherever possible. Mobility, pawn structure, king safety, piece placement and other features make up the evaluation function. Some strategy is incorporated at the root by shifting the minimal window to bias certain types of moves. There is a transposition table which can be a big as 32 million positions, on a 64 million word machine.

Further, something which reminds on fill algorithms like Dumb7Fill was used as described by Wendroff ^{[5]} :

There are several methods for generating the moves of the long range pieces. The method we have had the most success with on Cray machines preceding the X-MP/48 finds the to-squares closest to the home square, and then by a complicated sequence of shifts and boolean operations simultaneously continues these moves in the appropriate directions.

BCH Hashing

To index and lock search tables, especially the transposition table, Lachex utilized signatures of chess positions by BCH Hashing based on BCH-Code as used in Error detection and correction, otherwise incrementally updated similar than signatures from Zobrist Hashing. Lachex used a BCH signature length of 81 (or more) bits to protect 16 bits from the full position string of 749 (64*12 - 2*2*8 + 4 + 8 + 1) bits, which is sufficient to avoid collisions within an 8 ply search. In their paper on Search Tables^{[6]} , Warnock and Wendroff further elaborate on alpha-betainconsistencies, and that with the introduction of search tables, depending on the implementation, alpha-beta may not be order-independent. They refer implementations given by Tony Marsland^{[7]} and Harry Nelson^{[8]}.

Home * Engines * LachexLachex,an Acronym for Los Alamos Chess Experiment, is the chess program developed by Burton Wendroff and Tony Warnock. Lachex was a mainframe program, playing on a Cray X-MP 48, and was written in Fortran and Assembly, performing some kind of full width parallel principal variation search inside an iterative deepening framework. Also, Lachex already implemented presumably none recursive null move pruning, as mentioned in the description from the WCCC 1989 booklet.

^{[1]}Chess Experiment## Table of Contents

## Tournament Play

Lachex played two World Computer Chess Championships^{[2]}, the WCCC 1986 and WCCC 1992, and four ACM North American Computer Chess Championships, ACM 1985, ACM 1986, ACM 1987 and ACM 1991. It was runner up in 1986 only losing the eventual winner Belle.## Selected Games

WCCC 1986, round 1, Ostrich - Lachex^{[3]}## Description

from the WCCC 1989 booklet^{[4]}:Lachex is specifically designed for the architecture of the Cray XMP and YMP series of machines. The highly repetitive parts of the program are written in assembly language, the rest in Fortran. Low level parallelism is achieved by extensive use of vector functional units and pipelining. High level parallelism is obtained by means of multiple independent processors splitting up the search using a self-scheduling algorithm and communicating with each other through a large common memory.The search is basically alpha-beta with iterative deepening. In the initial depth one search each root move is actually scored and the list of moves ordered accordantly. Best moves at subsequent iterations are moved to the top of the list. Scouting is used at ply one only - the first move in the list is scored and the remaining moves are tested with minimal window. Forward pruning is done with a positional estimator at nodes below the horizon and with the null move algorithm above. Moves out of check above the horizon extend the search depth for that path by one, but by two if the check is discovered or double. Selective searches below the horizon include captures, promotions, castling, and some checking moves.Lachex spends 1/3 of its time generating moves, 1/3 doing bookkeeping, and 1/3 evaluating leaf nodes. The evaluation function is symmetric wherever possible. Mobility, pawn structure, king safety, piece placement and other features make up the evaluation function. Some strategy is incorporated at the root by shifting the minimal window to bias certain types of moves. There is a transposition table which can be a big as 32 million positions, on a 64 million word machine.## Board Representation

Lachex used following piece enumeration scheme from the initial position, which does not change during the cause of the game: the a1-rook was labeled with 1, b1-knight with 2, a2-pawn with 9, the a8-rook with 17 and the h7-pawn with 32. Beside a bitboard board-definition using 12 piece bitboards and occupancy as union set, Lachex used a redundant 8x8 board array, containing those 1..32 piece-codes, but zero for empty squares, and piece-arrays containing squares and associated piece-types or zero if the piece is missing. A so calledINC-Arrayindexed by origin, target square and piece type (excluding color, but white and black pawn as distinct types) was used in direct move generation, similar as described inIn Between and Attacked by Piece on Square.Further, something which reminds on fill algorithms like Dumb7Fill was used as described by Wendroff

^{[5]}:There are several methods for generating the moves of the long range pieces. The method we have had the most success with on Cray machines preceding the X-MP/48 finds the to-squares closest to the home square, and then by a complicated sequence of shifts and boolean operations simultaneously continues these moves in the appropriate directions.## BCH Hashing

To index and lock search tables, especially the transposition table, Lachex utilized signatures of chess positions by BCH Hashing based on BCH-Code as used in Error detection and correction, otherwise incrementally updated similar than signatures from Zobrist Hashing. Lachex used a BCH signature length of 81 (or more) bits to protect 16 bits from the full position string of 749 (64*12 - 2*2*8 + 4 + 8 + 1) bits, which is sufficient to avoid collisions within an 8 ply search. In their paper onSearch Tables^{[6]}, Warnock and Wendroff further elaborate on alpha-beta inconsistencies, and that with the introduction of search tables, depending on the implementation, alpha-beta may not be order-independent. They refer implementations given by Tony Marsland^{[7]}and Harry Nelson^{[8]}.## See also

## Publications

1985).Attack Detection and Move Generation on the X-MP/48.ICCA Journal, Vol. 8, No. 21988).Search Tables in Computer Chess. ICCA Journal, Vol. 11, No. 1## External Links

## References

1985).Attack Detection and Move Generation on the X-MP/48.ICCA Journal, Vol. 8, No. 21988).Search Tables in Computer Chess. ICCA Journal, Vol. 11, No. 11986).A Review of Game-Tree Pruning.ICCA Journal, Vol. 9, No. 11985).Hash Tables in Cray Blitz. ICCA Journal, Vol. 8, No. 1## What links here?

Up one level