def test_problem_large(self): problem = Problem(name="test", terms=[], problem_type=ProblemType.pubo) self.assertTrue(not problem.is_large()) problem.add_term(5.0, []) self.assertTrue(not problem.is_large()) problem.add_term(6.0, list(range(3000))) self.assertTrue(not problem.is_large()) problem.add_terms( [Term(indices=[9999], c=1.0)] * int(1e6) ) # create 1mil dummy terms self.assertTrue(problem.is_large())
def check_submission_warnings(self, problem: Problem): # print a warning if we suspect the job # may take long based on its configured properties. is_large_problem = problem.is_large() if is_large_problem: if self.nested_params and "sweeps" in self.params["params"]: sweeps = int(self.params["params"]["sweeps"]) # if problem is large and sweeps is large, warn. if sweeps >= Solver.SWEEPS_WARNING: logger.warning( f"There is a large problem submitted and \ a large number of sweeps ({sweeps}) configured. \ This submission could result in a long runtime." ) # do a timeout check if param-free, to warn # new users who accidentally set high timeout values. if self.nested_params and "timeout" in self.params["params"]: timeout = int(self.params["params"]["timeout"]) if timeout >= Solver.TIMEOUT_WARNING: logger.warning( f"A large timeout has been set for this submission \ ({timeout}). \ If this is intended, disregard this warning. \ Otherwise, consider cancelling the job \ and resubmitting with a lower timeout." )