Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Casc2023 #459

Merged
merged 32 commits into from
Jul 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
2800ab8
first version of CASC SAT 2023 mode
easychair Jun 20, 2023
403aa35
CASC 2023 mode for UEQ
easychair Jun 20, 2023
3cc4fec
CASC 2023 mode for FOF
easychair Jun 20, 2023
b519edd
CASC 2023 strategies ready
easychair Jun 21, 2023
24f0b74
CASC 2023 new UEQ strategy
easychair Jun 21, 2023
659470d
CASC 2023 new TFA strategy
easychair Jun 21, 2023
acfaf65
CASC 2023 new FNT strategy
easychair Jun 21, 2023
6df119d
CASC 2023 new UEQ strategy, with greater slowness
easychair Jun 21, 2023
0411174
CASC 2023 TFA strategy, with slowness 2.0
easychair Jun 21, 2023
791cc51
CASC 2023 TFA strategy, with slowness 2.0 and fixed stl
easychair Jun 21, 2023
7c8f87f
CASC 2023 UEQ strategy with slowness 2.1
easychair Jun 21, 2023
bb372b7
CASC 2023 FNT strategy with slowness 2.1
easychair Jun 21, 2023
05ef610
CASC 2023 FOF strategy with slowness 2.1
easychair Jun 21, 2023
162dcf7
spider output string changed to show used instructions and memory
easychair Jun 22, 2023
9a47e55
spider mode changed to initialize the timer and also set normalize to…
easychair Jun 22, 2023
a27a710
spider mode: starting instruction counter added
easychair Jun 22, 2023
1cda644
CASC 2023 UEQ strategy with instruction countring
easychair Jun 23, 2023
ee37290
new CASC 2023 UEQ schedule
easychair Jun 24, 2023
e99b2e4
don't leak semaphores; hack in simulated instruction limit for LRS
MichaelRawson Jun 24, 2023
9bbc8f1
CASC UEQ instruction-based schedule using sil
easychair Jun 28, 2023
a012df3
Spider mode updated
easychair Jun 28, 2023
007c091
UEQ Spider mode updated with instruction-only strategies
easychair Jun 29, 2023
80f08d3
UEQ Spider 229 super-schedule added
easychair Jun 29, 2023
71918ab
UEQ Spider 232 avoid-LRS super-schedule added
easychair Jun 30, 2023
5bcb424
add StarExec files so I can submit jobs on the go
MichaelRawson Jun 30, 2023
daa3263
UEQ Spider 232 avoid-LRS super-schedule, slowness decreased to 1.2
easychair Jun 30, 2023
9f7c145
Merge branch 'casc2023' of github.com:easychair/vampire into casc2023
easychair Jun 30, 2023
9069a06
UEQ Spider 232 avoid-LRS super-schedule, slowness decreased to 1.1
easychair Jul 1, 2023
b3d5e66
UEQ Spider 233 avoid-LRS schedule, slowness 1.1
easychair Jul 1, 2023
2ac50f9
make option _schedule values corresponding to those of the Schedule enum
Jul 11, 2023
8d999c1
officially move to v4.8
quickbeam123 Jul 12, 2023
4c46697
cleanup starexec/ for next year
MichaelRawson Jul 12, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions CASC/PortfolioMode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -369,13 +369,21 @@ void PortfolioMode::getSchedules(const Property& prop, Schedule& quick, Schedule
Schedules::getSnakeTptpSatSchedule(prop,quick);
break;

case Options::Schedule::CASC_2019:
case Options::Schedule::CASC_2023:
case Options::Schedule::CASC:
Schedules::getCasc2023Schedule(prop,quick,fallback);
break;

case Options::Schedule::CASC_2019:
Schedules::getCasc2019Schedule(prop,quick,fallback);
break;

case Options::Schedule::CASC_SAT_2019:
case Options::Schedule::CASC_SAT_2023:
case Options::Schedule::CASC_SAT:
Schedules::getCascSat2023Schedule(prop,quick,fallback);
break;

case Options::Schedule::CASC_SAT_2019:
Schedules::getCascSat2019Schedule(prop,quick,fallback);
break;

Expand Down Expand Up @@ -483,7 +491,7 @@ bool PortfolioMode::runSchedule(Schedule schedule) {
// kill all running processes first
decltype(processes)::Iterator killIt(processes);
while(killIt.hasNext())
Multiprocessing::instance()->killNoCheck(killIt.next(), SIGKILL);
Multiprocessing::instance()->killNoCheck(killIt.next(), SIGINT);

return success;
}
Expand Down
516 changes: 516 additions & 0 deletions CASC/Schedules.cpp

Large diffs are not rendered by default.

7 changes: 5 additions & 2 deletions CASC/Schedules.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,13 @@ class Schedules
{
public:
static void getScheduleFromFile(const vstring& filename, Schedule& quick);

static void getHigherOrderSchedule2020(Schedule& quick, Schedule& fallback);
static void getCasc2019Schedule(const Shell::Property& property, Schedule& quick, Schedule& fallback);

static void getCasc2023Schedule(const Shell::Property& property, Schedule& quick, Schedule& fallback);
static void getCascSat2023Schedule(const Shell::Property& property, Schedule& quick, Schedule& fallback);

static void getCasc2019Schedule(const Shell::Property& property, Schedule& quick, Schedule& fallback);
static void getCascSat2019Schedule(const Shell::Property& property, Schedule& quick, Schedule& fallback);

static void getSmtcomp2018Schedule(const Shell::Property& property, Schedule& quick, Schedule& fallback);
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -914,7 +914,7 @@ endif() # COMPILE_TESTS
#################################################################
# automated generation of Vampire revision information from git #
#################################################################
set(VAMPIRE_VERSION_NUMBER 4.7)
set(VAMPIRE_VERSION_NUMBER 4.8)

execute_process(
COMMAND git rev-parse --is-inside-work-tree
Expand Down
2 changes: 2 additions & 0 deletions Lib/System.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ void handleSignal (int sigNum)
switch (sigNum)
{
case SIGTERM:

# ifndef _MSC_VER
case SIGQUIT:
if (handled) {
Expand Down Expand Up @@ -139,6 +140,7 @@ void handleSignal (int sigNum)
return;
}
haveSigInt=true;
System::terminateImmediately(VAMP_RESULT_STATUS_SIGINT);
// exit(0);
// return;

Expand Down
4 changes: 2 additions & 2 deletions Lib/Timer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -125,13 +125,13 @@ timer_sigalrm_handler (int sig)
}

#ifdef __linux__
if(Timer::s_limitEnforcement && env.options->instructionLimit()) {
if(Timer::s_limitEnforcement && (env.options->instructionLimit() || env.options->simulatedInstructionLimit())) {
if (perf_fd >= 0) {
// we could also decide not to guard this read by env.options->instructionLimit(),
// to get info about instructions burned even when not instruction limiting
read(perf_fd, &last_instruction_count_read, sizeof(long long));

if (last_instruction_count_read >= MEGA*(long long)env.options->instructionLimit()) {
if (env.options->instructionLimit() && last_instruction_count_read >= MEGA*(long long)env.options->instructionLimit()) {
Timer::setLimitEnforcement(false);
if (TimeoutProtector::protectingTimeout) {
TimeoutProtector::callLimitReachedLater = 2; // 2 for an instr limit
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -507,7 +507,7 @@ all: #default make disabled
################################################################
# automated generation of Vampire revision information

VERSION_NUMBER = 4.7
VERSION_NUMBER = 4.8

# We extract the revision number from svn every time the svn meta-data are modified
# (that's why there is the dependency on .svn/entries)
Expand Down
10 changes: 6 additions & 4 deletions Saturation/LRS.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,12 +110,14 @@ long long LRS::estimatedReachableCount()
float correction_coef = _opt.lrsEstimateCorrectionCoef();
int firstCheck=_opt.lrsFirstTimeCheck(); // (in percent)!

unsigned opt_instruction_limit = 0; // (in mega-instructions)
long int opt_instruction_limit = 0; // (in mega-instructions)
#ifdef __linux__
opt_instruction_limit = _opt.instructionLimit();
opt_instruction_limit = _opt.simulatedInstructionLimit()
? _opt.simulatedInstructionLimit()
: _opt.instructionLimit();
#endif

unsigned instrsBurned = env.timer->elapsedMegaInstructions();
long int instrsBurned = env.timer->elapsedMegaInstructions();

long long result = -1;

Expand All @@ -140,7 +142,7 @@ long long LRS::estimatedReachableCount()
timeLeft=opt_timeLimitDeci*100 - currTime;
}

long long instrsLeft = opt_instruction_limit - instrsBurned;
long int instrsLeft = opt_instruction_limit - instrsBurned;

// note that result is -1 here already

Expand Down
13 changes: 11 additions & 2 deletions Shell/Options.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,13 @@ void Options::init()
_instructionLimit.description="Limit the number (in millions) of executed instructions (excluding the kernel ones).";
_lookup.insert(&_instructionLimit);

_simulatedInstructionLimit = UnsignedOptionValue("simulated_instruction_limit","sil",0);
_simulatedInstructionLimit.description=
"Instruction limit (in millions) of executed instructions for the purpose of reachability estimations of the LRS saturation algorithm (if 0, the actual instruction limit is used)";
_simulatedInstructionLimit.onlyUsefulWith(_saturationAlgorithm.is(equal(SaturationAlgorithm::LRS)));
_lookup.insert(&_simulatedInstructionLimit);
_simulatedInstructionLimit.tag(OptionTag::LRS);

_parsingDoesNotCount = BoolOptionValue("parsing_does_not_count","",false);
_parsingDoesNotCount.description= "Extend the instruction limit by the amount of instructions it took to parse the input problem.";
_lookup.insert(&_parsingDoesNotCount);
Expand Down Expand Up @@ -145,8 +152,10 @@ void Options::init()

_schedule = ChoiceOptionValue<Schedule>("schedule","sched",Schedule::CASC,
{"casc",
"casc_2023",
"casc_2019",
"casc_sat",
"casc_hol_2023",
"casc_sat_2019",
"casc_hol_2020",
"file",
Expand Down Expand Up @@ -2825,7 +2834,7 @@ bool Options::OptionValue<T>::checkConstraints(){
const OptionValueConstraintUP<T>& con = it.next();
if(!con->check(*this)){

if(env.options->mode()==Mode::SPIDER){
if (env.options->mode() == Mode::SPIDER){
reportSpiderFail();
USER_ERROR("\nBroken Constraint: "+con->msg(*this));
}
Expand Down Expand Up @@ -2867,7 +2876,7 @@ bool Options::OptionValue<T>::checkProblemConstraints(Property* prop){
// Constraint should hold whenever the option is set
if(is_set && !con->check(prop)){

if(env.options->mode()==Mode::SPIDER){
if (env.options->mode() == Mode::SPIDER){
reportSpiderFail();
USER_ERROR("WARNING: " + longName + con->msg());
}
Expand Down
7 changes: 6 additions & 1 deletion Shell/Options.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -405,8 +405,10 @@ class Options

enum class Schedule : unsigned int {
CASC,
CASC_2023,
CASC_2019,
CASC_SAT,
CASC_SAT_2023,
CASC_SAT_2019,
CASC_HOL_2020,
FILE,
Expand Down Expand Up @@ -2240,6 +2242,8 @@ bool _hard;
#ifdef __linux__
unsigned instructionLimit() const { return _instructionLimit.actualValue; }
void setInstructionLimit(unsigned newVal) { _instructionLimit.actualValue = newVal; }
unsigned simulatedInstructionLimit() const { return _simulatedInstructionLimit.actualValue; }
unsigned setSimulatedInstructionLimit() const { return _simulatedInstructionLimit.actualValue; }
bool parsingDoesNotCount() const { return _parsingDoesNotCount.actualValue; }
#endif
int inequalitySplitting() const { return _inequalitySplitting.actualValue; }
Expand Down Expand Up @@ -2678,7 +2682,8 @@ bool _hard;
StringOptionValue _ltbDirectory;

#ifdef __linux__
UnsignedOptionValue _instructionLimit;
UnsignedOptionValue _instructionLimit;
UnsignedOptionValue _simulatedInstructionLimit;
BoolOptionValue _parsingDoesNotCount;
#endif

Expand Down
6 changes: 5 additions & 1 deletion Shell/UIHelper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include "Debug/TimeProfiling.hpp"
#include "Lib/VString.hpp"
#include "Lib/Timer.hpp"
#include "Lib/Allocator.hpp"

#include "Kernel/InferenceStore.hpp"
#include "Kernel/Problem.hpp"
Expand Down Expand Up @@ -100,12 +101,15 @@ void reportSpiderStatus(char status)
}

vstring problemName = Lib::env.options->problemName();
Timer* timer = Lib::env.timer;

env.beginOutput();
env.out()
<< status << " "
<< (problemName.length() == 0 ? "unknown" : problemName) << " "
<< (Lib::env.timer ? Lib::env.timer->elapsedDeciseconds() : 0) << " "
<< (timer ? timer->elapsedDeciseconds() : 0) << " "
<< (timer ? timer->elapsedMegaInstructions() : 0) << " "
<< Allocator::getUsedMemory()/1048576 << " "
<< (Lib::env.options ? Lib::env.options->testId() : "unknown") << " "
<< commitNumber << ':' << z3Version << endl;
env.endOutput();
Expand Down
9 changes: 9 additions & 0 deletions starexec/bin/starexec_run_casc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/sh

input_language=`egrep -om1 "^(thf|tff|tcf|fof|cnf)" $1`
if test "$input_language" = "thf"
then
exec ./vampire-hol --cores 8 --input_syntax tptp --proof tptp --output_axiom_names on --mode portfolio --schedule snake_tptp_hol $1 -m 12000 -t $STAREXEC_WALLCLOCK_LIMIT
else
exec ./vampire --mode casc -m 16384 --cores 7 -t $STAREXEC_WALLCLOCK_LIMIT $1
fi
3 changes: 3 additions & 0 deletions starexec/bin/starexec_run_casc_sat
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/sh

exec ./vampire --mode casc_sat -m 16384 --cores 7 -t $STAREXEC_WALLCLOCK_LIMIT $1
3 changes: 3 additions & 0 deletions starexec/bin/starexec_run_slh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/sh

exec ./vampire_hol --input_syntax tptp --proof tptp --output_axiom_names on --mode portfolio --schedule snake_slh $1 -m 12000 -t $STAREXEC_CPU_LIMIT
6 changes: 6 additions & 0 deletions vampire.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -478,6 +478,12 @@ void spiderMode()
CALL("spiderMode()");
env.options->setBadOptionChoice(Options::BadOption::HARD);
env.options->setOutputMode(Options::Output::SPIDER);
env.options->setNormalize(true);
// to start counting instructions
#ifdef __linux__
Timer::ensureTimerInitialized();
#endif

Exception* exception = 0;
#if VZ3
z3::exception* z3_exception = 0;
Expand Down
2 changes: 1 addition & 1 deletion z3
Submodule z3 updated 1172 files
Loading