140 likes | 343 Views
Chess Problem Solver. Solves a given chess position for checkmate Problem input in text format. Problem Characteristics. Search tree solving method Very large computation Low communication requirement. Parallel Architecture. Message passing using PVM Master/Slave processes
E N D
Chess Problem Solver • Solves a given chess position for checkmate • Problem input in text format
Problem Characteristics • Search tree solving method • Very large computation • Low communication requirement
Parallel Architecture • Message passing using PVM • Master/Slave processes • Distributed task queues • Coarse grain tasks • Designed for future flexibility
Implementation Strategy • Basic data unit • Basic software function • Tree search routine
Basic Data Unit: “Problem” • Contains all necessary information about the state of a position • Status of pieces on board • Whose turn to move • What player to solve the problem for • Maximum levels to search • The move that was made to get there
Basic Software Function • Breaks down a given problem using all possible moves. • Generates a new list of problems. • Is used to create the branches in the search tree.
Search Routine • Examines a problem and determines the necessary action. • There are two possibilities: • the problem represents an end node • the node represents a possible solution • the node does not represent a possible solution • the problem is incomplete and the search levels have been exhausted • further investigation is necessary • break down the problem
Master Process Requirements • Input initial problem and break down into list of tasks • Determine the necessary number of slaves • Spawn the slave processes • Send tasks to slaves • Compile results obtained from slaves • Terminate the slaves when complete
Slave Process Requirements • Wait for command from master (solve problem, transfer work, or terminate) • On solve problem command, solve the problem and return results to the master • On transfer work message, send work to another slave process • Terminate message kills the slave process.
Possible Enhancements • Assign processors to a number of groups • Each group will have its own master (determined by lowest TID for example) • Assign a task to each group • Will cut down on communication to/from the master which cuts down stalled tasks • Only necessary for a large number of processors when using coarse grain strategy