using ArgParse ############################################################################### # # Parsing command line # ############################################################################### function parse_commandline() settings = ArgParseSettings() @add_arg_table settings begin "--tol" help = "set numerical tolerance for the SDP solver" arg_type = Float64 default = 1e-14 "--iterations" help = "set maximal number of iterations for the SDP solver (default: 20000)" arg_type = Int default = 60000 "--upper-bound" help = "Set an upper bound for the spectral gap" arg_type = Float64 default = Inf "--cpus" help = "Set number of cpus used by solver (default: auto)" arg_type = Int required = false "-N" help = "Consider automorphisms of free group on N generators" arg_type = Int default = 2 "--radius" help = "Radius of ball B_r(e,S) to find solution over" arg_type = Int default = 2 end return parse_args(settings) end parsed_args = parse_commandline() function cpuinfo_physicalcores() maxcore = -1 for line in eachline("/proc/cpuinfo") if startswith(line, "core id") maxcore = max(maxcore, parse(Int, split(line, ':')[2])) end end maxcore < 0 && error("failure to read core ids from /proc/cpuinfo") return maxcore + 1 end if parsed_args["cpus"] == nothing N = cpuinfo_physicalcores() parsed_args["cpus"] = N info("Setting --cpus to $N") elseif parsed_args["cpus"] > cpuinfo_physicalcores() warn("Number of specified cores exceeds the physical core count. Performance may suffer.") end addprocs(parsed_args["cpus"]) BLAS.set_num_threads(parsed_args["cpus"]) include("SAutFNs.jl") include("Orbit.jl") main(SAutFNs, parsed_args)