add RS/pakis switch
This commit is contained in:
parent
aa025b2ae1
commit
8652289626
BIN
light-v4-1
BIN
light-v4-1
Binary file not shown.
BIN
preprocess/binary.o
Normal file
BIN
preprocess/binary.o
Normal file
Binary file not shown.
BIN
preprocess/card.o
Normal file
BIN
preprocess/card.o
Normal file
Binary file not shown.
BIN
preprocess/gauss.o
Normal file
BIN
preprocess/gauss.o
Normal file
Binary file not shown.
BIN
preprocess/preprocess.o
Normal file
BIN
preprocess/preprocess.o
Normal file
Binary file not shown.
BIN
preprocess/propagation.o
Normal file
BIN
preprocess/propagation.o
Normal file
Binary file not shown.
BIN
preprocess/resolution.o
Normal file
BIN
preprocess/resolution.o
Normal file
Binary file not shown.
44
solve.cpp
44
solve.cpp
@ -55,8 +55,45 @@ void light::init_workers() {
|
|||||||
|
|
||||||
void light::diversity_workers() {
|
void light::diversity_workers() {
|
||||||
for (int i = 0; i < OPT(threads); i++) {
|
for (int i = 0; i < OPT(threads); i++) {
|
||||||
|
if (OPT(shuffle)) {
|
||||||
if (i) workers[i]->configure("order_reset", i);
|
if (i) workers[i]->configure("order_reset", i);
|
||||||
}
|
}
|
||||||
|
if (OPT(pakis)) {
|
||||||
|
if (i == 13 || i == 14 || i == 20 || i == 21)
|
||||||
|
workers[i]->configure("tier1", 3);
|
||||||
|
else
|
||||||
|
workers[i]->configure("tier1", 2);
|
||||||
|
|
||||||
|
if (i == 3 || i == 4 || i == 6 || i == 8 || i == 11 || i == 12 || i == 13 || i == 14 || i == 16 || i == 18 || i == 23)
|
||||||
|
workers[i]->configure("chrono", 0);
|
||||||
|
else
|
||||||
|
workers[i]->configure("chrono", 1);
|
||||||
|
|
||||||
|
if (i == 2 || i == 23)
|
||||||
|
workers[i]->configure("stable", 0);
|
||||||
|
else if (i == 6 || i == 16)
|
||||||
|
workers[i]->configure("stable", 2);
|
||||||
|
else
|
||||||
|
workers[i]->configure("stable", 1);
|
||||||
|
|
||||||
|
if (i == 10 || i == 22)
|
||||||
|
workers[i]->configure("walkinitially", 1);
|
||||||
|
else
|
||||||
|
workers[i]->configure("walkinitially", 0);
|
||||||
|
|
||||||
|
if (i == 7 || i == 8 || i == 9 || i == 17 || i == 18 || i == 19 || i == 20)
|
||||||
|
workers[i]->configure("target", 0);
|
||||||
|
else if (i == 0 || i == 2 || i == 3 || i == 4 || i == 5 || i == 6 || i == 10 || i == 23)
|
||||||
|
workers[i]->configure("target", 1);
|
||||||
|
else
|
||||||
|
workers[i]->configure("target", 2);
|
||||||
|
|
||||||
|
if (i == 4 || i == 5 || i == 8 || i == 9 || i == 12 || i == 13 || i == 15 || i == 18 || i == 19)
|
||||||
|
workers[i]->configure("phase", 0);
|
||||||
|
else
|
||||||
|
workers[i]->configure("phase", 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void light::terminate_workers() {
|
void light::terminate_workers() {
|
||||||
@ -120,6 +157,13 @@ int light::solve() {
|
|||||||
for (int i = 0; i < OPT(threads); i++) {
|
for (int i = 0; i < OPT(threads); i++) {
|
||||||
pthread_join(ptr[i], NULL);
|
pthread_join(ptr[i], NULL);
|
||||||
}
|
}
|
||||||
|
auto clk_now = std::chrono::high_resolution_clock::now();
|
||||||
|
double solve_time = std::chrono::duration_cast<std::chrono::milliseconds>(clk_now - clk_sol_st).count();
|
||||||
|
solve_time = 0.001 * solve_time;
|
||||||
|
printf("c solve time: %.2lf\n", solve_time);
|
||||||
|
for (int i = 0; i < OPT(threads); i++) {
|
||||||
|
printf("c thread %d waiting time: %.2lf\n", i, workers[i]->get_waiting_time());
|
||||||
|
}
|
||||||
delete []ptr;
|
delete []ptr;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -268,15 +268,18 @@ if __name__ == "__main__":
|
|||||||
solvers = []
|
solvers = []
|
||||||
|
|
||||||
|
|
||||||
solvers.append(solver_SAT_standard_gnomon("/pub/data/chenzh/res/light/v3--1-preprocess","preprocess"))
|
solvers.append(solver_SAT_standard_gnomon("/pub/data/chenzh/res/sota/p-mcomsps","p-mcomsps"))
|
||||||
solvers.append(solver_SAT_standard_gnomon("/pub/data/chenzh/res/light/v4-nps","sharing-nps"))
|
solvers.append(solver_SAT_standard_gnomon("/pub/data/chenzh/res/sota/treengeling","treengeling"))
|
||||||
solvers.append(solver_SAT_standard_gnomon("/pub/data/chenzh/res/light/v4-dps","sharing-dps"))
|
# solvers.append(solver_SAT_standard_gnomon("/pub/data/chenzh/res/light/v3--1-preprocess","preprocess"))
|
||||||
|
solvers.append(solver_SAT_standard_gnomon("/pub/data/chenzh/res/light/v4-1-preprocess","pre"))
|
||||||
|
solvers.append(solver_SAT_standard_gnomon("/pub/data/chenzh/res/light/v4-1-nps","sharing-nps"))
|
||||||
|
# solvers.append(solver_SAT_standard_gnomon("/pub/data/chenzh/res/light/v4-dps","sharing-dps"))
|
||||||
|
|
||||||
# append_all_solvers_in_dir(solvers, "/pub/data/chenzh/res/light/")
|
# append_all_solvers_in_dir(solvers, "/pub/data/chenzh/res/light/")
|
||||||
samples = []
|
samples = []
|
||||||
samples.append(["/pub/data/chenzh/data/sat2020/vbs.txt", "vbs"])
|
samples.append(["/pub/data/chenzh/data/sat2020/vbs.txt", "vbs"])
|
||||||
samples.append(["/pub/data/chenzh/data/sat2021/vbs.txt", "vbs"])
|
samples.append(["/pub/data/chenzh/data/sat2021/vbs.txt", "vbs"])
|
||||||
samples.append(["/pub/data/chenzh/data/sat2022/all.txt", "all"])
|
# samples.append(["/pub/data/chenzh/data/sat2022/all.txt", "all"])
|
||||||
clt = calculater(solvers, samples)
|
clt = calculater(solvers, samples)
|
||||||
clt.cal_and_show()
|
clt.cal_and_show()
|
||||||
|
|
||||||
|
Binary file not shown.
132
testLight/run4-1.sh
Executable file
132
testLight/run4-1.sh
Executable file
@ -0,0 +1,132 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
SEND_THREAD_NUM=4
|
||||||
|
tmp_fifofile="/tmp/$$.fifo" # 脚本运行的当前进程ID号作为文件名
|
||||||
|
mkfifo "$tmp_fifofile" # 新建一个随机fifo管道文件
|
||||||
|
exec 6<>"$tmp_fifofile" # 定义文件描述符6指向这个fifo管道文件
|
||||||
|
rm $tmp_fifofile
|
||||||
|
for i in $(seq 1 $SEND_THREAD_NUM)
|
||||||
|
do
|
||||||
|
echo # for循环 往 fifo管道文件中写入 $SEND_THREAD_NUM 个空行
|
||||||
|
done >&6
|
||||||
|
|
||||||
|
# CUTOFF_TIME=3600
|
||||||
|
instance_20="/pub/data/chenzh/data/sat2020"
|
||||||
|
instance_21="/pub/data/chenzh/data/sat2021"
|
||||||
|
instance_22="/pub/data/chenzh/data/sat2022"
|
||||||
|
|
||||||
|
|
||||||
|
res1="/pub/data/chenzh/res/light/v1-origin"
|
||||||
|
res2="/pub/data/chenzh/res/light/v4-1-preprocess"
|
||||||
|
res3="/pub/data/chenzh/res/light/v1-1-origin"
|
||||||
|
res4="/pub/data/chenzh/res/light/v2-preprocess"
|
||||||
|
res5="/pub/data/chenzh/res/light/v3--1-preprocess"
|
||||||
|
res_no="/pub/data/chenzh/res/unused"
|
||||||
|
#####################################################
|
||||||
|
|
||||||
|
all_datas=($instance_21)
|
||||||
|
for((i=0;i<${#all_datas[*]};i++))
|
||||||
|
do
|
||||||
|
instance=${all_datas[$i]}
|
||||||
|
|
||||||
|
# res_solver_ins=$res5
|
||||||
|
# if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
# mkdir -p $res_solver_ins
|
||||||
|
# fi
|
||||||
|
# for dir_file in `cat $instance/vbs.txt`
|
||||||
|
# do
|
||||||
|
# file=$dir_file
|
||||||
|
# echo $file
|
||||||
|
# touch $res_solver_ins/$file
|
||||||
|
# read -u 6
|
||||||
|
# {
|
||||||
|
# cd /home/chenzh/solvers/Light
|
||||||
|
# time ./light-v3--1 $instance/$file --share=1 --threads=31
|
||||||
|
# echo >&6
|
||||||
|
# } >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
# done
|
||||||
|
# res_solver_ins=$res4
|
||||||
|
# if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
# mkdir -p $res_solver_ins
|
||||||
|
# fi
|
||||||
|
# for dir_file in `cat $instance/vbs.txt`
|
||||||
|
# do
|
||||||
|
# file=$dir_file
|
||||||
|
# echo $file
|
||||||
|
# touch $res_solver_ins/$file
|
||||||
|
# read -u 6
|
||||||
|
# {
|
||||||
|
# cd /home/chenzh/solvers/Light
|
||||||
|
# time ./light-v2 $instance/$file --share=1 --threads=31
|
||||||
|
# echo >&6
|
||||||
|
# } >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
# done
|
||||||
|
|
||||||
|
# res_solver_ins=$res3
|
||||||
|
# if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
# mkdir -p $res_solver_ins
|
||||||
|
# fi
|
||||||
|
# for dir_file in `cat $instance/vbs.txt`
|
||||||
|
# do
|
||||||
|
# file=$dir_file
|
||||||
|
# echo $file
|
||||||
|
# touch $res_solver_ins/$file
|
||||||
|
# read -u 6
|
||||||
|
# {
|
||||||
|
# cd /home/chenzh/solvers/Light
|
||||||
|
# time ./light-v1-1 $instance/$file --simplify=0 --reset=1
|
||||||
|
# echo >&6
|
||||||
|
# } >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
# done
|
||||||
|
|
||||||
|
res_solver_ins=$res2
|
||||||
|
if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
mkdir -p $res_solver_ins
|
||||||
|
fi
|
||||||
|
for dir_file in `cat $instance/vbs111.txt`
|
||||||
|
do
|
||||||
|
file=$dir_file
|
||||||
|
echo $file
|
||||||
|
touch $res_solver_ins/$file
|
||||||
|
read -u 6
|
||||||
|
{
|
||||||
|
cd /home/chenzh/solvers/Light
|
||||||
|
time ./light-v4-1 $instance/$file --simplify=1
|
||||||
|
echo >&6
|
||||||
|
} >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
done
|
||||||
|
|
||||||
|
# res_solver_ins=$res1
|
||||||
|
# if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
# mkdir -p $res_solver_ins
|
||||||
|
# fi
|
||||||
|
# for dir_file in `cat $instance/vbs.txt`
|
||||||
|
# do
|
||||||
|
# file=$dir_file
|
||||||
|
# echo $file
|
||||||
|
# touch $res_solver_ins/$file
|
||||||
|
# read -u 6
|
||||||
|
# {
|
||||||
|
# cd /home/chenzh/solvers/Light
|
||||||
|
# time ./light-v1 $instance/$file --simplify=0
|
||||||
|
# echo >&6
|
||||||
|
# } >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
# done
|
||||||
|
done
|
||||||
|
|
||||||
|
res_solver_ins=$res_no
|
||||||
|
if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
mkdir -p $res_solver_ins
|
||||||
|
fi
|
||||||
|
for((i=0;i<4;i++))
|
||||||
|
do
|
||||||
|
read -u 6
|
||||||
|
{
|
||||||
|
cd /home/chenzh/solvers/Light
|
||||||
|
time ./light-v1 /home/chenzh/data/hard_cnfs/49.cnf
|
||||||
|
echo >&6
|
||||||
|
} >$res_solver_ins/$i 2>>$res_solver_ins/$i &
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
exit 0
|
132
testLight/run4-2.sh
Executable file
132
testLight/run4-2.sh
Executable file
@ -0,0 +1,132 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
SEND_THREAD_NUM=4
|
||||||
|
tmp_fifofile="/tmp/$$.fifo" # 脚本运行的当前进程ID号作为文件名
|
||||||
|
mkfifo "$tmp_fifofile" # 新建一个随机fifo管道文件
|
||||||
|
exec 6<>"$tmp_fifofile" # 定义文件描述符6指向这个fifo管道文件
|
||||||
|
rm $tmp_fifofile
|
||||||
|
for i in $(seq 1 $SEND_THREAD_NUM)
|
||||||
|
do
|
||||||
|
echo # for循环 往 fifo管道文件中写入 $SEND_THREAD_NUM 个空行
|
||||||
|
done >&6
|
||||||
|
|
||||||
|
# CUTOFF_TIME=3600
|
||||||
|
instance_20="/pub/data/chenzh/data/sat2020"
|
||||||
|
instance_21="/pub/data/chenzh/data/sat2021"
|
||||||
|
instance_22="/pub/data/chenzh/data/sat2022"
|
||||||
|
|
||||||
|
|
||||||
|
res1="/pub/data/chenzh/res/light/v1-origin"
|
||||||
|
res2="/pub/data/chenzh/res/light/v4-1-preprocess"
|
||||||
|
res3="/pub/data/chenzh/res/light/v1-1-origin"
|
||||||
|
res4="/pub/data/chenzh/res/light/v2-preprocess"
|
||||||
|
res5="/pub/data/chenzh/res/light/v3--1-preprocess"
|
||||||
|
res_no="/pub/data/chenzh/res/unused"
|
||||||
|
#####################################################
|
||||||
|
|
||||||
|
all_datas=($instance_20)
|
||||||
|
for((i=0;i<${#all_datas[*]};i++))
|
||||||
|
do
|
||||||
|
instance=${all_datas[$i]}
|
||||||
|
|
||||||
|
# res_solver_ins=$res5
|
||||||
|
# if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
# mkdir -p $res_solver_ins
|
||||||
|
# fi
|
||||||
|
# for dir_file in `cat $instance/vbs.txt`
|
||||||
|
# do
|
||||||
|
# file=$dir_file
|
||||||
|
# echo $file
|
||||||
|
# touch $res_solver_ins/$file
|
||||||
|
# read -u 6
|
||||||
|
# {
|
||||||
|
# cd /home/chenzh/solvers/Light
|
||||||
|
# time ./light-v3--1 $instance/$file --share=1 --threads=31
|
||||||
|
# echo >&6
|
||||||
|
# } >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
# done
|
||||||
|
# res_solver_ins=$res4
|
||||||
|
# if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
# mkdir -p $res_solver_ins
|
||||||
|
# fi
|
||||||
|
# for dir_file in `cat $instance/vbs.txt`
|
||||||
|
# do
|
||||||
|
# file=$dir_file
|
||||||
|
# echo $file
|
||||||
|
# touch $res_solver_ins/$file
|
||||||
|
# read -u 6
|
||||||
|
# {
|
||||||
|
# cd /home/chenzh/solvers/Light
|
||||||
|
# time ./light-v2 $instance/$file --share=1 --threads=31
|
||||||
|
# echo >&6
|
||||||
|
# } >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
# done
|
||||||
|
|
||||||
|
# res_solver_ins=$res3
|
||||||
|
# if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
# mkdir -p $res_solver_ins
|
||||||
|
# fi
|
||||||
|
# for dir_file in `cat $instance/vbs.txt`
|
||||||
|
# do
|
||||||
|
# file=$dir_file
|
||||||
|
# echo $file
|
||||||
|
# touch $res_solver_ins/$file
|
||||||
|
# read -u 6
|
||||||
|
# {
|
||||||
|
# cd /home/chenzh/solvers/Light
|
||||||
|
# time ./light-v1-1 $instance/$file --simplify=0 --reset=1
|
||||||
|
# echo >&6
|
||||||
|
# } >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
# done
|
||||||
|
|
||||||
|
res_solver_ins=$res2
|
||||||
|
if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
mkdir -p $res_solver_ins
|
||||||
|
fi
|
||||||
|
for dir_file in `cat $instance/vbs.txt`
|
||||||
|
do
|
||||||
|
file=$dir_file
|
||||||
|
echo $file
|
||||||
|
touch $res_solver_ins/$file
|
||||||
|
read -u 6
|
||||||
|
{
|
||||||
|
cd /home/chenzh/solvers/Light
|
||||||
|
time ./light-v4-1 $instance/$file --simplify=1
|
||||||
|
echo >&6
|
||||||
|
} >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
done
|
||||||
|
|
||||||
|
# res_solver_ins=$res1
|
||||||
|
# if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
# mkdir -p $res_solver_ins
|
||||||
|
# fi
|
||||||
|
# for dir_file in `cat $instance/vbs.txt`
|
||||||
|
# do
|
||||||
|
# file=$dir_file
|
||||||
|
# echo $file
|
||||||
|
# touch $res_solver_ins/$file
|
||||||
|
# read -u 6
|
||||||
|
# {
|
||||||
|
# cd /home/chenzh/solvers/Light
|
||||||
|
# time ./light-v1 $instance/$file --simplify=0
|
||||||
|
# echo >&6
|
||||||
|
# } >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
# done
|
||||||
|
done
|
||||||
|
|
||||||
|
res_solver_ins=$res_no
|
||||||
|
if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
mkdir -p $res_solver_ins
|
||||||
|
fi
|
||||||
|
for((i=0;i<4;i++))
|
||||||
|
do
|
||||||
|
read -u 6
|
||||||
|
{
|
||||||
|
cd /home/chenzh/solvers/Light
|
||||||
|
time ./light-v1 /home/chenzh/data/hard_cnfs/49.cnf
|
||||||
|
echo >&6
|
||||||
|
} >$res_solver_ins/$i 2>>$res_solver_ins/$i &
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
exit 0
|
@ -17,7 +17,7 @@ instance_22="/pub/data/chenzh/data/sat2022"
|
|||||||
|
|
||||||
|
|
||||||
res1="/pub/data/chenzh/res/light/v1-origin"
|
res1="/pub/data/chenzh/res/light/v1-origin"
|
||||||
res2="/pub/data/chenzh/res/light/v1-preprocess"
|
res2="/pub/data/chenzh/res/light/v4-1-preprocess"
|
||||||
res3="/pub/data/chenzh/res/light/v1-1-origin"
|
res3="/pub/data/chenzh/res/light/v1-1-origin"
|
||||||
res4="/pub/data/chenzh/res/light/v2-preprocess"
|
res4="/pub/data/chenzh/res/light/v2-preprocess"
|
||||||
res5="/pub/data/chenzh/res/light/v3--1-preprocess"
|
res5="/pub/data/chenzh/res/light/v3--1-preprocess"
|
||||||
@ -91,7 +91,7 @@ do
|
|||||||
read -u 6
|
read -u 6
|
||||||
{
|
{
|
||||||
cd /home/chenzh/solvers/Light
|
cd /home/chenzh/solvers/Light
|
||||||
time ./light-v1 $instance/$file --simplify=1
|
time ./light-v4-1 $instance/$file --simplify=1
|
||||||
echo >&6
|
echo >&6
|
||||||
} >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
} >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
done
|
done
|
@ -21,11 +21,11 @@ res2="/pub/data/chenzh/res/light/v1-preprocess-2"
|
|||||||
res3="/pub/data/chenzh/res/light/v1-1-origin"
|
res3="/pub/data/chenzh/res/light/v1-1-origin"
|
||||||
res4="/pub/data/chenzh/res/light/v2-preprocess"
|
res4="/pub/data/chenzh/res/light/v2-preprocess"
|
||||||
res5="/pub/data/chenzh/res/light/v3--1-preprocess"
|
res5="/pub/data/chenzh/res/light/v3--1-preprocess"
|
||||||
res6="/pub/data/chenzh/res/light/v4-nps"
|
res6="/pub/data/chenzh/res/light/v4-1-nps"
|
||||||
res_no="/pub/data/chenzh/res/unused"
|
res_no="/pub/data/chenzh/res/unused"
|
||||||
#####################################################
|
#####################################################
|
||||||
|
|
||||||
all_datas=($instance_21 $instance_20 $instance_22)
|
all_datas=($instance_21)
|
||||||
for((i=0;i<${#all_datas[*]};i++))
|
for((i=0;i<${#all_datas[*]};i++))
|
||||||
do
|
do
|
||||||
instance=${all_datas[$i]}
|
instance=${all_datas[$i]}
|
||||||
@ -42,7 +42,7 @@ do
|
|||||||
read -u 6
|
read -u 6
|
||||||
{
|
{
|
||||||
cd /home/chenzh/solvers/Light
|
cd /home/chenzh/solvers/Light
|
||||||
time ./light-v4 $instance/$file --share=1
|
time ./light-v4-1 $instance/$file --share=1
|
||||||
echo >&6
|
echo >&6
|
||||||
} >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
} >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
done
|
done
|
151
testLight/run5-2.sh
Executable file
151
testLight/run5-2.sh
Executable file
@ -0,0 +1,151 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
SEND_THREAD_NUM=4
|
||||||
|
tmp_fifofile="/tmp/$$.fifo" # 脚本运行的当前进程ID号作为文件名
|
||||||
|
mkfifo "$tmp_fifofile" # 新建一个随机fifo管道文件
|
||||||
|
exec 6<>"$tmp_fifofile" # 定义文件描述符6指向这个fifo管道文件
|
||||||
|
rm $tmp_fifofile
|
||||||
|
for i in $(seq 1 $SEND_THREAD_NUM)
|
||||||
|
do
|
||||||
|
echo # for循环 往 fifo管道文件中写入 $SEND_THREAD_NUM 个空行
|
||||||
|
done >&6
|
||||||
|
|
||||||
|
# CUTOFF_TIME=3600
|
||||||
|
instance_20="/pub/data/chenzh/data/sat2020"
|
||||||
|
instance_21="/pub/data/chenzh/data/sat2021"
|
||||||
|
instance_22="/pub/data/chenzh/data/sat2022"
|
||||||
|
|
||||||
|
|
||||||
|
res1="/pub/data/chenzh/res/light/v1-origin"
|
||||||
|
res2="/pub/data/chenzh/res/light/v1-preprocess-2"
|
||||||
|
res3="/pub/data/chenzh/res/light/v1-1-origin"
|
||||||
|
res4="/pub/data/chenzh/res/light/v2-preprocess"
|
||||||
|
res5="/pub/data/chenzh/res/light/v3--1-preprocess"
|
||||||
|
res6="/pub/data/chenzh/res/light/v4-1-nps"
|
||||||
|
res_no="/pub/data/chenzh/res/unused"
|
||||||
|
#####################################################
|
||||||
|
|
||||||
|
all_datas=($instance_20)
|
||||||
|
for((i=0;i<${#all_datas[*]};i++))
|
||||||
|
do
|
||||||
|
instance=${all_datas[$i]}
|
||||||
|
|
||||||
|
res_solver_ins=$res6
|
||||||
|
if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
mkdir -p $res_solver_ins
|
||||||
|
fi
|
||||||
|
for dir_file in `cat $instance/vbs.txt`
|
||||||
|
do
|
||||||
|
file=$dir_file
|
||||||
|
echo $file
|
||||||
|
touch $res_solver_ins/$file
|
||||||
|
read -u 6
|
||||||
|
{
|
||||||
|
cd /home/chenzh/solvers/Light
|
||||||
|
time ./light-v4-1 $instance/$file --share=1
|
||||||
|
echo >&6
|
||||||
|
} >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
# res_solver_ins=$res5
|
||||||
|
# if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
# mkdir -p $res_solver_ins
|
||||||
|
# fi
|
||||||
|
# for dir_file in `cat $instance/vbs.txt`
|
||||||
|
# do
|
||||||
|
# file=$dir_file
|
||||||
|
# echo $file
|
||||||
|
# touch $res_solver_ins/$file
|
||||||
|
# read -u 6
|
||||||
|
# {
|
||||||
|
# cd /home/chenzh/solvers/Light
|
||||||
|
# time ./light-v3--1 $instance/$file --share=1 --threads=31
|
||||||
|
# echo >&6
|
||||||
|
# } >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
# done
|
||||||
|
# res_solver_ins=$res4
|
||||||
|
# if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
# mkdir -p $res_solver_ins
|
||||||
|
# fi
|
||||||
|
# for dir_file in `cat $instance/vbs.txt`
|
||||||
|
# do
|
||||||
|
# file=$dir_file
|
||||||
|
# echo $file
|
||||||
|
# touch $res_solver_ins/$file
|
||||||
|
# read -u 6
|
||||||
|
# {
|
||||||
|
# cd /home/chenzh/solvers/Light
|
||||||
|
# time ./light-v2 $instance/$file --share=1 --threads=31
|
||||||
|
# echo >&6
|
||||||
|
# } >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
# done
|
||||||
|
|
||||||
|
# res_solver_ins=$res3
|
||||||
|
# if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
# mkdir -p $res_solver_ins
|
||||||
|
# fi
|
||||||
|
# for dir_file in `cat $instance/vbs.txt`
|
||||||
|
# do
|
||||||
|
# file=$dir_file
|
||||||
|
# echo $file
|
||||||
|
# touch $res_solver_ins/$file
|
||||||
|
# read -u 6
|
||||||
|
# {
|
||||||
|
# cd /home/chenzh/solvers/Light
|
||||||
|
# time ./light-v1-1 $instance/$file --simplify=0 --reset=1
|
||||||
|
# echo >&6
|
||||||
|
# } >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
# done
|
||||||
|
|
||||||
|
# res_solver_ins=$res2
|
||||||
|
# if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
# mkdir -p $res_solver_ins
|
||||||
|
# fi
|
||||||
|
# for dir_file in `cat $instance/vbs.txt`
|
||||||
|
# do
|
||||||
|
# file=$dir_file
|
||||||
|
# echo $file
|
||||||
|
# touch $res_solver_ins/$file
|
||||||
|
# read -u 6
|
||||||
|
# {
|
||||||
|
# cd /home/chenzh/solvers/Light
|
||||||
|
# time ./light $instance/$file --simplify=1
|
||||||
|
# echo >&6
|
||||||
|
# } >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
# done
|
||||||
|
|
||||||
|
# res_solver_ins=$res1
|
||||||
|
# if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
# mkdir -p $res_solver_ins
|
||||||
|
# fi
|
||||||
|
# for dir_file in `cat $instance/vbs.txt`
|
||||||
|
# do
|
||||||
|
# file=$dir_file
|
||||||
|
# echo $file
|
||||||
|
# touch $res_solver_ins/$file
|
||||||
|
# read -u 6
|
||||||
|
# {
|
||||||
|
# cd /home/chenzh/solvers/Light
|
||||||
|
# time ./light-v1 $instance/$file --simplify=0
|
||||||
|
# echo >&6
|
||||||
|
# } >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
# done
|
||||||
|
done
|
||||||
|
|
||||||
|
res_solver_ins=$res_no
|
||||||
|
if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
mkdir -p $res_solver_ins
|
||||||
|
fi
|
||||||
|
for((i=0;i<4;i++))
|
||||||
|
do
|
||||||
|
read -u 6
|
||||||
|
{
|
||||||
|
cd /home/chenzh/solvers/Light
|
||||||
|
time ./light-v1 /home/chenzh/data/hard_cnfs/49.cnf
|
||||||
|
echo >&6
|
||||||
|
} >$res_solver_ins/$i 2>>$res_solver_ins/$i &
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
exit 0
|
151
testLight/run5-3.sh
Executable file
151
testLight/run5-3.sh
Executable file
@ -0,0 +1,151 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
SEND_THREAD_NUM=4
|
||||||
|
tmp_fifofile="/tmp/$$.fifo" # 脚本运行的当前进程ID号作为文件名
|
||||||
|
mkfifo "$tmp_fifofile" # 新建一个随机fifo管道文件
|
||||||
|
exec 6<>"$tmp_fifofile" # 定义文件描述符6指向这个fifo管道文件
|
||||||
|
rm $tmp_fifofile
|
||||||
|
for i in $(seq 1 $SEND_THREAD_NUM)
|
||||||
|
do
|
||||||
|
echo # for循环 往 fifo管道文件中写入 $SEND_THREAD_NUM 个空行
|
||||||
|
done >&6
|
||||||
|
|
||||||
|
# CUTOFF_TIME=3600
|
||||||
|
instance_20="/pub/data/chenzh/data/sat2020"
|
||||||
|
instance_21="/pub/data/chenzh/data/sat2021"
|
||||||
|
instance_22="/pub/data/chenzh/data/sat2022"
|
||||||
|
|
||||||
|
|
||||||
|
res1="/pub/data/chenzh/res/light/v1-origin"
|
||||||
|
res2="/pub/data/chenzh/res/light/v1-preprocess-2"
|
||||||
|
res3="/pub/data/chenzh/res/light/v1-1-origin"
|
||||||
|
res4="/pub/data/chenzh/res/light/v2-preprocess"
|
||||||
|
res5="/pub/data/chenzh/res/light/v3--1-preprocess"
|
||||||
|
res6="/pub/data/chenzh/res/light/v4-1-nps"
|
||||||
|
res_no="/pub/data/chenzh/res/unused"
|
||||||
|
#####################################################
|
||||||
|
|
||||||
|
all_datas=($instance_22)
|
||||||
|
for((i=0;i<${#all_datas[*]};i++))
|
||||||
|
do
|
||||||
|
instance=${all_datas[$i]}
|
||||||
|
|
||||||
|
res_solver_ins=$res6
|
||||||
|
if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
mkdir -p $res_solver_ins
|
||||||
|
fi
|
||||||
|
for dir_file in `cat $instance/all.txt`
|
||||||
|
do
|
||||||
|
file=$dir_file
|
||||||
|
echo $file
|
||||||
|
touch $res_solver_ins/$file
|
||||||
|
read -u 6
|
||||||
|
{
|
||||||
|
cd /home/chenzh/solvers/Light
|
||||||
|
time ./light-v4-1 $instance/$file --share=1
|
||||||
|
echo >&6
|
||||||
|
} >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
# res_solver_ins=$res5
|
||||||
|
# if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
# mkdir -p $res_solver_ins
|
||||||
|
# fi
|
||||||
|
# for dir_file in `cat $instance/vbs.txt`
|
||||||
|
# do
|
||||||
|
# file=$dir_file
|
||||||
|
# echo $file
|
||||||
|
# touch $res_solver_ins/$file
|
||||||
|
# read -u 6
|
||||||
|
# {
|
||||||
|
# cd /home/chenzh/solvers/Light
|
||||||
|
# time ./light-v3--1 $instance/$file --share=1 --threads=31
|
||||||
|
# echo >&6
|
||||||
|
# } >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
# done
|
||||||
|
# res_solver_ins=$res4
|
||||||
|
# if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
# mkdir -p $res_solver_ins
|
||||||
|
# fi
|
||||||
|
# for dir_file in `cat $instance/vbs.txt`
|
||||||
|
# do
|
||||||
|
# file=$dir_file
|
||||||
|
# echo $file
|
||||||
|
# touch $res_solver_ins/$file
|
||||||
|
# read -u 6
|
||||||
|
# {
|
||||||
|
# cd /home/chenzh/solvers/Light
|
||||||
|
# time ./light-v2 $instance/$file --share=1 --threads=31
|
||||||
|
# echo >&6
|
||||||
|
# } >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
# done
|
||||||
|
|
||||||
|
# res_solver_ins=$res3
|
||||||
|
# if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
# mkdir -p $res_solver_ins
|
||||||
|
# fi
|
||||||
|
# for dir_file in `cat $instance/vbs.txt`
|
||||||
|
# do
|
||||||
|
# file=$dir_file
|
||||||
|
# echo $file
|
||||||
|
# touch $res_solver_ins/$file
|
||||||
|
# read -u 6
|
||||||
|
# {
|
||||||
|
# cd /home/chenzh/solvers/Light
|
||||||
|
# time ./light-v1-1 $instance/$file --simplify=0 --reset=1
|
||||||
|
# echo >&6
|
||||||
|
# } >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
# done
|
||||||
|
|
||||||
|
# res_solver_ins=$res2
|
||||||
|
# if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
# mkdir -p $res_solver_ins
|
||||||
|
# fi
|
||||||
|
# for dir_file in `cat $instance/vbs.txt`
|
||||||
|
# do
|
||||||
|
# file=$dir_file
|
||||||
|
# echo $file
|
||||||
|
# touch $res_solver_ins/$file
|
||||||
|
# read -u 6
|
||||||
|
# {
|
||||||
|
# cd /home/chenzh/solvers/Light
|
||||||
|
# time ./light $instance/$file --simplify=1
|
||||||
|
# echo >&6
|
||||||
|
# } >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
# done
|
||||||
|
|
||||||
|
# res_solver_ins=$res1
|
||||||
|
# if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
# mkdir -p $res_solver_ins
|
||||||
|
# fi
|
||||||
|
# for dir_file in `cat $instance/vbs.txt`
|
||||||
|
# do
|
||||||
|
# file=$dir_file
|
||||||
|
# echo $file
|
||||||
|
# touch $res_solver_ins/$file
|
||||||
|
# read -u 6
|
||||||
|
# {
|
||||||
|
# cd /home/chenzh/solvers/Light
|
||||||
|
# time ./light-v1 $instance/$file --simplify=0
|
||||||
|
# echo >&6
|
||||||
|
# } >$res_solver_ins/$file 2>>$res_solver_ins/$file &
|
||||||
|
# done
|
||||||
|
done
|
||||||
|
|
||||||
|
res_solver_ins=$res_no
|
||||||
|
if [ ! -d "$res_solver_ins" ]; then
|
||||||
|
mkdir -p $res_solver_ins
|
||||||
|
fi
|
||||||
|
for((i=0;i<4;i++))
|
||||||
|
do
|
||||||
|
read -u 6
|
||||||
|
{
|
||||||
|
cd /home/chenzh/solvers/Light
|
||||||
|
time ./light-v1 /home/chenzh/data/hard_cnfs/49.cnf
|
||||||
|
echo >&6
|
||||||
|
} >$res_solver_ins/$i 2>>$res_solver_ins/$i &
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
exit 0
|
BIN
utils/hashmap.o
Normal file
BIN
utils/hashmap.o
Normal file
Binary file not shown.
@ -9,11 +9,13 @@
|
|||||||
PARA( DPS , int , 0 , 0 , 1 , "DPS/NPS") \
|
PARA( DPS , int , 0 , 0 , 1 , "DPS/NPS") \
|
||||||
PARA( DPS_period , int , 10000 , 1 , 1e6 , "DPS sharing period") \
|
PARA( DPS_period , int , 10000 , 1 , 1e6 , "DPS sharing period") \
|
||||||
PARA( mode , int , 0 , 0 , 2 , "SAT=1, UNSAT=2") \
|
PARA( mode , int , 0 , 0 , 2 , "SAT=1, UNSAT=2") \
|
||||||
|
PARA( pakis , int , 0 , 0 , 1 , "Use pakis diversity") \
|
||||||
PARA( reset , int , 0 , 0 , 1 , "Dynamically reseting") \
|
PARA( reset , int , 0 , 0 , 1 , "Dynamically reseting") \
|
||||||
PARA( reset_time , int , 10 , 1 , 1e5 , "Reseting base interval (seconds)") \
|
PARA( reset_time , int , 10 , 1 , 1e5 , "Reseting base interval (seconds)") \
|
||||||
PARA( share , int , 0 , 0 , 1 , "Sharing learnt clauses") \
|
PARA( share , int , 0 , 0 , 1 , "Sharing learnt clauses") \
|
||||||
PARA( share_intv , int , 500000, 0 , 1e9 , "Sharing interval (microseconds)") \
|
PARA( share_intv , int , 500000, 0 , 1e9 , "Sharing interval (microseconds)") \
|
||||||
PARA( share_lits , int , 1500 , 0 , 1e6 , "Sharing lits (per every #share_intv seconds)") \
|
PARA( share_lits , int , 1500 , 0 , 1e6 , "Sharing lits (per every #share_intv seconds)") \
|
||||||
|
PARA( shuffle , int , 1 , 0 , 1 , "Use random shuffle") \
|
||||||
PARA( simplify , int , 1 , 0 , 1 , "Use Simplify (only preprocess)") \
|
PARA( simplify , int , 1 , 0 , 1 , "Use Simplify (only preprocess)") \
|
||||||
PARA( times , double , 5000 , 0 , 1e8 , "Cutoff time") \
|
PARA( times , double , 5000 , 0 , 1e8 , "Cutoff time") \
|
||||||
PARA( threads , int , 32 , 1 , 128 , "Thread number") \
|
PARA( threads , int , 32 , 1 , 128 , "Thread number") \
|
||||||
|
BIN
utils/paras.o
Normal file
BIN
utils/paras.o
Normal file
Binary file not shown.
BIN
utils/parse.o
Normal file
BIN
utils/parse.o
Normal file
Binary file not shown.
@ -15,7 +15,7 @@ void basekissat::add(int l) {
|
|||||||
kissat_add(solver, l);
|
kissat_add(solver, l);
|
||||||
}
|
}
|
||||||
|
|
||||||
void basekissat::configure(char* name, int id) {
|
void basekissat::configure(const char* name, int id) {
|
||||||
kissat_set_option(solver, name, id);
|
kissat_set_option(solver, name, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,18 +100,21 @@ void kissat_wait_sharing(void *solver) {
|
|||||||
// printf("c %d start wait with number %d\n", S->id, s->waitings);
|
// printf("c %d start wait with number %d\n", S->id, s->waitings);
|
||||||
}
|
}
|
||||||
if (s->should_sharing()) s->cond.notify_one();
|
if (s->should_sharing()) s->cond.notify_one();
|
||||||
|
|
||||||
boost::mutex::scoped_lock lock(s->mtx);
|
boost::mutex::scoped_lock lock(s->mtx);
|
||||||
while (s->waitings > 0) {
|
while (s->waitings > 0) {
|
||||||
s->cond.wait(lock);
|
s->cond.wait(lock);
|
||||||
}
|
}
|
||||||
|
auto clk_now = std::chrono::high_resolution_clock::now();
|
||||||
// auto clk_now = std::chrono::high_resolution_clock::now();
|
int solve_time = std::chrono::duration_cast<std::chrono::milliseconds>(clk_now - clk_st).count();
|
||||||
// int solve_time = std::chrono::duration_cast<std::chrono::milliseconds>(clk_now - clk_st).count();
|
S->waiting_time += 0.001 * solve_time;
|
||||||
// printf("c %d wait for %d.%03ds\n", S->id, solve_time / 1000, solve_time % 1000);
|
// printf("c %d wait for %d.%03ds\n", S->id, solve_time / 1000, solve_time % 1000);
|
||||||
// printf("c %d finish sharing\n", S->id);
|
// printf("c %d finish sharing\n", S->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double basekissat::get_waiting_time() {
|
||||||
|
return waiting_time;
|
||||||
|
}
|
||||||
|
|
||||||
basekissat::basekissat(int id, light* light) : basesolver(id, light) {
|
basekissat::basekissat(int id, light* light) : basesolver(id, light) {
|
||||||
good_clause_lbd = 2;
|
good_clause_lbd = 2;
|
||||||
// outexport.open("export.txt");
|
// outexport.open("export.txt");
|
||||||
|
@ -9,7 +9,7 @@ public:
|
|||||||
void add(int l);
|
void add(int l);
|
||||||
int solve();
|
int solve();
|
||||||
int val(int l);
|
int val(int l);
|
||||||
void configure(char* name, int id);
|
void configure(const char* name, int id);
|
||||||
// int get_reset_data();
|
// int get_reset_data();
|
||||||
// void reset();
|
// void reset();
|
||||||
int get_conflicts();
|
int get_conflicts();
|
||||||
@ -22,10 +22,12 @@ public:
|
|||||||
void import_clauses_from(vec<clause_store *> &clauses);
|
void import_clauses_from(vec<clause_store *> &clauses);
|
||||||
void broaden_export_limit();
|
void broaden_export_limit();
|
||||||
void restrict_export_limit();
|
void restrict_export_limit();
|
||||||
|
double get_waiting_time();
|
||||||
|
|
||||||
basekissat(int id, light *light);
|
basekissat(int id, light *light);
|
||||||
~basekissat();
|
~basekissat();
|
||||||
int x1 = 0, x2 = 0;
|
int x1 = 0, x2 = 0;
|
||||||
|
double waiting_time = 0;
|
||||||
kissat* solver;
|
kissat* solver;
|
||||||
int good_clause_lbd = 0;
|
int good_clause_lbd = 0;
|
||||||
|
|
||||||
|
BIN
workers/basekissat.o
Normal file
BIN
workers/basekissat.o
Normal file
Binary file not shown.
@ -15,7 +15,7 @@ public:
|
|||||||
virtual int solve() = 0;
|
virtual int solve() = 0;
|
||||||
virtual int val(int l) = 0;
|
virtual int val(int l) = 0;
|
||||||
virtual void terminate() = 0;
|
virtual void terminate() = 0;
|
||||||
virtual void configure(char* name, int id) = 0;
|
virtual void configure(const char* name, int id) = 0;
|
||||||
virtual int get_conflicts() = 0;
|
virtual int get_conflicts() = 0;
|
||||||
|
|
||||||
virtual void parse_from_CNF(char* filename) = 0;
|
virtual void parse_from_CNF(char* filename) = 0;
|
||||||
@ -27,6 +27,7 @@ public:
|
|||||||
virtual void import_clauses_from(vec<clause_store *> &clauses) = 0;
|
virtual void import_clauses_from(vec<clause_store *> &clauses) = 0;
|
||||||
virtual void broaden_export_limit() = 0;
|
virtual void broaden_export_limit() = 0;
|
||||||
virtual void restrict_export_limit() = 0;
|
virtual void restrict_export_limit() = 0;
|
||||||
|
virtual double get_waiting_time() = 0;
|
||||||
light * controller;
|
light * controller;
|
||||||
int id;
|
int id;
|
||||||
sharer* in_sharer;
|
sharer* in_sharer;
|
||||||
|
@ -9,6 +9,7 @@ void * share_worker(void *arg) {
|
|||||||
int nums = 0;
|
int nums = 0;
|
||||||
sharer * sq = (sharer *)arg;
|
sharer * sq = (sharer *)arg;
|
||||||
auto clk_st = std::chrono::high_resolution_clock::now();
|
auto clk_st = std::chrono::high_resolution_clock::now();
|
||||||
|
double share_time = 0;
|
||||||
while (true) {
|
while (true) {
|
||||||
++nums;
|
++nums;
|
||||||
if (sq->dps) {
|
if (sq->dps) {
|
||||||
@ -55,11 +56,14 @@ void * share_worker(void *arg) {
|
|||||||
sq->cls[k]->free_clause();
|
sq->cls[k]->free_clause();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
auto clk_ed = std::chrono::high_resolution_clock::now();
|
||||||
|
share_time += 0.001 * std::chrono::duration_cast<std::chrono::milliseconds>(clk_ed - clk_now).count();
|
||||||
|
|
||||||
if (sq->dps) {
|
if (sq->dps) {
|
||||||
sq->sharing_finish();
|
sq->sharing_finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
printf("c sharing nums: %d\n", nums);
|
printf("c sharing nums: %d\nc sharing time: %.2lf\n", nums, share_time);
|
||||||
// if (terminated) puts("terminated set to 1");
|
// if (terminated) puts("terminated set to 1");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
BIN
workers/sharer.o
Normal file
BIN
workers/sharer.o
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user