|
@@ -20,6 +20,8 @@ func (solver *Solver) parse_flags() {
|
|
|
var row7 string
|
|
var row7 string
|
|
|
var row8 string
|
|
var row8 string
|
|
|
var row9 string
|
|
var row9 string
|
|
|
|
|
+ var split int
|
|
|
|
|
+ var part int
|
|
|
|
|
|
|
|
// Define parameters
|
|
// Define parameters
|
|
|
flag.StringVar(&row1, "row1", "000000000", "1st row of the sudoku puzzle.")
|
|
flag.StringVar(&row1, "row1", "000000000", "1st row of the sudoku puzzle.")
|
|
@@ -32,10 +34,13 @@ func (solver *Solver) parse_flags() {
|
|
|
flag.StringVar(&row8, "row8", "000000000", "8th row of the sudoku puzzle.")
|
|
flag.StringVar(&row8, "row8", "000000000", "8th row of the sudoku puzzle.")
|
|
|
flag.StringVar(&row9, "row9", "000000000", "9th row of the sudoku puzzle.")
|
|
flag.StringVar(&row9, "row9", "000000000", "9th row of the sudoku puzzle.")
|
|
|
flag.IntVar(&solver.numcpus, "numcpu", runtime.NumCPU(), "Number of CPU cores to assign to this task.")
|
|
flag.IntVar(&solver.numcpus, "numcpu", runtime.NumCPU(), "Number of CPU cores to assign to this task.")
|
|
|
|
|
+ flag.IntVar(&split, "split", 1, "Split the tasks in n parts. This depends on the availability of the first row.")
|
|
|
|
|
+ flag.IntVar(&part, "part", 1, "Process part x in n parts. Cannot be lower than 1, or higher than specified in split.")
|
|
|
|
|
|
|
|
// Parse the flags
|
|
// Parse the flags
|
|
|
flag.Parse()
|
|
flag.Parse()
|
|
|
|
|
|
|
|
|
|
+ // Process any changes to the CPU usage.
|
|
|
if solver.numcpus <= 0 {
|
|
if solver.numcpus <= 0 {
|
|
|
log.Printf("ERROR: Number of CPU cores must be 1 or higher.\n\n")
|
|
log.Printf("ERROR: Number of CPU cores must be 1 or higher.\n\n")
|
|
|
solver.print_Usage()
|
|
solver.print_Usage()
|
|
@@ -46,6 +51,7 @@ func (solver *Solver) parse_flags() {
|
|
|
runtime.GOMAXPROCS(solver.numcpus)
|
|
runtime.GOMAXPROCS(solver.numcpus)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // Process rows
|
|
|
if row1 == "000000000" || row2 == "000000000" || row3 == "000000000" || row4 == "000000000" || row5 == "000000000" || row6 == "000000000" || row7 == "000000000" || row8 == "000000000" || row9 == "000000000" {
|
|
if row1 == "000000000" || row2 == "000000000" || row3 == "000000000" || row4 == "000000000" || row5 == "000000000" || row6 == "000000000" || row7 == "000000000" || row8 == "000000000" || row9 == "000000000" {
|
|
|
log.Printf("ERROR: All parameters must be entered.\n\n")
|
|
log.Printf("ERROR: All parameters must be entered.\n\n")
|
|
|
solver.print_Usage()
|
|
solver.print_Usage()
|
|
@@ -74,6 +80,24 @@ func (solver *Solver) parse_flags() {
|
|
|
solver.row8 = row8
|
|
solver.row8 = row8
|
|
|
solver.row9 = row9
|
|
solver.row9 = row9
|
|
|
|
|
|
|
|
|
|
+ // Process workload splitting
|
|
|
|
|
+ // Ensure split and part are 1 or higher
|
|
|
|
|
+ if split <= 0 || part <= 0 {
|
|
|
|
|
+ log.Printf("ERROR: '-split' and '-part' need to be 1 or higher.\n")
|
|
|
|
|
+ solver.print_Usage()
|
|
|
|
|
+ os.Exit(1)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Ensure part is between 1 and split
|
|
|
|
|
+ if part > split {
|
|
|
|
|
+ log.Printf("ERROR: '-part' cannot be bigger than `-split`.\n")
|
|
|
|
|
+ solver.print_Usage()
|
|
|
|
|
+ os.Exit(1)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ solver.split = split
|
|
|
|
|
+ solver.part = part
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (solver *Solver) validate_row(name string, row string) {
|
|
func (solver *Solver) validate_row(name string, row string) {
|