From 3c5a2555760084080768e6556d7a1bfadfe4f203 Mon Sep 17 00:00:00 2001 From: tngngn Date: Thu, 22 Dec 2022 10:50:43 +0900 Subject: [PATCH 01/14] wound-wait --- wound-wait/CMakeLists.txt | 83 + wound-wait/README.md | 52 + wound-wait/include/common.hh | 57 + wound-wait/include/result.hh | 9 + wound-wait/include/ss2pl_op_element.hh | 18 + wound-wait/include/transaction.hh | 65 + wound-wait/include/tuple.hh | 19 + wound-wait/include/util.hh | 13 + wound-wait/result.cc | 11 + wound-wait/script/test_cache_ana.sh | 227 +++ wound-wait/script/test_t1k.sh | 382 +++++ wound-wait/script/test_t1m.sh | 382 +++++ wound-wait/script/test_t200.sh | 382 +++++ wound-wait/script/tst200-1k-1m.sh | 1991 ++++++++++++++++++++++++ wound-wait/script/ycsb-xope.sh | 106 ++ wound-wait/script/ycsb-xrratio.sh | 102 ++ wound-wait/script/ycsb-xrs.sh | 118 ++ wound-wait/script/ycsb-xskew.sh | 131 ++ wound-wait/script/ycsb-xth.sh | 124 ++ wound-wait/script/ycsb-xval.sh | 122 ++ wound-wait/script/ycsbA-xrs-cache.sh | 52 + wound-wait/script/ycsbA.sh | 510 ++++++ wound-wait/script/ycsbB.sh | 510 ++++++ wound-wait/script/ycsbC.sh | 187 +++ wound-wait/ss2pl.cc | 129 ++ wound-wait/test/CMakeLists.txt | 76 + wound-wait/test/make_db_test.cpp | 40 + wound-wait/transaction.cc | 366 +++++ wound-wait/util.cc | 118 ++ 29 files changed, 6382 insertions(+) create mode 100644 wound-wait/CMakeLists.txt create mode 100644 wound-wait/README.md create mode 100644 wound-wait/include/common.hh create mode 100644 wound-wait/include/result.hh create mode 100644 wound-wait/include/ss2pl_op_element.hh create mode 100644 wound-wait/include/transaction.hh create mode 100644 wound-wait/include/tuple.hh create mode 100644 wound-wait/include/util.hh create mode 100644 wound-wait/result.cc create mode 100755 wound-wait/script/test_cache_ana.sh create mode 100755 wound-wait/script/test_t1k.sh create mode 100755 wound-wait/script/test_t1m.sh create mode 100755 wound-wait/script/test_t200.sh create mode 100755 wound-wait/script/tst200-1k-1m.sh create mode 100755 wound-wait/script/ycsb-xope.sh create mode 100755 wound-wait/script/ycsb-xrratio.sh create mode 100755 wound-wait/script/ycsb-xrs.sh create mode 100755 wound-wait/script/ycsb-xskew.sh create mode 100755 wound-wait/script/ycsb-xth.sh create mode 100755 wound-wait/script/ycsb-xval.sh create mode 100755 wound-wait/script/ycsbA-xrs-cache.sh create mode 100755 wound-wait/script/ycsbA.sh create mode 100755 wound-wait/script/ycsbB.sh create mode 100755 wound-wait/script/ycsbC.sh create mode 100644 wound-wait/ss2pl.cc create mode 100644 wound-wait/test/CMakeLists.txt create mode 100644 wound-wait/test/make_db_test.cpp create mode 100644 wound-wait/transaction.cc create mode 100644 wound-wait/util.cc diff --git a/wound-wait/CMakeLists.txt b/wound-wait/CMakeLists.txt new file mode 100644 index 00000000..5a3b26ba --- /dev/null +++ b/wound-wait/CMakeLists.txt @@ -0,0 +1,83 @@ +cmake_minimum_required(VERSION 3.10) + +project(ccbench_ss2pl + VERSION 0.0.1 + DESCRIPTION "ss2pl of ccbench" + LANGUAGES CXX) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake") + +option(ENABLE_SANITIZER "enable sanitizer on debug build" ON) +option(ENABLE_UB_SANITIZER "enable undefined behavior sanitizer on debug build" OFF) +option(ENABLE_COVERAGE "enable coverage on debug build" OFF) + +find_package(Doxygen) +find_package(Threads REQUIRED) +find_package(gflags REQUIRED) +find_package(glog REQUIRED) +find_package(Boost + COMPONENTS filesystem) + +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) +include(CompileOptions) + +enable_testing() +add_subdirectory(test) + +file(GLOB SS2PL_SOURCES + "../common/result.cc" + "../common/util.cc" + "ss2pl.cc" + "result.cc" + "transaction.cc" + "util.cc" + ) + +add_executable(ss2pl.exe ${SS2PL_SOURCES}) + +target_link_libraries(ss2pl.exe + Boost::filesystem + gflags::gflags + ${PROJECT_SOURCE_DIR}/../third_party/mimalloc/out/release/libmimalloc.a + ${PROJECT_SOURCE_DIR}/../third_party/masstree/libkohler_masstree_json.a + Threads::Threads + ) + +if (DEFINED ADD_ANALYSIS) + add_definitions(-DADD_ANALYSIS=${ADD_ANALYSIS}) +else () + add_definitions(-DADD_ANALYSIS=0) +endif () + +if (DEFINED BACK_OFF) + add_definitions(-DBACK_OFF=${BACK_OFF}) +else () + add_definitions(-DBACK_OFF=0) +endif () + +add_definitions(-DDLR1) + +if (DEFINED KEY_SIZE) + add_definitions(-DKEY_SIZE=${KEY_SIZE}) +else () + add_definitions(-DKEY_SIZE=8) +endif () + +if (DEFINED KEY_SORT) + add_definitions(-DKEY_SORT=${KEY_SORT}) +else () + add_definitions(-DKEY_SORT=0) +endif () + +if (DEFINED MASSTREE_USE) + add_definitions(-DMASSTREE_USE=${MASSTREE_USE}) +else () + add_definitions(-DMASSTREE_USE=1) +endif () + +if (DEFINED VAL_SIZE) + add_definitions(-DVAL_SIZE=${VAL_SIZE}) +else () + add_definitions(-DVAL_SIZE=4) +endif () diff --git a/wound-wait/README.md b/wound-wait/README.md new file mode 100644 index 00000000..73c470b1 --- /dev/null +++ b/wound-wait/README.md @@ -0,0 +1,52 @@ +# 2PL + +## How to use +- Build masstree +``` +$ cd ../ +$ ./bootstrap.sh +``` +This makes ../third_party/masstree/libkohler_masstree_json.a used by building ss2pl. +- Build mimalloc +``` +$ cd ../ +$ ./bootstrap_mimalloc.sh +``` +This makes ../third_party/mimalloc/out/release/libmimalloc.a used by building ss2pl. +- Build +``` +$ mkdir build +$ cd build +$ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release .. +$ ninja +``` +- Confirm usage +``` +$ ./ss2pl.exe -help +``` +- Execution example +``` +$ numactl --interleave=all ./ss2pl.exe -clocks_per_us=2100 -extime=3 -max_ope=10 -rmw=0 -rratio=100 -thread_num=224 -tuple_num=1000000 -ycsb=1 -zipf_skew=0 +``` + +## How to customize options in CMakeLists.txt +- `ADD_ANALYSIS` : If this is 1, it is deeper analysis than setting 0.
+default : `0` +- `BACK_OFF` : If this is 1, it use Cicada's backoff.
+default : `0` +- `KEY_SORT` : If this is 1, its transaction accesses records in ascending key order.
+default : `0` +- `MASSTREE_USE` : If this is 1, it use masstree as data structure. If not, it use simple array αs data structure. +default : `1` +- `VAL_SIZE` : Value of key-value size. In other words, payload size.
+default : `4` +- `DLR0` : Dead lock resolution is timeout. +- `DLR1` : Dead lock resolution is no-wait. + +## Optimizations +- Backoff. +- Timeout of dead lock resolution. +- No-wait of dead lock resolution. + +## Implementation +- Lock : reader/writer lock diff --git a/wound-wait/include/common.hh b/wound-wait/include/common.hh new file mode 100644 index 00000000..0402e527 --- /dev/null +++ b/wound-wait/include/common.hh @@ -0,0 +1,57 @@ +#pragma once + +#include + +#include "../../include/cache_line_size.hh" +#include "../../include/int64byte.hh" +#include "../../include/masstree_wrapper.hh" +#include "tuple.hh" + +#include "gflags/gflags.h" +#include "glog/logging.h" + +#ifdef GLOBAL_VALUE_DEFINE +#define GLOBAL + +#if MASSTREE_USE +alignas(CACHE_LINE_SIZE) GLOBAL MasstreeWrapper MT; +#endif + +#else +#define GLOBAL extern + +#if MASSTREE_USE +alignas(CACHE_LINE_SIZE) GLOBAL MasstreeWrapper MT; +#endif + +#endif + +#ifdef GLOBAL_VALUE_DEFINE +DEFINE_uint64(clocks_per_us, 2100, + "CPU_MHz. Use this info for measuring time."); +DEFINE_uint64(extime, 3, "Execution time[sec]."); +DEFINE_uint64(max_ope, 10, + "Total number of operations per single transaction."); +DEFINE_bool(rmw, false, + "True means read modify write, false means blind write."); +DEFINE_uint64(rratio, 50, "read ratio of single transaction."); +DEFINE_uint64(thread_num, 10, "Total number of worker threads."); +DEFINE_uint64(tuple_num, 1000000, "Total number of records."); +DEFINE_bool(ycsb, true, + "True uses zipf_skew, false uses faster random generator."); +DEFINE_double(zipf_skew, 0, "zipf skew. 0 ~ 0.999..."); +#else +DECLARE_uint64(clocks_per_us); +DECLARE_uint64(extime); +DECLARE_uint64(max_ope); +DECLARE_bool(rmw); +DECLARE_uint64(rratio); +DECLARE_uint64(thread_num); +DECLARE_uint64(tuple_num); +DECLARE_bool(ycsb); +DECLARE_double(zipf_skew); +#endif + +alignas(CACHE_LINE_SIZE) GLOBAL Tuple *Table; +alignas(CACHE_LINE_SIZE) GLOBAL int thread_stats[224]; +alignas(CACHE_LINE_SIZE) GLOBAL int thread_timestamp[224]; \ No newline at end of file diff --git a/wound-wait/include/result.hh b/wound-wait/include/result.hh new file mode 100644 index 00000000..26dd8285 --- /dev/null +++ b/wound-wait/include/result.hh @@ -0,0 +1,9 @@ +#pragma once + +#include + +#include "../../include/result.hh" + +extern std::vector SS2PLResult; + +extern void initResult(); diff --git a/wound-wait/include/ss2pl_op_element.hh b/wound-wait/include/ss2pl_op_element.hh new file mode 100644 index 00000000..6162c229 --- /dev/null +++ b/wound-wait/include/ss2pl_op_element.hh @@ -0,0 +1,18 @@ +#pragma once + +#include "../../include/op_element.hh" + +template +class SetElement : public OpElement { +public: + using OpElement::OpElement; + + char val_[VAL_SIZE]; + + SetElement(uint64_t key, T *rcdptr) : OpElement::OpElement(key, rcdptr) {} + + SetElement(uint64_t key, T *rcdptr, char *val) + : OpElement::OpElement(key, rcdptr) { + memcpy(this->val_, val, VAL_SIZE); + } +}; diff --git a/wound-wait/include/transaction.hh b/wound-wait/include/transaction.hh new file mode 100644 index 00000000..5431f352 --- /dev/null +++ b/wound-wait/include/transaction.hh @@ -0,0 +1,65 @@ +#pragma once + +#include + +#include "../../include/procedure.hh" +#include "../../include/result.hh" +#include "../../include/rwlock.hh" +#include "../../include/string.hh" +#include "../../include/util.hh" +#include "ss2pl_op_element.hh" +#include "tuple.hh" + +enum class TransactionStatus : uint8_t { + inFlight, + committed, + aborted, +}; + +extern void writeValGenerator(char *writeVal, size_t val_size, size_t thid); + +class TxExecutor { +public: + alignas(CACHE_LINE_SIZE) int thid_; + std::vector r_lock_list_; + std::vector w_lock_list_; + TransactionStatus status_ = TransactionStatus::inFlight; + Result *sres_; + vector > read_set_; + vector > write_set_; + vector pro_set_; + + char write_val_[VAL_SIZE]; + char return_val_[VAL_SIZE]; + + TxExecutor(int thid, Result *sres) : thid_(thid), sres_(sres) { + read_set_.reserve(FLAGS_max_ope); + write_set_.reserve(FLAGS_max_ope); + pro_set_.reserve(FLAGS_max_ope); + r_lock_list_.reserve(FLAGS_max_ope); + w_lock_list_.reserve(FLAGS_max_ope); + + genStringRepeatedNumber(write_val_, VAL_SIZE, thid); + } + + SetElement *searchReadSet(uint64_t key); + + SetElement *searchWriteSet(uint64_t key); + + void begin(); + + void read(uint64_t key); + + void write(uint64_t key); + + void readWrite(uint64_t key); + + void commit(); + + void abort(); + + void unlockList(); + + // inline + Tuple *get_tuple(Tuple *table, uint64_t key) { return &table[key]; } +}; diff --git a/wound-wait/include/tuple.hh b/wound-wait/include/tuple.hh new file mode 100644 index 00000000..de240080 --- /dev/null +++ b/wound-wait/include/tuple.hh @@ -0,0 +1,19 @@ +#pragma once + +#include +#include + +#include "../../include/cache_line_size.hh" +#include "../../include/inline.hh" +#include "../../include/rwlock.hh" + +using namespace std; + +class Tuple { +public: + alignas(CACHE_LINE_SIZE) RWLock lock_; + char val_[VAL_SIZE]; + int writer = 0; + int readers[224] = {0}; + int writers[224] = {0}; +}; diff --git a/wound-wait/include/util.hh b/wound-wait/include/util.hh new file mode 100644 index 00000000..547508fa --- /dev/null +++ b/wound-wait/include/util.hh @@ -0,0 +1,13 @@ +#pragma once + +extern void chkArg(); + +extern void displayDB(); + +extern void displayParameter(); + +extern void makeDB(); + +extern void partTableInit([[maybe_unused]] size_t thid, uint64_t start, uint64_t end); + +extern void ShowOptParameters(); diff --git a/wound-wait/result.cc b/wound-wait/result.cc new file mode 100644 index 00000000..ff17dd8d --- /dev/null +++ b/wound-wait/result.cc @@ -0,0 +1,11 @@ +#include "include/result.hh" +#include "include/common.hh" + +#include "../include/cache_line_size.hh" +#include "../include/result.hh" + +using namespace std; + +alignas(CACHE_LINE_SIZE) std::vector SS2PLResult; + +void initResult() { SS2PLResult.resize(FLAGS_thread_num); } diff --git a/wound-wait/script/test_cache_ana.sh b/wound-wait/script/test_cache_ana.sh new file mode 100755 index 00000000..df6753dd --- /dev/null +++ b/wound-wait/script/test_cache_ana.sh @@ -0,0 +1,227 @@ +#test_cache_ana.sh(ss2pl) +maxope=10 +thread=24 +cpu_mhz=2400 +extime=3 +epoch=5 + +tuple=100 +workload=0 +result=result_ss2pl_r10_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=1 +result=result_ss2pl_r8_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=2 +result=result_ss2pl_r5_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=3 +result=result_ss2pl_r2_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=4 +result=result_ss2pl_r0_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + diff --git a/wound-wait/script/test_t1k.sh b/wound-wait/script/test_t1k.sh new file mode 100755 index 00000000..73dbfec1 --- /dev/null +++ b/wound-wait/script/test_t1k.sh @@ -0,0 +1,382 @@ +#test_t1k.sh(ss2pl) +tuple=1000 +maxope=10 +cpu_mhz=2400 +extime=3 +epoch=5 + +workload=0 +result=result_ss2pl_r10_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=1 +result=result_ss2pl_r8_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=2 +result=result_ss2pl_r5_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=3 +result=result_ss2pl_r2_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=4 +result=result_ss2pl_r0_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + diff --git a/wound-wait/script/test_t1m.sh b/wound-wait/script/test_t1m.sh new file mode 100755 index 00000000..9b30a188 --- /dev/null +++ b/wound-wait/script/test_t1m.sh @@ -0,0 +1,382 @@ +#test_t1m.sh(ss2pl) +tuple=1000000 +maxope=10 +cpu_mhz=2400 +extime=3 +epoch=5 + +workload=0 +result=result_ss2pl_r10_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=1 +result=result_ss2pl_r8_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=2 +result=result_ss2pl_r5_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=3 +result=result_ss2pl_r2_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=4 +result=result_ss2pl_r0_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + diff --git a/wound-wait/script/test_t200.sh b/wound-wait/script/test_t200.sh new file mode 100755 index 00000000..ed333bb7 --- /dev/null +++ b/wound-wait/script/test_t200.sh @@ -0,0 +1,382 @@ +#test_t200.sh(ss2pl) +tuple=200 +maxope=10 +cpu_mhz=2400 +extime=3 +epoch=5 + +workload=0 +result=result_ss2pl_r10_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=1 +result=result_ss2pl_r8_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=2 +result=result_ss2pl_r5_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=3 +result=result_ss2pl_r2_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=4 +result=result_ss2pl_r0_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + diff --git a/wound-wait/script/tst200-1k-1m.sh b/wound-wait/script/tst200-1k-1m.sh new file mode 100755 index 00000000..c347fa88 --- /dev/null +++ b/wound-wait/script/tst200-1k-1m.sh @@ -0,0 +1,1991 @@ +#tst200-1k-1m.sh(ss2pl) +maxope=10 +rmw=off +skew=0 +ycsb=off +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +#kugiri +rratio=0 +tuple=200 +result=result_ss2pl_r0_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=20 +tuple=200 +result=result_ss2pl_r2_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=80 +tuple=200 +result=result_ss2pl_r8_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=100 +tuple=200 +result=result_ss2pl_r10_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=0 +tuple=1000 +result=result_ss2pl_r0_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=20 +tuple=1000 +result=result_ss2pl_r2_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=80 +tuple=1000 +result=result_ss2pl_r8_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=100 +tuple=1000 +result=result_ss2pl_r10_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=0 +tuple=1000000 +result=result_ss2pl_r0_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=20 +tuple=1000000 +result=result_ss2pl_r2_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=80 +tuple=1000000 +result=result_ss2pl_r8_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=100 +tuple=1000000 +result=result_ss2pl_r10_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/wound-wait/script/ycsb-xope.sh b/wound-wait/script/ycsb-xope.sh new file mode 100755 index 00000000..7398b793 --- /dev/null +++ b/wound-wait/script/ycsb-xope.sh @@ -0,0 +1,106 @@ +#ycsb-xope.sh(ss2pl) +tuple=100000000 +maxope=10 +rratio=95 +rmw=off +skew=0.8 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j KEY_SIZE=8 VAL_SIZE=4 +cd script/ + +result=result_ss2pl-dlr1_ycsbB_tuple100m_skew08_ope10-100.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + +for ((maxope=10; maxope<=100; maxope+=10)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$maxope $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done diff --git a/wound-wait/script/ycsb-xrratio.sh b/wound-wait/script/ycsb-xrratio.sh new file mode 100755 index 00000000..e4e74263 --- /dev/null +++ b/wound-wait/script/ycsb-xrratio.sh @@ -0,0 +1,102 @@ +#ycsb-xrratio.sh(ss2pl) +tuple=1000000 +maxope=10 +rratio=0 +rmw=off +skew=0.9 +ycsb=on +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +result=result_ss2pl-dlr1_tuple1m_val1k_skew09_rratio0-100.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + +for ((rratio=0; rratio<=100; rratio+=10)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$rratio $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done diff --git a/wound-wait/script/ycsb-xrs.sh b/wound-wait/script/ycsb-xrs.sh new file mode 100755 index 00000000..fb18cb42 --- /dev/null +++ b/wound-wait/script/ycsb-xrs.sh @@ -0,0 +1,118 @@ +#ycsb-xrs.sh(ss2pl) +maxope=10 +rratioary=(50 95 100) +rmw=off +skew=0.9 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j KEY_SIZE=8 VAL_SIZE=1000 +cd script/ + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50 ; then + result=result_ss2pl_ycsbA_tuple1k-100m_val1k_skew09.dat + elif test $rratio = 95 ; then + result=result_ss2pl_ycsbB_tuple1k-100m_val1k_skew09.dat + elif test $rratio = 100 ; then + result=result_ss2pl_ycsbC_tuple1k-100m_val1k_skew09.dat + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + + for ((tuple=1000; tuple<=100000000; tuple*=10)) + do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$tuple $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/wound-wait/script/ycsb-xskew.sh b/wound-wait/script/ycsb-xskew.sh new file mode 100755 index 00000000..314e6020 --- /dev/null +++ b/wound-wait/script/ycsb-xskew.sh @@ -0,0 +1,131 @@ +#ycsb-xrs.sh(ss2pl) +tuple=10000000 +maxope=16 +rratioary=(50 95) +rmw=on +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j VAL_SIZE=100 +cd script/ + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50; then + thread=28 + result=result_2pl_ycsbA_tuple10m_ope16_rmw_skew0-099_th28.dat + elif test $rratio = 95; then + thread=28 + result=result_2pl_ycsbB_tuple10m_ope16_rmw_skew0-099_th28.dat + elif test $rratio = 100; then + result=result_ss2pl_ycsbC_tuple1k_skew0-099.dat + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw skew $ycsb $cpu_mhz $extime" >> $result + ../ss2pl.exe > exp.txt + tmpStr=`grep ShowOptParameters ./exp.txt` + echo "#$tmpStr" >> $result + + for ((tmpskew = 0; tmpskew <= 105; tmpskew += 10)) + do + if test $tmpskew = 100 ; then + tmpskew=95 + fi + if test $tmpskew = 105 ; then + tmpskew=99 + fi + skew=`echo "scale=3; $tmpskew / 100.0" | bc -l | xargs printf %.2f` + + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$skew $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/wound-wait/script/ycsb-xth.sh b/wound-wait/script/ycsb-xth.sh new file mode 100755 index 00000000..1ff00ecf --- /dev/null +++ b/wound-wait/script/ycsb-xth.sh @@ -0,0 +1,124 @@ +#ycsb-xrs.sh(ss2pl) +tuple=10000000 +maxope=1 +#rratioary=(50 95 100) +rratioary=(95) +rmw=on +skew=0.99 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j VAL_SIZE=100 +cd script/ + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50 ; then + result=result_2pl_ycsbA_tuple10m_ope16_rmw_skew099.dat + elif test $rratio = 95 ; then + result=result_2pl_ycsbB_tuple10m_ope1_rmw_skew099.dat + elif test $rratio = 100 ; then + result=result_ss2pl_ycsbC_tuple10m_ope1_skew099.dat + maxope=1 + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + + for ((thread=1; thread<=25; thread+=5)) + do + if test $thread = 6 ; then + thread=5 + fi + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$thread $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/wound-wait/script/ycsb-xval.sh b/wound-wait/script/ycsb-xval.sh new file mode 100755 index 00000000..e5c64aea --- /dev/null +++ b/wound-wait/script/ycsb-xval.sh @@ -0,0 +1,122 @@ +#ycsb-xrs.sh(ss2pl) +tuple=1000000 +maxope=10 +rratioary=(95) +rmw=off +skew=0 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50; then + result=result_ss2pl_ycsbA_tuple100m_skew09_val4-1k.dat + elif test $rratio = 95; then + result=result_ss2pl_ycsbB_tuple1m_val10-100k.dat + elif test $rratio = 100; then + result=result_ss2pl_ycsbC_tuple100m_skew09_val4-1k.dat + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + + for ((val = 10; val <= 100000; val *= 10)) + do + if test $val = 104 ; then + val=100 + fi + cd ../ + make clean; make -j VAL_SIZE=$val + cd script + + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$val $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/wound-wait/script/ycsbA-xrs-cache.sh b/wound-wait/script/ycsbA-xrs-cache.sh new file mode 100755 index 00000000..61dbd5f4 --- /dev/null +++ b/wound-wait/script/ycsbA-xrs-cache.sh @@ -0,0 +1,52 @@ +#ycsbA-xrs-cache.sh(ss2pl) +maxope=10 +thread=24 +rratio=50 +skew=0 +ycsb=ON +cpu_mhz=2400 +extime=3 +epoch=5 + +result=result_ss2pl_ycsbA_tuple100-10m_cachemiss.dat +rm $result +echo "#tuple num, cache-misses, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=10000000; tuple*=10)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime" + echo "$tuple $epoch" + + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-misses,cache-references -o ss2pl-cache-ana.txt ./ss2pl.exe $tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl-cache-ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + diff --git a/wound-wait/script/ycsbA.sh b/wound-wait/script/ycsbA.sh new file mode 100755 index 00000000..c83e85f6 --- /dev/null +++ b/wound-wait/script/ycsbA.sh @@ -0,0 +1,510 @@ +#ycsbA.sh(ss2pl) +maxope=10 +rratio=50 +rmw=off +skew=0 +ycsb=on +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +tuple=500 +result=result_ss2pl_ycsbA_tuple500_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=500000 +result=result_ss2pl_ycsbA_tuple500k_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=5000000 +result=result_ss2pl_ycsbA_tuple5m_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/wound-wait/script/ycsbB.sh b/wound-wait/script/ycsbB.sh new file mode 100755 index 00000000..2a5966d9 --- /dev/null +++ b/wound-wait/script/ycsbB.sh @@ -0,0 +1,510 @@ +#ycsbB.sh(ss2pl) +maxope=10 +rratio=95 +rmw=off +skew=0 +ycsb=on +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +tuple=500 +result=result_ss2pl_ycsbB_tuple500_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=500000 +result=result_ss2pl_ycsbB_tuple500k_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=5000000 +result=result_ss2pl_ycsbB_tuple5m_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/wound-wait/script/ycsbC.sh b/wound-wait/script/ycsbC.sh new file mode 100755 index 00000000..4894481b --- /dev/null +++ b/wound-wait/script/ycsbC.sh @@ -0,0 +1,187 @@ +#ycsbC.sh(ss2pl) +#tuple=1000000000 +tuple=1000 +maxope=10 +rratio=100 +rmw=off +skew=0.9 +ycsb=on +cpu_mhz=2100 +extime=1 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +result=result_ss2pl_ycsbC_tuple1g_skew09_val1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/wound-wait/ss2pl.cc b/wound-wait/ss2pl.cc new file mode 100644 index 00000000..7bca55e0 --- /dev/null +++ b/wound-wait/ss2pl.cc @@ -0,0 +1,129 @@ + +#include //isdigit, +#include +#include //strlen, +#include //syscall(SYS_gettid), +#include //syscall(SYS_gettid), +#include //syscall(SYS_gettid), +#include + +#include +#include //string +#include + +#define GLOBAL_VALUE_DEFINE + +#include "../include/atomic_wrapper.hh" +#include "../include/backoff.hh" +#include "../include/cpu.hh" +#include "../include/debug.hh" +#include "../include/fence.hh" +#include "../include/int64byte.hh" +#include "../include/masstree_wrapper.hh" +#include "../include/procedure.hh" +#include "../include/random.hh" +#include "../include/result.hh" +#include "../include/tsc.hh" +#include "../include/util.hh" +#include "../include/zipf.hh" +#include "include/common.hh" +#include "include/result.hh" +#include "include/transaction.hh" +#include "include/util.hh" + +long long int central_timestamp = 0; + +void worker(size_t thid, char &ready, const bool &start, const bool &quit) { + Result &myres = std::ref(SS2PLResult[thid]); + Xoroshiro128Plus rnd; + rnd.init(); + TxExecutor trans(thid, (Result *) &myres); + FastZipf zipf(&rnd, FLAGS_zipf_skew, FLAGS_tuple_num); + Backoff backoff(FLAGS_clocks_per_us); + +#if MASSTREE_USE + MasstreeWrapper::thread_init(int(thid)); +#endif + +#ifdef Linux + setThreadAffinity(thid); + // printf("Thread #%d: on CPU %d\n", *myid, sched_getcpu()); + // printf("sysconf(_SC_NPROCESSORS_CONF) %ld\n", + // sysconf(_SC_NPROCESSORS_CONF)); +#endif // Linux + + storeRelease(ready, 1); + while (!loadAcquire(start)) _mm_pause(); + while (!loadAcquire(quit)) { + makeProcedure(trans.pro_set_, rnd, zipf, FLAGS_tuple_num, FLAGS_max_ope, FLAGS_thread_num, + FLAGS_rratio, FLAGS_rmw, FLAGS_ycsb, false, thid, myres); + thread_timestamp[thid] = __atomic_add_fetch(¢ral_timestamp, 1, __ATOMIC_SEQ_CST); +RETRY: + thread_stats[thid] = 0; + if (loadAcquire(quit)) break; + if (thid == 0) leaderBackoffWork(backoff, SS2PLResult); + + trans.begin(); + for (auto itr = trans.pro_set_.begin(); itr != trans.pro_set_.end(); + ++itr) { + if ((*itr).ope_ == Ope::READ) { + trans.read((*itr).key_); + } else if ((*itr).ope_ == Ope::WRITE) { + trans.write((*itr).key_); + } else if ((*itr).ope_ == Ope::READ_MODIFY_WRITE) { + trans.readWrite((*itr).key_); + } else { + ERR; + } + + if (thread_stats[thid] == 1) { + trans.status_ = TransactionStatus::aborted; + trans.abort(); + goto RETRY; + } + } + + trans.commit(); + /** + * local_commit_counts is used at ../include/backoff.hh to calcurate about + * backoff. + */ + storeRelease(myres.local_commit_counts_, + loadAcquire(myres.local_commit_counts_) + 1); + } + + return; +} + +int main(int argc, char *argv[]) try { + gflags::SetUsageMessage("2PL benchmark."); + gflags::ParseCommandLineFlags(&argc, &argv, true); + chkArg(); + makeDB(); + + alignas(CACHE_LINE_SIZE) bool start = false; + alignas(CACHE_LINE_SIZE) bool quit = false; + initResult(); + std::vector readys(FLAGS_thread_num); + std::vector thv; + for (size_t i = 0; i < FLAGS_thread_num; ++i) + thv.emplace_back(worker, i, std::ref(readys[i]), std::ref(start), + std::ref(quit)); + waitForReady(readys); + storeRelease(start, true); + for (size_t i = 0; i < FLAGS_extime; ++i) { + sleepMs(1000); + } + storeRelease(quit, true); + for (auto &th : thv) th.join(); + + for (unsigned int i = 0; i < FLAGS_thread_num; ++i) { + SS2PLResult[0].addLocalAllResult(SS2PLResult[i]); + } + ShowOptParameters(); + SS2PLResult[0].displayAllResult(FLAGS_clocks_per_us, FLAGS_extime, FLAGS_thread_num); + + return 0; +} catch (bad_alloc) { + ERR; +} diff --git a/wound-wait/test/CMakeLists.txt b/wound-wait/test/CMakeLists.txt new file mode 100644 index 00000000..9b5dd16f --- /dev/null +++ b/wound-wait/test/CMakeLists.txt @@ -0,0 +1,76 @@ +file(GLOB SS2PL_SOURCES + "${PROJECT_SOURCE_DIR}/../common/result.cc" + "${PROJECT_SOURCE_DIR}/../common/util.cc" + "${PROJECT_SOURCE_DIR}/result.cc" + "${PROJECT_SOURCE_DIR}/transaction.cc" + "${PROJECT_SOURCE_DIR}/util.cc" + ) + +file (GLOB TEST_SOURCES +"make_db_test.cpp" +) + +if (DEFINED ADD_ANALYSIS) + add_definitions(-DADD_ANALYSIS=${ADD_ANALYSIS}) +else () + add_definitions(-DADD_ANALYSIS=0) +endif () + +if (DEFINED BACK_OFF) + add_definitions(-DBACK_OFF=${BACK_OFF}) +else () + add_definitions(-DBACK_OFF=0) +endif () + +add_definitions(-DDLR1) + +if (DEFINED KEY_SIZE) + add_definitions(-DKEY_SIZE=${KEY_SIZE}) +else () + add_definitions(-DKEY_SIZE=8) +endif () + +if (DEFINED KEY_SORT) + add_definitions(-DKEY_SORT=${KEY_SORT}) +else () + add_definitions(-DKEY_SORT=0) +endif () + +if (DEFINED MASSTREE_USE) + add_definitions(-DMASSTREE_USE=${MASSTREE_USE}) +else () + add_definitions(-DMASSTREE_USE=1) +endif () + +if (DEFINED VAL_SIZE) + add_definitions(-DVAL_SIZE=${VAL_SIZE}) +else () + add_definitions(-DVAL_SIZE=4) +endif () + +foreach(src IN LISTS TEST_SOURCES) + get_filename_component(fname "${src}" NAME_WE) + set(test_name "${fname}") + + add_executable(${test_name} ${src} ${SS2PL_SOURCES}) + + target_include_directories(${test_name} + PRIVATE ${PROJECT_SOURCE_DIR}/../third_party/googletest/googletest/include + ) + + target_link_libraries(${test_name} + Boost::filesystem + gflags::gflags + glog::glog + ${PROJECT_SOURCE_DIR}/../third_party/mimalloc/out/release/libmimalloc.a + ${PROJECT_SOURCE_DIR}/../third_party/masstree/libkohler_masstree_json.a + Threads::Threads + ${PROJECT_SOURCE_DIR}/../third_party/googletest/build/lib/libgtest.a + ${PROJECT_SOURCE_DIR}/../third_party/googletest/build/lib/libgtest_main.a + ) + set_compile_options(${test_name}) + add_test( + NAME ${test_name} + COMMAND ${test_name} --gtest_output=xml:${test_name}_gtest_result.xml + ) +endforeach() \ No newline at end of file diff --git a/wound-wait/test/make_db_test.cpp b/wound-wait/test/make_db_test.cpp new file mode 100644 index 00000000..260dd3a3 --- /dev/null +++ b/wound-wait/test/make_db_test.cpp @@ -0,0 +1,40 @@ + +#include + +#define GLOBAL_VALUE_DEFINE + +#include "../../include/backoff.hh" +#include "../include/common.hh" +#include "../include/util.hh" + +#include "glog/logging.h" +#include "gtest/gtest.h" + +namespace ccbench::testing { + +class make_db_test : public ::testing::Test { +public: + static void call_once_f() { + google::InitGoogleLogging("make_db_test_log"); + FLAGS_stderrthreshold = 0; + } + + void SetUp() override { std::call_once(init_, call_once_f); } + + void TearDown() override {} + +private: + static inline std::once_flag init_; // NOLINT +}; + +TEST_F(make_db_test, simple) { // NOLINT + makeDB(); + // verify effect makeDb + for (std::uint64_t i = 0; i < FLAGS_tuple_num; ++i) { + ASSERT_EQ(Table[i].val_[0], 'a'); + ASSERT_EQ(Table[i].val_[1], '\0'); + ASSERT_EQ(Table[i].lock_.counter.load(std::memory_order_acquire), 0); + } +} + +} // namespace ccbench::testing \ No newline at end of file diff --git a/wound-wait/transaction.cc b/wound-wait/transaction.cc new file mode 100644 index 00000000..93592d12 --- /dev/null +++ b/wound-wait/transaction.cc @@ -0,0 +1,366 @@ + +#include +#include + +#include + +#include "../include/backoff.hh" +#include "../include/debug.hh" +#include "../include/procedure.hh" +#include "../include/result.hh" +#include "include/common.hh" +#include "include/transaction.hh" + +using namespace std; + +extern void display_procedure_vector(std::vector &pro); + +/** + * @brief Search xxx set + * @detail Search element of local set corresponding to given key. + * In this prototype system, the value to be updated for each worker thread + * is fixed for high performance, so it is only necessary to check the key match. + * @param Key [in] the key of key-value + * @return Corresponding element of local set + */ +inline SetElement *TxExecutor::searchReadSet(uint64_t key) { + for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) { + if ((*itr).key_ == key) return &(*itr); + } + + return nullptr; +} + +/** + * @brief Search xxx set + * @detail Search element of local set corresponding to given key. + * In this prototype system, the value to be updated for each worker thread + * is fixed for high performance, so it is only necessary to check the key match. + * @param Key [in] the key of key-value + * @return Corresponding element of local set + */ +inline SetElement *TxExecutor::searchWriteSet(uint64_t key) { + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { + if ((*itr).key_ == key) return &(*itr); + } + + return nullptr; +} + +/** + * @brief function about abort. + * Clean-up local read/write set. + * Release locks. + * @return void + */ +void TxExecutor::abort() { + /** + * Release locks + */ + unlockList(); + + /** + * Clean-up local read/write set. + */ + read_set_.clear(); + write_set_.clear(); + + ++sres_->local_abort_counts_; + +#if BACK_OFF +#if ADD_ANALYSIS + uint64_t start(rdtscp()); +#endif + + Backoff::backoff(FLAGS_clocks_per_us); + +#if ADD_ANALYSIS + sres_->local_backoff_latency_ += rdtscp() - start; +#endif + +#endif +} + +/** + * @brief success termination of transaction. + * @return void + */ +void TxExecutor::commit() { + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { + /** + * update payload. + */ + memcpy((*itr).rcdptr_->val_, write_val_, VAL_SIZE); + } + + /** + * Release locks. + */ + unlockList(); + + /** + * Clean-up local read/write set. + */ + read_set_.clear(); + write_set_.clear(); +} + +/** + * @brief Initialize function of transaction. + * Allocate timestamp. + * @return void + */ +void TxExecutor::begin() { this->status_ = TransactionStatus::inFlight; } + +/** + * @brief Transaction read function. + * @param [in] key The key of key-value + */ +void TxExecutor::read(uint64_t key) { +#if ADD_ANALYSIS + uint64_t start = rdtscp(); +#endif // ADD_ANALYSIS + + /** + * read-own-writes or re-read from local read set. + */ + if (searchWriteSet(key) || searchReadSet(key)) goto FINISH_READ; + + /** + * Search tuple from data structure. + */ + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#if ADD_ANALYSIS + ++sres_->local_tree_traversal_; +#endif +#else + tuple = get_tuple(Table, key); +#endif + +while (1) { + if (tuple->lock_.r_trylock()) { + r_lock_list_.emplace_back(&tuple->lock_); + read_set_.emplace_back(key, tuple, tuple->val_); + tuple->readers[thid_] = 1; + break; + } + else { + /** + * wound wait + */ + for (int i = 0; i < FLAGS_thread_num; i++) { + if (tuple->writers[i] > 0 && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_READ; + } + } + + +FINISH_READ: + +#if ADD_ANALYSIS + sres_->local_read_latency_ += rdtscp() - start; +#endif + return; +} + +/** + * @brief transaction write operation + * @param [in] key The key of key-value + * @return void + */ +void TxExecutor::write(uint64_t key) { +#if ADD_ANALYSIS + uint64_t start = rdtscp(); +#endif + + // if it already wrote the key object once. + if (searchWriteSet(key)) goto FINISH_WRITE; + + /** + * Search tuple from data structure. + */ + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#if ADD_ANALYSIS + ++sres_->local_tree_traversal_; +#endif +#else + tuple = get_tuple(Table, key); +#endif + +for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { + if ((*rItr).key_ == key) { // hit + while (1) { + if (!(*rItr).rcdptr_->lock_.tryupgrade()) { + for (int i = 0; i < FLAGS_thread_num; i++) { + if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } else { + break; + } + } + + // upgrade success + // remove old element of read lock list. + tuple->readers[this->thid_] = 0; + tuple->writers[this->thid_] = 1; + for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); + ++lItr) { + if (*lItr == &((*rItr).rcdptr_->lock_)) { + write_set_.emplace_back(key, (*rItr).rcdptr_); + w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); + r_lock_list_.erase(lItr); + break; + } + } + + read_set_.erase(rItr); + goto FINISH_WRITE; + } + } + + while (1) { + if (!tuple->lock_.w_trylock()) { + /** + * wound-wait. + */ + for (int i = 0; i < FLAGS_thread_num; i++) { + if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } else { + break; + } + } + + /** + * Register the contents to write lock list and write set. + */ + w_lock_list_.emplace_back(&tuple->lock_); + write_set_.emplace_back(key, tuple); + +FINISH_WRITE: +#if ADD_ANALYSIS + sres_->local_write_latency_ += rdtscp() - start; +#endif // ADD_ANALYSIS + return; +} + +/** + * @brief transaction readWrite (RMW) operation + */ +void TxExecutor::readWrite(uint64_t key) { + // if it already wrote the key object once. + if (searchWriteSet(key)) goto FINISH_WRITE; + + /** + * Search tuple from data structure. + */ + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#if ADD_ANALYSIS + ++sres_->local_tree_traversal_; +#endif +#else + tuple = get_tuple(Table, key); +#endif + +for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { + if ((*rItr).key_ == key) { // hit + while (1) { + if (!(*rItr).rcdptr_->lock_.tryupgrade()) { + for (int i = 0; i < FLAGS_thread_num; i++) { + if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } else { + break; + } + } + + // upgrade success + // remove old element of read set. + tuple->readers[this->thid_] = 0; + tuple->writers[this->thid_] = 1; + for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); + ++lItr) { + if (*lItr == &((*rItr).rcdptr_->lock_)) { + write_set_.emplace_back(key, (*rItr).rcdptr_); + w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); + r_lock_list_.erase(lItr); + break; + } + } + + read_set_.erase(rItr); + goto FINISH_WRITE; + } + } + + while (1) { + if (!tuple->lock_.w_trylock()) { + /** + * wound-wait. + */ + for (int i = 0; i < FLAGS_thread_num; i++) { + if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } else { + break; + } + } + + // read payload + memcpy(this->return_val_, tuple->val_, VAL_SIZE); + // finish read. + + /** + * Register the contents to write lock list and write set. + */ + w_lock_list_.emplace_back(&tuple->lock_); + write_set_.emplace_back(key, tuple); + +FINISH_WRITE: + return; +} + +/** + * @brief unlock and clean-up local lock set. + * @return void + */ +void TxExecutor::unlockList() { + for (auto itr = r_lock_list_.begin(); itr != r_lock_list_.end(); ++itr) + (*itr)->r_unlock(); + + for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) + (*itr).rcdptr_->readers[this->thid_] = -1; + + for (auto itr = w_lock_list_.begin(); itr != w_lock_list_.end(); ++itr) + (*itr)->w_unlock(); + + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) + (*itr).rcdptr_->writers[this->thid_] = -1; + + /** + * Clean-up local lock set. + */ + r_lock_list_.clear(); + w_lock_list_.clear(); +} diff --git a/wound-wait/util.cc b/wound-wait/util.cc new file mode 100644 index 00000000..7954dad7 --- /dev/null +++ b/wound-wait/util.cc @@ -0,0 +1,118 @@ + +#include +#include // syscall(SYS_gettid), +#include // syscall(SSY_gettid), +#include // syscall(SSY_gettid), + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../include/config.hh" +#include "../include/debug.hh" +#include "../include/masstree_wrapper.hh" +#include "../include/procedure.hh" +#include "../include/random.hh" +#include "../include/result.hh" +#include "../include/zipf.hh" +#include "include/common.hh" +#include "include/tuple.hh" +#include "include/util.hh" + +void chkArg() { + displayParameter(); + + if (FLAGS_rratio > 100) { + ERR; + } + + if (FLAGS_clocks_per_us < 100) { + cout << "CPU_MHZ is less than 100. are your really?" << endl; + ERR; + } +} + +void displayDB() { + Tuple *tuple; + + for (unsigned int i = 0; i < FLAGS_tuple_num; i++) { + tuple = &Table[i]; + cout << "------------------------------" << endl; // - 30 + cout << "key: " << i << endl; + cout << "val: " << tuple->val_ << endl; + } +} + +void displayParameter() { + cout << "#FLAGS_clocks_per_us:\t" << FLAGS_clocks_per_us << endl; + cout << "#FLAGS_extime:\t\t" << FLAGS_extime << endl; + cout << "#FLAGS_max_ope:\t\t" << FLAGS_max_ope << endl; + cout << "#FLAGS_rmw:\t\t" << FLAGS_rmw << endl; + cout << "#FLAGS_rratio:\t\t" << FLAGS_rratio << endl; + cout << "#FLAGS_thread_num:\t" << FLAGS_thread_num << endl; + cout << "#FLAGS_tuple_num:\t" << FLAGS_tuple_num << endl; + cout << "#FLAGS_ycsb:\t\t" << FLAGS_ycsb << endl; + cout << "#FLAGS_zipf_skew:\t" << FLAGS_zipf_skew << endl; +} + +void partTableInit([[maybe_unused]] size_t thid, uint64_t start, uint64_t end) { + // printf("partTableInit(...): thid %zu : %lu : %lu\n", thid, start, end); +#if MASSTREE_USE + MasstreeWrapper::thread_init(thid); +#endif + + for (auto i = start; i <= end; ++i) { + Table[i].val_[0] = 'a'; + Table[i].val_[1] = '\0'; + Table[i].lock_.init(); +#if MASSTREE_USE + MT.insert_value(i, &Table[i]); +#endif + } +} + +void makeDB() { + if (posix_memalign((void **) &Table, PAGE_SIZE, FLAGS_tuple_num * sizeof(Tuple)) != + 0) + ERR; +#if dbs11 + if (madvise((void *)Table, (FLAGS_tuple_num) * sizeof(Tuple), MADV_HUGEPAGE) != 0) + ERR; +#endif + + // maxthread は masstree 構築の最大並行スレッド数。 + // 初期値はハードウェア最大値。 + // FLAGS_tuple_num を均等に分割できる最大スレッド数を求める。 + size_t maxthread = decideParallelBuildNumber(FLAGS_tuple_num); + + std::vector thv; + // cout << "masstree 並列構築スレッド数 " << maxthread << endl; + for (size_t i = 0; i < maxthread; ++i) { + thv.emplace_back(partTableInit, i, i * (FLAGS_tuple_num / maxthread), + (i + 1) * (FLAGS_tuple_num / maxthread) - 1); + } + for (auto &th : thv) th.join(); +} + +void +ShowOptParameters() { + cout << "#ShowOptParameters()" + << ": ADD_ANALYSIS " << ADD_ANALYSIS + << ": BACK_OFF " << BACK_OFF + #ifdef DLR0 + << ": DLR0 " + #elif defined DLR1 + << ": DLR1 " + #endif + << ": MASSTREE_USE " << MASSTREE_USE + << ": KEY_SIZE " << KEY_SIZE + << ": KEY_SORT " << KEY_SORT + << ": VAL_SIZE " << VAL_SIZE + << endl; +} From 7bdcc0d47b34011741a39970408fa77251f99494 Mon Sep 17 00:00:00 2001 From: tngngn Date: Fri, 23 Dec 2022 13:01:25 +0900 Subject: [PATCH 02/14] plor frame --- plor/CMakeLists.txt | 80 + plor/README.md | 50 + plor/build/.ninja_deps | Bin 0 -> 34528 bytes plor/build/.ninja_log | 8 + plor/build/CMakeCache.txt | 473 ++++ plor/build/CMakeDoxyfile.in | 280 +++ plor/build/CMakeDoxygenDefaults.cmake | 672 ++++++ .../CMakeFiles/3.17.0/CMakeCXXCompiler.cmake | 88 + .../3.17.0/CMakeDetermineCompilerABI_CXX.bin | Bin 0 -> 16560 bytes .../build/CMakeFiles/3.17.0/CMakeSystem.cmake | 15 + .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 660 ++++++ plor/build/CMakeFiles/CMakeError.log | 50 + plor/build/CMakeFiles/CMakeOutput.log | 235 ++ .../CheckFunctionExists.cxx | 28 + plor/build/CMakeFiles/TargetDirectories.txt | 3 + plor/build/CMakeFiles/cmake.check_cache | 1 + plor/build/build.ninja | 186 ++ plor/build/cmake_install.cmake | 49 + plor/build/rules.ninja | 64 + plor/include/common.hh | 57 + plor/include/result.hh | 9 + plor/include/ss2pl_op_element.hh | 18 + plor/include/transaction.hh | 65 + plor/include/tuple.hh | 19 + plor/include/util.hh | 13 + plor/result.cc | 11 + plor/script/test_cache_ana.sh | 227 ++ plor/script/test_t1k.sh | 382 ++++ plor/script/test_t1m.sh | 382 ++++ plor/script/test_t200.sh | 382 ++++ plor/script/tst200-1k-1m.sh | 1991 +++++++++++++++++ plor/script/ycsb-xope.sh | 106 + plor/script/ycsb-xrratio.sh | 102 + plor/script/ycsb-xrs.sh | 118 + plor/script/ycsb-xskew.sh | 131 ++ plor/script/ycsb-xth.sh | 124 + plor/script/ycsb-xval.sh | 122 + plor/script/ycsbA-xrs-cache.sh | 52 + plor/script/ycsbA.sh | 510 +++++ plor/script/ycsbB.sh | 510 +++++ plor/script/ycsbC.sh | 187 ++ plor/ss2pl.cc | 129 ++ plor/transaction.cc | 410 ++++ plor/util.cc | 118 + silo/build/.ninja_deps | Bin 0 -> 53632 bytes silo/build/.ninja_log | 10 + silo/build/CMakeCache.txt | 473 ++++ silo/build/CMakeDoxyfile.in | 280 +++ silo/build/CMakeDoxygenDefaults.cmake | 672 ++++++ .../CMakeFiles/3.17.0/CMakeCXXCompiler.cmake | 88 + .../3.17.0/CMakeDetermineCompilerABI_CXX.bin | Bin 0 -> 16560 bytes .../build/CMakeFiles/3.17.0/CMakeSystem.cmake | 15 + .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 660 ++++++ silo/build/CMakeFiles/CMakeError.log | 50 + silo/build/CMakeFiles/CMakeOutput.log | 235 ++ .../CheckFunctionExists.cxx | 28 + silo/build/CMakeFiles/TargetDirectories.txt | 4 + silo/build/CMakeFiles/cmake.check_cache | 1 + silo/build/build.ninja | 221 ++ silo/build/cmake_install.cmake | 49 + silo/build/rules.ninja | 83 + ss2pl/CMakeLists.txt | 2 - ss2pl/build/.ninja_deps | Bin 0 -> 48508 bytes ss2pl/build/.ninja_log | 15 + ss2pl/build/CMakeCache.txt | 473 ++++ ss2pl/build/CMakeDoxyfile.in | 280 +++ ss2pl/build/CMakeDoxygenDefaults.cmake | 672 ++++++ .../CMakeFiles/3.17.0/CMakeCXXCompiler.cmake | 88 + .../3.17.0/CMakeDetermineCompilerABI_CXX.bin | Bin 0 -> 16560 bytes .../build/CMakeFiles/3.17.0/CMakeSystem.cmake | 15 + .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 660 ++++++ ss2pl/build/CMakeFiles/CMakeError.log | 50 + ss2pl/build/CMakeFiles/CMakeOutput.log | 235 ++ .../CheckFunctionExists.cxx | 28 + ss2pl/build/CMakeFiles/TargetDirectories.txt | 8 + ss2pl/build/CMakeFiles/cmake.check_cache | 1 + ss2pl/build/CTestTestfile.cmake | 7 + ss2pl/build/build.ninja | 334 +++ ss2pl/build/cmake_install.cmake | 55 + ss2pl/build/rules.ninja | 83 + ss2pl/build/test/CTestTestfile.cmake | 8 + ss2pl/build/test/cmake_install.cmake | 39 + ss2pl/build/test/make_db_test | Bin 0 -> 1165144 bytes ss2pl/include/common.hh | 2 + ss2pl/include/transaction.hh | 1 + ss2pl/include/tuple.hh | 5 + ss2pl/ss2pl.cc | 1 - ss2pl/transaction.cc | 316 +-- tictoc/build/.ninja_deps | Bin 0 -> 35048 bytes tictoc/build/.ninja_log | 8 + tictoc/build/CMakeCache.txt | 473 ++++ tictoc/build/CMakeDoxyfile.in | 280 +++ tictoc/build/CMakeDoxygenDefaults.cmake | 672 ++++++ .../CMakeFiles/3.17.0/CMakeCXXCompiler.cmake | 88 + .../3.17.0/CMakeDetermineCompilerABI_CXX.bin | Bin 0 -> 16560 bytes .../build/CMakeFiles/3.17.0/CMakeSystem.cmake | 15 + .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 660 ++++++ tictoc/build/CMakeFiles/CMakeError.log | 50 + tictoc/build/CMakeFiles/CMakeOutput.log | 235 ++ .../CheckFunctionExists.cxx | 28 + tictoc/build/CMakeFiles/TargetDirectories.txt | 3 + tictoc/build/CMakeFiles/cmake.check_cache | 1 + tictoc/build/build.ninja | 186 ++ tictoc/build/cmake_install.cmake | 49 + tictoc/build/rules.ninja | 64 + wait-die/CMakeLists.txt | 81 + wait-die/README.md | 52 + wait-die/build/.ninja_deps | Bin 0 -> 48508 bytes wait-die/build/.ninja_log | 15 + wait-die/build/CMakeCache.txt | 473 ++++ wait-die/build/CMakeDoxyfile.in | 280 +++ wait-die/build/CMakeDoxygenDefaults.cmake | 672 ++++++ .../CMakeFiles/3.17.0/CMakeCXXCompiler.cmake | 88 + .../3.17.0/CMakeDetermineCompilerABI_CXX.bin | Bin 0 -> 16560 bytes .../build/CMakeFiles/3.17.0/CMakeSystem.cmake | 15 + .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 660 ++++++ wait-die/build/CMakeFiles/CMakeError.log | 50 + wait-die/build/CMakeFiles/CMakeOutput.log | 235 ++ .../CheckFunctionExists.cxx | 28 + .../build/CMakeFiles/TargetDirectories.txt | 8 + wait-die/build/CMakeFiles/cmake.check_cache | 1 + wait-die/build/CTestTestfile.cmake | 7 + wait-die/build/build.ninja | 334 +++ wait-die/build/cmake_install.cmake | 55 + wait-die/build/rules.ninja | 83 + wait-die/build/test/CTestTestfile.cmake | 8 + wait-die/build/test/cmake_install.cmake | 39 + wait-die/build/test/make_db_test | Bin 0 -> 1165216 bytes wait-die/include/common.hh | 57 + wait-die/include/result.hh | 9 + wait-die/include/ss2pl_op_element.hh | 18 + wait-die/include/transaction.hh | 68 + wait-die/include/tuple.hh | 19 + wait-die/include/util.hh | 13 + wait-die/result.cc | 11 + wait-die/script/test_cache_ana.sh | 227 ++ wait-die/script/test_t1k.sh | 382 ++++ wait-die/script/test_t1m.sh | 382 ++++ wait-die/script/test_t200.sh | 382 ++++ wait-die/script/tst200-1k-1m.sh | 1991 +++++++++++++++++ wait-die/script/ycsb-xope.sh | 106 + wait-die/script/ycsb-xrratio.sh | 102 + wait-die/script/ycsb-xrs.sh | 118 + wait-die/script/ycsb-xskew.sh | 131 ++ wait-die/script/ycsb-xth.sh | 124 + wait-die/script/ycsb-xval.sh | 122 + wait-die/script/ycsbA-xrs-cache.sh | 52 + wait-die/script/ycsbA.sh | 510 +++++ wait-die/script/ycsbB.sh | 510 +++++ wait-die/script/ycsbC.sh | 187 ++ wait-die/ss2pl.cc | 147 ++ wait-die/test/CMakeLists.txt | 76 + wait-die/test/make_db_test.cpp | 40 + wait-die/transaction.cc | 341 +++ wait-die/util.cc | 118 + wait-die/wait-die/CMakeLists.txt | 78 + wait-die/wait-die/README.md | 48 + wait-die/wait-die/build/.ninja_deps | Bin 0 -> 34552 bytes wait-die/wait-die/build/.ninja_log | 8 + wait-die/wait-die/build/CMakeCache.txt | 473 ++++ wait-die/wait-die/build/CMakeDoxyfile.in | 280 +++ .../wait-die/build/CMakeDoxygenDefaults.cmake | 672 ++++++ .../CMakeFiles/3.17.0/CMakeCXXCompiler.cmake | 88 + .../3.17.0/CMakeDetermineCompilerABI_CXX.bin | Bin 0 -> 16560 bytes .../build/CMakeFiles/3.17.0/CMakeSystem.cmake | 15 + .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 660 ++++++ .../wait-die/build/CMakeFiles/CMakeError.log | 50 + .../wait-die/build/CMakeFiles/CMakeOutput.log | 235 ++ .../CheckFunctionExists.cxx | 28 + .../build/CMakeFiles/TargetDirectories.txt | 3 + .../build/CMakeFiles/cmake.check_cache | 1 + wait-die/wait-die/build/build.ninja | 186 ++ wait-die/wait-die/build/cmake_install.cmake | 49 + wait-die/wait-die/build/rules.ninja | 64 + wait-die/wait-die/include/common.hh | 57 + wait-die/wait-die/include/result.hh | 9 + wait-die/wait-die/include/ss2pl_op_element.hh | 18 + wait-die/wait-die/include/transaction.hh | 68 + wait-die/wait-die/include/tuple.hh | 22 + wait-die/wait-die/include/util.hh | 13 + wait-die/wait-die/result.cc | 11 + wait-die/wait-die/script/comparecc.sh | 6 + wait-die/wait-die/script/high_contention.sh | 15 + wait-die/wait-die/script/high_contentionA.sh | 7 + wait-die/wait-die/script/low_contention.sh | 7 + wait-die/wait-die/script/test_cache_ana.sh | 227 ++ wait-die/wait-die/script/test_t1k.sh | 382 ++++ wait-die/wait-die/script/test_t1m.sh | 382 ++++ wait-die/wait-die/script/test_t200.sh | 382 ++++ wait-die/wait-die/script/tst200-1k-1m.sh | 1991 +++++++++++++++++ wait-die/wait-die/script/ycsb-xope.sh | 106 + wait-die/wait-die/script/ycsb-xrratio.sh | 102 + wait-die/wait-die/script/ycsb-xrs.sh | 118 + wait-die/wait-die/script/ycsb-xskew.sh | 131 ++ wait-die/wait-die/script/ycsb-xth.sh | 124 + wait-die/wait-die/script/ycsb-xval.sh | 122 + wait-die/wait-die/script/ycsbA-xrs-cache.sh | 52 + wait-die/wait-die/script/ycsbA.sh | 510 +++++ wait-die/wait-die/script/ycsbB.sh | 510 +++++ wait-die/wait-die/script/ycsbC.sh | 187 ++ wait-die/wait-die/transaction.cc | 435 ++++ wait-die/wait-die/util.cc | 118 + wait-die/wait-die/waitdie.cc | 167 ++ wound-wait/CMakeLists.txt | 80 + wound-wait/README.md | 50 + wound-wait/build/.ninja_deps | Bin 0 -> 34536 bytes wound-wait/build/.ninja_log | 8 + wound-wait/build/CMakeCache.txt | 473 ++++ wound-wait/build/CMakeDoxyfile.in | 280 +++ wound-wait/build/CMakeDoxygenDefaults.cmake | 672 ++++++ .../CMakeFiles/3.17.0/CMakeCXXCompiler.cmake | 88 + .../3.17.0/CMakeDetermineCompilerABI_CXX.bin | Bin 0 -> 16560 bytes .../build/CMakeFiles/3.17.0/CMakeSystem.cmake | 15 + .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 660 ++++++ wound-wait/build/CMakeFiles/CMakeError.log | 50 + wound-wait/build/CMakeFiles/CMakeOutput.log | 235 ++ .../CheckFunctionExists.cxx | 28 + .../build/CMakeFiles/TargetDirectories.txt | 3 + wound-wait/build/CMakeFiles/cmake.check_cache | 1 + wound-wait/build/build.ninja | 186 ++ wound-wait/build/cmake_install.cmake | 49 + wound-wait/build/rules.ninja | 64 + wound-wait/include/common.hh | 57 + wound-wait/include/result.hh | 9 + wound-wait/include/ss2pl_op_element.hh | 18 + wound-wait/include/transaction.hh | 65 + wound-wait/include/tuple.hh | 19 + wound-wait/include/util.hh | 13 + wound-wait/result.cc | 11 + wound-wait/script/test_cache_ana.sh | 227 ++ wound-wait/script/test_t1k.sh | 382 ++++ wound-wait/script/test_t1m.sh | 382 ++++ wound-wait/script/test_t200.sh | 382 ++++ wound-wait/script/tst200-1k-1m.sh | 1991 +++++++++++++++++ wound-wait/script/ycsb-xope.sh | 106 + wound-wait/script/ycsb-xrratio.sh | 102 + wound-wait/script/ycsb-xrs.sh | 118 + wound-wait/script/ycsb-xskew.sh | 131 ++ wound-wait/script/ycsb-xth.sh | 124 + wound-wait/script/ycsb-xval.sh | 122 + wound-wait/script/ycsbA-xrs-cache.sh | 52 + wound-wait/script/ycsbA.sh | 510 +++++ wound-wait/script/ycsbB.sh | 510 +++++ wound-wait/script/ycsbC.sh | 187 ++ wound-wait/ss2pl.cc | 129 ++ wound-wait/transaction.cc | 363 +++ wound-wait/util.cc | 118 + 247 files changed, 45756 insertions(+), 134 deletions(-) create mode 100644 plor/CMakeLists.txt create mode 100644 plor/README.md create mode 100644 plor/build/.ninja_deps create mode 100644 plor/build/.ninja_log create mode 100644 plor/build/CMakeCache.txt create mode 100644 plor/build/CMakeDoxyfile.in create mode 100644 plor/build/CMakeDoxygenDefaults.cmake create mode 100644 plor/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake create mode 100755 plor/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin create mode 100644 plor/build/CMakeFiles/3.17.0/CMakeSystem.cmake create mode 100644 plor/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp create mode 100644 plor/build/CMakeFiles/CMakeError.log create mode 100644 plor/build/CMakeFiles/CMakeOutput.log create mode 100644 plor/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx create mode 100644 plor/build/CMakeFiles/TargetDirectories.txt create mode 100644 plor/build/CMakeFiles/cmake.check_cache create mode 100644 plor/build/build.ninja create mode 100644 plor/build/cmake_install.cmake create mode 100644 plor/build/rules.ninja create mode 100644 plor/include/common.hh create mode 100644 plor/include/result.hh create mode 100644 plor/include/ss2pl_op_element.hh create mode 100644 plor/include/transaction.hh create mode 100644 plor/include/tuple.hh create mode 100644 plor/include/util.hh create mode 100644 plor/result.cc create mode 100755 plor/script/test_cache_ana.sh create mode 100755 plor/script/test_t1k.sh create mode 100755 plor/script/test_t1m.sh create mode 100755 plor/script/test_t200.sh create mode 100755 plor/script/tst200-1k-1m.sh create mode 100755 plor/script/ycsb-xope.sh create mode 100755 plor/script/ycsb-xrratio.sh create mode 100755 plor/script/ycsb-xrs.sh create mode 100755 plor/script/ycsb-xskew.sh create mode 100755 plor/script/ycsb-xth.sh create mode 100755 plor/script/ycsb-xval.sh create mode 100755 plor/script/ycsbA-xrs-cache.sh create mode 100755 plor/script/ycsbA.sh create mode 100755 plor/script/ycsbB.sh create mode 100755 plor/script/ycsbC.sh create mode 100644 plor/ss2pl.cc create mode 100644 plor/transaction.cc create mode 100644 plor/util.cc create mode 100644 silo/build/.ninja_deps create mode 100644 silo/build/.ninja_log create mode 100644 silo/build/CMakeCache.txt create mode 100644 silo/build/CMakeDoxyfile.in create mode 100644 silo/build/CMakeDoxygenDefaults.cmake create mode 100644 silo/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake create mode 100755 silo/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin create mode 100644 silo/build/CMakeFiles/3.17.0/CMakeSystem.cmake create mode 100644 silo/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp create mode 100644 silo/build/CMakeFiles/CMakeError.log create mode 100644 silo/build/CMakeFiles/CMakeOutput.log create mode 100644 silo/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx create mode 100644 silo/build/CMakeFiles/TargetDirectories.txt create mode 100644 silo/build/CMakeFiles/cmake.check_cache create mode 100644 silo/build/build.ninja create mode 100644 silo/build/cmake_install.cmake create mode 100644 silo/build/rules.ninja create mode 100644 ss2pl/build/.ninja_deps create mode 100644 ss2pl/build/.ninja_log create mode 100644 ss2pl/build/CMakeCache.txt create mode 100644 ss2pl/build/CMakeDoxyfile.in create mode 100644 ss2pl/build/CMakeDoxygenDefaults.cmake create mode 100644 ss2pl/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake create mode 100755 ss2pl/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin create mode 100644 ss2pl/build/CMakeFiles/3.17.0/CMakeSystem.cmake create mode 100644 ss2pl/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp create mode 100644 ss2pl/build/CMakeFiles/CMakeError.log create mode 100644 ss2pl/build/CMakeFiles/CMakeOutput.log create mode 100644 ss2pl/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx create mode 100644 ss2pl/build/CMakeFiles/TargetDirectories.txt create mode 100644 ss2pl/build/CMakeFiles/cmake.check_cache create mode 100644 ss2pl/build/CTestTestfile.cmake create mode 100644 ss2pl/build/build.ninja create mode 100644 ss2pl/build/cmake_install.cmake create mode 100644 ss2pl/build/rules.ninja create mode 100644 ss2pl/build/test/CTestTestfile.cmake create mode 100644 ss2pl/build/test/cmake_install.cmake create mode 100755 ss2pl/build/test/make_db_test create mode 100644 tictoc/build/.ninja_deps create mode 100644 tictoc/build/.ninja_log create mode 100644 tictoc/build/CMakeCache.txt create mode 100644 tictoc/build/CMakeDoxyfile.in create mode 100644 tictoc/build/CMakeDoxygenDefaults.cmake create mode 100644 tictoc/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake create mode 100755 tictoc/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin create mode 100644 tictoc/build/CMakeFiles/3.17.0/CMakeSystem.cmake create mode 100644 tictoc/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp create mode 100644 tictoc/build/CMakeFiles/CMakeError.log create mode 100644 tictoc/build/CMakeFiles/CMakeOutput.log create mode 100644 tictoc/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx create mode 100644 tictoc/build/CMakeFiles/TargetDirectories.txt create mode 100644 tictoc/build/CMakeFiles/cmake.check_cache create mode 100644 tictoc/build/build.ninja create mode 100644 tictoc/build/cmake_install.cmake create mode 100644 tictoc/build/rules.ninja create mode 100644 wait-die/CMakeLists.txt create mode 100644 wait-die/README.md create mode 100644 wait-die/build/.ninja_deps create mode 100644 wait-die/build/.ninja_log create mode 100644 wait-die/build/CMakeCache.txt create mode 100644 wait-die/build/CMakeDoxyfile.in create mode 100644 wait-die/build/CMakeDoxygenDefaults.cmake create mode 100644 wait-die/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake create mode 100755 wait-die/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin create mode 100644 wait-die/build/CMakeFiles/3.17.0/CMakeSystem.cmake create mode 100644 wait-die/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp create mode 100644 wait-die/build/CMakeFiles/CMakeError.log create mode 100644 wait-die/build/CMakeFiles/CMakeOutput.log create mode 100644 wait-die/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx create mode 100644 wait-die/build/CMakeFiles/TargetDirectories.txt create mode 100644 wait-die/build/CMakeFiles/cmake.check_cache create mode 100644 wait-die/build/CTestTestfile.cmake create mode 100644 wait-die/build/build.ninja create mode 100644 wait-die/build/cmake_install.cmake create mode 100644 wait-die/build/rules.ninja create mode 100644 wait-die/build/test/CTestTestfile.cmake create mode 100644 wait-die/build/test/cmake_install.cmake create mode 100755 wait-die/build/test/make_db_test create mode 100644 wait-die/include/common.hh create mode 100644 wait-die/include/result.hh create mode 100644 wait-die/include/ss2pl_op_element.hh create mode 100644 wait-die/include/transaction.hh create mode 100644 wait-die/include/tuple.hh create mode 100644 wait-die/include/util.hh create mode 100644 wait-die/result.cc create mode 100755 wait-die/script/test_cache_ana.sh create mode 100755 wait-die/script/test_t1k.sh create mode 100755 wait-die/script/test_t1m.sh create mode 100755 wait-die/script/test_t200.sh create mode 100755 wait-die/script/tst200-1k-1m.sh create mode 100755 wait-die/script/ycsb-xope.sh create mode 100755 wait-die/script/ycsb-xrratio.sh create mode 100755 wait-die/script/ycsb-xrs.sh create mode 100755 wait-die/script/ycsb-xskew.sh create mode 100755 wait-die/script/ycsb-xth.sh create mode 100755 wait-die/script/ycsb-xval.sh create mode 100755 wait-die/script/ycsbA-xrs-cache.sh create mode 100755 wait-die/script/ycsbA.sh create mode 100755 wait-die/script/ycsbB.sh create mode 100755 wait-die/script/ycsbC.sh create mode 100644 wait-die/ss2pl.cc create mode 100644 wait-die/test/CMakeLists.txt create mode 100644 wait-die/test/make_db_test.cpp create mode 100644 wait-die/transaction.cc create mode 100644 wait-die/util.cc create mode 100644 wait-die/wait-die/CMakeLists.txt create mode 100644 wait-die/wait-die/README.md create mode 100644 wait-die/wait-die/build/.ninja_deps create mode 100644 wait-die/wait-die/build/.ninja_log create mode 100644 wait-die/wait-die/build/CMakeCache.txt create mode 100644 wait-die/wait-die/build/CMakeDoxyfile.in create mode 100644 wait-die/wait-die/build/CMakeDoxygenDefaults.cmake create mode 100644 wait-die/wait-die/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake create mode 100755 wait-die/wait-die/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin create mode 100644 wait-die/wait-die/build/CMakeFiles/3.17.0/CMakeSystem.cmake create mode 100644 wait-die/wait-die/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp create mode 100644 wait-die/wait-die/build/CMakeFiles/CMakeError.log create mode 100644 wait-die/wait-die/build/CMakeFiles/CMakeOutput.log create mode 100644 wait-die/wait-die/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx create mode 100644 wait-die/wait-die/build/CMakeFiles/TargetDirectories.txt create mode 100644 wait-die/wait-die/build/CMakeFiles/cmake.check_cache create mode 100644 wait-die/wait-die/build/build.ninja create mode 100644 wait-die/wait-die/build/cmake_install.cmake create mode 100644 wait-die/wait-die/build/rules.ninja create mode 100644 wait-die/wait-die/include/common.hh create mode 100644 wait-die/wait-die/include/result.hh create mode 100644 wait-die/wait-die/include/ss2pl_op_element.hh create mode 100644 wait-die/wait-die/include/transaction.hh create mode 100644 wait-die/wait-die/include/tuple.hh create mode 100644 wait-die/wait-die/include/util.hh create mode 100644 wait-die/wait-die/result.cc create mode 100755 wait-die/wait-die/script/comparecc.sh create mode 100755 wait-die/wait-die/script/high_contention.sh create mode 100755 wait-die/wait-die/script/high_contentionA.sh create mode 100755 wait-die/wait-die/script/low_contention.sh create mode 100755 wait-die/wait-die/script/test_cache_ana.sh create mode 100755 wait-die/wait-die/script/test_t1k.sh create mode 100755 wait-die/wait-die/script/test_t1m.sh create mode 100755 wait-die/wait-die/script/test_t200.sh create mode 100755 wait-die/wait-die/script/tst200-1k-1m.sh create mode 100755 wait-die/wait-die/script/ycsb-xope.sh create mode 100755 wait-die/wait-die/script/ycsb-xrratio.sh create mode 100755 wait-die/wait-die/script/ycsb-xrs.sh create mode 100755 wait-die/wait-die/script/ycsb-xskew.sh create mode 100755 wait-die/wait-die/script/ycsb-xth.sh create mode 100755 wait-die/wait-die/script/ycsb-xval.sh create mode 100755 wait-die/wait-die/script/ycsbA-xrs-cache.sh create mode 100755 wait-die/wait-die/script/ycsbA.sh create mode 100755 wait-die/wait-die/script/ycsbB.sh create mode 100755 wait-die/wait-die/script/ycsbC.sh create mode 100644 wait-die/wait-die/transaction.cc create mode 100644 wait-die/wait-die/util.cc create mode 100644 wait-die/wait-die/waitdie.cc create mode 100644 wound-wait/CMakeLists.txt create mode 100644 wound-wait/README.md create mode 100644 wound-wait/build/.ninja_deps create mode 100644 wound-wait/build/.ninja_log create mode 100644 wound-wait/build/CMakeCache.txt create mode 100644 wound-wait/build/CMakeDoxyfile.in create mode 100644 wound-wait/build/CMakeDoxygenDefaults.cmake create mode 100644 wound-wait/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake create mode 100755 wound-wait/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin create mode 100644 wound-wait/build/CMakeFiles/3.17.0/CMakeSystem.cmake create mode 100644 wound-wait/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp create mode 100644 wound-wait/build/CMakeFiles/CMakeError.log create mode 100644 wound-wait/build/CMakeFiles/CMakeOutput.log create mode 100644 wound-wait/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx create mode 100644 wound-wait/build/CMakeFiles/TargetDirectories.txt create mode 100644 wound-wait/build/CMakeFiles/cmake.check_cache create mode 100644 wound-wait/build/build.ninja create mode 100644 wound-wait/build/cmake_install.cmake create mode 100644 wound-wait/build/rules.ninja create mode 100644 wound-wait/include/common.hh create mode 100644 wound-wait/include/result.hh create mode 100644 wound-wait/include/ss2pl_op_element.hh create mode 100644 wound-wait/include/transaction.hh create mode 100644 wound-wait/include/tuple.hh create mode 100644 wound-wait/include/util.hh create mode 100644 wound-wait/result.cc create mode 100755 wound-wait/script/test_cache_ana.sh create mode 100755 wound-wait/script/test_t1k.sh create mode 100755 wound-wait/script/test_t1m.sh create mode 100755 wound-wait/script/test_t200.sh create mode 100755 wound-wait/script/tst200-1k-1m.sh create mode 100755 wound-wait/script/ycsb-xope.sh create mode 100755 wound-wait/script/ycsb-xrratio.sh create mode 100755 wound-wait/script/ycsb-xrs.sh create mode 100755 wound-wait/script/ycsb-xskew.sh create mode 100755 wound-wait/script/ycsb-xth.sh create mode 100755 wound-wait/script/ycsb-xval.sh create mode 100755 wound-wait/script/ycsbA-xrs-cache.sh create mode 100755 wound-wait/script/ycsbA.sh create mode 100755 wound-wait/script/ycsbB.sh create mode 100755 wound-wait/script/ycsbC.sh create mode 100644 wound-wait/ss2pl.cc create mode 100644 wound-wait/transaction.cc create mode 100644 wound-wait/util.cc diff --git a/plor/CMakeLists.txt b/plor/CMakeLists.txt new file mode 100644 index 00000000..61817a38 --- /dev/null +++ b/plor/CMakeLists.txt @@ -0,0 +1,80 @@ +cmake_minimum_required(VERSION 3.10) + +project(ccbench_ss2pl + VERSION 0.0.1 + DESCRIPTION "ss2pl of ccbench" + LANGUAGES CXX) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake") + +option(ENABLE_SANITIZER "enable sanitizer on debug build" ON) +option(ENABLE_UB_SANITIZER "enable undefined behavior sanitizer on debug build" OFF) +option(ENABLE_COVERAGE "enable coverage on debug build" OFF) + +find_package(Doxygen) +find_package(Threads REQUIRED) +find_package(gflags REQUIRED) +find_package(glog REQUIRED) +find_package(Boost + COMPONENTS filesystem) + +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) +include(CompileOptions) + +file(GLOB ERMIA_SOURCES + "../common/result.cc" + "../common/util.cc" + "ss2pl.cc" + "result.cc" + "transaction.cc" + "util.cc" + ) + +add_executable(ss2pl.exe ${ERMIA_SOURCES}) + +target_link_libraries(ss2pl.exe + Boost::filesystem + gflags::gflags + ${PROJECT_SOURCE_DIR}/../third_party/mimalloc/out/release/libmimalloc.a + ${PROJECT_SOURCE_DIR}/../third_party/masstree/libkohler_masstree_json.a + Threads::Threads + ) + +if (DEFINED ADD_ANALYSIS) + add_definitions(-DADD_ANALYSIS=${ADD_ANALYSIS}) +else () + add_definitions(-DADD_ANALYSIS=0) +endif () + +if (DEFINED BACK_OFF) + add_definitions(-DBACK_OFF=${BACK_OFF}) +else () + add_definitions(-DBACK_OFF=0) +endif () + +add_definitions(-DDLR1) + +if (DEFINED KEY_SIZE) + add_definitions(-DKEY_SIZE=${KEY_SIZE}) +else () + add_definitions(-DKEY_SIZE=8) +endif () + +if (DEFINED KEY_SORT) + add_definitions(-DKEY_SORT=${KEY_SORT}) +else () + add_definitions(-DKEY_SORT=0) +endif () + +if (DEFINED MASSTREE_USE) + add_definitions(-DMASSTREE_USE=${MASSTREE_USE}) +else () + add_definitions(-DMASSTREE_USE=1) +endif () + +if (DEFINED VAL_SIZE) + add_definitions(-DVAL_SIZE=${VAL_SIZE}) +else () + add_definitions(-DVAL_SIZE=4) +endif () diff --git a/plor/README.md b/plor/README.md new file mode 100644 index 00000000..fdbe3c4b --- /dev/null +++ b/plor/README.md @@ -0,0 +1,50 @@ +# 2PL + +## How to use +- Build masstree in ccbench directory +``` +$ ./build_tools/bootstrap.sh +``` +This makes ccbench/third_party/masstree/libkohler_masstree_json.a used by building ss2pl. +- Build mimalloc in ccbench directory +``` +$ ./build_tools/bootstrap_mimalloc.sh +``` +This makes ../third_party/mimalloc/out/release/libmimalloc.a used by building ss2pl. +- Build +``` +$ mkdir build +$ cd build +$ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release .. +$ ninja +``` +- Confirm usage +``` +$ ./ss2pl.exe -help +``` +- Execution example +``` +$ numactl --interleave=all ./ss2pl.exe -clocks_per_us=2100 -extime=3 -max_ope=10 -rmw=0 -rratio=100 -thread_num=224 -tuple_num=1000000 -ycsb=1 -zipf_skew=0 +``` + +## How to customize options in CMakeLists.txt +- `ADD_ANALYSIS` : If this is 1, it is deeper analysis than setting 0.
+default : `0` +- `BACK_OFF` : If this is 1, it use Cicada's backoff.
+default : `0` +- `KEY_SORT` : If this is 1, its transaction accesses records in ascending key order.
+default : `0` +- `MASSTREE_USE` : If this is 1, it use masstree as data structure. If not, it use simple array αs data structure. +default : `1` +- `VAL_SIZE` : Value of key-value size. In other words, payload size.
+default : `4` +- `DLR0` : Dead lock resolution is timeout. +- `DLR1` : Dead lock resolution is no-wait. + +## Optimizations +- Backoff. +- Timeout of dead lock resolution. +- No-wait of dead lock resolution. + +## Implementation +- Lock : reader/writer lock diff --git a/plor/build/.ninja_deps b/plor/build/.ninja_deps new file mode 100644 index 0000000000000000000000000000000000000000..f8768b7dc67899d92b7d230973a28b5aa62844db GIT binary patch literal 34528 zcmciL1z;RiyYTU$?nbGXrbdly>H-DouGDqeY$n-l*SeCV?(R@GsN>M$buU#Y)C+Bq zqVJ2l-v2qXyV+#3GWouH@4dg9H1j-j&YU?jbLPzKQaiz6b&N5ks4h>j0*az^LdV{w zv1%8qP4y&sJWX9TgPN%tQmpPIi_@+qc^zr|Z<5)ZtUAn=B(u|QcRG^Xs>f&Z8q8*c zQ~8(wxu5mK6;Iqh#3zV&pU0hKb(n3w6gA1?O))3B+-i!NYOpBE-^5hQ8DnnLD5*`7 z*>3V${$hFSoXay?w=}kFo@lc=e3^-94quX%kZkpO#II(jBh{K_u>47GTRpi>kCAFw z9jZrEP5C3Yx}~Znua8zC;&+xej=6r%cq+wewRQeRPV<;Ka!WFt?i7!8f-39sYy5dO zrz0&f#pz47k@`zqbrfyr@%oarI{vILC$VL7gXJf3bhWkFAIX<}E3~g@yVd3K z+LFZoGX{1n?e{}&bqwtWE|<|e-lZD7ZWG-?w&C~W)X&-WT8^6OP0AMj9kG>i#)=Nf zn!aUO>}{3%&}L0GCt6gFLwBObYjS%D$=>PUH_3n*X3UzTXe#B|l{b-E3fFUf0{v#oP)58Bh7=&{;U5>r&OjV2BB z*)QU+Z>r5{@;a#R=j6mbx5)jVRMSniM7!#>I8zLkJ38v>O0+rC zk`0zmb>*a*JoL0r$PwrLZ0FzH+g0ojv&m-j&{=IRI%}%WVfI>`4$&DtW<7ECz2JI8 z8+}AxoX1HpFVSIgyPX*#UAY~9xmJ(axU6#jgd)d!|S?|PO7cGZ@l;~sU?Gs}&k80yOBnmteSB`9xVAARM>!=+A9&4IM^~#-lid>z?Pe`_+yiI<)oadn2 z&lUc%y>6eGvgw*!k7OI4{C`-7$EBLZN=~qjIQx>;ZcPoAVOo{wYV|ue(QUal6l}X3F+HtUK48AY{}*7z(*zc{6eu;$Fhx zv#V~aIqUA@4dSD2FWcZUSs4v0%In0|iPAQ9XS&?Z*CN+JwhOmQVjGQSiz++NtC80$ zjtqZg73CG;!j8?5_7JyXRt$-cBClgFdF z1EW$!c{y@?uwMk~DcbcV;-l>YmzRsK|90_3Vk7JWtuFHa8!RuxsDn1s!T2)8=yb7} z&l8`J`@XeV?cAxd?77Hgd)-Zv(oA-{$>24cpCvAAY@qEY5hqU1R+G&b7|I)cUaLIm zKSN&F@tT#F%vD>>N)sh1%G2aTI0i*o$*R{BEJ$SRj2^Gr=t2&!n&##@BnsFOBRF1+ zNzF*1Z*C+e+A+ih&+14cmIH1>j99yBce=-GvFl^Rx}2Wi0AO9@dYUuLTUKax%Cin4{za&LjMNZhcH1{02eMuP{7XJH&m3njS z$>P3F-gc}YH{LOlnDAMY~Seju-Z2JGnbR6r+pbl zD$B@;)*r3R=?2CHOC!gMYc`iNyVb1SJ}67#+J=yeVj81V>a&=<*zKMpkIAf5lbB|= zD2vDs8{_#$p`vjYvOKI`d$_`Lz%5`|obBh&P?Y)P#5qT#?JNI?R<3{%i`!%u)l%lg zUp6zpiQEDiEOT?)7IAaJ8t25nK7WRy%+{A92jsKJ(RF|(?oi&a8Xvd5;Nu!;YrxF{xeM0&(ziRmg z%M@}Ga<-2aDrRMvMpBf?#Dw+tzzWEn#PT@%bTDgTlyc3Y7qi|8#DpD3a-qR8o@Ein zI&xg86=XEq#CVi3U1sF+w96soWyDygxNHRnpTws}UZ+``=us3OF~Rd}eAh89E(VL2 zys$RcRw|EW56ffkbN>)q&N<2H7n$oOH(KA)Zdc{BzcP+kUHzE86PoWLKf->J_h4!U zw}oP7X~ii{;={IE>yHjKLs1+oPoV9yjTyA%!COE(G10a!7)Wc_BG*qgUNF|kod@w_ zi4X42z;#nAU&fm=Gfl}>#=%yvF_=rCkh9F><_YdwCFqB#b6L!o96l31hld91o+2i`EYU z?ae)==su$A%E%aX2`NC{myC#9hS*krI5QdP>?!~AsNv*9I8Md6ku#y942vFPbyC-% z#DrY~#CgzZunb{YoaaDoTx2w+a*rZM?t{sVeO{BhCN#HYbN{%1kluV+NzCg82H*q9 z*EOayJDp>#s?q8U9zt?M2C$y6^HJ{O8`)~~b~zY)R7c);kC9tiahMn^{mBdKZ&At< z9j>3w9C6Rkmz+rbhsroa-{?b3Sl^Hf4VK>Vm+8+?lwP@&DPLeo3dZz|YrQ6qJu5}& zK~C7QOh_Vg8Da)95Zax%u=8_RTw>r>N$EzsuKv$fFdN8TRFtl{l@)UR$acPC@}~>& zVf#HKKF4@V&PR17Cv3a593JX;RlDd`PPfvDxOVK%Y}fR#J{3}!wjG>sxRrKjFOGC% z9TEBq{a(8ac8DCKRi8SvCnjtkgcR-H&Qz0Gl?AtpyiVphw1Mm+#DtA$w1x6~{4mSo z+>csTVsPq0d5GND=dq9tkaY^)ZYyockJxTvG?45|eUO-FZNjNd3zSz2MR|buXniFZ zADp2!SlZ-mJA&^8w2o0`_WdTir_zd?uybcfQ)SCBidPr7=+H-6k{7l=wLIR(u&XWf zZi`4VGSilT+`-=a-wZynfCyLbl!P0=!anu-TsE~)rzmw;9u*FEdoQsO+L{g58nQYua@%uz ze>ZUd=zmTn&MnpAiTA(oYayX(4JD1)*nhr3Z8_n-nQLX0gdqYA1* z91qoTFKQqGHBk$-A&%#|xDWLpj*kXth(-|oAQ1*6L0lu7pedR`v|9_bL@S7W&;}3S zLA1p~co>hM9onMKWK6+SOv7}{z)Z}-Y|O!2%)@*vz(Op-Vl2T@EW>gxuTc27kO#KAv+>V7}dLa`70N z2{q0E(aH#%tF;I8mU6^a67>l^r*dB+1~O$?mXLFqcK+m4#vqKKGQ?EN856vUbAF1v zTuz3SVtLz~`C<1=^7O8))njCy&MO~;i#nFno1Z;hDM5bYnB|Li_qbR&easLVEXB!b z9y3SQIV*|yV)55io2y}q#axTqCq~5vOHuOgk6Es$tM-_x2=QV2hQTL0Pc)rUIR5Qm zy2+Z!TP1QJU5LEaG3z0>Uv;Eg-A;#{cO|vC&w}xn$#^=|VUkbixF*J5W}51yqDEO| zxt;mrFVmlEcJk(fB_DaQ`-a@kV5{C0e_2`%Q`@ppL$@!E=PQ|ZJGVf*|G*ah`%lRJ zh$A;7RryDEuF)>%cq#X9ow;gA!GDpPkh2eI=N9pLo!jcQ*#9J^e(o{;6N2_Gp4iEM z5F2)EgpTzBE7cw~D!<3EZazyRUk?5)#=6D*7qdVvrWj;@`!$YuIq4&gZZdu$KCGXG z)SZsPIZr&#@ETL(?4_doOitK2NXwC*VM?=chZ$^1F|^f=zn{pflY5(HO|i55N8+Nj zy<1Jq;F2S^_XlF5wLRyX;AF2z_&#zSd=8!)tGqu;FLQktdA-`R32T~o*NtXR6<0px z+Zc5g4-UL0`B63H8)Boic`%mqh|OviuX!u~ja(nuA05m!@N~kFB0da98~%s*gxuSj z6BG{^Og80fVj}EE{|Qu7*cf=fE;zaJRgAi1Ye;JICGpYrCvRBtZlzUr;4dQATl*Ll z+w?gx(b`WO6ZG5Q<0)~)`7A~qL{8vyT6c(z-luHF`83A5{h{*4{FBJ*md6es zRW&m_(%!-4u=$wy2>a2jy(Y@|k(jV+t+r71h1*fq!Er6G_qTFeM_?gqxfx|09AmsU z#<(_WjCfy;@o(f9?e%xs^G4(tvxO_VxbL}6OxQMS=OEtKwK}h{Jla0wjUM_OuP^)O z3$I2lQ+s`nGOrL5?Rb%MVWtcwlALY^O>$;d?10PUMd<(HT*B$t?BjJuUSc*_E=7*j zt~>G#e{KHmBC%1AgJ5jdyu|zDL~9rSiv*n7v}g72#b1VYH^2s8h*C!2nY790b^41? z-i=&F*7Zc&3&D%YJAs^Nb0jXelc(x@ido*8DCYz9ik8Cz@DwMH_tvjWX;Jiv zv&2NWrpf&kSlt=oV&7|oTzJJWGLTF;r^%1dheFGd=a^HG>+OGEpZi*3qV)sOm;J%= z9CDKQ2z@PU9|b-Q;J@OZ2-G=RdwV^6w#K3yk0*A5)x|}^a*Wsr`^79jtwDPoB_?>R z#xX7pe9Gepd9q!i)j9CQgg$bZ_`eD$)4rn2pMC2_i}|##`8^;0ga6_i6hdJXK~WS# zaj*(G$5ED_q92vR-6)THAm%=75c3~)I1p(b-~601ra+?}zX(9zi>_M+bC7EqsUX@dJLu zPxu+X;8*;H-|+|j#9#Ou|KMLJckzG7hx{mjz}!oB7WY6;^ui`|Mi+ENDU?Px^hO`_ zML+b%qZojKtg{dbqX>#(Ie&i~PhbUBVii_n4W7bgq@Wn_1Nm8;pCz!K-#6eQEv#ii;w@ap6_lhMN})8$pe)MaZj{G8 zr~ok;T?v&@1yxZE)p3XQe1^|)FaNHA1k^+=)W$WIUB?Z$Fc*8U7yEDw$MFFU;t&qw z2#(?ePU3BRh?}^D+xQ4|D5Ea!!)g9qkDv9?01a`0zcu3L{YZoXNob5uSoSfR@Ox7< zLw^2U1{F{dRZtbxP#yQ81`<#coiGT4F$6;~48t)3BQXl2VZ>u-PB|^m60Oi0ZSX0} zOgMm3ID@k|hx2#`@8T-Hz?XP{ya&-158+|d=kF2cCjHM@#1!Nq&XrTW$_}FtRVajKCKhSoX3kA#5ECd|NgbZwbnA zz#d}6HfFDfoe?(Ar&Oc37Y$5*DsN?rY8oU%5&tk&bjWeeV-$bFCY@z`YgGkuV$-%=zCS!i&CD6yN+VNbNGmF^P!-p zW0jLVT-ix{?EW0sZ`!l;9puE^Z(69bo!E9cw>zxO!u!5c?0bLj+7?$GL;8PHgJml@ zVeOrJx$?-~;*XDVE*YDy-C@gf+UD5tcCXp#zy(Y0%T>gSVZds?M{*^C^KQGhiQXPRhEhI0_Zj$cxeEgLypY zlYMx$j#Tw=6~lYAX3 z=55r$t@emh&pP4m=aOb)_Fga^c#^t))|B?&a=3;q5a2o>`hU}BmPGbD`!8Ao6 zMw=XUV*)0kH5y_P8X*yr@gT%}$wPP;k6;R>Vj8An24-RwW@8TKVjkvW z0oGz2)?)*n#1;(1Hf+ZZ)J9$0hXzPOQ#6A(_qRYxw88^uhxX`zj;Mv5cpA^(Sv-g5 z@d94NOL!T(up80leD|SCcIe!4U|v}~ ze+bMiht4aD`E)Ul9y-7LE!(H?x6tP!UHNx6h&l4^=z*T-h2H3czUYVkcoYLL5Q8un zLogJ>FdQQ=5~DC0Mmz=+ex(Y@{4_(%&!<2|D$-zq6=N_KHi%~=foB8Jo(mKtt`G|2 zJIeVUKj25$`I`eyxG)ZGc;JN(>BvAP#$y5|ViG1}3Z`Nj3ZOWqV+Lko7G`4(=3*Y^ zV*wUo5f)%;7P~@4wZ)`JDa8HK-CfT$8ge&t*rmT$~f-^*@e#Yi^Ahq-yUGj?$THH8pD*NFJ#-H{@Nw5jt~SA-ThK=6XYN zhw04qgyaq-x2=wLb~#;UzArS;)XET@WoLwxJy>UMYNkiriO8KiNN2q>J*ITN)xqCG zI49*LU%c(+U&VmD| z%lFAsK7(KX3VP=$-xaJtuRP_O#W%Lde%CWk`RUwsYxzC$l%FiV;Y^m_Jx}>5;{y5J z$Zx0Pc-Qt{x-F{)+y~@w9a*(ttdys9SX1q$z?LxP%JVw1_D82Yts_0zZq2Gk$2_ki zs~#Qlw2tPqhbwqiX`i=sq&pneVE<~zIy&j^AKGOhWCuTzr@DxC4W4S0hx1k!v5u^U zWm_J~TU}_DtbN=z&+Evl%7d(v%3glxkGrIpUILl3x?`g4Pws)f$n&=XE`y}3x zg98=%N)w%B^Hmzb{oGh*Zdz*AQIn)IH{Ha4OT~YkGmzU($FY*`GTZDv+qjTZkdnwc z^t2l@*8G>90yW^hE1mWCq-Bk<8tE+CrM<}$EWDx4{0#oX7Ot_uLtAN}Gv91WVaDDY z93t1(na_WANmYZRB;IAyneTF^nk~Vr5c5yu>p3@>QnK2~Qk^62aE1rL+F7vEsV~W%ZSsI&)~YXD;W) z=7EB1=*;E&xC5!my*hJwNF2_O#;@fKF5J;^-Mz+Vr}63-)^;`e;4|7ny(ArwXt z6h$!>H|{&WXI=hG|k@5*R^hG>NQk%%OS`L!m9G~X`HhixF{-5-SL ze-GhdJc4#;j}8dT#pkCk+pz;X@id;nvv>~A;|08km+&%nVK-jEt9T8s;|;utx3C9$ zu@C!k00(ghhj9c)aSX?C0w?h{PT@4p;4IGJJl?^(xPbTYJ}%-CF5?QW;u@~w20p-t zxQSc1jgRm#KEbEBgU^tkb}5C@D1!>9h$^TGajaCwy{Lf%)P%Sn>WnVvif-tR-spqA z=!gDz6ayfhs|>8n18?Fj?7?2_!+spYaeRP-IE2GEf}=Qr zlXx2+;ufysHpCoz2blQ%08ZgF&fqN0;XK~KySRY&@IEf$5-#HkuHqU#LPys5B|pV{ zdv0_0zq0H%{Ek2HC;r0U_y_-@0J#NG2!&AuMNtgmSwabvL@AU;8I(mi+>P?M2Nh5e zl~5T~P!-is9pX7b4J4o@YN0mjpf2u1J=8}7G(;oZk3<-dgvMBmWmtk{XpRcAe{0O&vb~29_8y{q$A3KU?%2ea*_DkeN4!U^eRYI*U!e>+&1066mE(VvTqzw_ zS=#F*feMx)r;@gvA>$RkVxQ4W$$k7>c7D?nZgs1F;{PpdQ3N^+KGh>p+Yn+91+-yEV%i zViLr-LyS2l<3Y5=LwFdEU<$rNS$vNl@FTvV&fnrYe2)hF&445{MKg$f*a9ul3J)OG zxo!*V+KO$s3kve#TYlYv0w{ zJYK+ycnL3K7k1+nyo%TGI^MvWcnf>57yGau2XGLFa2Q8$6vuEJCvXyP;}lNg49?;l z&f^`tiwk%U@8cpa;WDn^Dz4!=Zr}rah?}^D+xQ3{;}d*}JNOJA(;hc*1IaKW1u9aJ z1`fk)pBc3AZ#x`t;&D8I73hkUScTPCjy33kp6G@7=!`BXh0^GT?&ys^=!<^nk4G^8 z3$PH2uo%-Y9WyW!voISjjDs5UcifZ2`^(8cH-F!a2y}tAP(U$j^HRx;3VG0 zhq#67xQ#mO&$_q|r}=k1e%41(RK|P!?R^yC_XcQ)%l!KSF5(idpb>w+ABiZ5GBDsX zmVJ&Ses7HGScJ{E!{76x3@V@^s-P;Wp*rqG4J4o@I$;n7V+e*~7=~j6Mq(63!-&Vw zfwD~eJb+U;gR?k?^LPjE;wrA;BXlI^OMWir=Tdyb??2&Z{DNOmfWH?+ArwY26h{e^ zLTQvmIoyr%xCa$b5tUE{RZ$K1q6QLB6SYtqi?Iw#&LL@)G4AM`~(^v9zZfPol3~(fsq)6(J~O#d7skO254`Xp9T~{Pcuc@VOu}SL!BkAcbj-j^%))HU!CcJ4d@R61 zbixX(#44=D8mz@Stj7jy#3r=I=lB9&;cNVa`t*s2Vk z-xBy+wy{yx*Dk1DmK7mJ92ew;jy3!r+q5W!S)Rgsnm<#QX**}l7h{88_&pyv-(m*} zpdbpNFp8ikilI14pd@OeEb5>x?n5P1Mm>maZGdvP8|85i8ln;IMA=zxx>g>TrlZ}Aec36w9z2kK+lfz)GybYOKLDOvenIFZHs)Y0)?qz1U?Vo+NsNOV9*BPB zLpm~$iSd|#iI{}Rn1ZQz3Y)P71F;p`upK+`G@ik;cn;6w1-yut@G^E`H(tT3cnz=P z4ZMlBV1f&Cu?Ksx5BqTd2XP38aRf(k499T-C-F8;;WWkmZF? z7~fIO_xJ%n;{W$GssLpa$8^Mdty)Cv5-i0x)afVuj9(ze4+*G++E|7T=!h>_zMP*q R#|WMHTW9FG{)ubd{{UJ+6HEXA literal 0 HcmV?d00001 diff --git a/plor/build/.ninja_log b/plor/build/.ninja_log new file mode 100644 index 00000000..b794b7b7 --- /dev/null +++ b/plor/build/.ninja_log @@ -0,0 +1,8 @@ +# ninja log v5 +0 438 1671683998279472683 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o cb094bc7f3f6c775 +0 713 1671683998555469301 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o f95633baccc8a3ed +1 835 1671683998675467831 CMakeFiles/ss2pl.exe.dir/result.cc.o 851e6c2fa850bcf5 +1 1356 1671683999195461460 CMakeFiles/ss2pl.exe.dir/transaction.cc.o 57b8653ac41a1255 +1 1392 1671683999231461019 CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o 788a57bce6d40cdd +2 1434 1671683999275460480 CMakeFiles/ss2pl.exe.dir/util.cc.o c9c2e62e88d9d2c6 +1434 1514 1671683999355459500 ss2pl.exe eee19cd8572392e1 diff --git a/plor/build/CMakeCache.txt b/plor/build/CMakeCache.txt new file mode 100644 index 00000000..062bd792 --- /dev/null +++ b/plor/build/CMakeCache.txt @@ -0,0 +1,473 @@ +# This is the CMakeCache file. +# For build in directory: /home/tngngn/ccbench/plor/build +# It was generated by CMake: /usr/local/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//The directory containing a CMake configuration file for Boost. +Boost_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0 + +Boost_FILESYSTEM_LIBRARY_RELEASE:STRING=/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 + +//Path to a file. +Boost_INCLUDE_DIR:PATH=/usr/include + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING=Release + +//CXX compiler +CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-9 + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-9 + +//Flags used by the CXX compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the CXX compiler during DEBUG builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the CXX compiler during RELEASE builds. +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//User executables (bin) +CMAKE_INSTALL_BINDIR:PATH=bin + +//Read-only architecture-independent data (DATAROOTDIR) +CMAKE_INSTALL_DATADIR:PATH= + +//Read-only architecture-independent data root (share) +CMAKE_INSTALL_DATAROOTDIR:PATH=share + +//Documentation root (DATAROOTDIR/doc/PROJECT_NAME) +CMAKE_INSTALL_DOCDIR:PATH= + +//C header files (include) +CMAKE_INSTALL_INCLUDEDIR:PATH=include + +//Info documentation (DATAROOTDIR/info) +CMAKE_INSTALL_INFODIR:PATH= + +//Object code libraries (lib) +CMAKE_INSTALL_LIBDIR:PATH=lib + +//Program executables (libexec) +CMAKE_INSTALL_LIBEXECDIR:PATH=libexec + +//Locale-dependent data (DATAROOTDIR/locale) +CMAKE_INSTALL_LOCALEDIR:PATH= + +//Modifiable single-machine data (var) +CMAKE_INSTALL_LOCALSTATEDIR:PATH=var + +//Man documentation (DATAROOTDIR/man) +CMAKE_INSTALL_MANDIR:PATH= + +//C header files for non-gcc (/usr/include) +CMAKE_INSTALL_OLDINCLUDEDIR:PATH=/usr/include + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Run-time variable data (LOCALSTATEDIR/run) +CMAKE_INSTALL_RUNSTATEDIR:PATH= + +//System admin executables (sbin) +CMAKE_INSTALL_SBINDIR:PATH=sbin + +//Modifiable architecture-independent data (com) +CMAKE_INSTALL_SHAREDSTATEDIR:PATH=com + +//Read-only single-machine data (etc) +CMAKE_INSTALL_SYSCONFDIR:PATH=etc + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Program used to build from build.ninja files. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/local/bin/ninja + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC=ss2pl of ccbench + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=ccbench_ss2pl + +//Value Computed by CMake +CMAKE_PROJECT_VERSION:STATIC=0.0.1 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MAJOR:STATIC=0 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MINOR:STATIC=0 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_PATCH:STATIC=1 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_TWEAK:STATIC= + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/usr/bin/readelf + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Dot tool for use with Doxygen +DOXYGEN_DOT_EXECUTABLE:FILEPATH=/usr/bin/dot + +//Doxygen documentation generation tool (http://www.doxygen.org) +DOXYGEN_EXECUTABLE:FILEPATH=/usr/bin/doxygen + +//enable coverage on debug build +ENABLE_COVERAGE:BOOL=OFF + +//enable sanitizer on debug build +ENABLE_SANITIZER:BOOL=ON + +//enable undefined behavior sanitizer on debug build +ENABLE_UB_SANITIZER:BOOL=OFF + +//The directory containing a CMake configuration file for boost_filesystem. +boost_filesystem_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0 + +//The directory containing a CMake configuration file for boost_headers. +boost_headers_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0 + +//Value Computed by CMake +ccbench_ss2pl_BINARY_DIR:STATIC=/home/tngngn/ccbench/plor/build + +//Value Computed by CMake +ccbench_ss2pl_SOURCE_DIR:STATIC=/home/tngngn/ccbench/plor + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: Boost_DIR +Boost_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/tngngn/ccbench/plor/build +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=17 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=0 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/local/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/local/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/local/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Ninja +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Test CMAKE_HAVE_LIBC_PTHREAD +CMAKE_HAVE_LIBC_PTHREAD:INTERNAL= +//Have library pthreads +CMAKE_HAVE_PTHREADS_CREATE:INTERNAL= +//Have library pthread +CMAKE_HAVE_PTHREAD_CREATE:INTERNAL=1 +//Have include pthread.h +CMAKE_HAVE_PTHREAD_H:INTERNAL=1 +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/tngngn/ccbench/plor +//ADVANCED property for variable: CMAKE_INSTALL_BINDIR +CMAKE_INSTALL_BINDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DATADIR +CMAKE_INSTALL_DATADIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DATAROOTDIR +CMAKE_INSTALL_DATAROOTDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DOCDIR +CMAKE_INSTALL_DOCDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_INCLUDEDIR +CMAKE_INSTALL_INCLUDEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_INFODIR +CMAKE_INSTALL_INFODIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LIBDIR +CMAKE_INSTALL_LIBDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LIBEXECDIR +CMAKE_INSTALL_LIBEXECDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LOCALEDIR +CMAKE_INSTALL_LOCALEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LOCALSTATEDIR +CMAKE_INSTALL_LOCALSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_MANDIR +CMAKE_INSTALL_MANDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_OLDINCLUDEDIR +CMAKE_INSTALL_OLDINCLUDEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_RUNSTATEDIR +CMAKE_INSTALL_RUNSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SBINDIR +CMAKE_INSTALL_SBINDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SHAREDSTATEDIR +CMAKE_INSTALL_SHAREDSTATEDIR-ADVANCED:INTERNAL=1 +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SYSCONFDIR +CMAKE_INSTALL_SYSCONFDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/local/share/cmake-3.17 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: DOXYGEN_DOT_EXECUTABLE +DOXYGEN_DOT_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: DOXYGEN_EXECUTABLE +DOXYGEN_EXECUTABLE-ADVANCED:INTERNAL=1 +//Details about finding Boost +FIND_PACKAGE_MESSAGE_DETAILS_Boost:INTERNAL=[/usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake][cfound components: filesystem ][v1.71.0()] +//Details about finding Doxygen +FIND_PACKAGE_MESSAGE_DETAILS_Doxygen:INTERNAL=[/usr/bin/doxygen][cfound components: doxygen dot ][v1.8.17()] +//Details about finding Threads +FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()] +//Details about finding gflags +FIND_PACKAGE_MESSAGE_DETAILS_gflags:INTERNAL=[/usr/lib/x86_64-linux-gnu/libgflags.so][/usr/include][v()] +//Details about finding glog +FIND_PACKAGE_MESSAGE_DETAILS_glog:INTERNAL=[/usr/lib/x86_64-linux-gnu/libglog.so][/usr/include][v()] +//CMAKE_INSTALL_PREFIX during last run +_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX:INTERNAL=/usr/local +//ADVANCED property for variable: boost_filesystem_DIR +boost_filesystem_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: boost_headers_DIR +boost_headers_DIR-ADVANCED:INTERNAL=1 + diff --git a/plor/build/CMakeDoxyfile.in b/plor/build/CMakeDoxyfile.in new file mode 100644 index 00000000..848a3c81 --- /dev/null +++ b/plor/build/CMakeDoxyfile.in @@ -0,0 +1,280 @@ +# +# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! +# + +DOXYFILE_ENCODING = @DOXYGEN_DOXYFILE_ENCODING@ +PROJECT_NAME = @DOXYGEN_PROJECT_NAME@ +PROJECT_NUMBER = @DOXYGEN_PROJECT_NUMBER@ +PROJECT_BRIEF = @DOXYGEN_PROJECT_BRIEF@ +PROJECT_LOGO = @DOXYGEN_PROJECT_LOGO@ +OUTPUT_DIRECTORY = @DOXYGEN_OUTPUT_DIRECTORY@ +CREATE_SUBDIRS = @DOXYGEN_CREATE_SUBDIRS@ +ALLOW_UNICODE_NAMES = @DOXYGEN_ALLOW_UNICODE_NAMES@ +OUTPUT_LANGUAGE = @DOXYGEN_OUTPUT_LANGUAGE@ +OUTPUT_TEXT_DIRECTION = @DOXYGEN_OUTPUT_TEXT_DIRECTION@ +BRIEF_MEMBER_DESC = @DOXYGEN_BRIEF_MEMBER_DESC@ +REPEAT_BRIEF = @DOXYGEN_REPEAT_BRIEF@ +ABBREVIATE_BRIEF = @DOXYGEN_ABBREVIATE_BRIEF@ +ALWAYS_DETAILED_SEC = @DOXYGEN_ALWAYS_DETAILED_SEC@ +INLINE_INHERITED_MEMB = @DOXYGEN_INLINE_INHERITED_MEMB@ +FULL_PATH_NAMES = @DOXYGEN_FULL_PATH_NAMES@ +STRIP_FROM_PATH = @DOXYGEN_STRIP_FROM_PATH@ +STRIP_FROM_INC_PATH = @DOXYGEN_STRIP_FROM_INC_PATH@ +SHORT_NAMES = @DOXYGEN_SHORT_NAMES@ +JAVADOC_AUTOBRIEF = @DOXYGEN_JAVADOC_AUTOBRIEF@ +JAVADOC_BANNER = @DOXYGEN_JAVADOC_BANNER@ +QT_AUTOBRIEF = @DOXYGEN_QT_AUTOBRIEF@ +MULTILINE_CPP_IS_BRIEF = @DOXYGEN_MULTILINE_CPP_IS_BRIEF@ +INHERIT_DOCS = @DOXYGEN_INHERIT_DOCS@ +SEPARATE_MEMBER_PAGES = @DOXYGEN_SEPARATE_MEMBER_PAGES@ +TAB_SIZE = @DOXYGEN_TAB_SIZE@ +ALIASES = @DOXYGEN_ALIASES@ +TCL_SUBST = @DOXYGEN_TCL_SUBST@ +OPTIMIZE_OUTPUT_FOR_C = @DOXYGEN_OPTIMIZE_OUTPUT_FOR_C@ +OPTIMIZE_OUTPUT_JAVA = @DOXYGEN_OPTIMIZE_OUTPUT_JAVA@ +OPTIMIZE_FOR_FORTRAN = @DOXYGEN_OPTIMIZE_FOR_FORTRAN@ +OPTIMIZE_OUTPUT_VHDL = @DOXYGEN_OPTIMIZE_OUTPUT_VHDL@ +OPTIMIZE_OUTPUT_SLICE = @DOXYGEN_OPTIMIZE_OUTPUT_SLICE@ +EXTENSION_MAPPING = @DOXYGEN_EXTENSION_MAPPING@ +MARKDOWN_SUPPORT = @DOXYGEN_MARKDOWN_SUPPORT@ +TOC_INCLUDE_HEADINGS = @DOXYGEN_TOC_INCLUDE_HEADINGS@ +AUTOLINK_SUPPORT = @DOXYGEN_AUTOLINK_SUPPORT@ +BUILTIN_STL_SUPPORT = @DOXYGEN_BUILTIN_STL_SUPPORT@ +CPP_CLI_SUPPORT = @DOXYGEN_CPP_CLI_SUPPORT@ +SIP_SUPPORT = @DOXYGEN_SIP_SUPPORT@ +IDL_PROPERTY_SUPPORT = @DOXYGEN_IDL_PROPERTY_SUPPORT@ +DISTRIBUTE_GROUP_DOC = @DOXYGEN_DISTRIBUTE_GROUP_DOC@ +GROUP_NESTED_COMPOUNDS = @DOXYGEN_GROUP_NESTED_COMPOUNDS@ +SUBGROUPING = @DOXYGEN_SUBGROUPING@ +INLINE_GROUPED_CLASSES = @DOXYGEN_INLINE_GROUPED_CLASSES@ +INLINE_SIMPLE_STRUCTS = @DOXYGEN_INLINE_SIMPLE_STRUCTS@ +TYPEDEF_HIDES_STRUCT = @DOXYGEN_TYPEDEF_HIDES_STRUCT@ +LOOKUP_CACHE_SIZE = @DOXYGEN_LOOKUP_CACHE_SIZE@ +EXTRACT_ALL = @DOXYGEN_EXTRACT_ALL@ +EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@ +EXTRACT_PRIV_VIRTUAL = @DOXYGEN_EXTRACT_PRIV_VIRTUAL@ +EXTRACT_PACKAGE = @DOXYGEN_EXTRACT_PACKAGE@ +EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@ +EXTRACT_LOCAL_CLASSES = @DOXYGEN_EXTRACT_LOCAL_CLASSES@ +EXTRACT_LOCAL_METHODS = @DOXYGEN_EXTRACT_LOCAL_METHODS@ +EXTRACT_ANON_NSPACES = @DOXYGEN_EXTRACT_ANON_NSPACES@ +HIDE_UNDOC_MEMBERS = @DOXYGEN_HIDE_UNDOC_MEMBERS@ +HIDE_UNDOC_CLASSES = @DOXYGEN_HIDE_UNDOC_CLASSES@ +HIDE_FRIEND_COMPOUNDS = @DOXYGEN_HIDE_FRIEND_COMPOUNDS@ +HIDE_IN_BODY_DOCS = @DOXYGEN_HIDE_IN_BODY_DOCS@ +INTERNAL_DOCS = @DOXYGEN_INTERNAL_DOCS@ +CASE_SENSE_NAMES = @DOXYGEN_CASE_SENSE_NAMES@ +HIDE_SCOPE_NAMES = @DOXYGEN_HIDE_SCOPE_NAMES@ +HIDE_COMPOUND_REFERENCE= @DOXYGEN_HIDE_COMPOUND_REFERENCE@ +SHOW_INCLUDE_FILES = @DOXYGEN_SHOW_INCLUDE_FILES@ +SHOW_GROUPED_MEMB_INC = @DOXYGEN_SHOW_GROUPED_MEMB_INC@ +FORCE_LOCAL_INCLUDES = @DOXYGEN_FORCE_LOCAL_INCLUDES@ +INLINE_INFO = @DOXYGEN_INLINE_INFO@ +SORT_MEMBER_DOCS = @DOXYGEN_SORT_MEMBER_DOCS@ +SORT_BRIEF_DOCS = @DOXYGEN_SORT_BRIEF_DOCS@ +SORT_MEMBERS_CTORS_1ST = @DOXYGEN_SORT_MEMBERS_CTORS_1ST@ +SORT_GROUP_NAMES = @DOXYGEN_SORT_GROUP_NAMES@ +SORT_BY_SCOPE_NAME = @DOXYGEN_SORT_BY_SCOPE_NAME@ +STRICT_PROTO_MATCHING = @DOXYGEN_STRICT_PROTO_MATCHING@ +GENERATE_TODOLIST = @DOXYGEN_GENERATE_TODOLIST@ +GENERATE_TESTLIST = @DOXYGEN_GENERATE_TESTLIST@ +GENERATE_BUGLIST = @DOXYGEN_GENERATE_BUGLIST@ +GENERATE_DEPRECATEDLIST= @DOXYGEN_GENERATE_DEPRECATEDLIST@ +ENABLED_SECTIONS = @DOXYGEN_ENABLED_SECTIONS@ +MAX_INITIALIZER_LINES = @DOXYGEN_MAX_INITIALIZER_LINES@ +SHOW_USED_FILES = @DOXYGEN_SHOW_USED_FILES@ +SHOW_FILES = @DOXYGEN_SHOW_FILES@ +SHOW_NAMESPACES = @DOXYGEN_SHOW_NAMESPACES@ +FILE_VERSION_FILTER = @DOXYGEN_FILE_VERSION_FILTER@ +LAYOUT_FILE = @DOXYGEN_LAYOUT_FILE@ +CITE_BIB_FILES = @DOXYGEN_CITE_BIB_FILES@ +QUIET = @DOXYGEN_QUIET@ +WARNINGS = @DOXYGEN_WARNINGS@ +WARN_IF_UNDOCUMENTED = @DOXYGEN_WARN_IF_UNDOCUMENTED@ +WARN_IF_DOC_ERROR = @DOXYGEN_WARN_IF_DOC_ERROR@ +WARN_NO_PARAMDOC = @DOXYGEN_WARN_NO_PARAMDOC@ +WARN_AS_ERROR = @DOXYGEN_WARN_AS_ERROR@ +WARN_FORMAT = @DOXYGEN_WARN_FORMAT@ +WARN_LOGFILE = @DOXYGEN_WARN_LOGFILE@ +INPUT = @DOXYGEN_INPUT@ +INPUT_ENCODING = @DOXYGEN_INPUT_ENCODING@ +FILE_PATTERNS = @DOXYGEN_FILE_PATTERNS@ +RECURSIVE = @DOXYGEN_RECURSIVE@ +EXCLUDE = @DOXYGEN_EXCLUDE@ +EXCLUDE_SYMLINKS = @DOXYGEN_EXCLUDE_SYMLINKS@ +EXCLUDE_PATTERNS = @DOXYGEN_EXCLUDE_PATTERNS@ +EXCLUDE_SYMBOLS = @DOXYGEN_EXCLUDE_SYMBOLS@ +EXAMPLE_PATH = @DOXYGEN_EXAMPLE_PATH@ +EXAMPLE_PATTERNS = @DOXYGEN_EXAMPLE_PATTERNS@ +EXAMPLE_RECURSIVE = @DOXYGEN_EXAMPLE_RECURSIVE@ +IMAGE_PATH = @DOXYGEN_IMAGE_PATH@ +INPUT_FILTER = @DOXYGEN_INPUT_FILTER@ +FILTER_PATTERNS = @DOXYGEN_FILTER_PATTERNS@ +FILTER_SOURCE_FILES = @DOXYGEN_FILTER_SOURCE_FILES@ +FILTER_SOURCE_PATTERNS = @DOXYGEN_FILTER_SOURCE_PATTERNS@ +USE_MDFILE_AS_MAINPAGE = @DOXYGEN_USE_MDFILE_AS_MAINPAGE@ +SOURCE_BROWSER = @DOXYGEN_SOURCE_BROWSER@ +INLINE_SOURCES = @DOXYGEN_INLINE_SOURCES@ +STRIP_CODE_COMMENTS = @DOXYGEN_STRIP_CODE_COMMENTS@ +REFERENCED_BY_RELATION = @DOXYGEN_REFERENCED_BY_RELATION@ +REFERENCES_RELATION = @DOXYGEN_REFERENCES_RELATION@ +REFERENCES_LINK_SOURCE = @DOXYGEN_REFERENCES_LINK_SOURCE@ +SOURCE_TOOLTIPS = @DOXYGEN_SOURCE_TOOLTIPS@ +USE_HTAGS = @DOXYGEN_USE_HTAGS@ +VERBATIM_HEADERS = @DOXYGEN_VERBATIM_HEADERS@ +CLANG_ASSISTED_PARSING = @DOXYGEN_CLANG_ASSISTED_PARSING@ +CLANG_OPTIONS = @DOXYGEN_CLANG_OPTIONS@ +CLANG_DATABASE_PATH = @DOXYGEN_CLANG_DATABASE_PATH@ +ALPHABETICAL_INDEX = @DOXYGEN_ALPHABETICAL_INDEX@ +COLS_IN_ALPHA_INDEX = @DOXYGEN_COLS_IN_ALPHA_INDEX@ +IGNORE_PREFIX = @DOXYGEN_IGNORE_PREFIX@ +GENERATE_HTML = @DOXYGEN_GENERATE_HTML@ +HTML_OUTPUT = @DOXYGEN_HTML_OUTPUT@ +HTML_FILE_EXTENSION = @DOXYGEN_HTML_FILE_EXTENSION@ +HTML_HEADER = @DOXYGEN_HTML_HEADER@ +HTML_FOOTER = @DOXYGEN_HTML_FOOTER@ +HTML_STYLESHEET = @DOXYGEN_HTML_STYLESHEET@ +HTML_EXTRA_STYLESHEET = @DOXYGEN_HTML_EXTRA_STYLESHEET@ +HTML_EXTRA_FILES = @DOXYGEN_HTML_EXTRA_FILES@ +HTML_COLORSTYLE_HUE = @DOXYGEN_HTML_COLORSTYLE_HUE@ +HTML_COLORSTYLE_SAT = @DOXYGEN_HTML_COLORSTYLE_SAT@ +HTML_COLORSTYLE_GAMMA = @DOXYGEN_HTML_COLORSTYLE_GAMMA@ +HTML_TIMESTAMP = @DOXYGEN_HTML_TIMESTAMP@ +HTML_DYNAMIC_MENUS = @DOXYGEN_HTML_DYNAMIC_MENUS@ +HTML_DYNAMIC_SECTIONS = @DOXYGEN_HTML_DYNAMIC_SECTIONS@ +HTML_INDEX_NUM_ENTRIES = @DOXYGEN_HTML_INDEX_NUM_ENTRIES@ +GENERATE_DOCSET = @DOXYGEN_GENERATE_DOCSET@ +DOCSET_FEEDNAME = @DOXYGEN_DOCSET_FEEDNAME@ +DOCSET_BUNDLE_ID = @DOXYGEN_DOCSET_BUNDLE_ID@ +DOCSET_PUBLISHER_ID = @DOXYGEN_DOCSET_PUBLISHER_ID@ +DOCSET_PUBLISHER_NAME = @DOXYGEN_DOCSET_PUBLISHER_NAME@ +GENERATE_HTMLHELP = @DOXYGEN_GENERATE_HTMLHELP@ +CHM_FILE = @DOXYGEN_CHM_FILE@ +HHC_LOCATION = @DOXYGEN_HHC_LOCATION@ +GENERATE_CHI = @DOXYGEN_GENERATE_CHI@ +CHM_INDEX_ENCODING = @DOXYGEN_CHM_INDEX_ENCODING@ +BINARY_TOC = @DOXYGEN_BINARY_TOC@ +TOC_EXPAND = @DOXYGEN_TOC_EXPAND@ +GENERATE_QHP = @DOXYGEN_GENERATE_QHP@ +QCH_FILE = @DOXYGEN_QCH_FILE@ +QHP_NAMESPACE = @DOXYGEN_QHP_NAMESPACE@ +QHP_VIRTUAL_FOLDER = @DOXYGEN_QHP_VIRTUAL_FOLDER@ +QHP_CUST_FILTER_NAME = @DOXYGEN_QHP_CUST_FILTER_NAME@ +QHP_CUST_FILTER_ATTRS = @DOXYGEN_QHP_CUST_FILTER_ATTRS@ +QHP_SECT_FILTER_ATTRS = @DOXYGEN_QHP_SECT_FILTER_ATTRS@ +QHG_LOCATION = @DOXYGEN_QHG_LOCATION@ +GENERATE_ECLIPSEHELP = @DOXYGEN_GENERATE_ECLIPSEHELP@ +ECLIPSE_DOC_ID = @DOXYGEN_ECLIPSE_DOC_ID@ +DISABLE_INDEX = @DOXYGEN_DISABLE_INDEX@ +GENERATE_TREEVIEW = @DOXYGEN_GENERATE_TREEVIEW@ +ENUM_VALUES_PER_LINE = @DOXYGEN_ENUM_VALUES_PER_LINE@ +TREEVIEW_WIDTH = @DOXYGEN_TREEVIEW_WIDTH@ +EXT_LINKS_IN_WINDOW = @DOXYGEN_EXT_LINKS_IN_WINDOW@ +FORMULA_FONTSIZE = @DOXYGEN_FORMULA_FONTSIZE@ +FORMULA_TRANSPARENT = @DOXYGEN_FORMULA_TRANSPARENT@ +FORMULA_MACROFILE = @DOXYGEN_FORMULA_MACROFILE@ +USE_MATHJAX = @DOXYGEN_USE_MATHJAX@ +MATHJAX_FORMAT = @DOXYGEN_MATHJAX_FORMAT@ +MATHJAX_RELPATH = @DOXYGEN_MATHJAX_RELPATH@ +MATHJAX_EXTENSIONS = @DOXYGEN_MATHJAX_EXTENSIONS@ +MATHJAX_CODEFILE = @DOXYGEN_MATHJAX_CODEFILE@ +SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ +SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ +EXTERNAL_SEARCH = @DOXYGEN_EXTERNAL_SEARCH@ +SEARCHENGINE_URL = @DOXYGEN_SEARCHENGINE_URL@ +SEARCHDATA_FILE = @DOXYGEN_SEARCHDATA_FILE@ +EXTERNAL_SEARCH_ID = @DOXYGEN_EXTERNAL_SEARCH_ID@ +EXTRA_SEARCH_MAPPINGS = @DOXYGEN_EXTRA_SEARCH_MAPPINGS@ +GENERATE_LATEX = @DOXYGEN_GENERATE_LATEX@ +LATEX_OUTPUT = @DOXYGEN_LATEX_OUTPUT@ +LATEX_CMD_NAME = @DOXYGEN_LATEX_CMD_NAME@ +MAKEINDEX_CMD_NAME = @DOXYGEN_MAKEINDEX_CMD_NAME@ +LATEX_MAKEINDEX_CMD = @DOXYGEN_LATEX_MAKEINDEX_CMD@ +COMPACT_LATEX = @DOXYGEN_COMPACT_LATEX@ +PAPER_TYPE = @DOXYGEN_PAPER_TYPE@ +EXTRA_PACKAGES = @DOXYGEN_EXTRA_PACKAGES@ +LATEX_HEADER = @DOXYGEN_LATEX_HEADER@ +LATEX_FOOTER = @DOXYGEN_LATEX_FOOTER@ +LATEX_EXTRA_STYLESHEET = @DOXYGEN_LATEX_EXTRA_STYLESHEET@ +LATEX_EXTRA_FILES = @DOXYGEN_LATEX_EXTRA_FILES@ +PDF_HYPERLINKS = @DOXYGEN_PDF_HYPERLINKS@ +USE_PDFLATEX = @DOXYGEN_USE_PDFLATEX@ +LATEX_BATCHMODE = @DOXYGEN_LATEX_BATCHMODE@ +LATEX_HIDE_INDICES = @DOXYGEN_LATEX_HIDE_INDICES@ +LATEX_SOURCE_CODE = @DOXYGEN_LATEX_SOURCE_CODE@ +LATEX_BIB_STYLE = @DOXYGEN_LATEX_BIB_STYLE@ +LATEX_TIMESTAMP = @DOXYGEN_LATEX_TIMESTAMP@ +LATEX_EMOJI_DIRECTORY = @DOXYGEN_LATEX_EMOJI_DIRECTORY@ +GENERATE_RTF = @DOXYGEN_GENERATE_RTF@ +RTF_OUTPUT = @DOXYGEN_RTF_OUTPUT@ +COMPACT_RTF = @DOXYGEN_COMPACT_RTF@ +RTF_HYPERLINKS = @DOXYGEN_RTF_HYPERLINKS@ +RTF_STYLESHEET_FILE = @DOXYGEN_RTF_STYLESHEET_FILE@ +RTF_EXTENSIONS_FILE = @DOXYGEN_RTF_EXTENSIONS_FILE@ +RTF_SOURCE_CODE = @DOXYGEN_RTF_SOURCE_CODE@ +GENERATE_MAN = @DOXYGEN_GENERATE_MAN@ +MAN_OUTPUT = @DOXYGEN_MAN_OUTPUT@ +MAN_EXTENSION = @DOXYGEN_MAN_EXTENSION@ +MAN_SUBDIR = @DOXYGEN_MAN_SUBDIR@ +MAN_LINKS = @DOXYGEN_MAN_LINKS@ +GENERATE_XML = @DOXYGEN_GENERATE_XML@ +XML_OUTPUT = @DOXYGEN_XML_OUTPUT@ +XML_PROGRAMLISTING = @DOXYGEN_XML_PROGRAMLISTING@ +XML_NS_MEMB_FILE_SCOPE = @DOXYGEN_XML_NS_MEMB_FILE_SCOPE@ +GENERATE_DOCBOOK = @DOXYGEN_GENERATE_DOCBOOK@ +DOCBOOK_OUTPUT = @DOXYGEN_DOCBOOK_OUTPUT@ +DOCBOOK_PROGRAMLISTING = @DOXYGEN_DOCBOOK_PROGRAMLISTING@ +GENERATE_AUTOGEN_DEF = @DOXYGEN_GENERATE_AUTOGEN_DEF@ +GENERATE_PERLMOD = @DOXYGEN_GENERATE_PERLMOD@ +PERLMOD_LATEX = @DOXYGEN_PERLMOD_LATEX@ +PERLMOD_PRETTY = @DOXYGEN_PERLMOD_PRETTY@ +PERLMOD_MAKEVAR_PREFIX = @DOXYGEN_PERLMOD_MAKEVAR_PREFIX@ +ENABLE_PREPROCESSING = @DOXYGEN_ENABLE_PREPROCESSING@ +MACRO_EXPANSION = @DOXYGEN_MACRO_EXPANSION@ +EXPAND_ONLY_PREDEF = @DOXYGEN_EXPAND_ONLY_PREDEF@ +SEARCH_INCLUDES = @DOXYGEN_SEARCH_INCLUDES@ +INCLUDE_PATH = @DOXYGEN_INCLUDE_PATH@ +INCLUDE_FILE_PATTERNS = @DOXYGEN_INCLUDE_FILE_PATTERNS@ +PREDEFINED = @DOXYGEN_PREDEFINED@ +EXPAND_AS_DEFINED = @DOXYGEN_EXPAND_AS_DEFINED@ +SKIP_FUNCTION_MACROS = @DOXYGEN_SKIP_FUNCTION_MACROS@ +TAGFILES = @DOXYGEN_TAGFILES@ +GENERATE_TAGFILE = @DOXYGEN_GENERATE_TAGFILE@ +ALLEXTERNALS = @DOXYGEN_ALLEXTERNALS@ +EXTERNAL_GROUPS = @DOXYGEN_EXTERNAL_GROUPS@ +EXTERNAL_PAGES = @DOXYGEN_EXTERNAL_PAGES@ +CLASS_DIAGRAMS = @DOXYGEN_CLASS_DIAGRAMS@ +DIA_PATH = @DOXYGEN_DIA_PATH@ +HIDE_UNDOC_RELATIONS = @DOXYGEN_HIDE_UNDOC_RELATIONS@ +HAVE_DOT = @DOXYGEN_HAVE_DOT@ +DOT_NUM_THREADS = @DOXYGEN_DOT_NUM_THREADS@ +DOT_FONTNAME = @DOXYGEN_DOT_FONTNAME@ +DOT_FONTSIZE = @DOXYGEN_DOT_FONTSIZE@ +DOT_FONTPATH = @DOXYGEN_DOT_FONTPATH@ +CLASS_GRAPH = @DOXYGEN_CLASS_GRAPH@ +COLLABORATION_GRAPH = @DOXYGEN_COLLABORATION_GRAPH@ +GROUP_GRAPHS = @DOXYGEN_GROUP_GRAPHS@ +UML_LOOK = @DOXYGEN_UML_LOOK@ +UML_LIMIT_NUM_FIELDS = @DOXYGEN_UML_LIMIT_NUM_FIELDS@ +TEMPLATE_RELATIONS = @DOXYGEN_TEMPLATE_RELATIONS@ +INCLUDE_GRAPH = @DOXYGEN_INCLUDE_GRAPH@ +INCLUDED_BY_GRAPH = @DOXYGEN_INCLUDED_BY_GRAPH@ +CALL_GRAPH = @DOXYGEN_CALL_GRAPH@ +CALLER_GRAPH = @DOXYGEN_CALLER_GRAPH@ +GRAPHICAL_HIERARCHY = @DOXYGEN_GRAPHICAL_HIERARCHY@ +DIRECTORY_GRAPH = @DOXYGEN_DIRECTORY_GRAPH@ +DOT_IMAGE_FORMAT = @DOXYGEN_DOT_IMAGE_FORMAT@ +INTERACTIVE_SVG = @DOXYGEN_INTERACTIVE_SVG@ +DOT_PATH = @DOXYGEN_DOT_PATH@ +DOTFILE_DIRS = @DOXYGEN_DOTFILE_DIRS@ +MSCFILE_DIRS = @DOXYGEN_MSCFILE_DIRS@ +DIAFILE_DIRS = @DOXYGEN_DIAFILE_DIRS@ +PLANTUML_JAR_PATH = @DOXYGEN_PLANTUML_JAR_PATH@ +PLANTUML_CFG_FILE = @DOXYGEN_PLANTUML_CFG_FILE@ +PLANTUML_INCLUDE_PATH = @DOXYGEN_PLANTUML_INCLUDE_PATH@ +DOT_GRAPH_MAX_NODES = @DOXYGEN_DOT_GRAPH_MAX_NODES@ +MAX_DOT_GRAPH_DEPTH = @DOXYGEN_MAX_DOT_GRAPH_DEPTH@ +DOT_TRANSPARENT = @DOXYGEN_DOT_TRANSPARENT@ +DOT_MULTI_TARGETS = @DOXYGEN_DOT_MULTI_TARGETS@ +GENERATE_LEGEND = @DOXYGEN_GENERATE_LEGEND@ +DOT_CLEANUP = @DOXYGEN_DOT_CLEANUP@ diff --git a/plor/build/CMakeDoxygenDefaults.cmake b/plor/build/CMakeDoxygenDefaults.cmake new file mode 100644 index 00000000..db28798f --- /dev/null +++ b/plor/build/CMakeDoxygenDefaults.cmake @@ -0,0 +1,672 @@ +# +# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! +# + +if(NOT DEFINED DOXYGEN_DOXYFILE_ENCODING) + set(DOXYGEN_DOXYFILE_ENCODING UTF-8) +endif() +if(NOT DEFINED DOXYGEN_PROJECT_NAME) + set(DOXYGEN_PROJECT_NAME "My Project") +endif() +if(NOT DEFINED DOXYGEN_CREATE_SUBDIRS) + set(DOXYGEN_CREATE_SUBDIRS NO) +endif() +if(NOT DEFINED DOXYGEN_ALLOW_UNICODE_NAMES) + set(DOXYGEN_ALLOW_UNICODE_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_OUTPUT_LANGUAGE) + set(DOXYGEN_OUTPUT_LANGUAGE English) +endif() +if(NOT DEFINED DOXYGEN_OUTPUT_TEXT_DIRECTION) + set(DOXYGEN_OUTPUT_TEXT_DIRECTION None) +endif() +if(NOT DEFINED DOXYGEN_BRIEF_MEMBER_DESC) + set(DOXYGEN_BRIEF_MEMBER_DESC YES) +endif() +if(NOT DEFINED DOXYGEN_REPEAT_BRIEF) + set(DOXYGEN_REPEAT_BRIEF YES) +endif() +if(NOT DEFINED DOXYGEN_ABBREVIATE_BRIEF) + set(DOXYGEN_ABBREVIATE_BRIEF "The $name class" + "The $name widget" + "The $name file" + is + provides + specifies + contains + represents + a + an + the) +endif() +if(NOT DEFINED DOXYGEN_ALWAYS_DETAILED_SEC) + set(DOXYGEN_ALWAYS_DETAILED_SEC NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_INHERITED_MEMB) + set(DOXYGEN_INLINE_INHERITED_MEMB NO) +endif() +if(NOT DEFINED DOXYGEN_FULL_PATH_NAMES) + set(DOXYGEN_FULL_PATH_NAMES YES) +endif() +if(NOT DEFINED DOXYGEN_SHORT_NAMES) + set(DOXYGEN_SHORT_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_JAVADOC_AUTOBRIEF) + set(DOXYGEN_JAVADOC_AUTOBRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_JAVADOC_BANNER) + set(DOXYGEN_JAVADOC_BANNER NO) +endif() +if(NOT DEFINED DOXYGEN_QT_AUTOBRIEF) + set(DOXYGEN_QT_AUTOBRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_MULTILINE_CPP_IS_BRIEF) + set(DOXYGEN_MULTILINE_CPP_IS_BRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_INHERIT_DOCS) + set(DOXYGEN_INHERIT_DOCS YES) +endif() +if(NOT DEFINED DOXYGEN_SEPARATE_MEMBER_PAGES) + set(DOXYGEN_SEPARATE_MEMBER_PAGES NO) +endif() +if(NOT DEFINED DOXYGEN_TAB_SIZE) + set(DOXYGEN_TAB_SIZE 4) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_FOR_C) + set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_JAVA) + set(DOXYGEN_OPTIMIZE_OUTPUT_JAVA NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_FOR_FORTRAN) + set(DOXYGEN_OPTIMIZE_FOR_FORTRAN NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_VHDL) + set(DOXYGEN_OPTIMIZE_OUTPUT_VHDL NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_SLICE) + set(DOXYGEN_OPTIMIZE_OUTPUT_SLICE NO) +endif() +if(NOT DEFINED DOXYGEN_MARKDOWN_SUPPORT) + set(DOXYGEN_MARKDOWN_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_TOC_INCLUDE_HEADINGS) + set(DOXYGEN_TOC_INCLUDE_HEADINGS 5) +endif() +if(NOT DEFINED DOXYGEN_AUTOLINK_SUPPORT) + set(DOXYGEN_AUTOLINK_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_BUILTIN_STL_SUPPORT) + set(DOXYGEN_BUILTIN_STL_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_CPP_CLI_SUPPORT) + set(DOXYGEN_CPP_CLI_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_SIP_SUPPORT) + set(DOXYGEN_SIP_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_IDL_PROPERTY_SUPPORT) + set(DOXYGEN_IDL_PROPERTY_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_DISTRIBUTE_GROUP_DOC) + set(DOXYGEN_DISTRIBUTE_GROUP_DOC NO) +endif() +if(NOT DEFINED DOXYGEN_GROUP_NESTED_COMPOUNDS) + set(DOXYGEN_GROUP_NESTED_COMPOUNDS NO) +endif() +if(NOT DEFINED DOXYGEN_SUBGROUPING) + set(DOXYGEN_SUBGROUPING YES) +endif() +if(NOT DEFINED DOXYGEN_INLINE_GROUPED_CLASSES) + set(DOXYGEN_INLINE_GROUPED_CLASSES NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_SIMPLE_STRUCTS) + set(DOXYGEN_INLINE_SIMPLE_STRUCTS NO) +endif() +if(NOT DEFINED DOXYGEN_TYPEDEF_HIDES_STRUCT) + set(DOXYGEN_TYPEDEF_HIDES_STRUCT NO) +endif() +if(NOT DEFINED DOXYGEN_LOOKUP_CACHE_SIZE) + set(DOXYGEN_LOOKUP_CACHE_SIZE 0) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_ALL) + set(DOXYGEN_EXTRACT_ALL NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PRIVATE) + set(DOXYGEN_EXTRACT_PRIVATE NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PRIV_VIRTUAL) + set(DOXYGEN_EXTRACT_PRIV_VIRTUAL NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PACKAGE) + set(DOXYGEN_EXTRACT_PACKAGE NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_STATIC) + set(DOXYGEN_EXTRACT_STATIC NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_CLASSES) + set(DOXYGEN_EXTRACT_LOCAL_CLASSES YES) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_METHODS) + set(DOXYGEN_EXTRACT_LOCAL_METHODS NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_ANON_NSPACES) + set(DOXYGEN_EXTRACT_ANON_NSPACES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_MEMBERS) + set(DOXYGEN_HIDE_UNDOC_MEMBERS NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_CLASSES) + set(DOXYGEN_HIDE_UNDOC_CLASSES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_FRIEND_COMPOUNDS) + set(DOXYGEN_HIDE_FRIEND_COMPOUNDS NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_IN_BODY_DOCS) + set(DOXYGEN_HIDE_IN_BODY_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_INTERNAL_DOCS) + set(DOXYGEN_INTERNAL_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_CASE_SENSE_NAMES) + set(DOXYGEN_CASE_SENSE_NAMES YES) +endif() +if(NOT DEFINED DOXYGEN_HIDE_SCOPE_NAMES) + set(DOXYGEN_HIDE_SCOPE_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_COMPOUND_REFERENCE) + set(DOXYGEN_HIDE_COMPOUND_REFERENCE NO) +endif() +if(NOT DEFINED DOXYGEN_SHOW_INCLUDE_FILES) + set(DOXYGEN_SHOW_INCLUDE_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_GROUPED_MEMB_INC) + set(DOXYGEN_SHOW_GROUPED_MEMB_INC NO) +endif() +if(NOT DEFINED DOXYGEN_FORCE_LOCAL_INCLUDES) + set(DOXYGEN_FORCE_LOCAL_INCLUDES NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_INFO) + set(DOXYGEN_INLINE_INFO YES) +endif() +if(NOT DEFINED DOXYGEN_SORT_MEMBER_DOCS) + set(DOXYGEN_SORT_MEMBER_DOCS YES) +endif() +if(NOT DEFINED DOXYGEN_SORT_BRIEF_DOCS) + set(DOXYGEN_SORT_BRIEF_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_MEMBERS_CTORS_1ST) + set(DOXYGEN_SORT_MEMBERS_CTORS_1ST NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_GROUP_NAMES) + set(DOXYGEN_SORT_GROUP_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_BY_SCOPE_NAME) + set(DOXYGEN_SORT_BY_SCOPE_NAME NO) +endif() +if(NOT DEFINED DOXYGEN_STRICT_PROTO_MATCHING) + set(DOXYGEN_STRICT_PROTO_MATCHING NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TODOLIST) + set(DOXYGEN_GENERATE_TODOLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TESTLIST) + set(DOXYGEN_GENERATE_TESTLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_BUGLIST) + set(DOXYGEN_GENERATE_BUGLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DEPRECATEDLIST) + set(DOXYGEN_GENERATE_DEPRECATEDLIST YES) +endif() +if(NOT DEFINED DOXYGEN_MAX_INITIALIZER_LINES) + set(DOXYGEN_MAX_INITIALIZER_LINES 30) +endif() +if(NOT DEFINED DOXYGEN_SHOW_USED_FILES) + set(DOXYGEN_SHOW_USED_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_FILES) + set(DOXYGEN_SHOW_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_NAMESPACES) + set(DOXYGEN_SHOW_NAMESPACES YES) +endif() +if(NOT DEFINED DOXYGEN_QUIET) + set(DOXYGEN_QUIET NO) +endif() +if(NOT DEFINED DOXYGEN_WARNINGS) + set(DOXYGEN_WARNINGS YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_IF_UNDOCUMENTED) + set(DOXYGEN_WARN_IF_UNDOCUMENTED YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_IF_DOC_ERROR) + set(DOXYGEN_WARN_IF_DOC_ERROR YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_NO_PARAMDOC) + set(DOXYGEN_WARN_NO_PARAMDOC NO) +endif() +if(NOT DEFINED DOXYGEN_WARN_AS_ERROR) + set(DOXYGEN_WARN_AS_ERROR NO) +endif() +if(NOT DEFINED DOXYGEN_WARN_FORMAT) + set(DOXYGEN_WARN_FORMAT "$file:$line: $text") +endif() +if(NOT DEFINED DOXYGEN_INPUT_ENCODING) + set(DOXYGEN_INPUT_ENCODING UTF-8) +endif() +if(NOT DEFINED DOXYGEN_FILE_PATTERNS) + set(DOXYGEN_FILE_PATTERNS *.c + *.cc + *.cxx + *.cpp + *.c++ + *.java + *.ii + *.ixx + *.ipp + *.i++ + *.inl + *.idl + *.ddl + *.odl + *.h + *.hh + *.hxx + *.hpp + *.h++ + *.cs + *.d + *.php + *.php4 + *.php5 + *.phtml + *.inc + *.m + *.markdown + *.md + *.mm + *.dox + *.doc + *.txt + *.py + *.pyw + *.f90 + *.f95 + *.f03 + *.f08 + *.f + *.for + *.tcl + *.vhd + *.vhdl + *.ucf + *.qsf + *.ice) +endif() +if(NOT DEFINED DOXYGEN_RECURSIVE) + set(DOXYGEN_RECURSIVE NO) +endif() +if(NOT DEFINED DOXYGEN_EXCLUDE_SYMLINKS) + set(DOXYGEN_EXCLUDE_SYMLINKS NO) +endif() +if(NOT DEFINED DOXYGEN_EXAMPLE_PATTERNS) + set(DOXYGEN_EXAMPLE_PATTERNS *) +endif() +if(NOT DEFINED DOXYGEN_EXAMPLE_RECURSIVE) + set(DOXYGEN_EXAMPLE_RECURSIVE NO) +endif() +if(NOT DEFINED DOXYGEN_FILTER_SOURCE_FILES) + set(DOXYGEN_FILTER_SOURCE_FILES NO) +endif() +if(NOT DEFINED DOXYGEN_SOURCE_BROWSER) + set(DOXYGEN_SOURCE_BROWSER NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_SOURCES) + set(DOXYGEN_INLINE_SOURCES NO) +endif() +if(NOT DEFINED DOXYGEN_STRIP_CODE_COMMENTS) + set(DOXYGEN_STRIP_CODE_COMMENTS YES) +endif() +if(NOT DEFINED DOXYGEN_REFERENCED_BY_RELATION) + set(DOXYGEN_REFERENCED_BY_RELATION NO) +endif() +if(NOT DEFINED DOXYGEN_REFERENCES_RELATION) + set(DOXYGEN_REFERENCES_RELATION NO) +endif() +if(NOT DEFINED DOXYGEN_REFERENCES_LINK_SOURCE) + set(DOXYGEN_REFERENCES_LINK_SOURCE YES) +endif() +if(NOT DEFINED DOXYGEN_SOURCE_TOOLTIPS) + set(DOXYGEN_SOURCE_TOOLTIPS YES) +endif() +if(NOT DEFINED DOXYGEN_USE_HTAGS) + set(DOXYGEN_USE_HTAGS NO) +endif() +if(NOT DEFINED DOXYGEN_VERBATIM_HEADERS) + set(DOXYGEN_VERBATIM_HEADERS YES) +endif() +if(NOT DEFINED DOXYGEN_CLANG_ASSISTED_PARSING) + set(DOXYGEN_CLANG_ASSISTED_PARSING NO) +endif() +if(NOT DEFINED DOXYGEN_ALPHABETICAL_INDEX) + set(DOXYGEN_ALPHABETICAL_INDEX YES) +endif() +if(NOT DEFINED DOXYGEN_COLS_IN_ALPHA_INDEX) + set(DOXYGEN_COLS_IN_ALPHA_INDEX 5) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_HTML) + set(DOXYGEN_GENERATE_HTML YES) +endif() +if(NOT DEFINED DOXYGEN_HTML_OUTPUT) + set(DOXYGEN_HTML_OUTPUT html) +endif() +if(NOT DEFINED DOXYGEN_HTML_FILE_EXTENSION) + set(DOXYGEN_HTML_FILE_EXTENSION .html) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_HUE) + set(DOXYGEN_HTML_COLORSTYLE_HUE 220) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_SAT) + set(DOXYGEN_HTML_COLORSTYLE_SAT 100) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_GAMMA) + set(DOXYGEN_HTML_COLORSTYLE_GAMMA 80) +endif() +if(NOT DEFINED DOXYGEN_HTML_TIMESTAMP) + set(DOXYGEN_HTML_TIMESTAMP NO) +endif() +if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_MENUS) + set(DOXYGEN_HTML_DYNAMIC_MENUS YES) +endif() +if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_SECTIONS) + set(DOXYGEN_HTML_DYNAMIC_SECTIONS NO) +endif() +if(NOT DEFINED DOXYGEN_HTML_INDEX_NUM_ENTRIES) + set(DOXYGEN_HTML_INDEX_NUM_ENTRIES 100) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DOCSET) + set(DOXYGEN_GENERATE_DOCSET NO) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_FEEDNAME) + set(DOXYGEN_DOCSET_FEEDNAME "Doxygen generated docs") +endif() +if(NOT DEFINED DOXYGEN_DOCSET_BUNDLE_ID) + set(DOXYGEN_DOCSET_BUNDLE_ID org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_ID) + set(DOXYGEN_DOCSET_PUBLISHER_ID org.doxygen.Publisher) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_NAME) + set(DOXYGEN_DOCSET_PUBLISHER_NAME Publisher) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_HTMLHELP) + set(DOXYGEN_GENERATE_HTMLHELP NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_CHI) + set(DOXYGEN_GENERATE_CHI NO) +endif() +if(NOT DEFINED DOXYGEN_BINARY_TOC) + set(DOXYGEN_BINARY_TOC NO) +endif() +if(NOT DEFINED DOXYGEN_TOC_EXPAND) + set(DOXYGEN_TOC_EXPAND NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_QHP) + set(DOXYGEN_GENERATE_QHP NO) +endif() +if(NOT DEFINED DOXYGEN_QHP_NAMESPACE) + set(DOXYGEN_QHP_NAMESPACE org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_QHP_VIRTUAL_FOLDER) + set(DOXYGEN_QHP_VIRTUAL_FOLDER doc) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_ECLIPSEHELP) + set(DOXYGEN_GENERATE_ECLIPSEHELP NO) +endif() +if(NOT DEFINED DOXYGEN_ECLIPSE_DOC_ID) + set(DOXYGEN_ECLIPSE_DOC_ID org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_DISABLE_INDEX) + set(DOXYGEN_DISABLE_INDEX NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TREEVIEW) + set(DOXYGEN_GENERATE_TREEVIEW NO) +endif() +if(NOT DEFINED DOXYGEN_ENUM_VALUES_PER_LINE) + set(DOXYGEN_ENUM_VALUES_PER_LINE 4) +endif() +if(NOT DEFINED DOXYGEN_TREEVIEW_WIDTH) + set(DOXYGEN_TREEVIEW_WIDTH 250) +endif() +if(NOT DEFINED DOXYGEN_EXT_LINKS_IN_WINDOW) + set(DOXYGEN_EXT_LINKS_IN_WINDOW NO) +endif() +if(NOT DEFINED DOXYGEN_FORMULA_FONTSIZE) + set(DOXYGEN_FORMULA_FONTSIZE 10) +endif() +if(NOT DEFINED DOXYGEN_FORMULA_TRANSPARENT) + set(DOXYGEN_FORMULA_TRANSPARENT YES) +endif() +if(NOT DEFINED DOXYGEN_USE_MATHJAX) + set(DOXYGEN_USE_MATHJAX NO) +endif() +if(NOT DEFINED DOXYGEN_MATHJAX_FORMAT) + set(DOXYGEN_MATHJAX_FORMAT HTML-CSS) +endif() +if(NOT DEFINED DOXYGEN_MATHJAX_RELPATH) + set(DOXYGEN_MATHJAX_RELPATH https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/) +endif() +if(NOT DEFINED DOXYGEN_SEARCHENGINE) + set(DOXYGEN_SEARCHENGINE YES) +endif() +if(NOT DEFINED DOXYGEN_SERVER_BASED_SEARCH) + set(DOXYGEN_SERVER_BASED_SEARCH NO) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_SEARCH) + set(DOXYGEN_EXTERNAL_SEARCH NO) +endif() +if(NOT DEFINED DOXYGEN_SEARCHDATA_FILE) + set(DOXYGEN_SEARCHDATA_FILE searchdata.xml) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_LATEX) + set(DOXYGEN_GENERATE_LATEX YES) +endif() +if(NOT DEFINED DOXYGEN_LATEX_OUTPUT) + set(DOXYGEN_LATEX_OUTPUT latex) +endif() +if(NOT DEFINED DOXYGEN_MAKEINDEX_CMD_NAME) + set(DOXYGEN_MAKEINDEX_CMD_NAME makeindex) +endif() +if(NOT DEFINED DOXYGEN_LATEX_MAKEINDEX_CMD) + set(DOXYGEN_LATEX_MAKEINDEX_CMD makeindex) +endif() +if(NOT DEFINED DOXYGEN_COMPACT_LATEX) + set(DOXYGEN_COMPACT_LATEX NO) +endif() +if(NOT DEFINED DOXYGEN_PAPER_TYPE) + set(DOXYGEN_PAPER_TYPE a4) +endif() +if(NOT DEFINED DOXYGEN_PDF_HYPERLINKS) + set(DOXYGEN_PDF_HYPERLINKS YES) +endif() +if(NOT DEFINED DOXYGEN_USE_PDFLATEX) + set(DOXYGEN_USE_PDFLATEX YES) +endif() +if(NOT DEFINED DOXYGEN_LATEX_BATCHMODE) + set(DOXYGEN_LATEX_BATCHMODE NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_HIDE_INDICES) + set(DOXYGEN_LATEX_HIDE_INDICES NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_SOURCE_CODE) + set(DOXYGEN_LATEX_SOURCE_CODE NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_BIB_STYLE) + set(DOXYGEN_LATEX_BIB_STYLE plain) +endif() +if(NOT DEFINED DOXYGEN_LATEX_TIMESTAMP) + set(DOXYGEN_LATEX_TIMESTAMP NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_RTF) + set(DOXYGEN_GENERATE_RTF NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_OUTPUT) + set(DOXYGEN_RTF_OUTPUT rtf) +endif() +if(NOT DEFINED DOXYGEN_COMPACT_RTF) + set(DOXYGEN_COMPACT_RTF NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_HYPERLINKS) + set(DOXYGEN_RTF_HYPERLINKS NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_SOURCE_CODE) + set(DOXYGEN_RTF_SOURCE_CODE NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_MAN) + set(DOXYGEN_GENERATE_MAN NO) +endif() +if(NOT DEFINED DOXYGEN_MAN_OUTPUT) + set(DOXYGEN_MAN_OUTPUT man) +endif() +if(NOT DEFINED DOXYGEN_MAN_EXTENSION) + set(DOXYGEN_MAN_EXTENSION .3) +endif() +if(NOT DEFINED DOXYGEN_MAN_LINKS) + set(DOXYGEN_MAN_LINKS NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_XML) + set(DOXYGEN_GENERATE_XML NO) +endif() +if(NOT DEFINED DOXYGEN_XML_OUTPUT) + set(DOXYGEN_XML_OUTPUT xml) +endif() +if(NOT DEFINED DOXYGEN_XML_PROGRAMLISTING) + set(DOXYGEN_XML_PROGRAMLISTING YES) +endif() +if(NOT DEFINED DOXYGEN_XML_NS_MEMB_FILE_SCOPE) + set(DOXYGEN_XML_NS_MEMB_FILE_SCOPE NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DOCBOOK) + set(DOXYGEN_GENERATE_DOCBOOK NO) +endif() +if(NOT DEFINED DOXYGEN_DOCBOOK_OUTPUT) + set(DOXYGEN_DOCBOOK_OUTPUT docbook) +endif() +if(NOT DEFINED DOXYGEN_DOCBOOK_PROGRAMLISTING) + set(DOXYGEN_DOCBOOK_PROGRAMLISTING NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_AUTOGEN_DEF) + set(DOXYGEN_GENERATE_AUTOGEN_DEF NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_PERLMOD) + set(DOXYGEN_GENERATE_PERLMOD NO) +endif() +if(NOT DEFINED DOXYGEN_PERLMOD_LATEX) + set(DOXYGEN_PERLMOD_LATEX NO) +endif() +if(NOT DEFINED DOXYGEN_PERLMOD_PRETTY) + set(DOXYGEN_PERLMOD_PRETTY YES) +endif() +if(NOT DEFINED DOXYGEN_ENABLE_PREPROCESSING) + set(DOXYGEN_ENABLE_PREPROCESSING YES) +endif() +if(NOT DEFINED DOXYGEN_MACRO_EXPANSION) + set(DOXYGEN_MACRO_EXPANSION NO) +endif() +if(NOT DEFINED DOXYGEN_EXPAND_ONLY_PREDEF) + set(DOXYGEN_EXPAND_ONLY_PREDEF NO) +endif() +if(NOT DEFINED DOXYGEN_SEARCH_INCLUDES) + set(DOXYGEN_SEARCH_INCLUDES YES) +endif() +if(NOT DEFINED DOXYGEN_SKIP_FUNCTION_MACROS) + set(DOXYGEN_SKIP_FUNCTION_MACROS YES) +endif() +if(NOT DEFINED DOXYGEN_ALLEXTERNALS) + set(DOXYGEN_ALLEXTERNALS NO) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_GROUPS) + set(DOXYGEN_EXTERNAL_GROUPS YES) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_PAGES) + set(DOXYGEN_EXTERNAL_PAGES YES) +endif() +if(NOT DEFINED DOXYGEN_CLASS_DIAGRAMS) + set(DOXYGEN_CLASS_DIAGRAMS YES) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_RELATIONS) + set(DOXYGEN_HIDE_UNDOC_RELATIONS YES) +endif() +if(NOT DEFINED DOXYGEN_HAVE_DOT) + set(DOXYGEN_HAVE_DOT YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_NUM_THREADS) + set(DOXYGEN_DOT_NUM_THREADS 0) +endif() +if(NOT DEFINED DOXYGEN_DOT_FONTNAME) + set(DOXYGEN_DOT_FONTNAME Helvetica) +endif() +if(NOT DEFINED DOXYGEN_DOT_FONTSIZE) + set(DOXYGEN_DOT_FONTSIZE 10) +endif() +if(NOT DEFINED DOXYGEN_CLASS_GRAPH) + set(DOXYGEN_CLASS_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_COLLABORATION_GRAPH) + set(DOXYGEN_COLLABORATION_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_GROUP_GRAPHS) + set(DOXYGEN_GROUP_GRAPHS YES) +endif() +if(NOT DEFINED DOXYGEN_UML_LOOK) + set(DOXYGEN_UML_LOOK NO) +endif() +if(NOT DEFINED DOXYGEN_UML_LIMIT_NUM_FIELDS) + set(DOXYGEN_UML_LIMIT_NUM_FIELDS 10) +endif() +if(NOT DEFINED DOXYGEN_TEMPLATE_RELATIONS) + set(DOXYGEN_TEMPLATE_RELATIONS NO) +endif() +if(NOT DEFINED DOXYGEN_INCLUDE_GRAPH) + set(DOXYGEN_INCLUDE_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_INCLUDED_BY_GRAPH) + set(DOXYGEN_INCLUDED_BY_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_CALL_GRAPH) + set(DOXYGEN_CALL_GRAPH NO) +endif() +if(NOT DEFINED DOXYGEN_CALLER_GRAPH) + set(DOXYGEN_CALLER_GRAPH NO) +endif() +if(NOT DEFINED DOXYGEN_GRAPHICAL_HIERARCHY) + set(DOXYGEN_GRAPHICAL_HIERARCHY YES) +endif() +if(NOT DEFINED DOXYGEN_DIRECTORY_GRAPH) + set(DOXYGEN_DIRECTORY_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_IMAGE_FORMAT) + set(DOXYGEN_DOT_IMAGE_FORMAT png) +endif() +if(NOT DEFINED DOXYGEN_INTERACTIVE_SVG) + set(DOXYGEN_INTERACTIVE_SVG NO) +endif() +if(NOT DEFINED DOXYGEN_DOT_GRAPH_MAX_NODES) + set(DOXYGEN_DOT_GRAPH_MAX_NODES 50) +endif() +if(NOT DEFINED DOXYGEN_MAX_DOT_GRAPH_DEPTH) + set(DOXYGEN_MAX_DOT_GRAPH_DEPTH 0) +endif() +if(NOT DEFINED DOXYGEN_DOT_TRANSPARENT) + set(DOXYGEN_DOT_TRANSPARENT NO) +endif() +if(NOT DEFINED DOXYGEN_DOT_MULTI_TARGETS) + set(DOXYGEN_DOT_MULTI_TARGETS NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_LEGEND) + set(DOXYGEN_GENERATE_LEGEND YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_CLEANUP) + set(DOXYGEN_DOT_CLEANUP YES) +endif() diff --git a/plor/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake b/plor/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake new file mode 100644 index 00000000..278ef39e --- /dev/null +++ b/plor/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake @@ -0,0 +1,88 @@ +set(CMAKE_CXX_COMPILER "/usr/bin/c++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "GNU") +set(CMAKE_CXX_COMPILER_VERSION "9.4.0") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_CXX_COMPILER_AR "/usr/bin/gcc-ar-9") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/gcc-ranlib-9") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCXX 1) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW ) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/plor/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin b/plor/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin new file mode 100755 index 0000000000000000000000000000000000000000..156cfcfc782ba2dc2f291ca842e4a4516fe2c356 GIT binary patch literal 16560 zcmeHOZ)_Y#6`%9j$)!!smoyvn%vnwdyOtmo7lvVrpwuPwvXOF z?)Io%(NJWFI0cgkRnUGwDn+15d};Xrp8!W`(@F?vgj9;4ULUuER;5=OoERY94~Tj#n5l!?6b&9!;ua#J-b(4kCRM{I=sHkOR#BOG z#%tt&k@=cGjXb(=g7g^edKjC9R;9Pl=|qjSMtyuDiO|-KSqux#soiM zil-YjWkoQ$^@d5$jXk8th(0hKecej_JO1uvJx!VsVHe(`Xu-(-?gKp;7pi|d;BG!b z{#NRT5XGO7!Yg)X(jy&vcW08VnRKo^**Y2SXzkdmm-6}^=^ERGK5$I+4Gak|Gm9LB zQTD|~Dr5cgv-h1U#vXj`#^jmevtRqwV*@`q_5|BNpD2R~^?68O8T04^Wz_Y5268l( z0WYS0oR!21Ut!?2I(1us+faue1Wv2NkFLPq3jDk4$P0+yD2A&;nC9qY!W>KI5}EYF zDJWu(H*e#4>>$5j<9QAszi8v>R)@5gya;#^@FL(vz>9zv0WShx1iT3R zQxW)6^X-2#rY{AI(@j6$Erjv8S*xM?k}>^U;JnnY?t2R8tJOQd4$!<^pgfemCrdp- zmfPRxuUve@LfF4( zZ35Q=m9zv0WShx1iT1%5%415MZk-I7lHqi2>2Xt8-?f}=skR(1n=qcV`j2o6_2-t zPhcn{pBPCWhy4Ob__q2#fbVGWJ=gr3)oKB75%6)qz(Tb;40r|b8Nl$BYV{?+rvY2& zr5L^&#pHYVi11B@d|TJ94xEKLY``0eB-tQvU}lE0A3QoP;ap1L(R87 z6nIn|+;ZT(@82O`L!$ou@EK+~$YVmA7JT+YoBEK51w*GAy4S5b367x%e;J6!;PWx4 zPXUVFVCYOkf3W3?{#a0(X^aJTexa!+*mi1_5e!eS?h8h8!EiL#77gy~3Tj=!mabr^ zD;SXP7k>%rp9eeM`#B7xm%Ipg5%415MZk-I7XdE3dANt22vBVv`=z1RRqWpw_}!g*aRvQ+q<30EcaGbwHM+f zDR?6*+doh3g*U^p%yERrK3RU5>i&+m9F2;lV;iQGHAnH_ zMhOmWB=hEYCO?wMm`N*NESZV&q!`U-3z?LaO6uXZj`sROcw{7PCW^(xl$pv|#VIjX zOk`7LvYgFMfr_nUf~4gT?LL%vFx5Rg+zpP>nN%^_)vu2h3c~zoyuBlx8_S!vKe>?& zOA`L!2FtxiqK9H;Y@o-4QzlN^Nn!SUWFUH|zuQ?OkFx*;=XlJRK^BajBf{*9AMT3A z&BMLDM`MHLV6-b9L#y%-%xI}Buks%sdr2h|R)STQ&do$3j)OBMN~yy!AnQCSV(vVxOW>D2o`;N;nuKp0c_5jWf!9+L zG}b1PpwA_xuLhmc;5-;lWYeS29PBq8;wf|(@L3qd?%DG%mvOxfQxxuWX%KE&HWt=5J_V2#_ zuRuLs6W8NUnoNZJJV>nc#d*Z9!pE+!ksc$PV;wFtKIPKq^)n;Ot)%}gmwtp481eVp zp4|4Hb?NhZoROcG*@k=kewXw){z4;3LY!arVBP=xjQe}Y+BNJXH|o>-r85i0HaB0|z_3fT{_HUC_` z2^qA-{(1csB7OG5@^m>|6n-F(Bk>x~`gheBm0^85^4PJ9M%W-tY@Ej!Qf?35|M343 eZo5OD2JQ}*arVoyxD2hQpA0LBwJrr$QT!cqBtQ)S literal 0 HcmV?d00001 diff --git a/plor/build/CMakeFiles/3.17.0/CMakeSystem.cmake b/plor/build/CMakeFiles/3.17.0/CMakeSystem.cmake new file mode 100644 index 00000000..0fd1f759 --- /dev/null +++ b/plor/build/CMakeFiles/3.17.0/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-5.4.0-113-generic") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "5.4.0-113-generic") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Linux-5.4.0-113-generic") +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_VERSION "5.4.0-113-generic") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/plor/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp b/plor/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 00000000..69cfdba6 --- /dev/null +++ b/plor/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,660 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_dialect_default = "INFO" ":" "dialect_default[" +#if CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} diff --git a/plor/build/CMakeFiles/CMakeError.log b/plor/build/CMakeFiles/CMakeError.log new file mode 100644 index 00000000..41f0c1e0 --- /dev/null +++ b/plor/build/CMakeFiles/CMakeError.log @@ -0,0 +1,50 @@ +Performing C++ SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output: +Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_08f88 && [1/2] Building CXX object CMakeFiles/cmTC_08f88.dir/src.cxx.o +[2/2] Linking CXX executable cmTC_08f88 +FAILED: cmTC_08f88 +: && /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD CMakeFiles/cmTC_08f88.dir/src.cxx.o -o cmTC_08f88 && : +/usr/bin/ld: CMakeFiles/cmTC_08f88.dir/src.cxx.o: in function `main': +src.cxx:(.text+0x46): undefined reference to `pthread_create' +/usr/bin/ld: src.cxx:(.text+0x52): undefined reference to `pthread_detach' +/usr/bin/ld: src.cxx:(.text+0x5e): undefined reference to `pthread_cancel' +/usr/bin/ld: src.cxx:(.text+0x6f): undefined reference to `pthread_join' +collect2: error: ld returned 1 exit status +ninja: build stopped: subcommand failed. + + +Source file was: +#include + +void* test_func(void* data) +{ + return data; +} + +int main(void) +{ + pthread_t thread; + pthread_create(&thread, NULL, test_func, NULL); + pthread_detach(thread); + pthread_cancel(thread); + pthread_join(thread, NULL); + pthread_atfork(NULL, NULL, NULL); + pthread_exit(NULL); + + return 0; +} + +Determining if the function pthread_create exists in the pthreads failed with the following output: +Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_9744f && [1/2] Building CXX object CMakeFiles/cmTC_9744f.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_9744f +FAILED: cmTC_9744f +: && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_9744f.dir/CheckFunctionExists.cxx.o -o cmTC_9744f -lpthreads && : +/usr/bin/ld: -lpthreads が見つかりません +collect2: error: ld returned 1 exit status +ninja: build stopped: subcommand failed. + + + diff --git a/plor/build/CMakeFiles/CMakeOutput.log b/plor/build/CMakeFiles/CMakeOutput.log new file mode 100644 index 00000000..5e35fe2e --- /dev/null +++ b/plor/build/CMakeFiles/CMakeOutput.log @@ -0,0 +1,235 @@ +The system is: Linux - 5.4.0-113-generic - x86_64 +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: /usr/bin/c++ +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" + +The CXX compiler identification is GNU, found in "/home/tngngn/ccbench/plor/build/CMakeFiles/3.17.0/CompilerIdCXX/a.out" + +Determining if the CXX compiler works passed with the following output: +Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_5d7fb && [1/2] Building CXX object CMakeFiles/cmTC_5d7fb.dir/testCXXCompiler.cxx.o +[2/2] Linking CXX executable cmTC_5d7fb + + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_4448f && [1/2] Building CXX object CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cceEUz5Q.s +GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9" +ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include" +#include "..." search starts here: +#include <...> search starts here: + /usr/include/c++/9 + /usr/include/x86_64-linux-gnu/c++/9 + /usr/include/c++/9/backward + /usr/lib/gcc/x86_64-linux-gnu/9/include + /usr/local/include + /usr/include/x86_64-linux-gnu + /usr/include +End of search list. +GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + as -v --64 -o CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o /tmp/cceEUz5Q.s +GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34 +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +[2/2] Linking CXX executable cmTC_4448f +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_4448f' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccpek809.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_4448f /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_4448f' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/usr/include/c++/9] + add: [/usr/include/x86_64-linux-gnu/c++/9] + add: [/usr/include/c++/9/backward] + add: [/usr/lib/gcc/x86_64-linux-gnu/9/include] + add: [/usr/local/include] + add: [/usr/include/x86_64-linux-gnu] + add: [/usr/include] + end of search list found + collapse include dir [/usr/include/c++/9] ==> [/usr/include/c++/9] + collapse include dir [/usr/include/x86_64-linux-gnu/c++/9] ==> [/usr/include/x86_64-linux-gnu/c++/9] + collapse include dir [/usr/include/c++/9/backward] ==> [/usr/include/c++/9/backward] + collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/9/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/9/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/local/bin/ninja cmTC_4448f && [1/2] Building CXX object CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cceEUz5Q.s] + ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9"] + ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/include/c++/9] + ignore line: [ /usr/include/x86_64-linux-gnu/c++/9] + ignore line: [ /usr/include/c++/9/backward] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/include/x86_64-linux-gnu] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o /tmp/cceEUz5Q.s] + ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [[2/2] Linking CXX executable cmTC_4448f] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_4448f' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccpek809.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_4448f /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccpek809.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--as-needed] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-o] ==> ignore + arg [cmTC_4448f] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] + arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] + arg [CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] ==> ignore + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9] ==> [/usr/lib/gcc/x86_64-linux-gnu/9] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> [/usr/lib] + implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc] + implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] + implicit fwks: [] + + +Determining if the include file pthread.h exists passed with the following output: +Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_4f3ca && [1/2] Building CXX object CMakeFiles/cmTC_4f3ca.dir/CheckIncludeFile.cxx.o +[2/2] Linking CXX executable cmTC_4f3ca + + + +Determining if the function pthread_create exists in the pthread passed with the following output: +Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_69814 && [1/2] Building CXX object CMakeFiles/cmTC_69814.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_69814 + + + diff --git a/plor/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx b/plor/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx new file mode 100644 index 00000000..13435e07 --- /dev/null +++ b/plor/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx @@ -0,0 +1,28 @@ +#ifdef CHECK_FUNCTION_EXISTS + +# ifdef __cplusplus +extern "C" +# endif + char + CHECK_FUNCTION_EXISTS(void); +# ifdef __CLASSIC_C__ +int main() +{ + int ac; + char* av[]; +# else +int main(int ac, char* av[]) +{ +# endif + CHECK_FUNCTION_EXISTS(); + if (ac > 1000) { + return *av[0]; + } + return 0; +} + +#else /* CHECK_FUNCTION_EXISTS */ + +# error "CHECK_FUNCTION_EXISTS has to specify the function" + +#endif /* CHECK_FUNCTION_EXISTS */ diff --git a/plor/build/CMakeFiles/TargetDirectories.txt b/plor/build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 00000000..10364580 --- /dev/null +++ b/plor/build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +/home/tngngn/ccbench/plor/build/CMakeFiles/rebuild_cache.dir +/home/tngngn/ccbench/plor/build/CMakeFiles/edit_cache.dir +/home/tngngn/ccbench/plor/build/CMakeFiles/ss2pl.exe.dir diff --git a/plor/build/CMakeFiles/cmake.check_cache b/plor/build/CMakeFiles/cmake.check_cache new file mode 100644 index 00000000..3dccd731 --- /dev/null +++ b/plor/build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/plor/build/build.ninja b/plor/build/build.ninja new file mode 100644 index 00000000..bfb97acd --- /dev/null +++ b/plor/build/build.ninja @@ -0,0 +1,186 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.17 + +# This file contains all the build statements describing the +# compilation DAG. + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# +# Which is the root file. +# ============================================================================= + +# ============================================================================= +# Project: ccbench_ss2pl +# Configurations: Release +# ============================================================================= + +############################################# +# Minimal version of Ninja required by this file + +ninja_required_version = 1.5 + + +############################################# +# Set configuration variable for custom commands. + +CONFIGURATION = Release +# ============================================================================= +# Include auxiliary files. + + +############################################# +# Include rules file. + +include rules.ninja + + +############################################# +# Utility command for rebuild_cache + +build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/plor/build && /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/plor -B/home/tngngn/ccbench/plor/build + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build rebuild_cache: phony CMakeFiles/rebuild_cache.util + + +############################################# +# Utility command for edit_cache + +build CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/plor/build && /usr/local/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. + DESC = No interactive CMake dialog available... + restat = 1 + +build edit_cache: phony CMakeFiles/edit_cache.util + +# ============================================================================= +# Object build statements for EXECUTABLE target ss2pl.exe + + +############################################# +# Order-only phony target for ss2pl.exe + +build cmake_object_order_depends_target_ss2pl.exe_Release: phony || CMakeFiles/ss2pl.exe.dir + +build CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Release /home/tngngn/ccbench/common/result.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Release /home/tngngn/ccbench/common/util.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../result.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/result.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../ss2pl.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/transaction.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../transaction.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/transaction.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../util.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/util.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + + +# ============================================================================= +# Link build statements for EXECUTABLE target ss2pl.exe + + +############################################# +# Link the executable ss2pl.exe + +build ss2pl.exe: CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Release CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o CMakeFiles/ss2pl.exe.dir/result.cc.o CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o CMakeFiles/ss2pl.exe.dir/transaction.cc.o CMakeFiles/ss2pl.exe.dir/util.cc.o | /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a + FLAGS = -O3 -DNDEBUG + LINK_LIBRARIES = /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a -lpthread + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + POST_BUILD = : + PRE_LINK = : + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_FILE = ss2pl.exe + TARGET_PDB = ss2pl.exe.pdb + +# ============================================================================= +# Target aliases. + +# ============================================================================= +# Folder targets. + +# ============================================================================= + +############################################# +# Folder: /home/tngngn/ccbench/plor/build + +build all: phony ss2pl.exe + +# ============================================================================= +# Built-in targets + + +############################################# +# Re-run CMake if any of its inputs changed. + +build build.ninja: RERUN_CMAKE | ../CMakeLists.txt /home/tngngn/ccbench/cmake/CompileOptions.cmake /home/tngngn/ccbench/cmake/Findgflags.cmake /home/tngngn/ccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx + pool = console + + +############################################# +# A missing CMake input file is not an error. + +build ../CMakeLists.txt /home/tngngn/ccbench/cmake/CompileOptions.cmake /home/tngngn/ccbench/cmake/Findgflags.cmake /home/tngngn/ccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx: phony + + +############################################# +# Clean all the built files. + +build clean: CLEAN + + +############################################# +# Print all primary targets available. + +build help: HELP + + +############################################# +# Make the all target the default. + +default all diff --git a/plor/build/cmake_install.cmake b/plor/build/cmake_install.cmake new file mode 100644 index 00000000..e7f0f2e0 --- /dev/null +++ b/plor/build/cmake_install.cmake @@ -0,0 +1,49 @@ +# Install script for directory: /home/tngngn/ccbench/plor + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "/home/tngngn/ccbench/plor/build/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/plor/build/rules.ninja b/plor/build/rules.ninja new file mode 100644 index 00000000..319144c7 --- /dev/null +++ b/plor/build/rules.ninja @@ -0,0 +1,64 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.17 + +# This file contains all the rules used to get the outputs files +# built from the input files. +# It is included in the main 'build.ninja'. + +# ============================================================================= +# Project: ccbench_ss2pl +# Configurations: Release +# ============================================================================= +# ============================================================================= + +############################################# +# Rule for running custom commands. + +rule CUSTOM_COMMAND + command = $COMMAND + description = $DESC + + +############################################# +# Rule for compiling CXX files. + +rule CXX_COMPILER__ss2pl.2eexe_Release + depfile = $DEP_FILE + deps = gcc + command = /usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building CXX object $out + + +############################################# +# Rule for linking CXX executable. + +rule CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Release + command = $PRE_LINK && /usr/bin/c++ $FLAGS $LINK_FLAGS $in -o $TARGET_FILE $LINK_PATH $LINK_LIBRARIES && $POST_BUILD + description = Linking CXX executable $TARGET_FILE + restat = $RESTAT + + +############################################# +# Rule for re-running cmake. + +rule RERUN_CMAKE + command = /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/plor -B/home/tngngn/ccbench/plor/build + description = Re-running CMake... + generator = 1 + + +############################################# +# Rule for cleaning all built files. + +rule CLEAN + command = /usr/local/bin/ninja $FILE_ARG -t clean $TARGETS + description = Cleaning all built files... + + +############################################# +# Rule for printing all primary targets available. + +rule HELP + command = /usr/local/bin/ninja -t targets + description = All primary targets available: + diff --git a/plor/include/common.hh b/plor/include/common.hh new file mode 100644 index 00000000..579055ef --- /dev/null +++ b/plor/include/common.hh @@ -0,0 +1,57 @@ +#pragma once + +#include + +#include "../../include/cache_line_size.hh" +#include "../../include/int64byte.hh" +#include "../../include/masstree_wrapper.hh" +#include "tuple.hh" + +#include "gflags/gflags.h" +#include "glog/logging.h" + +#ifdef GLOBAL_VALUE_DEFINE +#define GLOBAL + +#if MASSTREE_USE +alignas(CACHE_LINE_SIZE) GLOBAL MasstreeWrapper MT; +#endif + +#else +#define GLOBAL extern + +#if MASSTREE_USE +alignas(CACHE_LINE_SIZE) GLOBAL MasstreeWrapper MT; +#endif + +#endif + +#ifdef GLOBAL_VALUE_DEFINE +DEFINE_uint64(clocks_per_us, 2100, + "CPU_MHz. Use this info for measuring time."); +DEFINE_uint64(extime, 3, "Execution time[sec]."); +DEFINE_uint64(max_ope, 10, + "Total number of operations per single transaction."); +DEFINE_bool(rmw, false, + "True means read modify write, false means blind write."); +DEFINE_uint64(rratio, 50, "read ratio of single transaction."); +DEFINE_uint64(thread_num, 10, "Total number of worker threads."); +DEFINE_uint64(tuple_num, 1000000, "Total number of records."); +DEFINE_bool(ycsb, true, + "True uses zipf_skew, false uses faster random generator."); +DEFINE_double(zipf_skew, 0, "zipf skew. 0 ~ 0.999..."); +#else +DECLARE_uint64(clocks_per_us); +DECLARE_uint64(extime); +DECLARE_uint64(max_ope); +DECLARE_bool(rmw); +DECLARE_uint64(rratio); +DECLARE_uint64(thread_num); +DECLARE_uint64(tuple_num); +DECLARE_bool(ycsb); +DECLARE_double(zipf_skew); +#endif + +alignas(CACHE_LINE_SIZE) GLOBAL Tuple *Table; +alignas(CACHE_LINE_SIZE) GLOBAL int thread_stats[224]; +alignas(CACHE_LINE_SIZE) GLOBAL int thread_timestamp[224]; diff --git a/plor/include/result.hh b/plor/include/result.hh new file mode 100644 index 00000000..26dd8285 --- /dev/null +++ b/plor/include/result.hh @@ -0,0 +1,9 @@ +#pragma once + +#include + +#include "../../include/result.hh" + +extern std::vector SS2PLResult; + +extern void initResult(); diff --git a/plor/include/ss2pl_op_element.hh b/plor/include/ss2pl_op_element.hh new file mode 100644 index 00000000..6162c229 --- /dev/null +++ b/plor/include/ss2pl_op_element.hh @@ -0,0 +1,18 @@ +#pragma once + +#include "../../include/op_element.hh" + +template +class SetElement : public OpElement { +public: + using OpElement::OpElement; + + char val_[VAL_SIZE]; + + SetElement(uint64_t key, T *rcdptr) : OpElement::OpElement(key, rcdptr) {} + + SetElement(uint64_t key, T *rcdptr, char *val) + : OpElement::OpElement(key, rcdptr) { + memcpy(this->val_, val, VAL_SIZE); + } +}; diff --git a/plor/include/transaction.hh b/plor/include/transaction.hh new file mode 100644 index 00000000..5431f352 --- /dev/null +++ b/plor/include/transaction.hh @@ -0,0 +1,65 @@ +#pragma once + +#include + +#include "../../include/procedure.hh" +#include "../../include/result.hh" +#include "../../include/rwlock.hh" +#include "../../include/string.hh" +#include "../../include/util.hh" +#include "ss2pl_op_element.hh" +#include "tuple.hh" + +enum class TransactionStatus : uint8_t { + inFlight, + committed, + aborted, +}; + +extern void writeValGenerator(char *writeVal, size_t val_size, size_t thid); + +class TxExecutor { +public: + alignas(CACHE_LINE_SIZE) int thid_; + std::vector r_lock_list_; + std::vector w_lock_list_; + TransactionStatus status_ = TransactionStatus::inFlight; + Result *sres_; + vector > read_set_; + vector > write_set_; + vector pro_set_; + + char write_val_[VAL_SIZE]; + char return_val_[VAL_SIZE]; + + TxExecutor(int thid, Result *sres) : thid_(thid), sres_(sres) { + read_set_.reserve(FLAGS_max_ope); + write_set_.reserve(FLAGS_max_ope); + pro_set_.reserve(FLAGS_max_ope); + r_lock_list_.reserve(FLAGS_max_ope); + w_lock_list_.reserve(FLAGS_max_ope); + + genStringRepeatedNumber(write_val_, VAL_SIZE, thid); + } + + SetElement *searchReadSet(uint64_t key); + + SetElement *searchWriteSet(uint64_t key); + + void begin(); + + void read(uint64_t key); + + void write(uint64_t key); + + void readWrite(uint64_t key); + + void commit(); + + void abort(); + + void unlockList(); + + // inline + Tuple *get_tuple(Tuple *table, uint64_t key) { return &table[key]; } +}; diff --git a/plor/include/tuple.hh b/plor/include/tuple.hh new file mode 100644 index 00000000..de240080 --- /dev/null +++ b/plor/include/tuple.hh @@ -0,0 +1,19 @@ +#pragma once + +#include +#include + +#include "../../include/cache_line_size.hh" +#include "../../include/inline.hh" +#include "../../include/rwlock.hh" + +using namespace std; + +class Tuple { +public: + alignas(CACHE_LINE_SIZE) RWLock lock_; + char val_[VAL_SIZE]; + int writer = 0; + int readers[224] = {0}; + int writers[224] = {0}; +}; diff --git a/plor/include/util.hh b/plor/include/util.hh new file mode 100644 index 00000000..547508fa --- /dev/null +++ b/plor/include/util.hh @@ -0,0 +1,13 @@ +#pragma once + +extern void chkArg(); + +extern void displayDB(); + +extern void displayParameter(); + +extern void makeDB(); + +extern void partTableInit([[maybe_unused]] size_t thid, uint64_t start, uint64_t end); + +extern void ShowOptParameters(); diff --git a/plor/result.cc b/plor/result.cc new file mode 100644 index 00000000..ff17dd8d --- /dev/null +++ b/plor/result.cc @@ -0,0 +1,11 @@ +#include "include/result.hh" +#include "include/common.hh" + +#include "../include/cache_line_size.hh" +#include "../include/result.hh" + +using namespace std; + +alignas(CACHE_LINE_SIZE) std::vector SS2PLResult; + +void initResult() { SS2PLResult.resize(FLAGS_thread_num); } diff --git a/plor/script/test_cache_ana.sh b/plor/script/test_cache_ana.sh new file mode 100755 index 00000000..df6753dd --- /dev/null +++ b/plor/script/test_cache_ana.sh @@ -0,0 +1,227 @@ +#test_cache_ana.sh(ss2pl) +maxope=10 +thread=24 +cpu_mhz=2400 +extime=3 +epoch=5 + +tuple=100 +workload=0 +result=result_ss2pl_r10_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=1 +result=result_ss2pl_r8_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=2 +result=result_ss2pl_r5_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=3 +result=result_ss2pl_r2_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=4 +result=result_ss2pl_r0_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + diff --git a/plor/script/test_t1k.sh b/plor/script/test_t1k.sh new file mode 100755 index 00000000..73dbfec1 --- /dev/null +++ b/plor/script/test_t1k.sh @@ -0,0 +1,382 @@ +#test_t1k.sh(ss2pl) +tuple=1000 +maxope=10 +cpu_mhz=2400 +extime=3 +epoch=5 + +workload=0 +result=result_ss2pl_r10_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=1 +result=result_ss2pl_r8_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=2 +result=result_ss2pl_r5_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=3 +result=result_ss2pl_r2_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=4 +result=result_ss2pl_r0_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + diff --git a/plor/script/test_t1m.sh b/plor/script/test_t1m.sh new file mode 100755 index 00000000..9b30a188 --- /dev/null +++ b/plor/script/test_t1m.sh @@ -0,0 +1,382 @@ +#test_t1m.sh(ss2pl) +tuple=1000000 +maxope=10 +cpu_mhz=2400 +extime=3 +epoch=5 + +workload=0 +result=result_ss2pl_r10_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=1 +result=result_ss2pl_r8_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=2 +result=result_ss2pl_r5_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=3 +result=result_ss2pl_r2_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=4 +result=result_ss2pl_r0_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + diff --git a/plor/script/test_t200.sh b/plor/script/test_t200.sh new file mode 100755 index 00000000..ed333bb7 --- /dev/null +++ b/plor/script/test_t200.sh @@ -0,0 +1,382 @@ +#test_t200.sh(ss2pl) +tuple=200 +maxope=10 +cpu_mhz=2400 +extime=3 +epoch=5 + +workload=0 +result=result_ss2pl_r10_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=1 +result=result_ss2pl_r8_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=2 +result=result_ss2pl_r5_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=3 +result=result_ss2pl_r2_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=4 +result=result_ss2pl_r0_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + diff --git a/plor/script/tst200-1k-1m.sh b/plor/script/tst200-1k-1m.sh new file mode 100755 index 00000000..c347fa88 --- /dev/null +++ b/plor/script/tst200-1k-1m.sh @@ -0,0 +1,1991 @@ +#tst200-1k-1m.sh(ss2pl) +maxope=10 +rmw=off +skew=0 +ycsb=off +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +#kugiri +rratio=0 +tuple=200 +result=result_ss2pl_r0_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=20 +tuple=200 +result=result_ss2pl_r2_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=80 +tuple=200 +result=result_ss2pl_r8_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=100 +tuple=200 +result=result_ss2pl_r10_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=0 +tuple=1000 +result=result_ss2pl_r0_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=20 +tuple=1000 +result=result_ss2pl_r2_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=80 +tuple=1000 +result=result_ss2pl_r8_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=100 +tuple=1000 +result=result_ss2pl_r10_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=0 +tuple=1000000 +result=result_ss2pl_r0_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=20 +tuple=1000000 +result=result_ss2pl_r2_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=80 +tuple=1000000 +result=result_ss2pl_r8_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=100 +tuple=1000000 +result=result_ss2pl_r10_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/plor/script/ycsb-xope.sh b/plor/script/ycsb-xope.sh new file mode 100755 index 00000000..7398b793 --- /dev/null +++ b/plor/script/ycsb-xope.sh @@ -0,0 +1,106 @@ +#ycsb-xope.sh(ss2pl) +tuple=100000000 +maxope=10 +rratio=95 +rmw=off +skew=0.8 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j KEY_SIZE=8 VAL_SIZE=4 +cd script/ + +result=result_ss2pl-dlr1_ycsbB_tuple100m_skew08_ope10-100.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + +for ((maxope=10; maxope<=100; maxope+=10)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$maxope $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done diff --git a/plor/script/ycsb-xrratio.sh b/plor/script/ycsb-xrratio.sh new file mode 100755 index 00000000..e4e74263 --- /dev/null +++ b/plor/script/ycsb-xrratio.sh @@ -0,0 +1,102 @@ +#ycsb-xrratio.sh(ss2pl) +tuple=1000000 +maxope=10 +rratio=0 +rmw=off +skew=0.9 +ycsb=on +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +result=result_ss2pl-dlr1_tuple1m_val1k_skew09_rratio0-100.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + +for ((rratio=0; rratio<=100; rratio+=10)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$rratio $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done diff --git a/plor/script/ycsb-xrs.sh b/plor/script/ycsb-xrs.sh new file mode 100755 index 00000000..fb18cb42 --- /dev/null +++ b/plor/script/ycsb-xrs.sh @@ -0,0 +1,118 @@ +#ycsb-xrs.sh(ss2pl) +maxope=10 +rratioary=(50 95 100) +rmw=off +skew=0.9 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j KEY_SIZE=8 VAL_SIZE=1000 +cd script/ + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50 ; then + result=result_ss2pl_ycsbA_tuple1k-100m_val1k_skew09.dat + elif test $rratio = 95 ; then + result=result_ss2pl_ycsbB_tuple1k-100m_val1k_skew09.dat + elif test $rratio = 100 ; then + result=result_ss2pl_ycsbC_tuple1k-100m_val1k_skew09.dat + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + + for ((tuple=1000; tuple<=100000000; tuple*=10)) + do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$tuple $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/plor/script/ycsb-xskew.sh b/plor/script/ycsb-xskew.sh new file mode 100755 index 00000000..314e6020 --- /dev/null +++ b/plor/script/ycsb-xskew.sh @@ -0,0 +1,131 @@ +#ycsb-xrs.sh(ss2pl) +tuple=10000000 +maxope=16 +rratioary=(50 95) +rmw=on +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j VAL_SIZE=100 +cd script/ + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50; then + thread=28 + result=result_2pl_ycsbA_tuple10m_ope16_rmw_skew0-099_th28.dat + elif test $rratio = 95; then + thread=28 + result=result_2pl_ycsbB_tuple10m_ope16_rmw_skew0-099_th28.dat + elif test $rratio = 100; then + result=result_ss2pl_ycsbC_tuple1k_skew0-099.dat + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw skew $ycsb $cpu_mhz $extime" >> $result + ../ss2pl.exe > exp.txt + tmpStr=`grep ShowOptParameters ./exp.txt` + echo "#$tmpStr" >> $result + + for ((tmpskew = 0; tmpskew <= 105; tmpskew += 10)) + do + if test $tmpskew = 100 ; then + tmpskew=95 + fi + if test $tmpskew = 105 ; then + tmpskew=99 + fi + skew=`echo "scale=3; $tmpskew / 100.0" | bc -l | xargs printf %.2f` + + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$skew $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/plor/script/ycsb-xth.sh b/plor/script/ycsb-xth.sh new file mode 100755 index 00000000..1ff00ecf --- /dev/null +++ b/plor/script/ycsb-xth.sh @@ -0,0 +1,124 @@ +#ycsb-xrs.sh(ss2pl) +tuple=10000000 +maxope=1 +#rratioary=(50 95 100) +rratioary=(95) +rmw=on +skew=0.99 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j VAL_SIZE=100 +cd script/ + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50 ; then + result=result_2pl_ycsbA_tuple10m_ope16_rmw_skew099.dat + elif test $rratio = 95 ; then + result=result_2pl_ycsbB_tuple10m_ope1_rmw_skew099.dat + elif test $rratio = 100 ; then + result=result_ss2pl_ycsbC_tuple10m_ope1_skew099.dat + maxope=1 + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + + for ((thread=1; thread<=25; thread+=5)) + do + if test $thread = 6 ; then + thread=5 + fi + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$thread $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/plor/script/ycsb-xval.sh b/plor/script/ycsb-xval.sh new file mode 100755 index 00000000..e5c64aea --- /dev/null +++ b/plor/script/ycsb-xval.sh @@ -0,0 +1,122 @@ +#ycsb-xrs.sh(ss2pl) +tuple=1000000 +maxope=10 +rratioary=(95) +rmw=off +skew=0 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50; then + result=result_ss2pl_ycsbA_tuple100m_skew09_val4-1k.dat + elif test $rratio = 95; then + result=result_ss2pl_ycsbB_tuple1m_val10-100k.dat + elif test $rratio = 100; then + result=result_ss2pl_ycsbC_tuple100m_skew09_val4-1k.dat + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + + for ((val = 10; val <= 100000; val *= 10)) + do + if test $val = 104 ; then + val=100 + fi + cd ../ + make clean; make -j VAL_SIZE=$val + cd script + + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$val $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/plor/script/ycsbA-xrs-cache.sh b/plor/script/ycsbA-xrs-cache.sh new file mode 100755 index 00000000..61dbd5f4 --- /dev/null +++ b/plor/script/ycsbA-xrs-cache.sh @@ -0,0 +1,52 @@ +#ycsbA-xrs-cache.sh(ss2pl) +maxope=10 +thread=24 +rratio=50 +skew=0 +ycsb=ON +cpu_mhz=2400 +extime=3 +epoch=5 + +result=result_ss2pl_ycsbA_tuple100-10m_cachemiss.dat +rm $result +echo "#tuple num, cache-misses, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=10000000; tuple*=10)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime" + echo "$tuple $epoch" + + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-misses,cache-references -o ss2pl-cache-ana.txt ./ss2pl.exe $tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl-cache-ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + diff --git a/plor/script/ycsbA.sh b/plor/script/ycsbA.sh new file mode 100755 index 00000000..c83e85f6 --- /dev/null +++ b/plor/script/ycsbA.sh @@ -0,0 +1,510 @@ +#ycsbA.sh(ss2pl) +maxope=10 +rratio=50 +rmw=off +skew=0 +ycsb=on +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +tuple=500 +result=result_ss2pl_ycsbA_tuple500_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=500000 +result=result_ss2pl_ycsbA_tuple500k_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=5000000 +result=result_ss2pl_ycsbA_tuple5m_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/plor/script/ycsbB.sh b/plor/script/ycsbB.sh new file mode 100755 index 00000000..2a5966d9 --- /dev/null +++ b/plor/script/ycsbB.sh @@ -0,0 +1,510 @@ +#ycsbB.sh(ss2pl) +maxope=10 +rratio=95 +rmw=off +skew=0 +ycsb=on +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +tuple=500 +result=result_ss2pl_ycsbB_tuple500_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=500000 +result=result_ss2pl_ycsbB_tuple500k_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=5000000 +result=result_ss2pl_ycsbB_tuple5m_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/plor/script/ycsbC.sh b/plor/script/ycsbC.sh new file mode 100755 index 00000000..4894481b --- /dev/null +++ b/plor/script/ycsbC.sh @@ -0,0 +1,187 @@ +#ycsbC.sh(ss2pl) +#tuple=1000000000 +tuple=1000 +maxope=10 +rratio=100 +rmw=off +skew=0.9 +ycsb=on +cpu_mhz=2100 +extime=1 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +result=result_ss2pl_ycsbC_tuple1g_skew09_val1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/plor/ss2pl.cc b/plor/ss2pl.cc new file mode 100644 index 00000000..50a514c4 --- /dev/null +++ b/plor/ss2pl.cc @@ -0,0 +1,129 @@ + +#include //isdigit, +#include +#include //strlen, +#include //syscall(SYS_gettid), +#include //syscall(SYS_gettid), +#include //syscall(SYS_gettid), +#include + +#include +#include //string +#include + +#define GLOBAL_VALUE_DEFINE + +#include "../include/atomic_wrapper.hh" +#include "../include/backoff.hh" +#include "../include/cpu.hh" +#include "../include/debug.hh" +#include "../include/fence.hh" +#include "../include/int64byte.hh" +#include "../include/masstree_wrapper.hh" +#include "../include/procedure.hh" +#include "../include/random.hh" +#include "../include/result.hh" +#include "../include/tsc.hh" +#include "../include/util.hh" +#include "../include/zipf.hh" +#include "include/common.hh" +#include "include/result.hh" +#include "include/transaction.hh" +#include "include/util.hh" + +long long int central_timestamp = 0; + +void worker(size_t thid, char &ready, const bool &start, const bool &quit) { + Result &myres = std::ref(SS2PLResult[thid]); + Xoroshiro128Plus rnd; + rnd.init(); + TxExecutor trans(thid, (Result *) &myres); + FastZipf zipf(&rnd, FLAGS_zipf_skew, FLAGS_tuple_num); + Backoff backoff(FLAGS_clocks_per_us); + +#if MASSTREE_USE + MasstreeWrapper::thread_init(int(thid)); +#endif + +#ifdef Linux + setThreadAffinity(thid); + // printf("Thread #%d: on CPU %d\n", *myid, sched_getcpu()); + // printf("sysconf(_SC_NPROCESSORS_CONF) %ld\n", + // sysconf(_SC_NPROCESSORS_CONF)); +#endif // Linux + + storeRelease(ready, 1); + while (!loadAcquire(start)) _mm_pause(); + while (!loadAcquire(quit)) { + makeProcedure(trans.pro_set_, rnd, zipf, FLAGS_tuple_num, FLAGS_max_ope, FLAGS_thread_num, + FLAGS_rratio, FLAGS_rmw, FLAGS_ycsb, false, thid, myres); + thread_timestamp[thid] = __atomic_add_fetch(¢ral_timestamp, 1, __ATOMIC_SEQ_CST); +RETRY: + thread_stats[thid] = 0; + if (loadAcquire(quit)) break; + if (thid == 0) leaderBackoffWork(backoff, SS2PLResult); + + trans.begin(); + for (auto itr = trans.pro_set_.begin(); itr != trans.pro_set_.end(); + ++itr) { + if ((*itr).ope_ == Ope::READ) { + trans.read((*itr).key_); + } else if ((*itr).ope_ == Ope::WRITE) { + trans.write((*itr).key_); + } else if ((*itr).ope_ == Ope::READ_MODIFY_WRITE) { + trans.readWrite((*itr).key_); + } else { + ERR; + } + + if (thread_stats[thid] == 1) { + trans.status_ = TransactionStatus::aborted; + trans.abort(); + goto RETRY; + } + } + + trans.commit(); + /** + * local_commit_counts is used at ../include/backoff.hh to calcurate about + * backoff. + */ + storeRelease(myres.local_commit_counts_, + loadAcquire(myres.local_commit_counts_) + 1); + } + + return; +} + +int main(int argc, char *argv[]) try { + gflags::SetUsageMessage("2PL benchmark."); + gflags::ParseCommandLineFlags(&argc, &argv, true); + chkArg(); + makeDB(); + + alignas(CACHE_LINE_SIZE) bool start = false; + alignas(CACHE_LINE_SIZE) bool quit = false; + initResult(); + std::vector readys(FLAGS_thread_num); + std::vector thv; + for (size_t i = 0; i < FLAGS_thread_num; ++i) + thv.emplace_back(worker, i, std::ref(readys[i]), std::ref(start), + std::ref(quit)); + waitForReady(readys); + storeRelease(start, true); + for (size_t i = 0; i < FLAGS_extime; ++i) { + sleepMs(1000); + } + storeRelease(quit, true); + for (auto &th : thv) th.join(); + + for (unsigned int i = 0; i < FLAGS_thread_num; ++i) { + SS2PLResult[0].addLocalAllResult(SS2PLResult[i]); + } + ShowOptParameters(); + SS2PLResult[0].displayAllResult(FLAGS_clocks_per_us, FLAGS_extime, FLAGS_thread_num); + + return 0; +} catch (bad_alloc) { + ERR; +} diff --git a/plor/transaction.cc b/plor/transaction.cc new file mode 100644 index 00000000..ce850fe5 --- /dev/null +++ b/plor/transaction.cc @@ -0,0 +1,410 @@ + +#include +#include + +#include + +#include "../include/backoff.hh" +#include "../include/debug.hh" +#include "../include/procedure.hh" +#include "../include/result.hh" +#include "include/common.hh" +#include "include/transaction.hh" + +using namespace std; + +extern void display_procedure_vector(std::vector &pro); + +/** + * @brief Search xxx set + * @detail Search element of local set corresponding to given key. + * In this prototype system, the value to be updated for each worker thread + * is fixed for high performance, so it is only necessary to check the key match. + * @param Key [in] the key of key-value + * @return Corresponding element of local set + */ +inline SetElement *TxExecutor::searchReadSet(uint64_t key) { + for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) { + if ((*itr).key_ == key) return &(*itr); + } + + return nullptr; +} + +/** + * @brief Search xxx set + * @detail Search element of local set corresponding to given key. + * In this prototype system, the value to be updated for each worker thread + * is fixed for high performance, so it is only necessary to check the key match. + * @param Key [in] the key of key-value + * @return Corresponding element of local set + */ +inline SetElement *TxExecutor::searchWriteSet(uint64_t key) { + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { + if ((*itr).key_ == key) return &(*itr); + } + + return nullptr; +} + +/** + * @brief function about abort. + * Clean-up local read/write set. + * Release locks. + * @return void + */ +void TxExecutor::abort() { + /** + * Release locks + */ + unlockList(); + + /** + * Clean-up local read/write set. + */ + read_set_.clear(); + write_set_.clear(); + + ++sres_->local_abort_counts_; + +#if BACK_OFF +#if ADD_ANALYSIS + uint64_t start(rdtscp()); +#endif + + Backoff::backoff(FLAGS_clocks_per_us); + +#if ADD_ANALYSIS + sres_->local_backoff_latency_ += rdtscp() - start; +#endif + +#endif +} + +/** + * @brief success termination of transaction. + * @return void + */ +void TxExecutor::commit() { + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { + /** + * update payload. + */ + memcpy((*itr).rcdptr_->val_, write_val_, VAL_SIZE); + } + + /** + * Release locks. + */ + unlockList(); + + /** + * Clean-up local read/write set. + */ + read_set_.clear(); + write_set_.clear(); +} + +/** + * @brief Initialize function of transaction. + * Allocate timestamp. + * @return void + */ +void TxExecutor::begin() { this->status_ = TransactionStatus::inFlight; } + +/** + * @brief Transaction read function. + * @param [in] key The key of key-value + */ +void TxExecutor::read(uint64_t key) { +#if ADD_ANALYSIS + uint64_t start = rdtscp(); +#endif // ADD_ANALYSIS + + /** + * read-own-writes or re-read from local read set. + */ + if (searchWriteSet(key) || searchReadSet(key)) goto FINISH_READ; + + /** + * Search tuple from data structure. + */ + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#if ADD_ANALYSIS + ++sres_->local_tree_traversal_; +#endif +#else + tuple = get_tuple(Table, key); +#endif + + /** + * Write-Read (WR) conflict + */ + + /** PLOR */ + lockRead(); + + /** Wound-Wait + * + + while (1) { + if (tuple->lock_.r_trylock()) { + r_lock_list_.emplace_back(&tuple->lock_); + read_set_.emplace_back(key, tuple, tuple->val_); + tuple->readers[thid_] = 1; + break; + } + else { + for (int i = 0; i < FLAGS_thread_num; i++) { + if (tuple->writers[i] > 0 && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_READ; + } + } + + */ + +FINISH_READ: + +#if ADD_ANALYSIS + sres_->local_read_latency_ += rdtscp() - start; +#endif + return; +} + +/** + * @brief transaction write operation + * @param [in] key The key of key-value + * @return void + */ +void TxExecutor::write(uint64_t key) { +#if ADD_ANALYSIS + uint64_t start = rdtscp(); +#endif + + // if it already wrote the key object once. + if (searchWriteSet(key)) goto FINISH_WRITE; + /** + * Search tuple from data structure. + */ + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#if ADD_ANALYSIS + ++sres_->local_tree_traversal_; +#endif +#else + tuple = get_tuple(Table, key); +#endif + for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { + if ((*rItr).key_ == key) { // hit + while (1) { + if (!(*rItr).rcdptr_->lock_.tryupgrade()) { + for (int i = 0; i < FLAGS_thread_num; i++) { + if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } else { + break; + } + } + + // upgrade success + // remove old element of read lock list. + tuple->readers[this->thid_] = 0; + tuple->writers[this->thid_] = 1; + for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); + ++lItr) { + if (*lItr == &((*rItr).rcdptr_->lock_)) { + write_set_.emplace_back(key, (*rItr).rcdptr_); + w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); + r_lock_list_.erase(lItr); + break; + } + } + + read_set_.erase(rItr); + goto FINISH_WRITE; + } + } + + while (1) { + if (!tuple->lock_.w_trylock()) { + /** + * wound-wait + ** Write-Write (WW) conflict + ** Read-Write (RW) conflict + */ + for (int i = 0; i < FLAGS_thread_num; i++) { + if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } else { + break; + } + } + + + /** + * Register the contents to write lock list and write set. + */ + tuple->writers[thid_] = 1; + w_lock_list_.emplace_back(&tuple->lock_); + write_set_.emplace_back(key, tuple); + +FINISH_WRITE: +#if ADD_ANALYSIS + sres_->local_write_latency_ += rdtscp() - start; +#endif // ADD_ANALYSIS + return; +} + +/** + * @brief transaction readWrite (RMW) operation + */ +void TxExecutor::readWrite(uint64_t key) { + // if it already wrote the key object once. + if (searchWriteSet(key)) goto FINISH_WRITE; + /** + * Search tuple from data structure. + */ + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#if ADD_ANALYSIS + ++sres_->local_tree_traversal_; +#endif +#else + tuple = get_tuple(Table, key); +#endif + for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { + if ((*rItr).key_ == key) { // hit + while (1) { + if (!(*rItr).rcdptr_->lock_.tryupgrade()) { + for (int i = 0; i < FLAGS_thread_num; i++) { + if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } else { + break; + } + } + + // upgrade success + // remove old element of read set. + tuple->readers[this->thid_] = 0; + tuple->writers[this->thid_] = 1; + for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); + ++lItr) { + if (*lItr == &((*rItr).rcdptr_->lock_)) { + write_set_.emplace_back(key, (*rItr).rcdptr_); + w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); + r_lock_list_.erase(lItr); + break; + } + } + + read_set_.erase(rItr); + goto FINISH_WRITE; + } + } + + while (1) { + if (!tuple->lock_.w_trylock()) { + /** + * wound-wait. + */ + for (int i = 0; i < FLAGS_thread_num; i++) { + if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } else { + break; + } + } + + // read payload + memcpy(this->return_val_, tuple->val_, VAL_SIZE); + // finish read. + + /** + * Register the contents to write lock list and write set. + */ + w_lock_list_.emplace_back(&tuple->lock_); + write_set_.emplace_back(key, tuple); + +FINISH_WRITE: + return; +} + +void TxExecutor::lockRead() { + /** PLOR */ + // @task: need to add exclusive signifier for commiting writer + read_set_.emplace_back(key, tuple, tuple->val_); + tuple->readers[thid_] = 1; + for (int i = 0; i < FLAGS_thread_num; i++) { + if (tuple->writers[i] > 0 && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_READ; +} + +void TxExecutor::lockWrite() { + write_set_.emplace_back(key, tuple); + tuple->writers[thid_] = 1; + // @task: CAS for curr_writer @then: wound-wait +} + +void TxExecutor::unlockRead() { + tuple->readers[thid_] = 0; + for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) + (*itr).rcdptr_->readers[this->thid_] = -1; +} + +void TxExecutor::unlockWrite() { + tuple->writers[thid_] = 0; + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) + (*itr).rcdptr_->writers[this->thid_] = -1; + /* @task: turn the lock to the oldest waiter(writer) + * curr_writer = smallestTimestamp(for (int i = 0; i < FLAGS_thread_num; i++) {writers[i]>0}) + */ +} + +/** + * @brief unlock and clean-up local lock set. + * @return void + */ + +void TxExecutor::unlockList() { + for (auto itr = r_lock_list_.begin(); itr != r_lock_list_.end(); ++itr) + (*itr)->r_unlock(); + + for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) + (*itr).rcdptr_->readers[this->thid_] = -1; + + for (auto itr = w_lock_list_.begin(); itr != w_lock_list_.end(); ++itr) + (*itr)->w_unlock(); + + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) + (*itr).rcdptr_->writers[this->thid_] = -1; + + /** + * Clean-up local lock set. + */ + r_lock_list_.clear(); + w_lock_list_.clear(); +} + diff --git a/plor/util.cc b/plor/util.cc new file mode 100644 index 00000000..56853473 --- /dev/null +++ b/plor/util.cc @@ -0,0 +1,118 @@ + +#include +#include // syscall(SYS_gettid), +#include // syscall(SSY_gettid), +#include // syscall(SSY_gettid), + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../include/config.hh" +#include "../include/debug.hh" +#include "../include/masstree_wrapper.hh" +#include "../include/procedure.hh" +#include "../include/random.hh" +#include "../include/result.hh" +#include "../include/zipf.hh" +#include "include/common.hh" +#include "include/tuple.hh" +#include "include/util.hh" + +void chkArg() { + displayParameter(); + + if (FLAGS_rratio > 100) { + ERR; + } + + if (FLAGS_clocks_per_us < 100) { + cout << "CPU_MHZ is less than 100. are your really?" << endl; + ERR; + } +} + +void displayDB() { + Tuple *tuple; + + for (unsigned int i = 0; i < FLAGS_tuple_num; i++) { + tuple = &Table[i]; + cout << "------------------------------" << endl; // - 30 + cout << "key: " << i << endl; + cout << "val: " << tuple->val_ << endl; + } +} + +void displayParameter() { + cout << "#FLAGS_clocks_per_us:\t" << FLAGS_clocks_per_us << endl; + cout << "#FLAGS_extime:\t\t" << FLAGS_extime << endl; + cout << "#FLAGS_max_ope:\t\t" << FLAGS_max_ope << endl; + cout << "#FLAGS_rmw:\t\t" << FLAGS_rmw << endl; + cout << "#FLAGS_rratio:\t\t" << FLAGS_rratio << endl; + cout << "#FLAGS_thread_num:\t" << FLAGS_thread_num << endl; + cout << "#FLAGS_tuple_num:\t" << FLAGS_tuple_num << endl; + cout << "#FLAGS_ycsb:\t\t" << FLAGS_ycsb << endl; + cout << "#FLAGS_zipf_skew:\t" << FLAGS_zipf_skew << endl; +} + +void partTableInit([[maybe_unused]] size_t thid, uint64_t start, uint64_t end) { + // printf("partTableInit(...): thid %zu : %lu : %lu\n", thid, start, end); +#if MASSTREE_USE + MasstreeWrapper::thread_init(thid); +#endif + + for (auto i = start; i <= end; ++i) { + Table[i].val_[0] = 'a'; + Table[i].val_[1] = '\0'; + +#if MASSTREE_USE + MT.insert_value(i, &Table[i]); +#endif + } +} + +void makeDB() { + if (posix_memalign((void **) &Table, PAGE_SIZE, FLAGS_tuple_num * sizeof(Tuple)) != + 0) + ERR; +#if dbs11 + if (madvise((void *)Table, (FLAGS_tuple_num) * sizeof(Tuple), MADV_HUGEPAGE) != 0) + ERR; +#endif + + // maxthread は masstree 構築の最大並行スレッド数。 + // 初期値はハードウェア最大値。 + // FLAGS_tuple_num を均等に分割できる最大スレッド数を求める。 + size_t maxthread = decideParallelBuildNumber(FLAGS_tuple_num); + + std::vector thv; + // cout << "masstree 並列構築スレッド数 " << maxthread << endl; + for (size_t i = 0; i < maxthread; ++i) { + thv.emplace_back(partTableInit, i, i * (FLAGS_tuple_num / maxthread), + (i + 1) * (FLAGS_tuple_num / maxthread) - 1); + } + for (auto &th : thv) th.join(); +} + +void +ShowOptParameters() { + cout << "#ShowOptParameters()" + << ": ADD_ANALYSIS " << ADD_ANALYSIS + << ": BACK_OFF " << BACK_OFF + #ifdef DLR0 + << ": DLR0 " + #elif defined DLR1 + << ": DLR1 " + #endif + << ": MASSTREE_USE " << MASSTREE_USE + << ": KEY_SIZE " << KEY_SIZE + << ": KEY_SORT " << KEY_SORT + << ": VAL_SIZE " << VAL_SIZE + << endl; +} diff --git a/silo/build/.ninja_deps b/silo/build/.ninja_deps new file mode 100644 index 0000000000000000000000000000000000000000..7d9978743b7fcbfcb539bbfba6ecbebd570d9daf GIT binary patch literal 53632 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 L5DbQOVF>&WDSVv~ literal 0 HcmV?d00001 diff --git a/silo/build/.ninja_log b/silo/build/.ninja_log new file mode 100644 index 00000000..9214e922 --- /dev/null +++ b/silo/build/.ninja_log @@ -0,0 +1,10 @@ +# ninja log v5 +0 435 1668348609437908561 CMakeFiles/silo.exe.dir/home/tngngn/ccbench/common/result.cc.o e6df043e2030658 +0 714 1668348609713899510 CMakeFiles/silo.exe.dir/home/tngngn/ccbench/common/util.cc.o 756806ec11d76926 +1 859 1668348609861894656 CMakeFiles/silo.exe.dir/result.cc.o feb612dafeb59b4e +0 975 1668348609977890852 CMakeFiles/replay_test.exe.dir/replayTest.cc.o 1d4ceb960c01c005 +976 1041 1668348610041888753 replay_test.exe 814f8d058dc8779b +2 1346 1668348610345878783 CMakeFiles/silo.exe.dir/transaction.cc.o a5945a0443b77c71 +2 1521 1668348610521873011 CMakeFiles/silo.exe.dir/util.cc.o b53012d03604fd3a +1 1912 1668348610909860287 CMakeFiles/silo.exe.dir/silo.cc.o 3e19f2888286f21e +1913 1992 1668348610993857532 silo.exe 507328c3f1946d7 diff --git a/silo/build/CMakeCache.txt b/silo/build/CMakeCache.txt new file mode 100644 index 00000000..f15aaac8 --- /dev/null +++ b/silo/build/CMakeCache.txt @@ -0,0 +1,473 @@ +# This is the CMakeCache file. +# For build in directory: /home/tngngn/ccbench/silo/build +# It was generated by CMake: /usr/local/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//The directory containing a CMake configuration file for Boost. +Boost_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0 + +Boost_FILESYSTEM_LIBRARY_RELEASE:STRING=/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 + +//Path to a file. +Boost_INCLUDE_DIR:PATH=/usr/include + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING=Release + +//CXX compiler +CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-9 + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-9 + +//Flags used by the CXX compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the CXX compiler during DEBUG builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the CXX compiler during RELEASE builds. +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//User executables (bin) +CMAKE_INSTALL_BINDIR:PATH=bin + +//Read-only architecture-independent data (DATAROOTDIR) +CMAKE_INSTALL_DATADIR:PATH= + +//Read-only architecture-independent data root (share) +CMAKE_INSTALL_DATAROOTDIR:PATH=share + +//Documentation root (DATAROOTDIR/doc/PROJECT_NAME) +CMAKE_INSTALL_DOCDIR:PATH= + +//C header files (include) +CMAKE_INSTALL_INCLUDEDIR:PATH=include + +//Info documentation (DATAROOTDIR/info) +CMAKE_INSTALL_INFODIR:PATH= + +//Object code libraries (lib) +CMAKE_INSTALL_LIBDIR:PATH=lib + +//Program executables (libexec) +CMAKE_INSTALL_LIBEXECDIR:PATH=libexec + +//Locale-dependent data (DATAROOTDIR/locale) +CMAKE_INSTALL_LOCALEDIR:PATH= + +//Modifiable single-machine data (var) +CMAKE_INSTALL_LOCALSTATEDIR:PATH=var + +//Man documentation (DATAROOTDIR/man) +CMAKE_INSTALL_MANDIR:PATH= + +//C header files for non-gcc (/usr/include) +CMAKE_INSTALL_OLDINCLUDEDIR:PATH=/usr/include + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Run-time variable data (LOCALSTATEDIR/run) +CMAKE_INSTALL_RUNSTATEDIR:PATH= + +//System admin executables (sbin) +CMAKE_INSTALL_SBINDIR:PATH=sbin + +//Modifiable architecture-independent data (com) +CMAKE_INSTALL_SHAREDSTATEDIR:PATH=com + +//Read-only single-machine data (etc) +CMAKE_INSTALL_SYSCONFDIR:PATH=etc + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Program used to build from build.ninja files. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/local/bin/ninja + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC=silo of ccbench + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=ccbench_silo + +//Value Computed by CMake +CMAKE_PROJECT_VERSION:STATIC=0.0.1 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MAJOR:STATIC=0 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MINOR:STATIC=0 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_PATCH:STATIC=1 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_TWEAK:STATIC= + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/usr/bin/readelf + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Dot tool for use with Doxygen +DOXYGEN_DOT_EXECUTABLE:FILEPATH=/usr/bin/dot + +//Doxygen documentation generation tool (http://www.doxygen.org) +DOXYGEN_EXECUTABLE:FILEPATH=/usr/bin/doxygen + +//enable coverage on debug build +ENABLE_COVERAGE:BOOL=OFF + +//enable sanitizer on debug build +ENABLE_SANITIZER:BOOL=ON + +//enable undefined behavior sanitizer on debug build +ENABLE_UB_SANITIZER:BOOL=OFF + +//The directory containing a CMake configuration file for boost_filesystem. +boost_filesystem_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0 + +//The directory containing a CMake configuration file for boost_headers. +boost_headers_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0 + +//Value Computed by CMake +ccbench_silo_BINARY_DIR:STATIC=/home/tngngn/ccbench/silo/build + +//Value Computed by CMake +ccbench_silo_SOURCE_DIR:STATIC=/home/tngngn/ccbench/silo + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: Boost_DIR +Boost_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/tngngn/ccbench/silo/build +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=17 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=0 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/local/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/local/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/local/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Ninja +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Test CMAKE_HAVE_LIBC_PTHREAD +CMAKE_HAVE_LIBC_PTHREAD:INTERNAL= +//Have library pthreads +CMAKE_HAVE_PTHREADS_CREATE:INTERNAL= +//Have library pthread +CMAKE_HAVE_PTHREAD_CREATE:INTERNAL=1 +//Have include pthread.h +CMAKE_HAVE_PTHREAD_H:INTERNAL=1 +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/tngngn/ccbench/silo +//ADVANCED property for variable: CMAKE_INSTALL_BINDIR +CMAKE_INSTALL_BINDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DATADIR +CMAKE_INSTALL_DATADIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DATAROOTDIR +CMAKE_INSTALL_DATAROOTDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DOCDIR +CMAKE_INSTALL_DOCDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_INCLUDEDIR +CMAKE_INSTALL_INCLUDEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_INFODIR +CMAKE_INSTALL_INFODIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LIBDIR +CMAKE_INSTALL_LIBDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LIBEXECDIR +CMAKE_INSTALL_LIBEXECDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LOCALEDIR +CMAKE_INSTALL_LOCALEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LOCALSTATEDIR +CMAKE_INSTALL_LOCALSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_MANDIR +CMAKE_INSTALL_MANDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_OLDINCLUDEDIR +CMAKE_INSTALL_OLDINCLUDEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_RUNSTATEDIR +CMAKE_INSTALL_RUNSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SBINDIR +CMAKE_INSTALL_SBINDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SHAREDSTATEDIR +CMAKE_INSTALL_SHAREDSTATEDIR-ADVANCED:INTERNAL=1 +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SYSCONFDIR +CMAKE_INSTALL_SYSCONFDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/local/share/cmake-3.17 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: DOXYGEN_DOT_EXECUTABLE +DOXYGEN_DOT_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: DOXYGEN_EXECUTABLE +DOXYGEN_EXECUTABLE-ADVANCED:INTERNAL=1 +//Details about finding Boost +FIND_PACKAGE_MESSAGE_DETAILS_Boost:INTERNAL=[/usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake][cfound components: filesystem ][v1.71.0()] +//Details about finding Doxygen +FIND_PACKAGE_MESSAGE_DETAILS_Doxygen:INTERNAL=[/usr/bin/doxygen][cfound components: doxygen dot ][v1.8.17()] +//Details about finding Threads +FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()] +//Details about finding gflags +FIND_PACKAGE_MESSAGE_DETAILS_gflags:INTERNAL=[/usr/lib/x86_64-linux-gnu/libgflags.so][/usr/include][v()] +//Details about finding glog +FIND_PACKAGE_MESSAGE_DETAILS_glog:INTERNAL=[/usr/lib/x86_64-linux-gnu/libglog.so][/usr/include][v()] +//CMAKE_INSTALL_PREFIX during last run +_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX:INTERNAL=/usr/local +//ADVANCED property for variable: boost_filesystem_DIR +boost_filesystem_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: boost_headers_DIR +boost_headers_DIR-ADVANCED:INTERNAL=1 + diff --git a/silo/build/CMakeDoxyfile.in b/silo/build/CMakeDoxyfile.in new file mode 100644 index 00000000..848a3c81 --- /dev/null +++ b/silo/build/CMakeDoxyfile.in @@ -0,0 +1,280 @@ +# +# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! +# + +DOXYFILE_ENCODING = @DOXYGEN_DOXYFILE_ENCODING@ +PROJECT_NAME = @DOXYGEN_PROJECT_NAME@ +PROJECT_NUMBER = @DOXYGEN_PROJECT_NUMBER@ +PROJECT_BRIEF = @DOXYGEN_PROJECT_BRIEF@ +PROJECT_LOGO = @DOXYGEN_PROJECT_LOGO@ +OUTPUT_DIRECTORY = @DOXYGEN_OUTPUT_DIRECTORY@ +CREATE_SUBDIRS = @DOXYGEN_CREATE_SUBDIRS@ +ALLOW_UNICODE_NAMES = @DOXYGEN_ALLOW_UNICODE_NAMES@ +OUTPUT_LANGUAGE = @DOXYGEN_OUTPUT_LANGUAGE@ +OUTPUT_TEXT_DIRECTION = @DOXYGEN_OUTPUT_TEXT_DIRECTION@ +BRIEF_MEMBER_DESC = @DOXYGEN_BRIEF_MEMBER_DESC@ +REPEAT_BRIEF = @DOXYGEN_REPEAT_BRIEF@ +ABBREVIATE_BRIEF = @DOXYGEN_ABBREVIATE_BRIEF@ +ALWAYS_DETAILED_SEC = @DOXYGEN_ALWAYS_DETAILED_SEC@ +INLINE_INHERITED_MEMB = @DOXYGEN_INLINE_INHERITED_MEMB@ +FULL_PATH_NAMES = @DOXYGEN_FULL_PATH_NAMES@ +STRIP_FROM_PATH = @DOXYGEN_STRIP_FROM_PATH@ +STRIP_FROM_INC_PATH = @DOXYGEN_STRIP_FROM_INC_PATH@ +SHORT_NAMES = @DOXYGEN_SHORT_NAMES@ +JAVADOC_AUTOBRIEF = @DOXYGEN_JAVADOC_AUTOBRIEF@ +JAVADOC_BANNER = @DOXYGEN_JAVADOC_BANNER@ +QT_AUTOBRIEF = @DOXYGEN_QT_AUTOBRIEF@ +MULTILINE_CPP_IS_BRIEF = @DOXYGEN_MULTILINE_CPP_IS_BRIEF@ +INHERIT_DOCS = @DOXYGEN_INHERIT_DOCS@ +SEPARATE_MEMBER_PAGES = @DOXYGEN_SEPARATE_MEMBER_PAGES@ +TAB_SIZE = @DOXYGEN_TAB_SIZE@ +ALIASES = @DOXYGEN_ALIASES@ +TCL_SUBST = @DOXYGEN_TCL_SUBST@ +OPTIMIZE_OUTPUT_FOR_C = @DOXYGEN_OPTIMIZE_OUTPUT_FOR_C@ +OPTIMIZE_OUTPUT_JAVA = @DOXYGEN_OPTIMIZE_OUTPUT_JAVA@ +OPTIMIZE_FOR_FORTRAN = @DOXYGEN_OPTIMIZE_FOR_FORTRAN@ +OPTIMIZE_OUTPUT_VHDL = @DOXYGEN_OPTIMIZE_OUTPUT_VHDL@ +OPTIMIZE_OUTPUT_SLICE = @DOXYGEN_OPTIMIZE_OUTPUT_SLICE@ +EXTENSION_MAPPING = @DOXYGEN_EXTENSION_MAPPING@ +MARKDOWN_SUPPORT = @DOXYGEN_MARKDOWN_SUPPORT@ +TOC_INCLUDE_HEADINGS = @DOXYGEN_TOC_INCLUDE_HEADINGS@ +AUTOLINK_SUPPORT = @DOXYGEN_AUTOLINK_SUPPORT@ +BUILTIN_STL_SUPPORT = @DOXYGEN_BUILTIN_STL_SUPPORT@ +CPP_CLI_SUPPORT = @DOXYGEN_CPP_CLI_SUPPORT@ +SIP_SUPPORT = @DOXYGEN_SIP_SUPPORT@ +IDL_PROPERTY_SUPPORT = @DOXYGEN_IDL_PROPERTY_SUPPORT@ +DISTRIBUTE_GROUP_DOC = @DOXYGEN_DISTRIBUTE_GROUP_DOC@ +GROUP_NESTED_COMPOUNDS = @DOXYGEN_GROUP_NESTED_COMPOUNDS@ +SUBGROUPING = @DOXYGEN_SUBGROUPING@ +INLINE_GROUPED_CLASSES = @DOXYGEN_INLINE_GROUPED_CLASSES@ +INLINE_SIMPLE_STRUCTS = @DOXYGEN_INLINE_SIMPLE_STRUCTS@ +TYPEDEF_HIDES_STRUCT = @DOXYGEN_TYPEDEF_HIDES_STRUCT@ +LOOKUP_CACHE_SIZE = @DOXYGEN_LOOKUP_CACHE_SIZE@ +EXTRACT_ALL = @DOXYGEN_EXTRACT_ALL@ +EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@ +EXTRACT_PRIV_VIRTUAL = @DOXYGEN_EXTRACT_PRIV_VIRTUAL@ +EXTRACT_PACKAGE = @DOXYGEN_EXTRACT_PACKAGE@ +EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@ +EXTRACT_LOCAL_CLASSES = @DOXYGEN_EXTRACT_LOCAL_CLASSES@ +EXTRACT_LOCAL_METHODS = @DOXYGEN_EXTRACT_LOCAL_METHODS@ +EXTRACT_ANON_NSPACES = @DOXYGEN_EXTRACT_ANON_NSPACES@ +HIDE_UNDOC_MEMBERS = @DOXYGEN_HIDE_UNDOC_MEMBERS@ +HIDE_UNDOC_CLASSES = @DOXYGEN_HIDE_UNDOC_CLASSES@ +HIDE_FRIEND_COMPOUNDS = @DOXYGEN_HIDE_FRIEND_COMPOUNDS@ +HIDE_IN_BODY_DOCS = @DOXYGEN_HIDE_IN_BODY_DOCS@ +INTERNAL_DOCS = @DOXYGEN_INTERNAL_DOCS@ +CASE_SENSE_NAMES = @DOXYGEN_CASE_SENSE_NAMES@ +HIDE_SCOPE_NAMES = @DOXYGEN_HIDE_SCOPE_NAMES@ +HIDE_COMPOUND_REFERENCE= @DOXYGEN_HIDE_COMPOUND_REFERENCE@ +SHOW_INCLUDE_FILES = @DOXYGEN_SHOW_INCLUDE_FILES@ +SHOW_GROUPED_MEMB_INC = @DOXYGEN_SHOW_GROUPED_MEMB_INC@ +FORCE_LOCAL_INCLUDES = @DOXYGEN_FORCE_LOCAL_INCLUDES@ +INLINE_INFO = @DOXYGEN_INLINE_INFO@ +SORT_MEMBER_DOCS = @DOXYGEN_SORT_MEMBER_DOCS@ +SORT_BRIEF_DOCS = @DOXYGEN_SORT_BRIEF_DOCS@ +SORT_MEMBERS_CTORS_1ST = @DOXYGEN_SORT_MEMBERS_CTORS_1ST@ +SORT_GROUP_NAMES = @DOXYGEN_SORT_GROUP_NAMES@ +SORT_BY_SCOPE_NAME = @DOXYGEN_SORT_BY_SCOPE_NAME@ +STRICT_PROTO_MATCHING = @DOXYGEN_STRICT_PROTO_MATCHING@ +GENERATE_TODOLIST = @DOXYGEN_GENERATE_TODOLIST@ +GENERATE_TESTLIST = @DOXYGEN_GENERATE_TESTLIST@ +GENERATE_BUGLIST = @DOXYGEN_GENERATE_BUGLIST@ +GENERATE_DEPRECATEDLIST= @DOXYGEN_GENERATE_DEPRECATEDLIST@ +ENABLED_SECTIONS = @DOXYGEN_ENABLED_SECTIONS@ +MAX_INITIALIZER_LINES = @DOXYGEN_MAX_INITIALIZER_LINES@ +SHOW_USED_FILES = @DOXYGEN_SHOW_USED_FILES@ +SHOW_FILES = @DOXYGEN_SHOW_FILES@ +SHOW_NAMESPACES = @DOXYGEN_SHOW_NAMESPACES@ +FILE_VERSION_FILTER = @DOXYGEN_FILE_VERSION_FILTER@ +LAYOUT_FILE = @DOXYGEN_LAYOUT_FILE@ +CITE_BIB_FILES = @DOXYGEN_CITE_BIB_FILES@ +QUIET = @DOXYGEN_QUIET@ +WARNINGS = @DOXYGEN_WARNINGS@ +WARN_IF_UNDOCUMENTED = @DOXYGEN_WARN_IF_UNDOCUMENTED@ +WARN_IF_DOC_ERROR = @DOXYGEN_WARN_IF_DOC_ERROR@ +WARN_NO_PARAMDOC = @DOXYGEN_WARN_NO_PARAMDOC@ +WARN_AS_ERROR = @DOXYGEN_WARN_AS_ERROR@ +WARN_FORMAT = @DOXYGEN_WARN_FORMAT@ +WARN_LOGFILE = @DOXYGEN_WARN_LOGFILE@ +INPUT = @DOXYGEN_INPUT@ +INPUT_ENCODING = @DOXYGEN_INPUT_ENCODING@ +FILE_PATTERNS = @DOXYGEN_FILE_PATTERNS@ +RECURSIVE = @DOXYGEN_RECURSIVE@ +EXCLUDE = @DOXYGEN_EXCLUDE@ +EXCLUDE_SYMLINKS = @DOXYGEN_EXCLUDE_SYMLINKS@ +EXCLUDE_PATTERNS = @DOXYGEN_EXCLUDE_PATTERNS@ +EXCLUDE_SYMBOLS = @DOXYGEN_EXCLUDE_SYMBOLS@ +EXAMPLE_PATH = @DOXYGEN_EXAMPLE_PATH@ +EXAMPLE_PATTERNS = @DOXYGEN_EXAMPLE_PATTERNS@ +EXAMPLE_RECURSIVE = @DOXYGEN_EXAMPLE_RECURSIVE@ +IMAGE_PATH = @DOXYGEN_IMAGE_PATH@ +INPUT_FILTER = @DOXYGEN_INPUT_FILTER@ +FILTER_PATTERNS = @DOXYGEN_FILTER_PATTERNS@ +FILTER_SOURCE_FILES = @DOXYGEN_FILTER_SOURCE_FILES@ +FILTER_SOURCE_PATTERNS = @DOXYGEN_FILTER_SOURCE_PATTERNS@ +USE_MDFILE_AS_MAINPAGE = @DOXYGEN_USE_MDFILE_AS_MAINPAGE@ +SOURCE_BROWSER = @DOXYGEN_SOURCE_BROWSER@ +INLINE_SOURCES = @DOXYGEN_INLINE_SOURCES@ +STRIP_CODE_COMMENTS = @DOXYGEN_STRIP_CODE_COMMENTS@ +REFERENCED_BY_RELATION = @DOXYGEN_REFERENCED_BY_RELATION@ +REFERENCES_RELATION = @DOXYGEN_REFERENCES_RELATION@ +REFERENCES_LINK_SOURCE = @DOXYGEN_REFERENCES_LINK_SOURCE@ +SOURCE_TOOLTIPS = @DOXYGEN_SOURCE_TOOLTIPS@ +USE_HTAGS = @DOXYGEN_USE_HTAGS@ +VERBATIM_HEADERS = @DOXYGEN_VERBATIM_HEADERS@ +CLANG_ASSISTED_PARSING = @DOXYGEN_CLANG_ASSISTED_PARSING@ +CLANG_OPTIONS = @DOXYGEN_CLANG_OPTIONS@ +CLANG_DATABASE_PATH = @DOXYGEN_CLANG_DATABASE_PATH@ +ALPHABETICAL_INDEX = @DOXYGEN_ALPHABETICAL_INDEX@ +COLS_IN_ALPHA_INDEX = @DOXYGEN_COLS_IN_ALPHA_INDEX@ +IGNORE_PREFIX = @DOXYGEN_IGNORE_PREFIX@ +GENERATE_HTML = @DOXYGEN_GENERATE_HTML@ +HTML_OUTPUT = @DOXYGEN_HTML_OUTPUT@ +HTML_FILE_EXTENSION = @DOXYGEN_HTML_FILE_EXTENSION@ +HTML_HEADER = @DOXYGEN_HTML_HEADER@ +HTML_FOOTER = @DOXYGEN_HTML_FOOTER@ +HTML_STYLESHEET = @DOXYGEN_HTML_STYLESHEET@ +HTML_EXTRA_STYLESHEET = @DOXYGEN_HTML_EXTRA_STYLESHEET@ +HTML_EXTRA_FILES = @DOXYGEN_HTML_EXTRA_FILES@ +HTML_COLORSTYLE_HUE = @DOXYGEN_HTML_COLORSTYLE_HUE@ +HTML_COLORSTYLE_SAT = @DOXYGEN_HTML_COLORSTYLE_SAT@ +HTML_COLORSTYLE_GAMMA = @DOXYGEN_HTML_COLORSTYLE_GAMMA@ +HTML_TIMESTAMP = @DOXYGEN_HTML_TIMESTAMP@ +HTML_DYNAMIC_MENUS = @DOXYGEN_HTML_DYNAMIC_MENUS@ +HTML_DYNAMIC_SECTIONS = @DOXYGEN_HTML_DYNAMIC_SECTIONS@ +HTML_INDEX_NUM_ENTRIES = @DOXYGEN_HTML_INDEX_NUM_ENTRIES@ +GENERATE_DOCSET = @DOXYGEN_GENERATE_DOCSET@ +DOCSET_FEEDNAME = @DOXYGEN_DOCSET_FEEDNAME@ +DOCSET_BUNDLE_ID = @DOXYGEN_DOCSET_BUNDLE_ID@ +DOCSET_PUBLISHER_ID = @DOXYGEN_DOCSET_PUBLISHER_ID@ +DOCSET_PUBLISHER_NAME = @DOXYGEN_DOCSET_PUBLISHER_NAME@ +GENERATE_HTMLHELP = @DOXYGEN_GENERATE_HTMLHELP@ +CHM_FILE = @DOXYGEN_CHM_FILE@ +HHC_LOCATION = @DOXYGEN_HHC_LOCATION@ +GENERATE_CHI = @DOXYGEN_GENERATE_CHI@ +CHM_INDEX_ENCODING = @DOXYGEN_CHM_INDEX_ENCODING@ +BINARY_TOC = @DOXYGEN_BINARY_TOC@ +TOC_EXPAND = @DOXYGEN_TOC_EXPAND@ +GENERATE_QHP = @DOXYGEN_GENERATE_QHP@ +QCH_FILE = @DOXYGEN_QCH_FILE@ +QHP_NAMESPACE = @DOXYGEN_QHP_NAMESPACE@ +QHP_VIRTUAL_FOLDER = @DOXYGEN_QHP_VIRTUAL_FOLDER@ +QHP_CUST_FILTER_NAME = @DOXYGEN_QHP_CUST_FILTER_NAME@ +QHP_CUST_FILTER_ATTRS = @DOXYGEN_QHP_CUST_FILTER_ATTRS@ +QHP_SECT_FILTER_ATTRS = @DOXYGEN_QHP_SECT_FILTER_ATTRS@ +QHG_LOCATION = @DOXYGEN_QHG_LOCATION@ +GENERATE_ECLIPSEHELP = @DOXYGEN_GENERATE_ECLIPSEHELP@ +ECLIPSE_DOC_ID = @DOXYGEN_ECLIPSE_DOC_ID@ +DISABLE_INDEX = @DOXYGEN_DISABLE_INDEX@ +GENERATE_TREEVIEW = @DOXYGEN_GENERATE_TREEVIEW@ +ENUM_VALUES_PER_LINE = @DOXYGEN_ENUM_VALUES_PER_LINE@ +TREEVIEW_WIDTH = @DOXYGEN_TREEVIEW_WIDTH@ +EXT_LINKS_IN_WINDOW = @DOXYGEN_EXT_LINKS_IN_WINDOW@ +FORMULA_FONTSIZE = @DOXYGEN_FORMULA_FONTSIZE@ +FORMULA_TRANSPARENT = @DOXYGEN_FORMULA_TRANSPARENT@ +FORMULA_MACROFILE = @DOXYGEN_FORMULA_MACROFILE@ +USE_MATHJAX = @DOXYGEN_USE_MATHJAX@ +MATHJAX_FORMAT = @DOXYGEN_MATHJAX_FORMAT@ +MATHJAX_RELPATH = @DOXYGEN_MATHJAX_RELPATH@ +MATHJAX_EXTENSIONS = @DOXYGEN_MATHJAX_EXTENSIONS@ +MATHJAX_CODEFILE = @DOXYGEN_MATHJAX_CODEFILE@ +SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ +SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ +EXTERNAL_SEARCH = @DOXYGEN_EXTERNAL_SEARCH@ +SEARCHENGINE_URL = @DOXYGEN_SEARCHENGINE_URL@ +SEARCHDATA_FILE = @DOXYGEN_SEARCHDATA_FILE@ +EXTERNAL_SEARCH_ID = @DOXYGEN_EXTERNAL_SEARCH_ID@ +EXTRA_SEARCH_MAPPINGS = @DOXYGEN_EXTRA_SEARCH_MAPPINGS@ +GENERATE_LATEX = @DOXYGEN_GENERATE_LATEX@ +LATEX_OUTPUT = @DOXYGEN_LATEX_OUTPUT@ +LATEX_CMD_NAME = @DOXYGEN_LATEX_CMD_NAME@ +MAKEINDEX_CMD_NAME = @DOXYGEN_MAKEINDEX_CMD_NAME@ +LATEX_MAKEINDEX_CMD = @DOXYGEN_LATEX_MAKEINDEX_CMD@ +COMPACT_LATEX = @DOXYGEN_COMPACT_LATEX@ +PAPER_TYPE = @DOXYGEN_PAPER_TYPE@ +EXTRA_PACKAGES = @DOXYGEN_EXTRA_PACKAGES@ +LATEX_HEADER = @DOXYGEN_LATEX_HEADER@ +LATEX_FOOTER = @DOXYGEN_LATEX_FOOTER@ +LATEX_EXTRA_STYLESHEET = @DOXYGEN_LATEX_EXTRA_STYLESHEET@ +LATEX_EXTRA_FILES = @DOXYGEN_LATEX_EXTRA_FILES@ +PDF_HYPERLINKS = @DOXYGEN_PDF_HYPERLINKS@ +USE_PDFLATEX = @DOXYGEN_USE_PDFLATEX@ +LATEX_BATCHMODE = @DOXYGEN_LATEX_BATCHMODE@ +LATEX_HIDE_INDICES = @DOXYGEN_LATEX_HIDE_INDICES@ +LATEX_SOURCE_CODE = @DOXYGEN_LATEX_SOURCE_CODE@ +LATEX_BIB_STYLE = @DOXYGEN_LATEX_BIB_STYLE@ +LATEX_TIMESTAMP = @DOXYGEN_LATEX_TIMESTAMP@ +LATEX_EMOJI_DIRECTORY = @DOXYGEN_LATEX_EMOJI_DIRECTORY@ +GENERATE_RTF = @DOXYGEN_GENERATE_RTF@ +RTF_OUTPUT = @DOXYGEN_RTF_OUTPUT@ +COMPACT_RTF = @DOXYGEN_COMPACT_RTF@ +RTF_HYPERLINKS = @DOXYGEN_RTF_HYPERLINKS@ +RTF_STYLESHEET_FILE = @DOXYGEN_RTF_STYLESHEET_FILE@ +RTF_EXTENSIONS_FILE = @DOXYGEN_RTF_EXTENSIONS_FILE@ +RTF_SOURCE_CODE = @DOXYGEN_RTF_SOURCE_CODE@ +GENERATE_MAN = @DOXYGEN_GENERATE_MAN@ +MAN_OUTPUT = @DOXYGEN_MAN_OUTPUT@ +MAN_EXTENSION = @DOXYGEN_MAN_EXTENSION@ +MAN_SUBDIR = @DOXYGEN_MAN_SUBDIR@ +MAN_LINKS = @DOXYGEN_MAN_LINKS@ +GENERATE_XML = @DOXYGEN_GENERATE_XML@ +XML_OUTPUT = @DOXYGEN_XML_OUTPUT@ +XML_PROGRAMLISTING = @DOXYGEN_XML_PROGRAMLISTING@ +XML_NS_MEMB_FILE_SCOPE = @DOXYGEN_XML_NS_MEMB_FILE_SCOPE@ +GENERATE_DOCBOOK = @DOXYGEN_GENERATE_DOCBOOK@ +DOCBOOK_OUTPUT = @DOXYGEN_DOCBOOK_OUTPUT@ +DOCBOOK_PROGRAMLISTING = @DOXYGEN_DOCBOOK_PROGRAMLISTING@ +GENERATE_AUTOGEN_DEF = @DOXYGEN_GENERATE_AUTOGEN_DEF@ +GENERATE_PERLMOD = @DOXYGEN_GENERATE_PERLMOD@ +PERLMOD_LATEX = @DOXYGEN_PERLMOD_LATEX@ +PERLMOD_PRETTY = @DOXYGEN_PERLMOD_PRETTY@ +PERLMOD_MAKEVAR_PREFIX = @DOXYGEN_PERLMOD_MAKEVAR_PREFIX@ +ENABLE_PREPROCESSING = @DOXYGEN_ENABLE_PREPROCESSING@ +MACRO_EXPANSION = @DOXYGEN_MACRO_EXPANSION@ +EXPAND_ONLY_PREDEF = @DOXYGEN_EXPAND_ONLY_PREDEF@ +SEARCH_INCLUDES = @DOXYGEN_SEARCH_INCLUDES@ +INCLUDE_PATH = @DOXYGEN_INCLUDE_PATH@ +INCLUDE_FILE_PATTERNS = @DOXYGEN_INCLUDE_FILE_PATTERNS@ +PREDEFINED = @DOXYGEN_PREDEFINED@ +EXPAND_AS_DEFINED = @DOXYGEN_EXPAND_AS_DEFINED@ +SKIP_FUNCTION_MACROS = @DOXYGEN_SKIP_FUNCTION_MACROS@ +TAGFILES = @DOXYGEN_TAGFILES@ +GENERATE_TAGFILE = @DOXYGEN_GENERATE_TAGFILE@ +ALLEXTERNALS = @DOXYGEN_ALLEXTERNALS@ +EXTERNAL_GROUPS = @DOXYGEN_EXTERNAL_GROUPS@ +EXTERNAL_PAGES = @DOXYGEN_EXTERNAL_PAGES@ +CLASS_DIAGRAMS = @DOXYGEN_CLASS_DIAGRAMS@ +DIA_PATH = @DOXYGEN_DIA_PATH@ +HIDE_UNDOC_RELATIONS = @DOXYGEN_HIDE_UNDOC_RELATIONS@ +HAVE_DOT = @DOXYGEN_HAVE_DOT@ +DOT_NUM_THREADS = @DOXYGEN_DOT_NUM_THREADS@ +DOT_FONTNAME = @DOXYGEN_DOT_FONTNAME@ +DOT_FONTSIZE = @DOXYGEN_DOT_FONTSIZE@ +DOT_FONTPATH = @DOXYGEN_DOT_FONTPATH@ +CLASS_GRAPH = @DOXYGEN_CLASS_GRAPH@ +COLLABORATION_GRAPH = @DOXYGEN_COLLABORATION_GRAPH@ +GROUP_GRAPHS = @DOXYGEN_GROUP_GRAPHS@ +UML_LOOK = @DOXYGEN_UML_LOOK@ +UML_LIMIT_NUM_FIELDS = @DOXYGEN_UML_LIMIT_NUM_FIELDS@ +TEMPLATE_RELATIONS = @DOXYGEN_TEMPLATE_RELATIONS@ +INCLUDE_GRAPH = @DOXYGEN_INCLUDE_GRAPH@ +INCLUDED_BY_GRAPH = @DOXYGEN_INCLUDED_BY_GRAPH@ +CALL_GRAPH = @DOXYGEN_CALL_GRAPH@ +CALLER_GRAPH = @DOXYGEN_CALLER_GRAPH@ +GRAPHICAL_HIERARCHY = @DOXYGEN_GRAPHICAL_HIERARCHY@ +DIRECTORY_GRAPH = @DOXYGEN_DIRECTORY_GRAPH@ +DOT_IMAGE_FORMAT = @DOXYGEN_DOT_IMAGE_FORMAT@ +INTERACTIVE_SVG = @DOXYGEN_INTERACTIVE_SVG@ +DOT_PATH = @DOXYGEN_DOT_PATH@ +DOTFILE_DIRS = @DOXYGEN_DOTFILE_DIRS@ +MSCFILE_DIRS = @DOXYGEN_MSCFILE_DIRS@ +DIAFILE_DIRS = @DOXYGEN_DIAFILE_DIRS@ +PLANTUML_JAR_PATH = @DOXYGEN_PLANTUML_JAR_PATH@ +PLANTUML_CFG_FILE = @DOXYGEN_PLANTUML_CFG_FILE@ +PLANTUML_INCLUDE_PATH = @DOXYGEN_PLANTUML_INCLUDE_PATH@ +DOT_GRAPH_MAX_NODES = @DOXYGEN_DOT_GRAPH_MAX_NODES@ +MAX_DOT_GRAPH_DEPTH = @DOXYGEN_MAX_DOT_GRAPH_DEPTH@ +DOT_TRANSPARENT = @DOXYGEN_DOT_TRANSPARENT@ +DOT_MULTI_TARGETS = @DOXYGEN_DOT_MULTI_TARGETS@ +GENERATE_LEGEND = @DOXYGEN_GENERATE_LEGEND@ +DOT_CLEANUP = @DOXYGEN_DOT_CLEANUP@ diff --git a/silo/build/CMakeDoxygenDefaults.cmake b/silo/build/CMakeDoxygenDefaults.cmake new file mode 100644 index 00000000..db28798f --- /dev/null +++ b/silo/build/CMakeDoxygenDefaults.cmake @@ -0,0 +1,672 @@ +# +# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! +# + +if(NOT DEFINED DOXYGEN_DOXYFILE_ENCODING) + set(DOXYGEN_DOXYFILE_ENCODING UTF-8) +endif() +if(NOT DEFINED DOXYGEN_PROJECT_NAME) + set(DOXYGEN_PROJECT_NAME "My Project") +endif() +if(NOT DEFINED DOXYGEN_CREATE_SUBDIRS) + set(DOXYGEN_CREATE_SUBDIRS NO) +endif() +if(NOT DEFINED DOXYGEN_ALLOW_UNICODE_NAMES) + set(DOXYGEN_ALLOW_UNICODE_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_OUTPUT_LANGUAGE) + set(DOXYGEN_OUTPUT_LANGUAGE English) +endif() +if(NOT DEFINED DOXYGEN_OUTPUT_TEXT_DIRECTION) + set(DOXYGEN_OUTPUT_TEXT_DIRECTION None) +endif() +if(NOT DEFINED DOXYGEN_BRIEF_MEMBER_DESC) + set(DOXYGEN_BRIEF_MEMBER_DESC YES) +endif() +if(NOT DEFINED DOXYGEN_REPEAT_BRIEF) + set(DOXYGEN_REPEAT_BRIEF YES) +endif() +if(NOT DEFINED DOXYGEN_ABBREVIATE_BRIEF) + set(DOXYGEN_ABBREVIATE_BRIEF "The $name class" + "The $name widget" + "The $name file" + is + provides + specifies + contains + represents + a + an + the) +endif() +if(NOT DEFINED DOXYGEN_ALWAYS_DETAILED_SEC) + set(DOXYGEN_ALWAYS_DETAILED_SEC NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_INHERITED_MEMB) + set(DOXYGEN_INLINE_INHERITED_MEMB NO) +endif() +if(NOT DEFINED DOXYGEN_FULL_PATH_NAMES) + set(DOXYGEN_FULL_PATH_NAMES YES) +endif() +if(NOT DEFINED DOXYGEN_SHORT_NAMES) + set(DOXYGEN_SHORT_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_JAVADOC_AUTOBRIEF) + set(DOXYGEN_JAVADOC_AUTOBRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_JAVADOC_BANNER) + set(DOXYGEN_JAVADOC_BANNER NO) +endif() +if(NOT DEFINED DOXYGEN_QT_AUTOBRIEF) + set(DOXYGEN_QT_AUTOBRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_MULTILINE_CPP_IS_BRIEF) + set(DOXYGEN_MULTILINE_CPP_IS_BRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_INHERIT_DOCS) + set(DOXYGEN_INHERIT_DOCS YES) +endif() +if(NOT DEFINED DOXYGEN_SEPARATE_MEMBER_PAGES) + set(DOXYGEN_SEPARATE_MEMBER_PAGES NO) +endif() +if(NOT DEFINED DOXYGEN_TAB_SIZE) + set(DOXYGEN_TAB_SIZE 4) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_FOR_C) + set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_JAVA) + set(DOXYGEN_OPTIMIZE_OUTPUT_JAVA NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_FOR_FORTRAN) + set(DOXYGEN_OPTIMIZE_FOR_FORTRAN NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_VHDL) + set(DOXYGEN_OPTIMIZE_OUTPUT_VHDL NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_SLICE) + set(DOXYGEN_OPTIMIZE_OUTPUT_SLICE NO) +endif() +if(NOT DEFINED DOXYGEN_MARKDOWN_SUPPORT) + set(DOXYGEN_MARKDOWN_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_TOC_INCLUDE_HEADINGS) + set(DOXYGEN_TOC_INCLUDE_HEADINGS 5) +endif() +if(NOT DEFINED DOXYGEN_AUTOLINK_SUPPORT) + set(DOXYGEN_AUTOLINK_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_BUILTIN_STL_SUPPORT) + set(DOXYGEN_BUILTIN_STL_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_CPP_CLI_SUPPORT) + set(DOXYGEN_CPP_CLI_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_SIP_SUPPORT) + set(DOXYGEN_SIP_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_IDL_PROPERTY_SUPPORT) + set(DOXYGEN_IDL_PROPERTY_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_DISTRIBUTE_GROUP_DOC) + set(DOXYGEN_DISTRIBUTE_GROUP_DOC NO) +endif() +if(NOT DEFINED DOXYGEN_GROUP_NESTED_COMPOUNDS) + set(DOXYGEN_GROUP_NESTED_COMPOUNDS NO) +endif() +if(NOT DEFINED DOXYGEN_SUBGROUPING) + set(DOXYGEN_SUBGROUPING YES) +endif() +if(NOT DEFINED DOXYGEN_INLINE_GROUPED_CLASSES) + set(DOXYGEN_INLINE_GROUPED_CLASSES NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_SIMPLE_STRUCTS) + set(DOXYGEN_INLINE_SIMPLE_STRUCTS NO) +endif() +if(NOT DEFINED DOXYGEN_TYPEDEF_HIDES_STRUCT) + set(DOXYGEN_TYPEDEF_HIDES_STRUCT NO) +endif() +if(NOT DEFINED DOXYGEN_LOOKUP_CACHE_SIZE) + set(DOXYGEN_LOOKUP_CACHE_SIZE 0) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_ALL) + set(DOXYGEN_EXTRACT_ALL NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PRIVATE) + set(DOXYGEN_EXTRACT_PRIVATE NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PRIV_VIRTUAL) + set(DOXYGEN_EXTRACT_PRIV_VIRTUAL NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PACKAGE) + set(DOXYGEN_EXTRACT_PACKAGE NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_STATIC) + set(DOXYGEN_EXTRACT_STATIC NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_CLASSES) + set(DOXYGEN_EXTRACT_LOCAL_CLASSES YES) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_METHODS) + set(DOXYGEN_EXTRACT_LOCAL_METHODS NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_ANON_NSPACES) + set(DOXYGEN_EXTRACT_ANON_NSPACES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_MEMBERS) + set(DOXYGEN_HIDE_UNDOC_MEMBERS NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_CLASSES) + set(DOXYGEN_HIDE_UNDOC_CLASSES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_FRIEND_COMPOUNDS) + set(DOXYGEN_HIDE_FRIEND_COMPOUNDS NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_IN_BODY_DOCS) + set(DOXYGEN_HIDE_IN_BODY_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_INTERNAL_DOCS) + set(DOXYGEN_INTERNAL_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_CASE_SENSE_NAMES) + set(DOXYGEN_CASE_SENSE_NAMES YES) +endif() +if(NOT DEFINED DOXYGEN_HIDE_SCOPE_NAMES) + set(DOXYGEN_HIDE_SCOPE_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_COMPOUND_REFERENCE) + set(DOXYGEN_HIDE_COMPOUND_REFERENCE NO) +endif() +if(NOT DEFINED DOXYGEN_SHOW_INCLUDE_FILES) + set(DOXYGEN_SHOW_INCLUDE_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_GROUPED_MEMB_INC) + set(DOXYGEN_SHOW_GROUPED_MEMB_INC NO) +endif() +if(NOT DEFINED DOXYGEN_FORCE_LOCAL_INCLUDES) + set(DOXYGEN_FORCE_LOCAL_INCLUDES NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_INFO) + set(DOXYGEN_INLINE_INFO YES) +endif() +if(NOT DEFINED DOXYGEN_SORT_MEMBER_DOCS) + set(DOXYGEN_SORT_MEMBER_DOCS YES) +endif() +if(NOT DEFINED DOXYGEN_SORT_BRIEF_DOCS) + set(DOXYGEN_SORT_BRIEF_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_MEMBERS_CTORS_1ST) + set(DOXYGEN_SORT_MEMBERS_CTORS_1ST NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_GROUP_NAMES) + set(DOXYGEN_SORT_GROUP_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_BY_SCOPE_NAME) + set(DOXYGEN_SORT_BY_SCOPE_NAME NO) +endif() +if(NOT DEFINED DOXYGEN_STRICT_PROTO_MATCHING) + set(DOXYGEN_STRICT_PROTO_MATCHING NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TODOLIST) + set(DOXYGEN_GENERATE_TODOLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TESTLIST) + set(DOXYGEN_GENERATE_TESTLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_BUGLIST) + set(DOXYGEN_GENERATE_BUGLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DEPRECATEDLIST) + set(DOXYGEN_GENERATE_DEPRECATEDLIST YES) +endif() +if(NOT DEFINED DOXYGEN_MAX_INITIALIZER_LINES) + set(DOXYGEN_MAX_INITIALIZER_LINES 30) +endif() +if(NOT DEFINED DOXYGEN_SHOW_USED_FILES) + set(DOXYGEN_SHOW_USED_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_FILES) + set(DOXYGEN_SHOW_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_NAMESPACES) + set(DOXYGEN_SHOW_NAMESPACES YES) +endif() +if(NOT DEFINED DOXYGEN_QUIET) + set(DOXYGEN_QUIET NO) +endif() +if(NOT DEFINED DOXYGEN_WARNINGS) + set(DOXYGEN_WARNINGS YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_IF_UNDOCUMENTED) + set(DOXYGEN_WARN_IF_UNDOCUMENTED YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_IF_DOC_ERROR) + set(DOXYGEN_WARN_IF_DOC_ERROR YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_NO_PARAMDOC) + set(DOXYGEN_WARN_NO_PARAMDOC NO) +endif() +if(NOT DEFINED DOXYGEN_WARN_AS_ERROR) + set(DOXYGEN_WARN_AS_ERROR NO) +endif() +if(NOT DEFINED DOXYGEN_WARN_FORMAT) + set(DOXYGEN_WARN_FORMAT "$file:$line: $text") +endif() +if(NOT DEFINED DOXYGEN_INPUT_ENCODING) + set(DOXYGEN_INPUT_ENCODING UTF-8) +endif() +if(NOT DEFINED DOXYGEN_FILE_PATTERNS) + set(DOXYGEN_FILE_PATTERNS *.c + *.cc + *.cxx + *.cpp + *.c++ + *.java + *.ii + *.ixx + *.ipp + *.i++ + *.inl + *.idl + *.ddl + *.odl + *.h + *.hh + *.hxx + *.hpp + *.h++ + *.cs + *.d + *.php + *.php4 + *.php5 + *.phtml + *.inc + *.m + *.markdown + *.md + *.mm + *.dox + *.doc + *.txt + *.py + *.pyw + *.f90 + *.f95 + *.f03 + *.f08 + *.f + *.for + *.tcl + *.vhd + *.vhdl + *.ucf + *.qsf + *.ice) +endif() +if(NOT DEFINED DOXYGEN_RECURSIVE) + set(DOXYGEN_RECURSIVE NO) +endif() +if(NOT DEFINED DOXYGEN_EXCLUDE_SYMLINKS) + set(DOXYGEN_EXCLUDE_SYMLINKS NO) +endif() +if(NOT DEFINED DOXYGEN_EXAMPLE_PATTERNS) + set(DOXYGEN_EXAMPLE_PATTERNS *) +endif() +if(NOT DEFINED DOXYGEN_EXAMPLE_RECURSIVE) + set(DOXYGEN_EXAMPLE_RECURSIVE NO) +endif() +if(NOT DEFINED DOXYGEN_FILTER_SOURCE_FILES) + set(DOXYGEN_FILTER_SOURCE_FILES NO) +endif() +if(NOT DEFINED DOXYGEN_SOURCE_BROWSER) + set(DOXYGEN_SOURCE_BROWSER NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_SOURCES) + set(DOXYGEN_INLINE_SOURCES NO) +endif() +if(NOT DEFINED DOXYGEN_STRIP_CODE_COMMENTS) + set(DOXYGEN_STRIP_CODE_COMMENTS YES) +endif() +if(NOT DEFINED DOXYGEN_REFERENCED_BY_RELATION) + set(DOXYGEN_REFERENCED_BY_RELATION NO) +endif() +if(NOT DEFINED DOXYGEN_REFERENCES_RELATION) + set(DOXYGEN_REFERENCES_RELATION NO) +endif() +if(NOT DEFINED DOXYGEN_REFERENCES_LINK_SOURCE) + set(DOXYGEN_REFERENCES_LINK_SOURCE YES) +endif() +if(NOT DEFINED DOXYGEN_SOURCE_TOOLTIPS) + set(DOXYGEN_SOURCE_TOOLTIPS YES) +endif() +if(NOT DEFINED DOXYGEN_USE_HTAGS) + set(DOXYGEN_USE_HTAGS NO) +endif() +if(NOT DEFINED DOXYGEN_VERBATIM_HEADERS) + set(DOXYGEN_VERBATIM_HEADERS YES) +endif() +if(NOT DEFINED DOXYGEN_CLANG_ASSISTED_PARSING) + set(DOXYGEN_CLANG_ASSISTED_PARSING NO) +endif() +if(NOT DEFINED DOXYGEN_ALPHABETICAL_INDEX) + set(DOXYGEN_ALPHABETICAL_INDEX YES) +endif() +if(NOT DEFINED DOXYGEN_COLS_IN_ALPHA_INDEX) + set(DOXYGEN_COLS_IN_ALPHA_INDEX 5) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_HTML) + set(DOXYGEN_GENERATE_HTML YES) +endif() +if(NOT DEFINED DOXYGEN_HTML_OUTPUT) + set(DOXYGEN_HTML_OUTPUT html) +endif() +if(NOT DEFINED DOXYGEN_HTML_FILE_EXTENSION) + set(DOXYGEN_HTML_FILE_EXTENSION .html) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_HUE) + set(DOXYGEN_HTML_COLORSTYLE_HUE 220) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_SAT) + set(DOXYGEN_HTML_COLORSTYLE_SAT 100) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_GAMMA) + set(DOXYGEN_HTML_COLORSTYLE_GAMMA 80) +endif() +if(NOT DEFINED DOXYGEN_HTML_TIMESTAMP) + set(DOXYGEN_HTML_TIMESTAMP NO) +endif() +if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_MENUS) + set(DOXYGEN_HTML_DYNAMIC_MENUS YES) +endif() +if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_SECTIONS) + set(DOXYGEN_HTML_DYNAMIC_SECTIONS NO) +endif() +if(NOT DEFINED DOXYGEN_HTML_INDEX_NUM_ENTRIES) + set(DOXYGEN_HTML_INDEX_NUM_ENTRIES 100) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DOCSET) + set(DOXYGEN_GENERATE_DOCSET NO) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_FEEDNAME) + set(DOXYGEN_DOCSET_FEEDNAME "Doxygen generated docs") +endif() +if(NOT DEFINED DOXYGEN_DOCSET_BUNDLE_ID) + set(DOXYGEN_DOCSET_BUNDLE_ID org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_ID) + set(DOXYGEN_DOCSET_PUBLISHER_ID org.doxygen.Publisher) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_NAME) + set(DOXYGEN_DOCSET_PUBLISHER_NAME Publisher) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_HTMLHELP) + set(DOXYGEN_GENERATE_HTMLHELP NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_CHI) + set(DOXYGEN_GENERATE_CHI NO) +endif() +if(NOT DEFINED DOXYGEN_BINARY_TOC) + set(DOXYGEN_BINARY_TOC NO) +endif() +if(NOT DEFINED DOXYGEN_TOC_EXPAND) + set(DOXYGEN_TOC_EXPAND NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_QHP) + set(DOXYGEN_GENERATE_QHP NO) +endif() +if(NOT DEFINED DOXYGEN_QHP_NAMESPACE) + set(DOXYGEN_QHP_NAMESPACE org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_QHP_VIRTUAL_FOLDER) + set(DOXYGEN_QHP_VIRTUAL_FOLDER doc) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_ECLIPSEHELP) + set(DOXYGEN_GENERATE_ECLIPSEHELP NO) +endif() +if(NOT DEFINED DOXYGEN_ECLIPSE_DOC_ID) + set(DOXYGEN_ECLIPSE_DOC_ID org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_DISABLE_INDEX) + set(DOXYGEN_DISABLE_INDEX NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TREEVIEW) + set(DOXYGEN_GENERATE_TREEVIEW NO) +endif() +if(NOT DEFINED DOXYGEN_ENUM_VALUES_PER_LINE) + set(DOXYGEN_ENUM_VALUES_PER_LINE 4) +endif() +if(NOT DEFINED DOXYGEN_TREEVIEW_WIDTH) + set(DOXYGEN_TREEVIEW_WIDTH 250) +endif() +if(NOT DEFINED DOXYGEN_EXT_LINKS_IN_WINDOW) + set(DOXYGEN_EXT_LINKS_IN_WINDOW NO) +endif() +if(NOT DEFINED DOXYGEN_FORMULA_FONTSIZE) + set(DOXYGEN_FORMULA_FONTSIZE 10) +endif() +if(NOT DEFINED DOXYGEN_FORMULA_TRANSPARENT) + set(DOXYGEN_FORMULA_TRANSPARENT YES) +endif() +if(NOT DEFINED DOXYGEN_USE_MATHJAX) + set(DOXYGEN_USE_MATHJAX NO) +endif() +if(NOT DEFINED DOXYGEN_MATHJAX_FORMAT) + set(DOXYGEN_MATHJAX_FORMAT HTML-CSS) +endif() +if(NOT DEFINED DOXYGEN_MATHJAX_RELPATH) + set(DOXYGEN_MATHJAX_RELPATH https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/) +endif() +if(NOT DEFINED DOXYGEN_SEARCHENGINE) + set(DOXYGEN_SEARCHENGINE YES) +endif() +if(NOT DEFINED DOXYGEN_SERVER_BASED_SEARCH) + set(DOXYGEN_SERVER_BASED_SEARCH NO) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_SEARCH) + set(DOXYGEN_EXTERNAL_SEARCH NO) +endif() +if(NOT DEFINED DOXYGEN_SEARCHDATA_FILE) + set(DOXYGEN_SEARCHDATA_FILE searchdata.xml) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_LATEX) + set(DOXYGEN_GENERATE_LATEX YES) +endif() +if(NOT DEFINED DOXYGEN_LATEX_OUTPUT) + set(DOXYGEN_LATEX_OUTPUT latex) +endif() +if(NOT DEFINED DOXYGEN_MAKEINDEX_CMD_NAME) + set(DOXYGEN_MAKEINDEX_CMD_NAME makeindex) +endif() +if(NOT DEFINED DOXYGEN_LATEX_MAKEINDEX_CMD) + set(DOXYGEN_LATEX_MAKEINDEX_CMD makeindex) +endif() +if(NOT DEFINED DOXYGEN_COMPACT_LATEX) + set(DOXYGEN_COMPACT_LATEX NO) +endif() +if(NOT DEFINED DOXYGEN_PAPER_TYPE) + set(DOXYGEN_PAPER_TYPE a4) +endif() +if(NOT DEFINED DOXYGEN_PDF_HYPERLINKS) + set(DOXYGEN_PDF_HYPERLINKS YES) +endif() +if(NOT DEFINED DOXYGEN_USE_PDFLATEX) + set(DOXYGEN_USE_PDFLATEX YES) +endif() +if(NOT DEFINED DOXYGEN_LATEX_BATCHMODE) + set(DOXYGEN_LATEX_BATCHMODE NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_HIDE_INDICES) + set(DOXYGEN_LATEX_HIDE_INDICES NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_SOURCE_CODE) + set(DOXYGEN_LATEX_SOURCE_CODE NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_BIB_STYLE) + set(DOXYGEN_LATEX_BIB_STYLE plain) +endif() +if(NOT DEFINED DOXYGEN_LATEX_TIMESTAMP) + set(DOXYGEN_LATEX_TIMESTAMP NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_RTF) + set(DOXYGEN_GENERATE_RTF NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_OUTPUT) + set(DOXYGEN_RTF_OUTPUT rtf) +endif() +if(NOT DEFINED DOXYGEN_COMPACT_RTF) + set(DOXYGEN_COMPACT_RTF NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_HYPERLINKS) + set(DOXYGEN_RTF_HYPERLINKS NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_SOURCE_CODE) + set(DOXYGEN_RTF_SOURCE_CODE NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_MAN) + set(DOXYGEN_GENERATE_MAN NO) +endif() +if(NOT DEFINED DOXYGEN_MAN_OUTPUT) + set(DOXYGEN_MAN_OUTPUT man) +endif() +if(NOT DEFINED DOXYGEN_MAN_EXTENSION) + set(DOXYGEN_MAN_EXTENSION .3) +endif() +if(NOT DEFINED DOXYGEN_MAN_LINKS) + set(DOXYGEN_MAN_LINKS NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_XML) + set(DOXYGEN_GENERATE_XML NO) +endif() +if(NOT DEFINED DOXYGEN_XML_OUTPUT) + set(DOXYGEN_XML_OUTPUT xml) +endif() +if(NOT DEFINED DOXYGEN_XML_PROGRAMLISTING) + set(DOXYGEN_XML_PROGRAMLISTING YES) +endif() +if(NOT DEFINED DOXYGEN_XML_NS_MEMB_FILE_SCOPE) + set(DOXYGEN_XML_NS_MEMB_FILE_SCOPE NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DOCBOOK) + set(DOXYGEN_GENERATE_DOCBOOK NO) +endif() +if(NOT DEFINED DOXYGEN_DOCBOOK_OUTPUT) + set(DOXYGEN_DOCBOOK_OUTPUT docbook) +endif() +if(NOT DEFINED DOXYGEN_DOCBOOK_PROGRAMLISTING) + set(DOXYGEN_DOCBOOK_PROGRAMLISTING NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_AUTOGEN_DEF) + set(DOXYGEN_GENERATE_AUTOGEN_DEF NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_PERLMOD) + set(DOXYGEN_GENERATE_PERLMOD NO) +endif() +if(NOT DEFINED DOXYGEN_PERLMOD_LATEX) + set(DOXYGEN_PERLMOD_LATEX NO) +endif() +if(NOT DEFINED DOXYGEN_PERLMOD_PRETTY) + set(DOXYGEN_PERLMOD_PRETTY YES) +endif() +if(NOT DEFINED DOXYGEN_ENABLE_PREPROCESSING) + set(DOXYGEN_ENABLE_PREPROCESSING YES) +endif() +if(NOT DEFINED DOXYGEN_MACRO_EXPANSION) + set(DOXYGEN_MACRO_EXPANSION NO) +endif() +if(NOT DEFINED DOXYGEN_EXPAND_ONLY_PREDEF) + set(DOXYGEN_EXPAND_ONLY_PREDEF NO) +endif() +if(NOT DEFINED DOXYGEN_SEARCH_INCLUDES) + set(DOXYGEN_SEARCH_INCLUDES YES) +endif() +if(NOT DEFINED DOXYGEN_SKIP_FUNCTION_MACROS) + set(DOXYGEN_SKIP_FUNCTION_MACROS YES) +endif() +if(NOT DEFINED DOXYGEN_ALLEXTERNALS) + set(DOXYGEN_ALLEXTERNALS NO) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_GROUPS) + set(DOXYGEN_EXTERNAL_GROUPS YES) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_PAGES) + set(DOXYGEN_EXTERNAL_PAGES YES) +endif() +if(NOT DEFINED DOXYGEN_CLASS_DIAGRAMS) + set(DOXYGEN_CLASS_DIAGRAMS YES) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_RELATIONS) + set(DOXYGEN_HIDE_UNDOC_RELATIONS YES) +endif() +if(NOT DEFINED DOXYGEN_HAVE_DOT) + set(DOXYGEN_HAVE_DOT YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_NUM_THREADS) + set(DOXYGEN_DOT_NUM_THREADS 0) +endif() +if(NOT DEFINED DOXYGEN_DOT_FONTNAME) + set(DOXYGEN_DOT_FONTNAME Helvetica) +endif() +if(NOT DEFINED DOXYGEN_DOT_FONTSIZE) + set(DOXYGEN_DOT_FONTSIZE 10) +endif() +if(NOT DEFINED DOXYGEN_CLASS_GRAPH) + set(DOXYGEN_CLASS_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_COLLABORATION_GRAPH) + set(DOXYGEN_COLLABORATION_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_GROUP_GRAPHS) + set(DOXYGEN_GROUP_GRAPHS YES) +endif() +if(NOT DEFINED DOXYGEN_UML_LOOK) + set(DOXYGEN_UML_LOOK NO) +endif() +if(NOT DEFINED DOXYGEN_UML_LIMIT_NUM_FIELDS) + set(DOXYGEN_UML_LIMIT_NUM_FIELDS 10) +endif() +if(NOT DEFINED DOXYGEN_TEMPLATE_RELATIONS) + set(DOXYGEN_TEMPLATE_RELATIONS NO) +endif() +if(NOT DEFINED DOXYGEN_INCLUDE_GRAPH) + set(DOXYGEN_INCLUDE_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_INCLUDED_BY_GRAPH) + set(DOXYGEN_INCLUDED_BY_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_CALL_GRAPH) + set(DOXYGEN_CALL_GRAPH NO) +endif() +if(NOT DEFINED DOXYGEN_CALLER_GRAPH) + set(DOXYGEN_CALLER_GRAPH NO) +endif() +if(NOT DEFINED DOXYGEN_GRAPHICAL_HIERARCHY) + set(DOXYGEN_GRAPHICAL_HIERARCHY YES) +endif() +if(NOT DEFINED DOXYGEN_DIRECTORY_GRAPH) + set(DOXYGEN_DIRECTORY_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_IMAGE_FORMAT) + set(DOXYGEN_DOT_IMAGE_FORMAT png) +endif() +if(NOT DEFINED DOXYGEN_INTERACTIVE_SVG) + set(DOXYGEN_INTERACTIVE_SVG NO) +endif() +if(NOT DEFINED DOXYGEN_DOT_GRAPH_MAX_NODES) + set(DOXYGEN_DOT_GRAPH_MAX_NODES 50) +endif() +if(NOT DEFINED DOXYGEN_MAX_DOT_GRAPH_DEPTH) + set(DOXYGEN_MAX_DOT_GRAPH_DEPTH 0) +endif() +if(NOT DEFINED DOXYGEN_DOT_TRANSPARENT) + set(DOXYGEN_DOT_TRANSPARENT NO) +endif() +if(NOT DEFINED DOXYGEN_DOT_MULTI_TARGETS) + set(DOXYGEN_DOT_MULTI_TARGETS NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_LEGEND) + set(DOXYGEN_GENERATE_LEGEND YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_CLEANUP) + set(DOXYGEN_DOT_CLEANUP YES) +endif() diff --git a/silo/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake b/silo/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake new file mode 100644 index 00000000..278ef39e --- /dev/null +++ b/silo/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake @@ -0,0 +1,88 @@ +set(CMAKE_CXX_COMPILER "/usr/bin/c++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "GNU") +set(CMAKE_CXX_COMPILER_VERSION "9.4.0") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_CXX_COMPILER_AR "/usr/bin/gcc-ar-9") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/gcc-ranlib-9") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCXX 1) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW ) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/silo/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin b/silo/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin new file mode 100755 index 0000000000000000000000000000000000000000..156cfcfc782ba2dc2f291ca842e4a4516fe2c356 GIT binary patch literal 16560 zcmeHOZ)_Y#6`%9j$)!!smoyvn%vnwdyOtmo7lvVrpwuPwvXOF z?)Io%(NJWFI0cgkRnUGwDn+15d};Xrp8!W`(@F?vgj9;4ULUuER;5=OoERY94~Tj#n5l!?6b&9!;ua#J-b(4kCRM{I=sHkOR#BOG z#%tt&k@=cGjXb(=g7g^edKjC9R;9Pl=|qjSMtyuDiO|-KSqux#soiM zil-YjWkoQ$^@d5$jXk8th(0hKecej_JO1uvJx!VsVHe(`Xu-(-?gKp;7pi|d;BG!b z{#NRT5XGO7!Yg)X(jy&vcW08VnRKo^**Y2SXzkdmm-6}^=^ERGK5$I+4Gak|Gm9LB zQTD|~Dr5cgv-h1U#vXj`#^jmevtRqwV*@`q_5|BNpD2R~^?68O8T04^Wz_Y5268l( z0WYS0oR!21Ut!?2I(1us+faue1Wv2NkFLPq3jDk4$P0+yD2A&;nC9qY!W>KI5}EYF zDJWu(H*e#4>>$5j<9QAszi8v>R)@5gya;#^@FL(vz>9zv0WShx1iT3R zQxW)6^X-2#rY{AI(@j6$Erjv8S*xM?k}>^U;JnnY?t2R8tJOQd4$!<^pgfemCrdp- zmfPRxuUve@LfF4( zZ35Q=m9zv0WShx1iT1%5%415MZk-I7lHqi2>2Xt8-?f}=skR(1n=qcV`j2o6_2-t zPhcn{pBPCWhy4Ob__q2#fbVGWJ=gr3)oKB75%6)qz(Tb;40r|b8Nl$BYV{?+rvY2& zr5L^&#pHYVi11B@d|TJ94xEKLY``0eB-tQvU}lE0A3QoP;ap1L(R87 z6nIn|+;ZT(@82O`L!$ou@EK+~$YVmA7JT+YoBEK51w*GAy4S5b367x%e;J6!;PWx4 zPXUVFVCYOkf3W3?{#a0(X^aJTexa!+*mi1_5e!eS?h8h8!EiL#77gy~3Tj=!mabr^ zD;SXP7k>%rp9eeM`#B7xm%Ipg5%415MZk-I7XdE3dANt22vBVv`=z1RRqWpw_}!g*aRvQ+q<30EcaGbwHM+f zDR?6*+doh3g*U^p%yERrK3RU5>i&+m9F2;lV;iQGHAnH_ zMhOmWB=hEYCO?wMm`N*NESZV&q!`U-3z?LaO6uXZj`sROcw{7PCW^(xl$pv|#VIjX zOk`7LvYgFMfr_nUf~4gT?LL%vFx5Rg+zpP>nN%^_)vu2h3c~zoyuBlx8_S!vKe>?& zOA`L!2FtxiqK9H;Y@o-4QzlN^Nn!SUWFUH|zuQ?OkFx*;=XlJRK^BajBf{*9AMT3A z&BMLDM`MHLV6-b9L#y%-%xI}Buks%sdr2h|R)STQ&do$3j)OBMN~yy!AnQCSV(vVxOW>D2o`;N;nuKp0c_5jWf!9+L zG}b1PpwA_xuLhmc;5-;lWYeS29PBq8;wf|(@L3qd?%DG%mvOxfQxxuWX%KE&HWt=5J_V2#_ zuRuLs6W8NUnoNZJJV>nc#d*Z9!pE+!ksc$PV;wFtKIPKq^)n;Ot)%}gmwtp481eVp zp4|4Hb?NhZoROcG*@k=kewXw){z4;3LY!arVBP=xjQe}Y+BNJXH|o>-r85i0HaB0|z_3fT{_HUC_` z2^qA-{(1csB7OG5@^m>|6n-F(Bk>x~`gheBm0^85^4PJ9M%W-tY@Ej!Qf?35|M343 eZo5OD2JQ}*arVoyxD2hQpA0LBwJrr$QT!cqBtQ)S literal 0 HcmV?d00001 diff --git a/silo/build/CMakeFiles/3.17.0/CMakeSystem.cmake b/silo/build/CMakeFiles/3.17.0/CMakeSystem.cmake new file mode 100644 index 00000000..0fd1f759 --- /dev/null +++ b/silo/build/CMakeFiles/3.17.0/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-5.4.0-113-generic") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "5.4.0-113-generic") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Linux-5.4.0-113-generic") +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_VERSION "5.4.0-113-generic") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/silo/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp b/silo/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 00000000..69cfdba6 --- /dev/null +++ b/silo/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,660 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_dialect_default = "INFO" ":" "dialect_default[" +#if CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} diff --git a/silo/build/CMakeFiles/CMakeError.log b/silo/build/CMakeFiles/CMakeError.log new file mode 100644 index 00000000..e5bdf9cc --- /dev/null +++ b/silo/build/CMakeFiles/CMakeError.log @@ -0,0 +1,50 @@ +Performing C++ SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output: +Change Dir: /home/tngngn/ccbench/silo/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_dec5b && [1/2] Building CXX object CMakeFiles/cmTC_dec5b.dir/src.cxx.o +[2/2] Linking CXX executable cmTC_dec5b +FAILED: cmTC_dec5b +: && /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD CMakeFiles/cmTC_dec5b.dir/src.cxx.o -o cmTC_dec5b && : +/usr/bin/ld: CMakeFiles/cmTC_dec5b.dir/src.cxx.o: in function `main': +src.cxx:(.text+0x46): undefined reference to `pthread_create' +/usr/bin/ld: src.cxx:(.text+0x52): undefined reference to `pthread_detach' +/usr/bin/ld: src.cxx:(.text+0x5e): undefined reference to `pthread_cancel' +/usr/bin/ld: src.cxx:(.text+0x6f): undefined reference to `pthread_join' +collect2: error: ld returned 1 exit status +ninja: build stopped: subcommand failed. + + +Source file was: +#include + +void* test_func(void* data) +{ + return data; +} + +int main(void) +{ + pthread_t thread; + pthread_create(&thread, NULL, test_func, NULL); + pthread_detach(thread); + pthread_cancel(thread); + pthread_join(thread, NULL); + pthread_atfork(NULL, NULL, NULL); + pthread_exit(NULL); + + return 0; +} + +Determining if the function pthread_create exists in the pthreads failed with the following output: +Change Dir: /home/tngngn/ccbench/silo/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_15435 && [1/2] Building CXX object CMakeFiles/cmTC_15435.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_15435 +FAILED: cmTC_15435 +: && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_15435.dir/CheckFunctionExists.cxx.o -o cmTC_15435 -lpthreads && : +/usr/bin/ld: -lpthreads が見つかりません +collect2: error: ld returned 1 exit status +ninja: build stopped: subcommand failed. + + + diff --git a/silo/build/CMakeFiles/CMakeOutput.log b/silo/build/CMakeFiles/CMakeOutput.log new file mode 100644 index 00000000..cd4ff40e --- /dev/null +++ b/silo/build/CMakeFiles/CMakeOutput.log @@ -0,0 +1,235 @@ +The system is: Linux - 5.4.0-113-generic - x86_64 +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: /usr/bin/c++ +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" + +The CXX compiler identification is GNU, found in "/home/tngngn/ccbench/silo/build/CMakeFiles/3.17.0/CompilerIdCXX/a.out" + +Determining if the CXX compiler works passed with the following output: +Change Dir: /home/tngngn/ccbench/silo/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_63ded && [1/2] Building CXX object CMakeFiles/cmTC_63ded.dir/testCXXCompiler.cxx.o +[2/2] Linking CXX executable cmTC_63ded + + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: /home/tngngn/ccbench/silo/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_e8f51 && [1/2] Building CXX object CMakeFiles/cmTC_e8f51.dir/CMakeCXXCompilerABI.cpp.o +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_e8f51.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_e8f51.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccDw4HYY.s +GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9" +ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include" +#include "..." search starts here: +#include <...> search starts here: + /usr/include/c++/9 + /usr/include/x86_64-linux-gnu/c++/9 + /usr/include/c++/9/backward + /usr/lib/gcc/x86_64-linux-gnu/9/include + /usr/local/include + /usr/include/x86_64-linux-gnu + /usr/include +End of search list. +GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_e8f51.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + as -v --64 -o CMakeFiles/cmTC_e8f51.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccDw4HYY.s +GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34 +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_e8f51.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +[2/2] Linking CXX executable cmTC_e8f51 +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_e8f51' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccS6KCjg.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_e8f51 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_e8f51.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_e8f51' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/usr/include/c++/9] + add: [/usr/include/x86_64-linux-gnu/c++/9] + add: [/usr/include/c++/9/backward] + add: [/usr/lib/gcc/x86_64-linux-gnu/9/include] + add: [/usr/local/include] + add: [/usr/include/x86_64-linux-gnu] + add: [/usr/include] + end of search list found + collapse include dir [/usr/include/c++/9] ==> [/usr/include/c++/9] + collapse include dir [/usr/include/x86_64-linux-gnu/c++/9] ==> [/usr/include/x86_64-linux-gnu/c++/9] + collapse include dir [/usr/include/c++/9/backward] ==> [/usr/include/c++/9/backward] + collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/9/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/9/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/tngngn/ccbench/silo/build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/local/bin/ninja cmTC_e8f51 && [1/2] Building CXX object CMakeFiles/cmTC_e8f51.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_e8f51.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_e8f51.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccDw4HYY.s] + ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9"] + ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/include/c++/9] + ignore line: [ /usr/include/x86_64-linux-gnu/c++/9] + ignore line: [ /usr/include/c++/9/backward] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/include/x86_64-linux-gnu] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_e8f51.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_e8f51.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccDw4HYY.s] + ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_e8f51.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [[2/2] Linking CXX executable cmTC_e8f51] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_e8f51' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccS6KCjg.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_e8f51 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_e8f51.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccS6KCjg.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--as-needed] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-o] ==> ignore + arg [cmTC_e8f51] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] + arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] + arg [CMakeFiles/cmTC_e8f51.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] ==> ignore + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9] ==> [/usr/lib/gcc/x86_64-linux-gnu/9] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> [/usr/lib] + implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc] + implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] + implicit fwks: [] + + +Determining if the include file pthread.h exists passed with the following output: +Change Dir: /home/tngngn/ccbench/silo/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_afe48 && [1/2] Building CXX object CMakeFiles/cmTC_afe48.dir/CheckIncludeFile.cxx.o +[2/2] Linking CXX executable cmTC_afe48 + + + +Determining if the function pthread_create exists in the pthread passed with the following output: +Change Dir: /home/tngngn/ccbench/silo/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_727b4 && [1/2] Building CXX object CMakeFiles/cmTC_727b4.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_727b4 + + + diff --git a/silo/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx b/silo/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx new file mode 100644 index 00000000..13435e07 --- /dev/null +++ b/silo/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx @@ -0,0 +1,28 @@ +#ifdef CHECK_FUNCTION_EXISTS + +# ifdef __cplusplus +extern "C" +# endif + char + CHECK_FUNCTION_EXISTS(void); +# ifdef __CLASSIC_C__ +int main() +{ + int ac; + char* av[]; +# else +int main(int ac, char* av[]) +{ +# endif + CHECK_FUNCTION_EXISTS(); + if (ac > 1000) { + return *av[0]; + } + return 0; +} + +#else /* CHECK_FUNCTION_EXISTS */ + +# error "CHECK_FUNCTION_EXISTS has to specify the function" + +#endif /* CHECK_FUNCTION_EXISTS */ diff --git a/silo/build/CMakeFiles/TargetDirectories.txt b/silo/build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 00000000..52eada8b --- /dev/null +++ b/silo/build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,4 @@ +/home/tngngn/ccbench/silo/build/CMakeFiles/edit_cache.dir +/home/tngngn/ccbench/silo/build/CMakeFiles/replay_test.exe.dir +/home/tngngn/ccbench/silo/build/CMakeFiles/rebuild_cache.dir +/home/tngngn/ccbench/silo/build/CMakeFiles/silo.exe.dir diff --git a/silo/build/CMakeFiles/cmake.check_cache b/silo/build/CMakeFiles/cmake.check_cache new file mode 100644 index 00000000..3dccd731 --- /dev/null +++ b/silo/build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/silo/build/build.ninja b/silo/build/build.ninja new file mode 100644 index 00000000..ce41beec --- /dev/null +++ b/silo/build/build.ninja @@ -0,0 +1,221 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.17 + +# This file contains all the build statements describing the +# compilation DAG. + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# +# Which is the root file. +# ============================================================================= + +# ============================================================================= +# Project: ccbench_silo +# Configurations: Release +# ============================================================================= + +############################################# +# Minimal version of Ninja required by this file + +ninja_required_version = 1.5 + + +############################################# +# Set configuration variable for custom commands. + +CONFIGURATION = Release +# ============================================================================= +# Include auxiliary files. + + +############################################# +# Include rules file. + +include rules.ninja + + +############################################# +# Utility command for edit_cache + +build CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/silo/build && /usr/local/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. + DESC = No interactive CMake dialog available... + restat = 1 + +build edit_cache: phony CMakeFiles/edit_cache.util + +# ============================================================================= +# Object build statements for EXECUTABLE target replay_test.exe + + +############################################# +# Order-only phony target for replay_test.exe + +build cmake_object_order_depends_target_replay_test.exe_Release: phony || CMakeFiles/replay_test.exe.dir + +build CMakeFiles/replay_test.exe.dir/replayTest.cc.o: CXX_COMPILER__replay_test.2eexe_Release ../replayTest.cc || cmake_object_order_depends_target_replay_test.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DKEY_SIZE=8 -DMASSTREE_USE=1 -DNO_WAIT_LOCKING_IN_VALIDATION=1 -DNO_WAIT_OF_TICTOC=0 -DPARTITION_TABLE=0 -DPROCEDURE_SORT=0 -DSLEEP_READ_PHASE=0 -DVAL_SIZE=4 -DWAL=0 + DEP_FILE = CMakeFiles/replay_test.exe.dir/replayTest.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/replay_test.exe.dir + OBJECT_FILE_DIR = CMakeFiles/replay_test.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/replay_test.exe.dir/ + TARGET_PDB = replay_test.exe.pdb + + +# ============================================================================= +# Link build statements for EXECUTABLE target replay_test.exe + + +############################################# +# Link the executable replay_test.exe + +build replay_test.exe: CXX_EXECUTABLE_LINKER__replay_test.2eexe_Release CMakeFiles/replay_test.exe.dir/replayTest.cc.o + FLAGS = -O3 -DNDEBUG + OBJECT_DIR = CMakeFiles/replay_test.exe.dir + POST_BUILD = : + PRE_LINK = : + TARGET_COMPILE_PDB = CMakeFiles/replay_test.exe.dir/ + TARGET_FILE = replay_test.exe + TARGET_PDB = replay_test.exe.pdb + + +############################################# +# Utility command for rebuild_cache + +build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/silo/build && /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/silo -B/home/tngngn/ccbench/silo/build + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build rebuild_cache: phony CMakeFiles/rebuild_cache.util + +# ============================================================================= +# Object build statements for EXECUTABLE target silo.exe + + +############################################# +# Order-only phony target for silo.exe + +build cmake_object_order_depends_target_silo.exe_Release: phony || CMakeFiles/silo.exe.dir + +build CMakeFiles/silo.exe.dir/home/tngngn/ccbench/common/result.cc.o: CXX_COMPILER__silo.2eexe_Release /home/tngngn/ccbench/common/result.cc || cmake_object_order_depends_target_silo.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DMASSTREE_USE=1 -DNO_WAIT_LOCKING_IN_VALIDATION=1 -DNO_WAIT_OF_TICTOC=0 -DPARTITION_TABLE=0 -DPROCEDURE_SORT=0 -DSLEEP_READ_PHASE=0 -DVAL_SIZE=4 -DWAL=0 + DEP_FILE = CMakeFiles/silo.exe.dir/home/tngngn/ccbench/common/result.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/silo.exe.dir + OBJECT_FILE_DIR = CMakeFiles/silo.exe.dir/home/tngngn/ccbench/common + TARGET_COMPILE_PDB = CMakeFiles/silo.exe.dir/ + TARGET_PDB = silo.exe.pdb + +build CMakeFiles/silo.exe.dir/home/tngngn/ccbench/common/util.cc.o: CXX_COMPILER__silo.2eexe_Release /home/tngngn/ccbench/common/util.cc || cmake_object_order_depends_target_silo.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DMASSTREE_USE=1 -DNO_WAIT_LOCKING_IN_VALIDATION=1 -DNO_WAIT_OF_TICTOC=0 -DPARTITION_TABLE=0 -DPROCEDURE_SORT=0 -DSLEEP_READ_PHASE=0 -DVAL_SIZE=4 -DWAL=0 + DEP_FILE = CMakeFiles/silo.exe.dir/home/tngngn/ccbench/common/util.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/silo.exe.dir + OBJECT_FILE_DIR = CMakeFiles/silo.exe.dir/home/tngngn/ccbench/common + TARGET_COMPILE_PDB = CMakeFiles/silo.exe.dir/ + TARGET_PDB = silo.exe.pdb + +build CMakeFiles/silo.exe.dir/result.cc.o: CXX_COMPILER__silo.2eexe_Release ../result.cc || cmake_object_order_depends_target_silo.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DMASSTREE_USE=1 -DNO_WAIT_LOCKING_IN_VALIDATION=1 -DNO_WAIT_OF_TICTOC=0 -DPARTITION_TABLE=0 -DPROCEDURE_SORT=0 -DSLEEP_READ_PHASE=0 -DVAL_SIZE=4 -DWAL=0 + DEP_FILE = CMakeFiles/silo.exe.dir/result.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/silo.exe.dir + OBJECT_FILE_DIR = CMakeFiles/silo.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/silo.exe.dir/ + TARGET_PDB = silo.exe.pdb + +build CMakeFiles/silo.exe.dir/silo.cc.o: CXX_COMPILER__silo.2eexe_Release ../silo.cc || cmake_object_order_depends_target_silo.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DMASSTREE_USE=1 -DNO_WAIT_LOCKING_IN_VALIDATION=1 -DNO_WAIT_OF_TICTOC=0 -DPARTITION_TABLE=0 -DPROCEDURE_SORT=0 -DSLEEP_READ_PHASE=0 -DVAL_SIZE=4 -DWAL=0 + DEP_FILE = CMakeFiles/silo.exe.dir/silo.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/silo.exe.dir + OBJECT_FILE_DIR = CMakeFiles/silo.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/silo.exe.dir/ + TARGET_PDB = silo.exe.pdb + +build CMakeFiles/silo.exe.dir/transaction.cc.o: CXX_COMPILER__silo.2eexe_Release ../transaction.cc || cmake_object_order_depends_target_silo.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DMASSTREE_USE=1 -DNO_WAIT_LOCKING_IN_VALIDATION=1 -DNO_WAIT_OF_TICTOC=0 -DPARTITION_TABLE=0 -DPROCEDURE_SORT=0 -DSLEEP_READ_PHASE=0 -DVAL_SIZE=4 -DWAL=0 + DEP_FILE = CMakeFiles/silo.exe.dir/transaction.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/silo.exe.dir + OBJECT_FILE_DIR = CMakeFiles/silo.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/silo.exe.dir/ + TARGET_PDB = silo.exe.pdb + +build CMakeFiles/silo.exe.dir/util.cc.o: CXX_COMPILER__silo.2eexe_Release ../util.cc || cmake_object_order_depends_target_silo.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DMASSTREE_USE=1 -DNO_WAIT_LOCKING_IN_VALIDATION=1 -DNO_WAIT_OF_TICTOC=0 -DPARTITION_TABLE=0 -DPROCEDURE_SORT=0 -DSLEEP_READ_PHASE=0 -DVAL_SIZE=4 -DWAL=0 + DEP_FILE = CMakeFiles/silo.exe.dir/util.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/silo.exe.dir + OBJECT_FILE_DIR = CMakeFiles/silo.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/silo.exe.dir/ + TARGET_PDB = silo.exe.pdb + + +# ============================================================================= +# Link build statements for EXECUTABLE target silo.exe + + +############################################# +# Link the executable silo.exe + +build silo.exe: CXX_EXECUTABLE_LINKER__silo.2eexe_Release CMakeFiles/silo.exe.dir/home/tngngn/ccbench/common/result.cc.o CMakeFiles/silo.exe.dir/home/tngngn/ccbench/common/util.cc.o CMakeFiles/silo.exe.dir/result.cc.o CMakeFiles/silo.exe.dir/silo.cc.o CMakeFiles/silo.exe.dir/transaction.cc.o CMakeFiles/silo.exe.dir/util.cc.o | /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a + FLAGS = -O3 -DNDEBUG + LINK_LIBRARIES = /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a -lpthread + OBJECT_DIR = CMakeFiles/silo.exe.dir + POST_BUILD = : + PRE_LINK = : + TARGET_COMPILE_PDB = CMakeFiles/silo.exe.dir/ + TARGET_FILE = silo.exe + TARGET_PDB = silo.exe.pdb + +# ============================================================================= +# Target aliases. + +# ============================================================================= +# Folder targets. + +# ============================================================================= + +############################################# +# Folder: /home/tngngn/ccbench/silo/build + +build all: phony replay_test.exe silo.exe + +# ============================================================================= +# Built-in targets + + +############################################# +# Re-run CMake if any of its inputs changed. + +build build.ninja: RERUN_CMAKE | ../CMakeLists.txt /home/tngngn/ccbench/cmake/CompileOptions.cmake /home/tngngn/ccbench/cmake/Findgflags.cmake /home/tngngn/ccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx + pool = console + + +############################################# +# A missing CMake input file is not an error. + +build ../CMakeLists.txt /home/tngngn/ccbench/cmake/CompileOptions.cmake /home/tngngn/ccbench/cmake/Findgflags.cmake /home/tngngn/ccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx: phony + + +############################################# +# Clean all the built files. + +build clean: CLEAN + + +############################################# +# Print all primary targets available. + +build help: HELP + + +############################################# +# Make the all target the default. + +default all diff --git a/silo/build/cmake_install.cmake b/silo/build/cmake_install.cmake new file mode 100644 index 00000000..16a90344 --- /dev/null +++ b/silo/build/cmake_install.cmake @@ -0,0 +1,49 @@ +# Install script for directory: /home/tngngn/ccbench/silo + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "/home/tngngn/ccbench/silo/build/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/silo/build/rules.ninja b/silo/build/rules.ninja new file mode 100644 index 00000000..f96507fc --- /dev/null +++ b/silo/build/rules.ninja @@ -0,0 +1,83 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.17 + +# This file contains all the rules used to get the outputs files +# built from the input files. +# It is included in the main 'build.ninja'. + +# ============================================================================= +# Project: ccbench_silo +# Configurations: Release +# ============================================================================= +# ============================================================================= + +############################################# +# Rule for running custom commands. + +rule CUSTOM_COMMAND + command = $COMMAND + description = $DESC + + +############################################# +# Rule for compiling CXX files. + +rule CXX_COMPILER__replay_test.2eexe_Release + depfile = $DEP_FILE + deps = gcc + command = /usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building CXX object $out + + +############################################# +# Rule for linking CXX executable. + +rule CXX_EXECUTABLE_LINKER__replay_test.2eexe_Release + command = $PRE_LINK && /usr/bin/c++ $FLAGS $LINK_FLAGS $in -o $TARGET_FILE $LINK_PATH $LINK_LIBRARIES && $POST_BUILD + description = Linking CXX executable $TARGET_FILE + restat = $RESTAT + + +############################################# +# Rule for compiling CXX files. + +rule CXX_COMPILER__silo.2eexe_Release + depfile = $DEP_FILE + deps = gcc + command = /usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building CXX object $out + + +############################################# +# Rule for linking CXX executable. + +rule CXX_EXECUTABLE_LINKER__silo.2eexe_Release + command = $PRE_LINK && /usr/bin/c++ $FLAGS $LINK_FLAGS $in -o $TARGET_FILE $LINK_PATH $LINK_LIBRARIES && $POST_BUILD + description = Linking CXX executable $TARGET_FILE + restat = $RESTAT + + +############################################# +# Rule for re-running cmake. + +rule RERUN_CMAKE + command = /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/silo -B/home/tngngn/ccbench/silo/build + description = Re-running CMake... + generator = 1 + + +############################################# +# Rule for cleaning all built files. + +rule CLEAN + command = /usr/local/bin/ninja $FILE_ARG -t clean $TARGETS + description = Cleaning all built files... + + +############################################# +# Rule for printing all primary targets available. + +rule HELP + command = /usr/local/bin/ninja -t targets + description = All primary targets available: + diff --git a/ss2pl/CMakeLists.txt b/ss2pl/CMakeLists.txt index 5a3b26ba..06756666 100644 --- a/ss2pl/CMakeLists.txt +++ b/ss2pl/CMakeLists.txt @@ -56,8 +56,6 @@ else () add_definitions(-DBACK_OFF=0) endif () -add_definitions(-DDLR1) - if (DEFINED KEY_SIZE) add_definitions(-DKEY_SIZE=${KEY_SIZE}) else () diff --git a/ss2pl/build/.ninja_deps b/ss2pl/build/.ninja_deps new file mode 100644 index 0000000000000000000000000000000000000000..b09b192e9475cc51c976bcb833b03884c643cdf8 GIT binary patch literal 48508 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 literal 0 HcmV?d00001 diff --git a/ss2pl/build/.ninja_log b/ss2pl/build/.ninja_log new file mode 100644 index 00000000..4ec46418 --- /dev/null +++ b/ss2pl/build/.ninja_log @@ -0,0 +1,15 @@ +# ninja log v5 +0 430 1668098510613793716 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o 81bcf81436dd096f +3 468 1668098510649792532 test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common/result.cc.o 4cf8fab3b4f2f11a +1 699 1668098510881784905 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o f58abb2ca12f4c9e +3 734 1668098510917783722 test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common/util.cc.o 37a5f19502ad199e +1 827 1668098511009780697 CMakeFiles/ss2pl.exe.dir/result.cc.o 86b6f03aa5214036 +3 874 1668098511057779119 test/CMakeFiles/make_db_test.dir/__/result.cc.o 9cf7615618add105 +2 1386 1668098511569762286 CMakeFiles/ss2pl.exe.dir/transaction.cc.o cc2bb08c9330f52a +2 1408 1668098511589761629 CMakeFiles/ss2pl.exe.dir/util.cc.o 44945d250f157858 +1 1410 1668098511593761498 CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o cc110ea1f9a389f0 +4 1424 1668098511605761103 test/CMakeFiles/make_db_test.dir/__/transaction.cc.o fb228e060b621dd3 +4 1452 1668098511633760183 test/CMakeFiles/make_db_test.dir/__/util.cc.o 4f02c7f15a443159 +1410 1483 1668098511665759131 ss2pl.exe eee19cd8572392e1 +2 1603 1668098511785755186 test/CMakeFiles/make_db_test.dir/make_db_test.cpp.o 5101962424ae4d8b +1603 1722 1668098511905751241 test/make_db_test f51cc9023ab865e1 diff --git a/ss2pl/build/CMakeCache.txt b/ss2pl/build/CMakeCache.txt new file mode 100644 index 00000000..b347cd90 --- /dev/null +++ b/ss2pl/build/CMakeCache.txt @@ -0,0 +1,473 @@ +# This is the CMakeCache file. +# For build in directory: /home/tngngn/ccbench/ss2pl/build +# It was generated by CMake: /usr/local/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//The directory containing a CMake configuration file for Boost. +Boost_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0 + +Boost_FILESYSTEM_LIBRARY_RELEASE:STRING=/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 + +//Path to a file. +Boost_INCLUDE_DIR:PATH=/usr/include + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING=Release + +//CXX compiler +CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-9 + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-9 + +//Flags used by the CXX compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the CXX compiler during DEBUG builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the CXX compiler during RELEASE builds. +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//User executables (bin) +CMAKE_INSTALL_BINDIR:PATH=bin + +//Read-only architecture-independent data (DATAROOTDIR) +CMAKE_INSTALL_DATADIR:PATH= + +//Read-only architecture-independent data root (share) +CMAKE_INSTALL_DATAROOTDIR:PATH=share + +//Documentation root (DATAROOTDIR/doc/PROJECT_NAME) +CMAKE_INSTALL_DOCDIR:PATH= + +//C header files (include) +CMAKE_INSTALL_INCLUDEDIR:PATH=include + +//Info documentation (DATAROOTDIR/info) +CMAKE_INSTALL_INFODIR:PATH= + +//Object code libraries (lib) +CMAKE_INSTALL_LIBDIR:PATH=lib + +//Program executables (libexec) +CMAKE_INSTALL_LIBEXECDIR:PATH=libexec + +//Locale-dependent data (DATAROOTDIR/locale) +CMAKE_INSTALL_LOCALEDIR:PATH= + +//Modifiable single-machine data (var) +CMAKE_INSTALL_LOCALSTATEDIR:PATH=var + +//Man documentation (DATAROOTDIR/man) +CMAKE_INSTALL_MANDIR:PATH= + +//C header files for non-gcc (/usr/include) +CMAKE_INSTALL_OLDINCLUDEDIR:PATH=/usr/include + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Run-time variable data (LOCALSTATEDIR/run) +CMAKE_INSTALL_RUNSTATEDIR:PATH= + +//System admin executables (sbin) +CMAKE_INSTALL_SBINDIR:PATH=sbin + +//Modifiable architecture-independent data (com) +CMAKE_INSTALL_SHAREDSTATEDIR:PATH=com + +//Read-only single-machine data (etc) +CMAKE_INSTALL_SYSCONFDIR:PATH=etc + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Program used to build from build.ninja files. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/local/bin/ninja + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC=ss2pl of ccbench + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=ccbench_ss2pl + +//Value Computed by CMake +CMAKE_PROJECT_VERSION:STATIC=0.0.1 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MAJOR:STATIC=0 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MINOR:STATIC=0 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_PATCH:STATIC=1 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_TWEAK:STATIC= + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/usr/bin/readelf + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Dot tool for use with Doxygen +DOXYGEN_DOT_EXECUTABLE:FILEPATH=/usr/bin/dot + +//Doxygen documentation generation tool (http://www.doxygen.org) +DOXYGEN_EXECUTABLE:FILEPATH=/usr/bin/doxygen + +//enable coverage on debug build +ENABLE_COVERAGE:BOOL=OFF + +//enable sanitizer on debug build +ENABLE_SANITIZER:BOOL=ON + +//enable undefined behavior sanitizer on debug build +ENABLE_UB_SANITIZER:BOOL=OFF + +//The directory containing a CMake configuration file for boost_filesystem. +boost_filesystem_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0 + +//The directory containing a CMake configuration file for boost_headers. +boost_headers_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0 + +//Value Computed by CMake +ccbench_ss2pl_BINARY_DIR:STATIC=/home/tngngn/ccbench/ss2pl/build + +//Value Computed by CMake +ccbench_ss2pl_SOURCE_DIR:STATIC=/home/tngngn/ccbench/ss2pl + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: Boost_DIR +Boost_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/tngngn/ccbench/ss2pl/build +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=17 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=0 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/local/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/local/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/local/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Ninja +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Test CMAKE_HAVE_LIBC_PTHREAD +CMAKE_HAVE_LIBC_PTHREAD:INTERNAL= +//Have library pthreads +CMAKE_HAVE_PTHREADS_CREATE:INTERNAL= +//Have library pthread +CMAKE_HAVE_PTHREAD_CREATE:INTERNAL=1 +//Have include pthread.h +CMAKE_HAVE_PTHREAD_H:INTERNAL=1 +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/tngngn/ccbench/ss2pl +//ADVANCED property for variable: CMAKE_INSTALL_BINDIR +CMAKE_INSTALL_BINDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DATADIR +CMAKE_INSTALL_DATADIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DATAROOTDIR +CMAKE_INSTALL_DATAROOTDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DOCDIR +CMAKE_INSTALL_DOCDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_INCLUDEDIR +CMAKE_INSTALL_INCLUDEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_INFODIR +CMAKE_INSTALL_INFODIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LIBDIR +CMAKE_INSTALL_LIBDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LIBEXECDIR +CMAKE_INSTALL_LIBEXECDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LOCALEDIR +CMAKE_INSTALL_LOCALEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LOCALSTATEDIR +CMAKE_INSTALL_LOCALSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_MANDIR +CMAKE_INSTALL_MANDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_OLDINCLUDEDIR +CMAKE_INSTALL_OLDINCLUDEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_RUNSTATEDIR +CMAKE_INSTALL_RUNSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SBINDIR +CMAKE_INSTALL_SBINDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SHAREDSTATEDIR +CMAKE_INSTALL_SHAREDSTATEDIR-ADVANCED:INTERNAL=1 +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SYSCONFDIR +CMAKE_INSTALL_SYSCONFDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=2 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/local/share/cmake-3.17 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: DOXYGEN_DOT_EXECUTABLE +DOXYGEN_DOT_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: DOXYGEN_EXECUTABLE +DOXYGEN_EXECUTABLE-ADVANCED:INTERNAL=1 +//Details about finding Boost +FIND_PACKAGE_MESSAGE_DETAILS_Boost:INTERNAL=[/usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake][cfound components: filesystem ][v1.71.0()] +//Details about finding Doxygen +FIND_PACKAGE_MESSAGE_DETAILS_Doxygen:INTERNAL=[/usr/bin/doxygen][cfound components: doxygen dot ][v1.8.17()] +//Details about finding Threads +FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()] +//Details about finding gflags +FIND_PACKAGE_MESSAGE_DETAILS_gflags:INTERNAL=[/usr/lib/x86_64-linux-gnu/libgflags.so][/usr/include][v()] +//Details about finding glog +FIND_PACKAGE_MESSAGE_DETAILS_glog:INTERNAL=[/usr/lib/x86_64-linux-gnu/libglog.so][/usr/include][v()] +//CMAKE_INSTALL_PREFIX during last run +_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX:INTERNAL=/usr/local +//ADVANCED property for variable: boost_filesystem_DIR +boost_filesystem_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: boost_headers_DIR +boost_headers_DIR-ADVANCED:INTERNAL=1 + diff --git a/ss2pl/build/CMakeDoxyfile.in b/ss2pl/build/CMakeDoxyfile.in new file mode 100644 index 00000000..848a3c81 --- /dev/null +++ b/ss2pl/build/CMakeDoxyfile.in @@ -0,0 +1,280 @@ +# +# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! +# + +DOXYFILE_ENCODING = @DOXYGEN_DOXYFILE_ENCODING@ +PROJECT_NAME = @DOXYGEN_PROJECT_NAME@ +PROJECT_NUMBER = @DOXYGEN_PROJECT_NUMBER@ +PROJECT_BRIEF = @DOXYGEN_PROJECT_BRIEF@ +PROJECT_LOGO = @DOXYGEN_PROJECT_LOGO@ +OUTPUT_DIRECTORY = @DOXYGEN_OUTPUT_DIRECTORY@ +CREATE_SUBDIRS = @DOXYGEN_CREATE_SUBDIRS@ +ALLOW_UNICODE_NAMES = @DOXYGEN_ALLOW_UNICODE_NAMES@ +OUTPUT_LANGUAGE = @DOXYGEN_OUTPUT_LANGUAGE@ +OUTPUT_TEXT_DIRECTION = @DOXYGEN_OUTPUT_TEXT_DIRECTION@ +BRIEF_MEMBER_DESC = @DOXYGEN_BRIEF_MEMBER_DESC@ +REPEAT_BRIEF = @DOXYGEN_REPEAT_BRIEF@ +ABBREVIATE_BRIEF = @DOXYGEN_ABBREVIATE_BRIEF@ +ALWAYS_DETAILED_SEC = @DOXYGEN_ALWAYS_DETAILED_SEC@ +INLINE_INHERITED_MEMB = @DOXYGEN_INLINE_INHERITED_MEMB@ +FULL_PATH_NAMES = @DOXYGEN_FULL_PATH_NAMES@ +STRIP_FROM_PATH = @DOXYGEN_STRIP_FROM_PATH@ +STRIP_FROM_INC_PATH = @DOXYGEN_STRIP_FROM_INC_PATH@ +SHORT_NAMES = @DOXYGEN_SHORT_NAMES@ +JAVADOC_AUTOBRIEF = @DOXYGEN_JAVADOC_AUTOBRIEF@ +JAVADOC_BANNER = @DOXYGEN_JAVADOC_BANNER@ +QT_AUTOBRIEF = @DOXYGEN_QT_AUTOBRIEF@ +MULTILINE_CPP_IS_BRIEF = @DOXYGEN_MULTILINE_CPP_IS_BRIEF@ +INHERIT_DOCS = @DOXYGEN_INHERIT_DOCS@ +SEPARATE_MEMBER_PAGES = @DOXYGEN_SEPARATE_MEMBER_PAGES@ +TAB_SIZE = @DOXYGEN_TAB_SIZE@ +ALIASES = @DOXYGEN_ALIASES@ +TCL_SUBST = @DOXYGEN_TCL_SUBST@ +OPTIMIZE_OUTPUT_FOR_C = @DOXYGEN_OPTIMIZE_OUTPUT_FOR_C@ +OPTIMIZE_OUTPUT_JAVA = @DOXYGEN_OPTIMIZE_OUTPUT_JAVA@ +OPTIMIZE_FOR_FORTRAN = @DOXYGEN_OPTIMIZE_FOR_FORTRAN@ +OPTIMIZE_OUTPUT_VHDL = @DOXYGEN_OPTIMIZE_OUTPUT_VHDL@ +OPTIMIZE_OUTPUT_SLICE = @DOXYGEN_OPTIMIZE_OUTPUT_SLICE@ +EXTENSION_MAPPING = @DOXYGEN_EXTENSION_MAPPING@ +MARKDOWN_SUPPORT = @DOXYGEN_MARKDOWN_SUPPORT@ +TOC_INCLUDE_HEADINGS = @DOXYGEN_TOC_INCLUDE_HEADINGS@ +AUTOLINK_SUPPORT = @DOXYGEN_AUTOLINK_SUPPORT@ +BUILTIN_STL_SUPPORT = @DOXYGEN_BUILTIN_STL_SUPPORT@ +CPP_CLI_SUPPORT = @DOXYGEN_CPP_CLI_SUPPORT@ +SIP_SUPPORT = @DOXYGEN_SIP_SUPPORT@ +IDL_PROPERTY_SUPPORT = @DOXYGEN_IDL_PROPERTY_SUPPORT@ +DISTRIBUTE_GROUP_DOC = @DOXYGEN_DISTRIBUTE_GROUP_DOC@ +GROUP_NESTED_COMPOUNDS = @DOXYGEN_GROUP_NESTED_COMPOUNDS@ +SUBGROUPING = @DOXYGEN_SUBGROUPING@ +INLINE_GROUPED_CLASSES = @DOXYGEN_INLINE_GROUPED_CLASSES@ +INLINE_SIMPLE_STRUCTS = @DOXYGEN_INLINE_SIMPLE_STRUCTS@ +TYPEDEF_HIDES_STRUCT = @DOXYGEN_TYPEDEF_HIDES_STRUCT@ +LOOKUP_CACHE_SIZE = @DOXYGEN_LOOKUP_CACHE_SIZE@ +EXTRACT_ALL = @DOXYGEN_EXTRACT_ALL@ +EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@ +EXTRACT_PRIV_VIRTUAL = @DOXYGEN_EXTRACT_PRIV_VIRTUAL@ +EXTRACT_PACKAGE = @DOXYGEN_EXTRACT_PACKAGE@ +EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@ +EXTRACT_LOCAL_CLASSES = @DOXYGEN_EXTRACT_LOCAL_CLASSES@ +EXTRACT_LOCAL_METHODS = @DOXYGEN_EXTRACT_LOCAL_METHODS@ +EXTRACT_ANON_NSPACES = @DOXYGEN_EXTRACT_ANON_NSPACES@ +HIDE_UNDOC_MEMBERS = @DOXYGEN_HIDE_UNDOC_MEMBERS@ +HIDE_UNDOC_CLASSES = @DOXYGEN_HIDE_UNDOC_CLASSES@ +HIDE_FRIEND_COMPOUNDS = @DOXYGEN_HIDE_FRIEND_COMPOUNDS@ +HIDE_IN_BODY_DOCS = @DOXYGEN_HIDE_IN_BODY_DOCS@ +INTERNAL_DOCS = @DOXYGEN_INTERNAL_DOCS@ +CASE_SENSE_NAMES = @DOXYGEN_CASE_SENSE_NAMES@ +HIDE_SCOPE_NAMES = @DOXYGEN_HIDE_SCOPE_NAMES@ +HIDE_COMPOUND_REFERENCE= @DOXYGEN_HIDE_COMPOUND_REFERENCE@ +SHOW_INCLUDE_FILES = @DOXYGEN_SHOW_INCLUDE_FILES@ +SHOW_GROUPED_MEMB_INC = @DOXYGEN_SHOW_GROUPED_MEMB_INC@ +FORCE_LOCAL_INCLUDES = @DOXYGEN_FORCE_LOCAL_INCLUDES@ +INLINE_INFO = @DOXYGEN_INLINE_INFO@ +SORT_MEMBER_DOCS = @DOXYGEN_SORT_MEMBER_DOCS@ +SORT_BRIEF_DOCS = @DOXYGEN_SORT_BRIEF_DOCS@ +SORT_MEMBERS_CTORS_1ST = @DOXYGEN_SORT_MEMBERS_CTORS_1ST@ +SORT_GROUP_NAMES = @DOXYGEN_SORT_GROUP_NAMES@ +SORT_BY_SCOPE_NAME = @DOXYGEN_SORT_BY_SCOPE_NAME@ +STRICT_PROTO_MATCHING = @DOXYGEN_STRICT_PROTO_MATCHING@ +GENERATE_TODOLIST = @DOXYGEN_GENERATE_TODOLIST@ +GENERATE_TESTLIST = @DOXYGEN_GENERATE_TESTLIST@ +GENERATE_BUGLIST = @DOXYGEN_GENERATE_BUGLIST@ +GENERATE_DEPRECATEDLIST= @DOXYGEN_GENERATE_DEPRECATEDLIST@ +ENABLED_SECTIONS = @DOXYGEN_ENABLED_SECTIONS@ +MAX_INITIALIZER_LINES = @DOXYGEN_MAX_INITIALIZER_LINES@ +SHOW_USED_FILES = @DOXYGEN_SHOW_USED_FILES@ +SHOW_FILES = @DOXYGEN_SHOW_FILES@ +SHOW_NAMESPACES = @DOXYGEN_SHOW_NAMESPACES@ +FILE_VERSION_FILTER = @DOXYGEN_FILE_VERSION_FILTER@ +LAYOUT_FILE = @DOXYGEN_LAYOUT_FILE@ +CITE_BIB_FILES = @DOXYGEN_CITE_BIB_FILES@ +QUIET = @DOXYGEN_QUIET@ +WARNINGS = @DOXYGEN_WARNINGS@ +WARN_IF_UNDOCUMENTED = @DOXYGEN_WARN_IF_UNDOCUMENTED@ +WARN_IF_DOC_ERROR = @DOXYGEN_WARN_IF_DOC_ERROR@ +WARN_NO_PARAMDOC = @DOXYGEN_WARN_NO_PARAMDOC@ +WARN_AS_ERROR = @DOXYGEN_WARN_AS_ERROR@ +WARN_FORMAT = @DOXYGEN_WARN_FORMAT@ +WARN_LOGFILE = @DOXYGEN_WARN_LOGFILE@ +INPUT = @DOXYGEN_INPUT@ +INPUT_ENCODING = @DOXYGEN_INPUT_ENCODING@ +FILE_PATTERNS = @DOXYGEN_FILE_PATTERNS@ +RECURSIVE = @DOXYGEN_RECURSIVE@ +EXCLUDE = @DOXYGEN_EXCLUDE@ +EXCLUDE_SYMLINKS = @DOXYGEN_EXCLUDE_SYMLINKS@ +EXCLUDE_PATTERNS = @DOXYGEN_EXCLUDE_PATTERNS@ +EXCLUDE_SYMBOLS = @DOXYGEN_EXCLUDE_SYMBOLS@ +EXAMPLE_PATH = @DOXYGEN_EXAMPLE_PATH@ +EXAMPLE_PATTERNS = @DOXYGEN_EXAMPLE_PATTERNS@ +EXAMPLE_RECURSIVE = @DOXYGEN_EXAMPLE_RECURSIVE@ +IMAGE_PATH = @DOXYGEN_IMAGE_PATH@ +INPUT_FILTER = @DOXYGEN_INPUT_FILTER@ +FILTER_PATTERNS = @DOXYGEN_FILTER_PATTERNS@ +FILTER_SOURCE_FILES = @DOXYGEN_FILTER_SOURCE_FILES@ +FILTER_SOURCE_PATTERNS = @DOXYGEN_FILTER_SOURCE_PATTERNS@ +USE_MDFILE_AS_MAINPAGE = @DOXYGEN_USE_MDFILE_AS_MAINPAGE@ +SOURCE_BROWSER = @DOXYGEN_SOURCE_BROWSER@ +INLINE_SOURCES = @DOXYGEN_INLINE_SOURCES@ +STRIP_CODE_COMMENTS = @DOXYGEN_STRIP_CODE_COMMENTS@ +REFERENCED_BY_RELATION = @DOXYGEN_REFERENCED_BY_RELATION@ +REFERENCES_RELATION = @DOXYGEN_REFERENCES_RELATION@ +REFERENCES_LINK_SOURCE = @DOXYGEN_REFERENCES_LINK_SOURCE@ +SOURCE_TOOLTIPS = @DOXYGEN_SOURCE_TOOLTIPS@ +USE_HTAGS = @DOXYGEN_USE_HTAGS@ +VERBATIM_HEADERS = @DOXYGEN_VERBATIM_HEADERS@ +CLANG_ASSISTED_PARSING = @DOXYGEN_CLANG_ASSISTED_PARSING@ +CLANG_OPTIONS = @DOXYGEN_CLANG_OPTIONS@ +CLANG_DATABASE_PATH = @DOXYGEN_CLANG_DATABASE_PATH@ +ALPHABETICAL_INDEX = @DOXYGEN_ALPHABETICAL_INDEX@ +COLS_IN_ALPHA_INDEX = @DOXYGEN_COLS_IN_ALPHA_INDEX@ +IGNORE_PREFIX = @DOXYGEN_IGNORE_PREFIX@ +GENERATE_HTML = @DOXYGEN_GENERATE_HTML@ +HTML_OUTPUT = @DOXYGEN_HTML_OUTPUT@ +HTML_FILE_EXTENSION = @DOXYGEN_HTML_FILE_EXTENSION@ +HTML_HEADER = @DOXYGEN_HTML_HEADER@ +HTML_FOOTER = @DOXYGEN_HTML_FOOTER@ +HTML_STYLESHEET = @DOXYGEN_HTML_STYLESHEET@ +HTML_EXTRA_STYLESHEET = @DOXYGEN_HTML_EXTRA_STYLESHEET@ +HTML_EXTRA_FILES = @DOXYGEN_HTML_EXTRA_FILES@ +HTML_COLORSTYLE_HUE = @DOXYGEN_HTML_COLORSTYLE_HUE@ +HTML_COLORSTYLE_SAT = @DOXYGEN_HTML_COLORSTYLE_SAT@ +HTML_COLORSTYLE_GAMMA = @DOXYGEN_HTML_COLORSTYLE_GAMMA@ +HTML_TIMESTAMP = @DOXYGEN_HTML_TIMESTAMP@ +HTML_DYNAMIC_MENUS = @DOXYGEN_HTML_DYNAMIC_MENUS@ +HTML_DYNAMIC_SECTIONS = @DOXYGEN_HTML_DYNAMIC_SECTIONS@ +HTML_INDEX_NUM_ENTRIES = @DOXYGEN_HTML_INDEX_NUM_ENTRIES@ +GENERATE_DOCSET = @DOXYGEN_GENERATE_DOCSET@ +DOCSET_FEEDNAME = @DOXYGEN_DOCSET_FEEDNAME@ +DOCSET_BUNDLE_ID = @DOXYGEN_DOCSET_BUNDLE_ID@ +DOCSET_PUBLISHER_ID = @DOXYGEN_DOCSET_PUBLISHER_ID@ +DOCSET_PUBLISHER_NAME = @DOXYGEN_DOCSET_PUBLISHER_NAME@ +GENERATE_HTMLHELP = @DOXYGEN_GENERATE_HTMLHELP@ +CHM_FILE = @DOXYGEN_CHM_FILE@ +HHC_LOCATION = @DOXYGEN_HHC_LOCATION@ +GENERATE_CHI = @DOXYGEN_GENERATE_CHI@ +CHM_INDEX_ENCODING = @DOXYGEN_CHM_INDEX_ENCODING@ +BINARY_TOC = @DOXYGEN_BINARY_TOC@ +TOC_EXPAND = @DOXYGEN_TOC_EXPAND@ +GENERATE_QHP = @DOXYGEN_GENERATE_QHP@ +QCH_FILE = @DOXYGEN_QCH_FILE@ +QHP_NAMESPACE = @DOXYGEN_QHP_NAMESPACE@ +QHP_VIRTUAL_FOLDER = @DOXYGEN_QHP_VIRTUAL_FOLDER@ +QHP_CUST_FILTER_NAME = @DOXYGEN_QHP_CUST_FILTER_NAME@ +QHP_CUST_FILTER_ATTRS = @DOXYGEN_QHP_CUST_FILTER_ATTRS@ +QHP_SECT_FILTER_ATTRS = @DOXYGEN_QHP_SECT_FILTER_ATTRS@ +QHG_LOCATION = @DOXYGEN_QHG_LOCATION@ +GENERATE_ECLIPSEHELP = @DOXYGEN_GENERATE_ECLIPSEHELP@ +ECLIPSE_DOC_ID = @DOXYGEN_ECLIPSE_DOC_ID@ +DISABLE_INDEX = @DOXYGEN_DISABLE_INDEX@ +GENERATE_TREEVIEW = @DOXYGEN_GENERATE_TREEVIEW@ +ENUM_VALUES_PER_LINE = @DOXYGEN_ENUM_VALUES_PER_LINE@ +TREEVIEW_WIDTH = @DOXYGEN_TREEVIEW_WIDTH@ +EXT_LINKS_IN_WINDOW = @DOXYGEN_EXT_LINKS_IN_WINDOW@ +FORMULA_FONTSIZE = @DOXYGEN_FORMULA_FONTSIZE@ +FORMULA_TRANSPARENT = @DOXYGEN_FORMULA_TRANSPARENT@ +FORMULA_MACROFILE = @DOXYGEN_FORMULA_MACROFILE@ +USE_MATHJAX = @DOXYGEN_USE_MATHJAX@ +MATHJAX_FORMAT = @DOXYGEN_MATHJAX_FORMAT@ +MATHJAX_RELPATH = @DOXYGEN_MATHJAX_RELPATH@ +MATHJAX_EXTENSIONS = @DOXYGEN_MATHJAX_EXTENSIONS@ +MATHJAX_CODEFILE = @DOXYGEN_MATHJAX_CODEFILE@ +SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ +SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ +EXTERNAL_SEARCH = @DOXYGEN_EXTERNAL_SEARCH@ +SEARCHENGINE_URL = @DOXYGEN_SEARCHENGINE_URL@ +SEARCHDATA_FILE = @DOXYGEN_SEARCHDATA_FILE@ +EXTERNAL_SEARCH_ID = @DOXYGEN_EXTERNAL_SEARCH_ID@ +EXTRA_SEARCH_MAPPINGS = @DOXYGEN_EXTRA_SEARCH_MAPPINGS@ +GENERATE_LATEX = @DOXYGEN_GENERATE_LATEX@ +LATEX_OUTPUT = @DOXYGEN_LATEX_OUTPUT@ +LATEX_CMD_NAME = @DOXYGEN_LATEX_CMD_NAME@ +MAKEINDEX_CMD_NAME = @DOXYGEN_MAKEINDEX_CMD_NAME@ +LATEX_MAKEINDEX_CMD = @DOXYGEN_LATEX_MAKEINDEX_CMD@ +COMPACT_LATEX = @DOXYGEN_COMPACT_LATEX@ +PAPER_TYPE = @DOXYGEN_PAPER_TYPE@ +EXTRA_PACKAGES = @DOXYGEN_EXTRA_PACKAGES@ +LATEX_HEADER = @DOXYGEN_LATEX_HEADER@ +LATEX_FOOTER = @DOXYGEN_LATEX_FOOTER@ +LATEX_EXTRA_STYLESHEET = @DOXYGEN_LATEX_EXTRA_STYLESHEET@ +LATEX_EXTRA_FILES = @DOXYGEN_LATEX_EXTRA_FILES@ +PDF_HYPERLINKS = @DOXYGEN_PDF_HYPERLINKS@ +USE_PDFLATEX = @DOXYGEN_USE_PDFLATEX@ +LATEX_BATCHMODE = @DOXYGEN_LATEX_BATCHMODE@ +LATEX_HIDE_INDICES = @DOXYGEN_LATEX_HIDE_INDICES@ +LATEX_SOURCE_CODE = @DOXYGEN_LATEX_SOURCE_CODE@ +LATEX_BIB_STYLE = @DOXYGEN_LATEX_BIB_STYLE@ +LATEX_TIMESTAMP = @DOXYGEN_LATEX_TIMESTAMP@ +LATEX_EMOJI_DIRECTORY = @DOXYGEN_LATEX_EMOJI_DIRECTORY@ +GENERATE_RTF = @DOXYGEN_GENERATE_RTF@ +RTF_OUTPUT = @DOXYGEN_RTF_OUTPUT@ +COMPACT_RTF = @DOXYGEN_COMPACT_RTF@ +RTF_HYPERLINKS = @DOXYGEN_RTF_HYPERLINKS@ +RTF_STYLESHEET_FILE = @DOXYGEN_RTF_STYLESHEET_FILE@ +RTF_EXTENSIONS_FILE = @DOXYGEN_RTF_EXTENSIONS_FILE@ +RTF_SOURCE_CODE = @DOXYGEN_RTF_SOURCE_CODE@ +GENERATE_MAN = @DOXYGEN_GENERATE_MAN@ +MAN_OUTPUT = @DOXYGEN_MAN_OUTPUT@ +MAN_EXTENSION = @DOXYGEN_MAN_EXTENSION@ +MAN_SUBDIR = @DOXYGEN_MAN_SUBDIR@ +MAN_LINKS = @DOXYGEN_MAN_LINKS@ +GENERATE_XML = @DOXYGEN_GENERATE_XML@ +XML_OUTPUT = @DOXYGEN_XML_OUTPUT@ +XML_PROGRAMLISTING = @DOXYGEN_XML_PROGRAMLISTING@ +XML_NS_MEMB_FILE_SCOPE = @DOXYGEN_XML_NS_MEMB_FILE_SCOPE@ +GENERATE_DOCBOOK = @DOXYGEN_GENERATE_DOCBOOK@ +DOCBOOK_OUTPUT = @DOXYGEN_DOCBOOK_OUTPUT@ +DOCBOOK_PROGRAMLISTING = @DOXYGEN_DOCBOOK_PROGRAMLISTING@ +GENERATE_AUTOGEN_DEF = @DOXYGEN_GENERATE_AUTOGEN_DEF@ +GENERATE_PERLMOD = @DOXYGEN_GENERATE_PERLMOD@ +PERLMOD_LATEX = @DOXYGEN_PERLMOD_LATEX@ +PERLMOD_PRETTY = @DOXYGEN_PERLMOD_PRETTY@ +PERLMOD_MAKEVAR_PREFIX = @DOXYGEN_PERLMOD_MAKEVAR_PREFIX@ +ENABLE_PREPROCESSING = @DOXYGEN_ENABLE_PREPROCESSING@ +MACRO_EXPANSION = @DOXYGEN_MACRO_EXPANSION@ +EXPAND_ONLY_PREDEF = @DOXYGEN_EXPAND_ONLY_PREDEF@ +SEARCH_INCLUDES = @DOXYGEN_SEARCH_INCLUDES@ +INCLUDE_PATH = @DOXYGEN_INCLUDE_PATH@ +INCLUDE_FILE_PATTERNS = @DOXYGEN_INCLUDE_FILE_PATTERNS@ +PREDEFINED = @DOXYGEN_PREDEFINED@ +EXPAND_AS_DEFINED = @DOXYGEN_EXPAND_AS_DEFINED@ +SKIP_FUNCTION_MACROS = @DOXYGEN_SKIP_FUNCTION_MACROS@ +TAGFILES = @DOXYGEN_TAGFILES@ +GENERATE_TAGFILE = @DOXYGEN_GENERATE_TAGFILE@ +ALLEXTERNALS = @DOXYGEN_ALLEXTERNALS@ +EXTERNAL_GROUPS = @DOXYGEN_EXTERNAL_GROUPS@ +EXTERNAL_PAGES = @DOXYGEN_EXTERNAL_PAGES@ +CLASS_DIAGRAMS = @DOXYGEN_CLASS_DIAGRAMS@ +DIA_PATH = @DOXYGEN_DIA_PATH@ +HIDE_UNDOC_RELATIONS = @DOXYGEN_HIDE_UNDOC_RELATIONS@ +HAVE_DOT = @DOXYGEN_HAVE_DOT@ +DOT_NUM_THREADS = @DOXYGEN_DOT_NUM_THREADS@ +DOT_FONTNAME = @DOXYGEN_DOT_FONTNAME@ +DOT_FONTSIZE = @DOXYGEN_DOT_FONTSIZE@ +DOT_FONTPATH = @DOXYGEN_DOT_FONTPATH@ +CLASS_GRAPH = @DOXYGEN_CLASS_GRAPH@ +COLLABORATION_GRAPH = @DOXYGEN_COLLABORATION_GRAPH@ +GROUP_GRAPHS = @DOXYGEN_GROUP_GRAPHS@ +UML_LOOK = @DOXYGEN_UML_LOOK@ +UML_LIMIT_NUM_FIELDS = @DOXYGEN_UML_LIMIT_NUM_FIELDS@ +TEMPLATE_RELATIONS = @DOXYGEN_TEMPLATE_RELATIONS@ +INCLUDE_GRAPH = @DOXYGEN_INCLUDE_GRAPH@ +INCLUDED_BY_GRAPH = @DOXYGEN_INCLUDED_BY_GRAPH@ +CALL_GRAPH = @DOXYGEN_CALL_GRAPH@ +CALLER_GRAPH = @DOXYGEN_CALLER_GRAPH@ +GRAPHICAL_HIERARCHY = @DOXYGEN_GRAPHICAL_HIERARCHY@ +DIRECTORY_GRAPH = @DOXYGEN_DIRECTORY_GRAPH@ +DOT_IMAGE_FORMAT = @DOXYGEN_DOT_IMAGE_FORMAT@ +INTERACTIVE_SVG = @DOXYGEN_INTERACTIVE_SVG@ +DOT_PATH = @DOXYGEN_DOT_PATH@ +DOTFILE_DIRS = @DOXYGEN_DOTFILE_DIRS@ +MSCFILE_DIRS = @DOXYGEN_MSCFILE_DIRS@ +DIAFILE_DIRS = @DOXYGEN_DIAFILE_DIRS@ +PLANTUML_JAR_PATH = @DOXYGEN_PLANTUML_JAR_PATH@ +PLANTUML_CFG_FILE = @DOXYGEN_PLANTUML_CFG_FILE@ +PLANTUML_INCLUDE_PATH = @DOXYGEN_PLANTUML_INCLUDE_PATH@ +DOT_GRAPH_MAX_NODES = @DOXYGEN_DOT_GRAPH_MAX_NODES@ +MAX_DOT_GRAPH_DEPTH = @DOXYGEN_MAX_DOT_GRAPH_DEPTH@ +DOT_TRANSPARENT = @DOXYGEN_DOT_TRANSPARENT@ +DOT_MULTI_TARGETS = @DOXYGEN_DOT_MULTI_TARGETS@ +GENERATE_LEGEND = @DOXYGEN_GENERATE_LEGEND@ +DOT_CLEANUP = @DOXYGEN_DOT_CLEANUP@ diff --git a/ss2pl/build/CMakeDoxygenDefaults.cmake b/ss2pl/build/CMakeDoxygenDefaults.cmake new file mode 100644 index 00000000..db28798f --- /dev/null +++ b/ss2pl/build/CMakeDoxygenDefaults.cmake @@ -0,0 +1,672 @@ +# +# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! +# + +if(NOT DEFINED DOXYGEN_DOXYFILE_ENCODING) + set(DOXYGEN_DOXYFILE_ENCODING UTF-8) +endif() +if(NOT DEFINED DOXYGEN_PROJECT_NAME) + set(DOXYGEN_PROJECT_NAME "My Project") +endif() +if(NOT DEFINED DOXYGEN_CREATE_SUBDIRS) + set(DOXYGEN_CREATE_SUBDIRS NO) +endif() +if(NOT DEFINED DOXYGEN_ALLOW_UNICODE_NAMES) + set(DOXYGEN_ALLOW_UNICODE_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_OUTPUT_LANGUAGE) + set(DOXYGEN_OUTPUT_LANGUAGE English) +endif() +if(NOT DEFINED DOXYGEN_OUTPUT_TEXT_DIRECTION) + set(DOXYGEN_OUTPUT_TEXT_DIRECTION None) +endif() +if(NOT DEFINED DOXYGEN_BRIEF_MEMBER_DESC) + set(DOXYGEN_BRIEF_MEMBER_DESC YES) +endif() +if(NOT DEFINED DOXYGEN_REPEAT_BRIEF) + set(DOXYGEN_REPEAT_BRIEF YES) +endif() +if(NOT DEFINED DOXYGEN_ABBREVIATE_BRIEF) + set(DOXYGEN_ABBREVIATE_BRIEF "The $name class" + "The $name widget" + "The $name file" + is + provides + specifies + contains + represents + a + an + the) +endif() +if(NOT DEFINED DOXYGEN_ALWAYS_DETAILED_SEC) + set(DOXYGEN_ALWAYS_DETAILED_SEC NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_INHERITED_MEMB) + set(DOXYGEN_INLINE_INHERITED_MEMB NO) +endif() +if(NOT DEFINED DOXYGEN_FULL_PATH_NAMES) + set(DOXYGEN_FULL_PATH_NAMES YES) +endif() +if(NOT DEFINED DOXYGEN_SHORT_NAMES) + set(DOXYGEN_SHORT_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_JAVADOC_AUTOBRIEF) + set(DOXYGEN_JAVADOC_AUTOBRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_JAVADOC_BANNER) + set(DOXYGEN_JAVADOC_BANNER NO) +endif() +if(NOT DEFINED DOXYGEN_QT_AUTOBRIEF) + set(DOXYGEN_QT_AUTOBRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_MULTILINE_CPP_IS_BRIEF) + set(DOXYGEN_MULTILINE_CPP_IS_BRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_INHERIT_DOCS) + set(DOXYGEN_INHERIT_DOCS YES) +endif() +if(NOT DEFINED DOXYGEN_SEPARATE_MEMBER_PAGES) + set(DOXYGEN_SEPARATE_MEMBER_PAGES NO) +endif() +if(NOT DEFINED DOXYGEN_TAB_SIZE) + set(DOXYGEN_TAB_SIZE 4) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_FOR_C) + set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_JAVA) + set(DOXYGEN_OPTIMIZE_OUTPUT_JAVA NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_FOR_FORTRAN) + set(DOXYGEN_OPTIMIZE_FOR_FORTRAN NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_VHDL) + set(DOXYGEN_OPTIMIZE_OUTPUT_VHDL NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_SLICE) + set(DOXYGEN_OPTIMIZE_OUTPUT_SLICE NO) +endif() +if(NOT DEFINED DOXYGEN_MARKDOWN_SUPPORT) + set(DOXYGEN_MARKDOWN_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_TOC_INCLUDE_HEADINGS) + set(DOXYGEN_TOC_INCLUDE_HEADINGS 5) +endif() +if(NOT DEFINED DOXYGEN_AUTOLINK_SUPPORT) + set(DOXYGEN_AUTOLINK_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_BUILTIN_STL_SUPPORT) + set(DOXYGEN_BUILTIN_STL_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_CPP_CLI_SUPPORT) + set(DOXYGEN_CPP_CLI_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_SIP_SUPPORT) + set(DOXYGEN_SIP_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_IDL_PROPERTY_SUPPORT) + set(DOXYGEN_IDL_PROPERTY_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_DISTRIBUTE_GROUP_DOC) + set(DOXYGEN_DISTRIBUTE_GROUP_DOC NO) +endif() +if(NOT DEFINED DOXYGEN_GROUP_NESTED_COMPOUNDS) + set(DOXYGEN_GROUP_NESTED_COMPOUNDS NO) +endif() +if(NOT DEFINED DOXYGEN_SUBGROUPING) + set(DOXYGEN_SUBGROUPING YES) +endif() +if(NOT DEFINED DOXYGEN_INLINE_GROUPED_CLASSES) + set(DOXYGEN_INLINE_GROUPED_CLASSES NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_SIMPLE_STRUCTS) + set(DOXYGEN_INLINE_SIMPLE_STRUCTS NO) +endif() +if(NOT DEFINED DOXYGEN_TYPEDEF_HIDES_STRUCT) + set(DOXYGEN_TYPEDEF_HIDES_STRUCT NO) +endif() +if(NOT DEFINED DOXYGEN_LOOKUP_CACHE_SIZE) + set(DOXYGEN_LOOKUP_CACHE_SIZE 0) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_ALL) + set(DOXYGEN_EXTRACT_ALL NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PRIVATE) + set(DOXYGEN_EXTRACT_PRIVATE NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PRIV_VIRTUAL) + set(DOXYGEN_EXTRACT_PRIV_VIRTUAL NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PACKAGE) + set(DOXYGEN_EXTRACT_PACKAGE NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_STATIC) + set(DOXYGEN_EXTRACT_STATIC NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_CLASSES) + set(DOXYGEN_EXTRACT_LOCAL_CLASSES YES) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_METHODS) + set(DOXYGEN_EXTRACT_LOCAL_METHODS NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_ANON_NSPACES) + set(DOXYGEN_EXTRACT_ANON_NSPACES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_MEMBERS) + set(DOXYGEN_HIDE_UNDOC_MEMBERS NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_CLASSES) + set(DOXYGEN_HIDE_UNDOC_CLASSES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_FRIEND_COMPOUNDS) + set(DOXYGEN_HIDE_FRIEND_COMPOUNDS NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_IN_BODY_DOCS) + set(DOXYGEN_HIDE_IN_BODY_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_INTERNAL_DOCS) + set(DOXYGEN_INTERNAL_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_CASE_SENSE_NAMES) + set(DOXYGEN_CASE_SENSE_NAMES YES) +endif() +if(NOT DEFINED DOXYGEN_HIDE_SCOPE_NAMES) + set(DOXYGEN_HIDE_SCOPE_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_COMPOUND_REFERENCE) + set(DOXYGEN_HIDE_COMPOUND_REFERENCE NO) +endif() +if(NOT DEFINED DOXYGEN_SHOW_INCLUDE_FILES) + set(DOXYGEN_SHOW_INCLUDE_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_GROUPED_MEMB_INC) + set(DOXYGEN_SHOW_GROUPED_MEMB_INC NO) +endif() +if(NOT DEFINED DOXYGEN_FORCE_LOCAL_INCLUDES) + set(DOXYGEN_FORCE_LOCAL_INCLUDES NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_INFO) + set(DOXYGEN_INLINE_INFO YES) +endif() +if(NOT DEFINED DOXYGEN_SORT_MEMBER_DOCS) + set(DOXYGEN_SORT_MEMBER_DOCS YES) +endif() +if(NOT DEFINED DOXYGEN_SORT_BRIEF_DOCS) + set(DOXYGEN_SORT_BRIEF_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_MEMBERS_CTORS_1ST) + set(DOXYGEN_SORT_MEMBERS_CTORS_1ST NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_GROUP_NAMES) + set(DOXYGEN_SORT_GROUP_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_BY_SCOPE_NAME) + set(DOXYGEN_SORT_BY_SCOPE_NAME NO) +endif() +if(NOT DEFINED DOXYGEN_STRICT_PROTO_MATCHING) + set(DOXYGEN_STRICT_PROTO_MATCHING NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TODOLIST) + set(DOXYGEN_GENERATE_TODOLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TESTLIST) + set(DOXYGEN_GENERATE_TESTLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_BUGLIST) + set(DOXYGEN_GENERATE_BUGLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DEPRECATEDLIST) + set(DOXYGEN_GENERATE_DEPRECATEDLIST YES) +endif() +if(NOT DEFINED DOXYGEN_MAX_INITIALIZER_LINES) + set(DOXYGEN_MAX_INITIALIZER_LINES 30) +endif() +if(NOT DEFINED DOXYGEN_SHOW_USED_FILES) + set(DOXYGEN_SHOW_USED_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_FILES) + set(DOXYGEN_SHOW_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_NAMESPACES) + set(DOXYGEN_SHOW_NAMESPACES YES) +endif() +if(NOT DEFINED DOXYGEN_QUIET) + set(DOXYGEN_QUIET NO) +endif() +if(NOT DEFINED DOXYGEN_WARNINGS) + set(DOXYGEN_WARNINGS YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_IF_UNDOCUMENTED) + set(DOXYGEN_WARN_IF_UNDOCUMENTED YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_IF_DOC_ERROR) + set(DOXYGEN_WARN_IF_DOC_ERROR YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_NO_PARAMDOC) + set(DOXYGEN_WARN_NO_PARAMDOC NO) +endif() +if(NOT DEFINED DOXYGEN_WARN_AS_ERROR) + set(DOXYGEN_WARN_AS_ERROR NO) +endif() +if(NOT DEFINED DOXYGEN_WARN_FORMAT) + set(DOXYGEN_WARN_FORMAT "$file:$line: $text") +endif() +if(NOT DEFINED DOXYGEN_INPUT_ENCODING) + set(DOXYGEN_INPUT_ENCODING UTF-8) +endif() +if(NOT DEFINED DOXYGEN_FILE_PATTERNS) + set(DOXYGEN_FILE_PATTERNS *.c + *.cc + *.cxx + *.cpp + *.c++ + *.java + *.ii + *.ixx + *.ipp + *.i++ + *.inl + *.idl + *.ddl + *.odl + *.h + *.hh + *.hxx + *.hpp + *.h++ + *.cs + *.d + *.php + *.php4 + *.php5 + *.phtml + *.inc + *.m + *.markdown + *.md + *.mm + *.dox + *.doc + *.txt + *.py + *.pyw + *.f90 + *.f95 + *.f03 + *.f08 + *.f + *.for + *.tcl + *.vhd + *.vhdl + *.ucf + *.qsf + *.ice) +endif() +if(NOT DEFINED DOXYGEN_RECURSIVE) + set(DOXYGEN_RECURSIVE NO) +endif() +if(NOT DEFINED DOXYGEN_EXCLUDE_SYMLINKS) + set(DOXYGEN_EXCLUDE_SYMLINKS NO) +endif() +if(NOT DEFINED DOXYGEN_EXAMPLE_PATTERNS) + set(DOXYGEN_EXAMPLE_PATTERNS *) +endif() +if(NOT DEFINED DOXYGEN_EXAMPLE_RECURSIVE) + set(DOXYGEN_EXAMPLE_RECURSIVE NO) +endif() +if(NOT DEFINED DOXYGEN_FILTER_SOURCE_FILES) + set(DOXYGEN_FILTER_SOURCE_FILES NO) +endif() +if(NOT DEFINED DOXYGEN_SOURCE_BROWSER) + set(DOXYGEN_SOURCE_BROWSER NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_SOURCES) + set(DOXYGEN_INLINE_SOURCES NO) +endif() +if(NOT DEFINED DOXYGEN_STRIP_CODE_COMMENTS) + set(DOXYGEN_STRIP_CODE_COMMENTS YES) +endif() +if(NOT DEFINED DOXYGEN_REFERENCED_BY_RELATION) + set(DOXYGEN_REFERENCED_BY_RELATION NO) +endif() +if(NOT DEFINED DOXYGEN_REFERENCES_RELATION) + set(DOXYGEN_REFERENCES_RELATION NO) +endif() +if(NOT DEFINED DOXYGEN_REFERENCES_LINK_SOURCE) + set(DOXYGEN_REFERENCES_LINK_SOURCE YES) +endif() +if(NOT DEFINED DOXYGEN_SOURCE_TOOLTIPS) + set(DOXYGEN_SOURCE_TOOLTIPS YES) +endif() +if(NOT DEFINED DOXYGEN_USE_HTAGS) + set(DOXYGEN_USE_HTAGS NO) +endif() +if(NOT DEFINED DOXYGEN_VERBATIM_HEADERS) + set(DOXYGEN_VERBATIM_HEADERS YES) +endif() +if(NOT DEFINED DOXYGEN_CLANG_ASSISTED_PARSING) + set(DOXYGEN_CLANG_ASSISTED_PARSING NO) +endif() +if(NOT DEFINED DOXYGEN_ALPHABETICAL_INDEX) + set(DOXYGEN_ALPHABETICAL_INDEX YES) +endif() +if(NOT DEFINED DOXYGEN_COLS_IN_ALPHA_INDEX) + set(DOXYGEN_COLS_IN_ALPHA_INDEX 5) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_HTML) + set(DOXYGEN_GENERATE_HTML YES) +endif() +if(NOT DEFINED DOXYGEN_HTML_OUTPUT) + set(DOXYGEN_HTML_OUTPUT html) +endif() +if(NOT DEFINED DOXYGEN_HTML_FILE_EXTENSION) + set(DOXYGEN_HTML_FILE_EXTENSION .html) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_HUE) + set(DOXYGEN_HTML_COLORSTYLE_HUE 220) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_SAT) + set(DOXYGEN_HTML_COLORSTYLE_SAT 100) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_GAMMA) + set(DOXYGEN_HTML_COLORSTYLE_GAMMA 80) +endif() +if(NOT DEFINED DOXYGEN_HTML_TIMESTAMP) + set(DOXYGEN_HTML_TIMESTAMP NO) +endif() +if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_MENUS) + set(DOXYGEN_HTML_DYNAMIC_MENUS YES) +endif() +if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_SECTIONS) + set(DOXYGEN_HTML_DYNAMIC_SECTIONS NO) +endif() +if(NOT DEFINED DOXYGEN_HTML_INDEX_NUM_ENTRIES) + set(DOXYGEN_HTML_INDEX_NUM_ENTRIES 100) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DOCSET) + set(DOXYGEN_GENERATE_DOCSET NO) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_FEEDNAME) + set(DOXYGEN_DOCSET_FEEDNAME "Doxygen generated docs") +endif() +if(NOT DEFINED DOXYGEN_DOCSET_BUNDLE_ID) + set(DOXYGEN_DOCSET_BUNDLE_ID org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_ID) + set(DOXYGEN_DOCSET_PUBLISHER_ID org.doxygen.Publisher) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_NAME) + set(DOXYGEN_DOCSET_PUBLISHER_NAME Publisher) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_HTMLHELP) + set(DOXYGEN_GENERATE_HTMLHELP NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_CHI) + set(DOXYGEN_GENERATE_CHI NO) +endif() +if(NOT DEFINED DOXYGEN_BINARY_TOC) + set(DOXYGEN_BINARY_TOC NO) +endif() +if(NOT DEFINED DOXYGEN_TOC_EXPAND) + set(DOXYGEN_TOC_EXPAND NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_QHP) + set(DOXYGEN_GENERATE_QHP NO) +endif() +if(NOT DEFINED DOXYGEN_QHP_NAMESPACE) + set(DOXYGEN_QHP_NAMESPACE org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_QHP_VIRTUAL_FOLDER) + set(DOXYGEN_QHP_VIRTUAL_FOLDER doc) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_ECLIPSEHELP) + set(DOXYGEN_GENERATE_ECLIPSEHELP NO) +endif() +if(NOT DEFINED DOXYGEN_ECLIPSE_DOC_ID) + set(DOXYGEN_ECLIPSE_DOC_ID org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_DISABLE_INDEX) + set(DOXYGEN_DISABLE_INDEX NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TREEVIEW) + set(DOXYGEN_GENERATE_TREEVIEW NO) +endif() +if(NOT DEFINED DOXYGEN_ENUM_VALUES_PER_LINE) + set(DOXYGEN_ENUM_VALUES_PER_LINE 4) +endif() +if(NOT DEFINED DOXYGEN_TREEVIEW_WIDTH) + set(DOXYGEN_TREEVIEW_WIDTH 250) +endif() +if(NOT DEFINED DOXYGEN_EXT_LINKS_IN_WINDOW) + set(DOXYGEN_EXT_LINKS_IN_WINDOW NO) +endif() +if(NOT DEFINED DOXYGEN_FORMULA_FONTSIZE) + set(DOXYGEN_FORMULA_FONTSIZE 10) +endif() +if(NOT DEFINED DOXYGEN_FORMULA_TRANSPARENT) + set(DOXYGEN_FORMULA_TRANSPARENT YES) +endif() +if(NOT DEFINED DOXYGEN_USE_MATHJAX) + set(DOXYGEN_USE_MATHJAX NO) +endif() +if(NOT DEFINED DOXYGEN_MATHJAX_FORMAT) + set(DOXYGEN_MATHJAX_FORMAT HTML-CSS) +endif() +if(NOT DEFINED DOXYGEN_MATHJAX_RELPATH) + set(DOXYGEN_MATHJAX_RELPATH https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/) +endif() +if(NOT DEFINED DOXYGEN_SEARCHENGINE) + set(DOXYGEN_SEARCHENGINE YES) +endif() +if(NOT DEFINED DOXYGEN_SERVER_BASED_SEARCH) + set(DOXYGEN_SERVER_BASED_SEARCH NO) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_SEARCH) + set(DOXYGEN_EXTERNAL_SEARCH NO) +endif() +if(NOT DEFINED DOXYGEN_SEARCHDATA_FILE) + set(DOXYGEN_SEARCHDATA_FILE searchdata.xml) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_LATEX) + set(DOXYGEN_GENERATE_LATEX YES) +endif() +if(NOT DEFINED DOXYGEN_LATEX_OUTPUT) + set(DOXYGEN_LATEX_OUTPUT latex) +endif() +if(NOT DEFINED DOXYGEN_MAKEINDEX_CMD_NAME) + set(DOXYGEN_MAKEINDEX_CMD_NAME makeindex) +endif() +if(NOT DEFINED DOXYGEN_LATEX_MAKEINDEX_CMD) + set(DOXYGEN_LATEX_MAKEINDEX_CMD makeindex) +endif() +if(NOT DEFINED DOXYGEN_COMPACT_LATEX) + set(DOXYGEN_COMPACT_LATEX NO) +endif() +if(NOT DEFINED DOXYGEN_PAPER_TYPE) + set(DOXYGEN_PAPER_TYPE a4) +endif() +if(NOT DEFINED DOXYGEN_PDF_HYPERLINKS) + set(DOXYGEN_PDF_HYPERLINKS YES) +endif() +if(NOT DEFINED DOXYGEN_USE_PDFLATEX) + set(DOXYGEN_USE_PDFLATEX YES) +endif() +if(NOT DEFINED DOXYGEN_LATEX_BATCHMODE) + set(DOXYGEN_LATEX_BATCHMODE NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_HIDE_INDICES) + set(DOXYGEN_LATEX_HIDE_INDICES NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_SOURCE_CODE) + set(DOXYGEN_LATEX_SOURCE_CODE NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_BIB_STYLE) + set(DOXYGEN_LATEX_BIB_STYLE plain) +endif() +if(NOT DEFINED DOXYGEN_LATEX_TIMESTAMP) + set(DOXYGEN_LATEX_TIMESTAMP NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_RTF) + set(DOXYGEN_GENERATE_RTF NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_OUTPUT) + set(DOXYGEN_RTF_OUTPUT rtf) +endif() +if(NOT DEFINED DOXYGEN_COMPACT_RTF) + set(DOXYGEN_COMPACT_RTF NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_HYPERLINKS) + set(DOXYGEN_RTF_HYPERLINKS NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_SOURCE_CODE) + set(DOXYGEN_RTF_SOURCE_CODE NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_MAN) + set(DOXYGEN_GENERATE_MAN NO) +endif() +if(NOT DEFINED DOXYGEN_MAN_OUTPUT) + set(DOXYGEN_MAN_OUTPUT man) +endif() +if(NOT DEFINED DOXYGEN_MAN_EXTENSION) + set(DOXYGEN_MAN_EXTENSION .3) +endif() +if(NOT DEFINED DOXYGEN_MAN_LINKS) + set(DOXYGEN_MAN_LINKS NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_XML) + set(DOXYGEN_GENERATE_XML NO) +endif() +if(NOT DEFINED DOXYGEN_XML_OUTPUT) + set(DOXYGEN_XML_OUTPUT xml) +endif() +if(NOT DEFINED DOXYGEN_XML_PROGRAMLISTING) + set(DOXYGEN_XML_PROGRAMLISTING YES) +endif() +if(NOT DEFINED DOXYGEN_XML_NS_MEMB_FILE_SCOPE) + set(DOXYGEN_XML_NS_MEMB_FILE_SCOPE NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DOCBOOK) + set(DOXYGEN_GENERATE_DOCBOOK NO) +endif() +if(NOT DEFINED DOXYGEN_DOCBOOK_OUTPUT) + set(DOXYGEN_DOCBOOK_OUTPUT docbook) +endif() +if(NOT DEFINED DOXYGEN_DOCBOOK_PROGRAMLISTING) + set(DOXYGEN_DOCBOOK_PROGRAMLISTING NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_AUTOGEN_DEF) + set(DOXYGEN_GENERATE_AUTOGEN_DEF NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_PERLMOD) + set(DOXYGEN_GENERATE_PERLMOD NO) +endif() +if(NOT DEFINED DOXYGEN_PERLMOD_LATEX) + set(DOXYGEN_PERLMOD_LATEX NO) +endif() +if(NOT DEFINED DOXYGEN_PERLMOD_PRETTY) + set(DOXYGEN_PERLMOD_PRETTY YES) +endif() +if(NOT DEFINED DOXYGEN_ENABLE_PREPROCESSING) + set(DOXYGEN_ENABLE_PREPROCESSING YES) +endif() +if(NOT DEFINED DOXYGEN_MACRO_EXPANSION) + set(DOXYGEN_MACRO_EXPANSION NO) +endif() +if(NOT DEFINED DOXYGEN_EXPAND_ONLY_PREDEF) + set(DOXYGEN_EXPAND_ONLY_PREDEF NO) +endif() +if(NOT DEFINED DOXYGEN_SEARCH_INCLUDES) + set(DOXYGEN_SEARCH_INCLUDES YES) +endif() +if(NOT DEFINED DOXYGEN_SKIP_FUNCTION_MACROS) + set(DOXYGEN_SKIP_FUNCTION_MACROS YES) +endif() +if(NOT DEFINED DOXYGEN_ALLEXTERNALS) + set(DOXYGEN_ALLEXTERNALS NO) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_GROUPS) + set(DOXYGEN_EXTERNAL_GROUPS YES) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_PAGES) + set(DOXYGEN_EXTERNAL_PAGES YES) +endif() +if(NOT DEFINED DOXYGEN_CLASS_DIAGRAMS) + set(DOXYGEN_CLASS_DIAGRAMS YES) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_RELATIONS) + set(DOXYGEN_HIDE_UNDOC_RELATIONS YES) +endif() +if(NOT DEFINED DOXYGEN_HAVE_DOT) + set(DOXYGEN_HAVE_DOT YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_NUM_THREADS) + set(DOXYGEN_DOT_NUM_THREADS 0) +endif() +if(NOT DEFINED DOXYGEN_DOT_FONTNAME) + set(DOXYGEN_DOT_FONTNAME Helvetica) +endif() +if(NOT DEFINED DOXYGEN_DOT_FONTSIZE) + set(DOXYGEN_DOT_FONTSIZE 10) +endif() +if(NOT DEFINED DOXYGEN_CLASS_GRAPH) + set(DOXYGEN_CLASS_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_COLLABORATION_GRAPH) + set(DOXYGEN_COLLABORATION_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_GROUP_GRAPHS) + set(DOXYGEN_GROUP_GRAPHS YES) +endif() +if(NOT DEFINED DOXYGEN_UML_LOOK) + set(DOXYGEN_UML_LOOK NO) +endif() +if(NOT DEFINED DOXYGEN_UML_LIMIT_NUM_FIELDS) + set(DOXYGEN_UML_LIMIT_NUM_FIELDS 10) +endif() +if(NOT DEFINED DOXYGEN_TEMPLATE_RELATIONS) + set(DOXYGEN_TEMPLATE_RELATIONS NO) +endif() +if(NOT DEFINED DOXYGEN_INCLUDE_GRAPH) + set(DOXYGEN_INCLUDE_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_INCLUDED_BY_GRAPH) + set(DOXYGEN_INCLUDED_BY_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_CALL_GRAPH) + set(DOXYGEN_CALL_GRAPH NO) +endif() +if(NOT DEFINED DOXYGEN_CALLER_GRAPH) + set(DOXYGEN_CALLER_GRAPH NO) +endif() +if(NOT DEFINED DOXYGEN_GRAPHICAL_HIERARCHY) + set(DOXYGEN_GRAPHICAL_HIERARCHY YES) +endif() +if(NOT DEFINED DOXYGEN_DIRECTORY_GRAPH) + set(DOXYGEN_DIRECTORY_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_IMAGE_FORMAT) + set(DOXYGEN_DOT_IMAGE_FORMAT png) +endif() +if(NOT DEFINED DOXYGEN_INTERACTIVE_SVG) + set(DOXYGEN_INTERACTIVE_SVG NO) +endif() +if(NOT DEFINED DOXYGEN_DOT_GRAPH_MAX_NODES) + set(DOXYGEN_DOT_GRAPH_MAX_NODES 50) +endif() +if(NOT DEFINED DOXYGEN_MAX_DOT_GRAPH_DEPTH) + set(DOXYGEN_MAX_DOT_GRAPH_DEPTH 0) +endif() +if(NOT DEFINED DOXYGEN_DOT_TRANSPARENT) + set(DOXYGEN_DOT_TRANSPARENT NO) +endif() +if(NOT DEFINED DOXYGEN_DOT_MULTI_TARGETS) + set(DOXYGEN_DOT_MULTI_TARGETS NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_LEGEND) + set(DOXYGEN_GENERATE_LEGEND YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_CLEANUP) + set(DOXYGEN_DOT_CLEANUP YES) +endif() diff --git a/ss2pl/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake b/ss2pl/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake new file mode 100644 index 00000000..278ef39e --- /dev/null +++ b/ss2pl/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake @@ -0,0 +1,88 @@ +set(CMAKE_CXX_COMPILER "/usr/bin/c++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "GNU") +set(CMAKE_CXX_COMPILER_VERSION "9.4.0") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_CXX_COMPILER_AR "/usr/bin/gcc-ar-9") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/gcc-ranlib-9") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCXX 1) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW ) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/ss2pl/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin b/ss2pl/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin new file mode 100755 index 0000000000000000000000000000000000000000..156cfcfc782ba2dc2f291ca842e4a4516fe2c356 GIT binary patch literal 16560 zcmeHOZ)_Y#6`%9j$)!!smoyvn%vnwdyOtmo7lvVrpwuPwvXOF z?)Io%(NJWFI0cgkRnUGwDn+15d};Xrp8!W`(@F?vgj9;4ULUuER;5=OoERY94~Tj#n5l!?6b&9!;ua#J-b(4kCRM{I=sHkOR#BOG z#%tt&k@=cGjXb(=g7g^edKjC9R;9Pl=|qjSMtyuDiO|-KSqux#soiM zil-YjWkoQ$^@d5$jXk8th(0hKecej_JO1uvJx!VsVHe(`Xu-(-?gKp;7pi|d;BG!b z{#NRT5XGO7!Yg)X(jy&vcW08VnRKo^**Y2SXzkdmm-6}^=^ERGK5$I+4Gak|Gm9LB zQTD|~Dr5cgv-h1U#vXj`#^jmevtRqwV*@`q_5|BNpD2R~^?68O8T04^Wz_Y5268l( z0WYS0oR!21Ut!?2I(1us+faue1Wv2NkFLPq3jDk4$P0+yD2A&;nC9qY!W>KI5}EYF zDJWu(H*e#4>>$5j<9QAszi8v>R)@5gya;#^@FL(vz>9zv0WShx1iT3R zQxW)6^X-2#rY{AI(@j6$Erjv8S*xM?k}>^U;JnnY?t2R8tJOQd4$!<^pgfemCrdp- zmfPRxuUve@LfF4( zZ35Q=m9zv0WShx1iT1%5%415MZk-I7lHqi2>2Xt8-?f}=skR(1n=qcV`j2o6_2-t zPhcn{pBPCWhy4Ob__q2#fbVGWJ=gr3)oKB75%6)qz(Tb;40r|b8Nl$BYV{?+rvY2& zr5L^&#pHYVi11B@d|TJ94xEKLY``0eB-tQvU}lE0A3QoP;ap1L(R87 z6nIn|+;ZT(@82O`L!$ou@EK+~$YVmA7JT+YoBEK51w*GAy4S5b367x%e;J6!;PWx4 zPXUVFVCYOkf3W3?{#a0(X^aJTexa!+*mi1_5e!eS?h8h8!EiL#77gy~3Tj=!mabr^ zD;SXP7k>%rp9eeM`#B7xm%Ipg5%415MZk-I7XdE3dANt22vBVv`=z1RRqWpw_}!g*aRvQ+q<30EcaGbwHM+f zDR?6*+doh3g*U^p%yERrK3RU5>i&+m9F2;lV;iQGHAnH_ zMhOmWB=hEYCO?wMm`N*NESZV&q!`U-3z?LaO6uXZj`sROcw{7PCW^(xl$pv|#VIjX zOk`7LvYgFMfr_nUf~4gT?LL%vFx5Rg+zpP>nN%^_)vu2h3c~zoyuBlx8_S!vKe>?& zOA`L!2FtxiqK9H;Y@o-4QzlN^Nn!SUWFUH|zuQ?OkFx*;=XlJRK^BajBf{*9AMT3A z&BMLDM`MHLV6-b9L#y%-%xI}Buks%sdr2h|R)STQ&do$3j)OBMN~yy!AnQCSV(vVxOW>D2o`;N;nuKp0c_5jWf!9+L zG}b1PpwA_xuLhmc;5-;lWYeS29PBq8;wf|(@L3qd?%DG%mvOxfQxxuWX%KE&HWt=5J_V2#_ zuRuLs6W8NUnoNZJJV>nc#d*Z9!pE+!ksc$PV;wFtKIPKq^)n;Ot)%}gmwtp481eVp zp4|4Hb?NhZoROcG*@k=kewXw){z4;3LY!arVBP=xjQe}Y+BNJXH|o>-r85i0HaB0|z_3fT{_HUC_` z2^qA-{(1csB7OG5@^m>|6n-F(Bk>x~`gheBm0^85^4PJ9M%W-tY@Ej!Qf?35|M343 eZo5OD2JQ}*arVoyxD2hQpA0LBwJrr$QT!cqBtQ)S literal 0 HcmV?d00001 diff --git a/ss2pl/build/CMakeFiles/3.17.0/CMakeSystem.cmake b/ss2pl/build/CMakeFiles/3.17.0/CMakeSystem.cmake new file mode 100644 index 00000000..0fd1f759 --- /dev/null +++ b/ss2pl/build/CMakeFiles/3.17.0/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-5.4.0-113-generic") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "5.4.0-113-generic") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Linux-5.4.0-113-generic") +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_VERSION "5.4.0-113-generic") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/ss2pl/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp b/ss2pl/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 00000000..69cfdba6 --- /dev/null +++ b/ss2pl/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,660 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_dialect_default = "INFO" ":" "dialect_default[" +#if CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} diff --git a/ss2pl/build/CMakeFiles/CMakeError.log b/ss2pl/build/CMakeFiles/CMakeError.log new file mode 100644 index 00000000..7dfd171f --- /dev/null +++ b/ss2pl/build/CMakeFiles/CMakeError.log @@ -0,0 +1,50 @@ +Performing C++ SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output: +Change Dir: /home/tngngn/ccbench/ss2pl/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_58c2c && [1/2] Building CXX object CMakeFiles/cmTC_58c2c.dir/src.cxx.o +[2/2] Linking CXX executable cmTC_58c2c +FAILED: cmTC_58c2c +: && /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD CMakeFiles/cmTC_58c2c.dir/src.cxx.o -o cmTC_58c2c && : +/usr/bin/ld: CMakeFiles/cmTC_58c2c.dir/src.cxx.o: in function `main': +src.cxx:(.text+0x46): undefined reference to `pthread_create' +/usr/bin/ld: src.cxx:(.text+0x52): undefined reference to `pthread_detach' +/usr/bin/ld: src.cxx:(.text+0x5e): undefined reference to `pthread_cancel' +/usr/bin/ld: src.cxx:(.text+0x6f): undefined reference to `pthread_join' +collect2: error: ld returned 1 exit status +ninja: build stopped: subcommand failed. + + +Source file was: +#include + +void* test_func(void* data) +{ + return data; +} + +int main(void) +{ + pthread_t thread; + pthread_create(&thread, NULL, test_func, NULL); + pthread_detach(thread); + pthread_cancel(thread); + pthread_join(thread, NULL); + pthread_atfork(NULL, NULL, NULL); + pthread_exit(NULL); + + return 0; +} + +Determining if the function pthread_create exists in the pthreads failed with the following output: +Change Dir: /home/tngngn/ccbench/ss2pl/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_f4998 && [1/2] Building CXX object CMakeFiles/cmTC_f4998.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_f4998 +FAILED: cmTC_f4998 +: && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_f4998.dir/CheckFunctionExists.cxx.o -o cmTC_f4998 -lpthreads && : +/usr/bin/ld: -lpthreads が見つかりません +collect2: error: ld returned 1 exit status +ninja: build stopped: subcommand failed. + + + diff --git a/ss2pl/build/CMakeFiles/CMakeOutput.log b/ss2pl/build/CMakeFiles/CMakeOutput.log new file mode 100644 index 00000000..1cacb92b --- /dev/null +++ b/ss2pl/build/CMakeFiles/CMakeOutput.log @@ -0,0 +1,235 @@ +The system is: Linux - 5.4.0-113-generic - x86_64 +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: /usr/bin/c++ +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" + +The CXX compiler identification is GNU, found in "/home/tngngn/ccbench/ss2pl/build/CMakeFiles/3.17.0/CompilerIdCXX/a.out" + +Determining if the CXX compiler works passed with the following output: +Change Dir: /home/tngngn/ccbench/ss2pl/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_53a74 && [1/2] Building CXX object CMakeFiles/cmTC_53a74.dir/testCXXCompiler.cxx.o +[2/2] Linking CXX executable cmTC_53a74 + + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: /home/tngngn/ccbench/ss2pl/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_047a2 && [1/2] Building CXX object CMakeFiles/cmTC_047a2.dir/CMakeCXXCompilerABI.cpp.o +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_047a2.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_047a2.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cc4UoyQ5.s +GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9" +ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include" +#include "..." search starts here: +#include <...> search starts here: + /usr/include/c++/9 + /usr/include/x86_64-linux-gnu/c++/9 + /usr/include/c++/9/backward + /usr/lib/gcc/x86_64-linux-gnu/9/include + /usr/local/include + /usr/include/x86_64-linux-gnu + /usr/include +End of search list. +GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_047a2.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + as -v --64 -o CMakeFiles/cmTC_047a2.dir/CMakeCXXCompilerABI.cpp.o /tmp/cc4UoyQ5.s +GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34 +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_047a2.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +[2/2] Linking CXX executable cmTC_047a2 +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_047a2' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccOvyW9p.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_047a2 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_047a2.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_047a2' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/usr/include/c++/9] + add: [/usr/include/x86_64-linux-gnu/c++/9] + add: [/usr/include/c++/9/backward] + add: [/usr/lib/gcc/x86_64-linux-gnu/9/include] + add: [/usr/local/include] + add: [/usr/include/x86_64-linux-gnu] + add: [/usr/include] + end of search list found + collapse include dir [/usr/include/c++/9] ==> [/usr/include/c++/9] + collapse include dir [/usr/include/x86_64-linux-gnu/c++/9] ==> [/usr/include/x86_64-linux-gnu/c++/9] + collapse include dir [/usr/include/c++/9/backward] ==> [/usr/include/c++/9/backward] + collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/9/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/9/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/tngngn/ccbench/ss2pl/build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/local/bin/ninja cmTC_047a2 && [1/2] Building CXX object CMakeFiles/cmTC_047a2.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_047a2.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_047a2.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cc4UoyQ5.s] + ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9"] + ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/include/c++/9] + ignore line: [ /usr/include/x86_64-linux-gnu/c++/9] + ignore line: [ /usr/include/c++/9/backward] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/include/x86_64-linux-gnu] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_047a2.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_047a2.dir/CMakeCXXCompilerABI.cpp.o /tmp/cc4UoyQ5.s] + ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_047a2.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [[2/2] Linking CXX executable cmTC_047a2] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_047a2' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccOvyW9p.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_047a2 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_047a2.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccOvyW9p.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--as-needed] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-o] ==> ignore + arg [cmTC_047a2] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] + arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] + arg [CMakeFiles/cmTC_047a2.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] ==> ignore + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9] ==> [/usr/lib/gcc/x86_64-linux-gnu/9] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> [/usr/lib] + implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc] + implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] + implicit fwks: [] + + +Determining if the include file pthread.h exists passed with the following output: +Change Dir: /home/tngngn/ccbench/ss2pl/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_34428 && [1/2] Building CXX object CMakeFiles/cmTC_34428.dir/CheckIncludeFile.cxx.o +[2/2] Linking CXX executable cmTC_34428 + + + +Determining if the function pthread_create exists in the pthread passed with the following output: +Change Dir: /home/tngngn/ccbench/ss2pl/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_63519 && [1/2] Building CXX object CMakeFiles/cmTC_63519.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_63519 + + + diff --git a/ss2pl/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx b/ss2pl/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx new file mode 100644 index 00000000..13435e07 --- /dev/null +++ b/ss2pl/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx @@ -0,0 +1,28 @@ +#ifdef CHECK_FUNCTION_EXISTS + +# ifdef __cplusplus +extern "C" +# endif + char + CHECK_FUNCTION_EXISTS(void); +# ifdef __CLASSIC_C__ +int main() +{ + int ac; + char* av[]; +# else +int main(int ac, char* av[]) +{ +# endif + CHECK_FUNCTION_EXISTS(); + if (ac > 1000) { + return *av[0]; + } + return 0; +} + +#else /* CHECK_FUNCTION_EXISTS */ + +# error "CHECK_FUNCTION_EXISTS has to specify the function" + +#endif /* CHECK_FUNCTION_EXISTS */ diff --git a/ss2pl/build/CMakeFiles/TargetDirectories.txt b/ss2pl/build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 00000000..c56eceba --- /dev/null +++ b/ss2pl/build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,8 @@ +/home/tngngn/ccbench/ss2pl/build/CMakeFiles/rebuild_cache.dir +/home/tngngn/ccbench/ss2pl/build/CMakeFiles/edit_cache.dir +/home/tngngn/ccbench/ss2pl/build/CMakeFiles/test.dir +/home/tngngn/ccbench/ss2pl/build/CMakeFiles/ss2pl.exe.dir +/home/tngngn/ccbench/ss2pl/build/test/CMakeFiles/rebuild_cache.dir +/home/tngngn/ccbench/ss2pl/build/test/CMakeFiles/edit_cache.dir +/home/tngngn/ccbench/ss2pl/build/test/CMakeFiles/test.dir +/home/tngngn/ccbench/ss2pl/build/test/CMakeFiles/make_db_test.dir diff --git a/ss2pl/build/CMakeFiles/cmake.check_cache b/ss2pl/build/CMakeFiles/cmake.check_cache new file mode 100644 index 00000000..3dccd731 --- /dev/null +++ b/ss2pl/build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/ss2pl/build/CTestTestfile.cmake b/ss2pl/build/CTestTestfile.cmake new file mode 100644 index 00000000..54a72084 --- /dev/null +++ b/ss2pl/build/CTestTestfile.cmake @@ -0,0 +1,7 @@ +# CMake generated Testfile for +# Source directory: /home/tngngn/ccbench/ss2pl +# Build directory: /home/tngngn/ccbench/ss2pl/build +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. +subdirs("test") diff --git a/ss2pl/build/build.ninja b/ss2pl/build/build.ninja new file mode 100644 index 00000000..4a08aea0 --- /dev/null +++ b/ss2pl/build/build.ninja @@ -0,0 +1,334 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.17 + +# This file contains all the build statements describing the +# compilation DAG. + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# +# Which is the root file. +# ============================================================================= + +# ============================================================================= +# Project: ccbench_ss2pl +# Configurations: Release +# ============================================================================= + +############################################# +# Minimal version of Ninja required by this file + +ninja_required_version = 1.5 + + +############################################# +# Set configuration variable for custom commands. + +CONFIGURATION = Release +# ============================================================================= +# Include auxiliary files. + + +############################################# +# Include rules file. + +include rules.ninja + + +############################################# +# Utility command for rebuild_cache + +build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/ss2pl/build && /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/ss2pl -B/home/tngngn/ccbench/ss2pl/build + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build rebuild_cache: phony CMakeFiles/rebuild_cache.util + + +############################################# +# Utility command for edit_cache + +build CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/ss2pl/build && /usr/local/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. + DESC = No interactive CMake dialog available... + restat = 1 + +build edit_cache: phony CMakeFiles/edit_cache.util + + +############################################# +# Utility command for test + +build CMakeFiles/test.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/ss2pl/build && /usr/local/bin/ctest --force-new-ctest-process + DESC = Running tests... + pool = console + restat = 1 + +build test: phony CMakeFiles/test.util + +# ============================================================================= +# Object build statements for EXECUTABLE target ss2pl.exe + + +############################################# +# Order-only phony target for ss2pl.exe + +build cmake_object_order_depends_target_ss2pl.exe_Release: phony || CMakeFiles/ss2pl.exe.dir + +build CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Release /home/tngngn/ccbench/common/result.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Release /home/tngngn/ccbench/common/util.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../result.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/result.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../ss2pl.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/transaction.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../transaction.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/transaction.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../util.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/util.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + + +# ============================================================================= +# Link build statements for EXECUTABLE target ss2pl.exe + + +############################################# +# Link the executable ss2pl.exe + +build ss2pl.exe: CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Release CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o CMakeFiles/ss2pl.exe.dir/result.cc.o CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o CMakeFiles/ss2pl.exe.dir/transaction.cc.o CMakeFiles/ss2pl.exe.dir/util.cc.o | /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a + FLAGS = -O3 -DNDEBUG + LINK_LIBRARIES = /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a -lpthread + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + POST_BUILD = : + PRE_LINK = : + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_FILE = ss2pl.exe + TARGET_PDB = ss2pl.exe.pdb + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# /home/tngngn/ccbench/ss2pl/CMakeLists.txt +# ============================================================================= + + +############################################# +# Utility command for rebuild_cache + +build test/CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/ss2pl/build/test && /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/ss2pl -B/home/tngngn/ccbench/ss2pl/build + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build test/rebuild_cache: phony test/CMakeFiles/rebuild_cache.util + + +############################################# +# Utility command for edit_cache + +build test/CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/ss2pl/build/test && /usr/local/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. + DESC = No interactive CMake dialog available... + restat = 1 + +build test/edit_cache: phony test/CMakeFiles/edit_cache.util + + +############################################# +# Utility command for test + +build test/CMakeFiles/test.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/ss2pl/build/test && /usr/local/bin/ctest --force-new-ctest-process + DESC = Running tests... + pool = console + restat = 1 + +build test/test: phony test/CMakeFiles/test.util + +# ============================================================================= +# Object build statements for EXECUTABLE target make_db_test + + +############################################# +# Order-only phony target for make_db_test + +build cmake_object_order_depends_target_make_db_test_Release: phony || test/CMakeFiles/make_db_test.dir + +build test/CMakeFiles/make_db_test.dir/make_db_test.cpp.o: CXX_COMPILER__make_db_test_Release ../test/make_db_test.cpp || cmake_object_order_depends_target_make_db_test_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = test/CMakeFiles/make_db_test.dir/make_db_test.cpp.o.d + FLAGS = -O3 -DNDEBUG -Wall -Wextra -Werror -std=c++17 + INCLUDES = -I../../third_party/googletest/googletest/include + OBJECT_DIR = test/CMakeFiles/make_db_test.dir + OBJECT_FILE_DIR = test/CMakeFiles/make_db_test.dir + TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ + TARGET_PDB = test/make_db_test.pdb + +build test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common/result.cc.o: CXX_COMPILER__make_db_test_Release /home/tngngn/ccbench/common/result.cc || cmake_object_order_depends_target_make_db_test_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common/result.cc.o.d + FLAGS = -O3 -DNDEBUG -Wall -Wextra -Werror -std=c++17 + INCLUDES = -I../../third_party/googletest/googletest/include + OBJECT_DIR = test/CMakeFiles/make_db_test.dir + OBJECT_FILE_DIR = test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common + TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ + TARGET_PDB = test/make_db_test.pdb + +build test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common/util.cc.o: CXX_COMPILER__make_db_test_Release /home/tngngn/ccbench/common/util.cc || cmake_object_order_depends_target_make_db_test_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common/util.cc.o.d + FLAGS = -O3 -DNDEBUG -Wall -Wextra -Werror -std=c++17 + INCLUDES = -I../../third_party/googletest/googletest/include + OBJECT_DIR = test/CMakeFiles/make_db_test.dir + OBJECT_FILE_DIR = test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common + TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ + TARGET_PDB = test/make_db_test.pdb + +build test/CMakeFiles/make_db_test.dir/__/result.cc.o: CXX_COMPILER__make_db_test_Release ../result.cc || cmake_object_order_depends_target_make_db_test_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = test/CMakeFiles/make_db_test.dir/__/result.cc.o.d + FLAGS = -O3 -DNDEBUG -Wall -Wextra -Werror -std=c++17 + INCLUDES = -I../../third_party/googletest/googletest/include + OBJECT_DIR = test/CMakeFiles/make_db_test.dir + OBJECT_FILE_DIR = test/CMakeFiles/make_db_test.dir/__ + TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ + TARGET_PDB = test/make_db_test.pdb + +build test/CMakeFiles/make_db_test.dir/__/transaction.cc.o: CXX_COMPILER__make_db_test_Release ../transaction.cc || cmake_object_order_depends_target_make_db_test_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = test/CMakeFiles/make_db_test.dir/__/transaction.cc.o.d + FLAGS = -O3 -DNDEBUG -Wall -Wextra -Werror -std=c++17 + INCLUDES = -I../../third_party/googletest/googletest/include + OBJECT_DIR = test/CMakeFiles/make_db_test.dir + OBJECT_FILE_DIR = test/CMakeFiles/make_db_test.dir/__ + TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ + TARGET_PDB = test/make_db_test.pdb + +build test/CMakeFiles/make_db_test.dir/__/util.cc.o: CXX_COMPILER__make_db_test_Release ../util.cc || cmake_object_order_depends_target_make_db_test_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = test/CMakeFiles/make_db_test.dir/__/util.cc.o.d + FLAGS = -O3 -DNDEBUG -Wall -Wextra -Werror -std=c++17 + INCLUDES = -I../../third_party/googletest/googletest/include + OBJECT_DIR = test/CMakeFiles/make_db_test.dir + OBJECT_FILE_DIR = test/CMakeFiles/make_db_test.dir/__ + TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ + TARGET_PDB = test/make_db_test.pdb + + +# ============================================================================= +# Link build statements for EXECUTABLE target make_db_test + + +############################################# +# Link the executable test/make_db_test + +build test/make_db_test: CXX_EXECUTABLE_LINKER__make_db_test_Release test/CMakeFiles/make_db_test.dir/make_db_test.cpp.o test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common/result.cc.o test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common/util.cc.o test/CMakeFiles/make_db_test.dir/__/result.cc.o test/CMakeFiles/make_db_test.dir/__/transaction.cc.o test/CMakeFiles/make_db_test.dir/__/util.cc.o | /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so /usr/lib/x86_64-linux-gnu/libglog.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a ../../third_party/googletest/build/lib/libgtest.a ../../third_party/googletest/build/lib/libgtest_main.a + FLAGS = -O3 -DNDEBUG + LINK_LIBRARIES = /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so /usr/lib/x86_64-linux-gnu/libglog.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a ../../third_party/googletest/build/lib/libgtest.a ../../third_party/googletest/build/lib/libgtest_main.a -lpthread + OBJECT_DIR = test/CMakeFiles/make_db_test.dir + POST_BUILD = : + PRE_LINK = : + TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ + TARGET_FILE = test/make_db_test + TARGET_PDB = test/make_db_test.pdb + +# ============================================================================= +# Target aliases. + +build make_db_test: phony test/make_db_test + +# ============================================================================= +# Folder targets. + +# ============================================================================= + +############################################# +# Folder: /home/tngngn/ccbench/ss2pl/build + +build all: phony ss2pl.exe test/all + +# ============================================================================= + +############################################# +# Folder: /home/tngngn/ccbench/ss2pl/build/test + +build test/all: phony test/make_db_test + +# ============================================================================= +# Built-in targets + + +############################################# +# Re-run CMake if any of its inputs changed. + +build build.ninja: RERUN_CMAKE | ../CMakeLists.txt ../test/CMakeLists.txt /home/tngngn/ccbench/cmake/CompileOptions.cmake /home/tngngn/ccbench/cmake/Findgflags.cmake /home/tngngn/ccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx + pool = console + + +############################################# +# A missing CMake input file is not an error. + +build ../CMakeLists.txt ../test/CMakeLists.txt /home/tngngn/ccbench/cmake/CompileOptions.cmake /home/tngngn/ccbench/cmake/Findgflags.cmake /home/tngngn/ccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx: phony + + +############################################# +# Clean all the built files. + +build clean: CLEAN + + +############################################# +# Print all primary targets available. + +build help: HELP + + +############################################# +# Make the all target the default. + +default all diff --git a/ss2pl/build/cmake_install.cmake b/ss2pl/build/cmake_install.cmake new file mode 100644 index 00000000..c388a1a1 --- /dev/null +++ b/ss2pl/build/cmake_install.cmake @@ -0,0 +1,55 @@ +# Install script for directory: /home/tngngn/ccbench/ss2pl + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +if(NOT CMAKE_INSTALL_LOCAL_ONLY) + # Include the install script for each subdirectory. + include("/home/tngngn/ccbench/ss2pl/build/test/cmake_install.cmake") + +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "/home/tngngn/ccbench/ss2pl/build/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/ss2pl/build/rules.ninja b/ss2pl/build/rules.ninja new file mode 100644 index 00000000..d7b58b67 --- /dev/null +++ b/ss2pl/build/rules.ninja @@ -0,0 +1,83 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.17 + +# This file contains all the rules used to get the outputs files +# built from the input files. +# It is included in the main 'build.ninja'. + +# ============================================================================= +# Project: ccbench_ss2pl +# Configurations: Release +# ============================================================================= +# ============================================================================= + +############################################# +# Rule for running custom commands. + +rule CUSTOM_COMMAND + command = $COMMAND + description = $DESC + + +############################################# +# Rule for compiling CXX files. + +rule CXX_COMPILER__ss2pl.2eexe_Release + depfile = $DEP_FILE + deps = gcc + command = /usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building CXX object $out + + +############################################# +# Rule for linking CXX executable. + +rule CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Release + command = $PRE_LINK && /usr/bin/c++ $FLAGS $LINK_FLAGS $in -o $TARGET_FILE $LINK_PATH $LINK_LIBRARIES && $POST_BUILD + description = Linking CXX executable $TARGET_FILE + restat = $RESTAT + + +############################################# +# Rule for compiling CXX files. + +rule CXX_COMPILER__make_db_test_Release + depfile = $DEP_FILE + deps = gcc + command = /usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building CXX object $out + + +############################################# +# Rule for linking CXX executable. + +rule CXX_EXECUTABLE_LINKER__make_db_test_Release + command = $PRE_LINK && /usr/bin/c++ $FLAGS $LINK_FLAGS $in -o $TARGET_FILE $LINK_PATH $LINK_LIBRARIES && $POST_BUILD + description = Linking CXX executable $TARGET_FILE + restat = $RESTAT + + +############################################# +# Rule for re-running cmake. + +rule RERUN_CMAKE + command = /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/ss2pl -B/home/tngngn/ccbench/ss2pl/build + description = Re-running CMake... + generator = 1 + + +############################################# +# Rule for cleaning all built files. + +rule CLEAN + command = /usr/local/bin/ninja $FILE_ARG -t clean $TARGETS + description = Cleaning all built files... + + +############################################# +# Rule for printing all primary targets available. + +rule HELP + command = /usr/local/bin/ninja -t targets + description = All primary targets available: + diff --git a/ss2pl/build/test/CTestTestfile.cmake b/ss2pl/build/test/CTestTestfile.cmake new file mode 100644 index 00000000..3f0cf7f0 --- /dev/null +++ b/ss2pl/build/test/CTestTestfile.cmake @@ -0,0 +1,8 @@ +# CMake generated Testfile for +# Source directory: /home/tngngn/ccbench/ss2pl/test +# Build directory: /home/tngngn/ccbench/ss2pl/build/test +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. +add_test(make_db_test "/home/tngngn/ccbench/ss2pl/build/test/make_db_test" "--gtest_output=xml:make_db_test_gtest_result.xml") +set_tests_properties(make_db_test PROPERTIES _BACKTRACE_TRIPLES "/home/tngngn/ccbench/ss2pl/test/CMakeLists.txt;72;add_test;/home/tngngn/ccbench/ss2pl/test/CMakeLists.txt;0;") diff --git a/ss2pl/build/test/cmake_install.cmake b/ss2pl/build/test/cmake_install.cmake new file mode 100644 index 00000000..7943d9f6 --- /dev/null +++ b/ss2pl/build/test/cmake_install.cmake @@ -0,0 +1,39 @@ +# Install script for directory: /home/tngngn/ccbench/ss2pl/test + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + diff --git a/ss2pl/build/test/make_db_test b/ss2pl/build/test/make_db_test new file mode 100755 index 0000000000000000000000000000000000000000..33574ee82b936bdbeaf91fa20104be1f79b346fc GIT binary patch literal 1165144 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 z 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

vBjt!!cX<(ky7AJ9hy~{&JS)yxAQ~ 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℞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%0D$lO5JVcYyALQ<-$%s+bHkzz6YV*f1VUA_w4I?C3 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
|es>GtbU_ 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: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 r_lock_list_; std::vector w_lock_list_; TransactionStatus status_ = TransactionStatus::inFlight; diff --git a/ss2pl/include/tuple.hh b/ss2pl/include/tuple.hh index cc2610ce..8cc50194 100644 --- a/ss2pl/include/tuple.hh +++ b/ss2pl/include/tuple.hh @@ -8,9 +8,14 @@ #include "../../include/rwlock.hh" using namespace std; +#define UNLOCKED INT32_MAX class Tuple { public: alignas(CACHE_LINE_SIZE) RWLock lock_; + RWLock latch_; char val_[VAL_SIZE]; + int writer_; + int reader_; + bool writeflag_; }; diff --git a/ss2pl/ss2pl.cc b/ss2pl/ss2pl.cc index 22829295..c601a19a 100644 --- a/ss2pl/ss2pl.cc +++ b/ss2pl/ss2pl.cc @@ -1,4 +1,3 @@ - #include //isdigit, #include #include //strlen, diff --git a/ss2pl/transaction.cc b/ss2pl/transaction.cc index eacf0aa3..6250d0b8 100644 --- a/ss2pl/transaction.cc +++ b/ss2pl/transaction.cc @@ -1,4 +1,3 @@ - #include #include @@ -86,6 +85,7 @@ void TxExecutor::abort() { * @return void */ void TxExecutor::commit() { + //printf("tx%d commit\n", thid_); for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { /** * update payload. @@ -103,6 +103,7 @@ void TxExecutor::commit() { */ read_set_.clear(); write_set_.clear(); + } /** @@ -138,26 +139,34 @@ void TxExecutor::read(uint64_t key) { #else tuple = get_tuple(Table, key); #endif - -#ifdef DLR0 - /** - * Acquire lock with wait. - */ - tuple->lock_.r_lock(); - r_lock_list_.emplace_back(&tuple->lock_); - read_set_.emplace_back(key, tuple, tuple->val_); -#elif defined(DLR1) - if (tuple->lock_.r_trylock()) { - r_lock_list_.emplace_back(&tuple->lock_); - read_set_.emplace_back(key, tuple, tuple->val_); - } else { - /** - * No-wait and abort. - */ - this->status_ = TransactionStatus::aborted; - goto FINISH_READ; + while(1) { + if(!tuple->latch_.w_trylock()) { + usleep(1); + continue; + } + if(tuple->writeflag_) { + if(thid_ > tuple->writer_) { + tuple->latch_.w_unlock(); + status_ = TransactionStatus::aborted; + goto FINISH_READ; + } + tuple->latch_.w_unlock(); + usleep(1); + continue; + } + else { + while(1) { + if(tuple->lock_.r_trylock()) { + if(thid_ < tuple->reader_) + tuple->reader_ = txid_; + tuple->latch_.w_unlock(); + read_set_.emplace_back(key, tuple, tuple->val_); + goto FINISH_READ; + } + usleep(1); + } + } } -#endif FINISH_READ: @@ -179,35 +188,6 @@ void TxExecutor::write(uint64_t key) { // if it already wrote the key object once. if (searchWriteSet(key)) goto FINISH_WRITE; - - for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { - if ((*rItr).key_ == key) { // hit -#if DLR0 - (*rItr).rcdptr_->lock_.upgrade(); -#elif defined(DLR1) - if (!(*rItr).rcdptr_->lock_.tryupgrade()) { - this->status_ = TransactionStatus::aborted; - goto FINISH_WRITE; - } -#endif - - // upgrade success - // remove old element of read lock list. - for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); - ++lItr) { - if (*lItr == &((*rItr).rcdptr_->lock_)) { - write_set_.emplace_back(key, (*rItr).rcdptr_); - w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); - r_lock_list_.erase(lItr); - break; - } - } - - read_set_.erase(rItr); - goto FINISH_WRITE; - } - } - /** * Search tuple from data structure. */ @@ -220,27 +200,90 @@ void TxExecutor::write(uint64_t key) { #else tuple = get_tuple(Table, key); #endif - -#if DLR0 - /** - * Lock with wait. - */ - tuple->lock_.w_lock(); -#elif defined(DLR1) - if (!tuple->lock_.w_trylock()) { - /** - * No-wait and abort. - */ - this->status_ = TransactionStatus::aborted; - goto FINISH_WRITE; + + for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { + if ((*rItr).key_ == key) { // hit + while(1) { + if(!tuple->latch_.w_trylock()) { + usleep(1); + continue; + } + if(tuple->writeflag_) { + if(thid_ > tuple->writer_) { + tuple->latch_.w_unlock(); + status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + tuple->latch_.w_unlock(); + usleep(1); + continue; + } + tuple->writeflag_ = true; // the fact that i am holding the lock suggests that there is no need to spinwait writeflag + tuple->writer_ = thid_; + if(thid_ > tuple->reader_) { + tuple->writeflag_ = false; + tuple->latch_.w_unlock(); + status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + tuple->latch_.w_unlock(); + while(1) { + if(tuple->lock_.tryupgrade()) { + tuple->reader_ = UNLOCKED; + tuple->writer_ = thid_; + write_set_.emplace_back(key, (*rItr).rcdptr_); + read_set_.erase(rItr); + goto FINISH_WRITE; + } + if(thid_ > tuple->reader_) { + tuple->writeflag_ = false; + status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + usleep(1); + } + } + } } -#endif - /** - * Register the contents to write lock list and write set. - */ - w_lock_list_.emplace_back(&tuple->lock_); - write_set_.emplace_back(key, tuple); + while (1) { + if(!tuple->latch_.w_trylock()) { + usleep(1); + continue; + } + if(tuple->writeflag_) { + if(thid_ > tuple->writer_) { + tuple->latch_.w_unlock(); + status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + tuple->latch_.w_unlock(); + usleep(1); + continue; + } + tuple->writeflag_ = true; + tuple->writer_ = thid_; + if(txid_ > tuple->reader_) { + tuple->writeflag_ = false; + tuple->latch_.w_unlock(); + status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + tuple->latch_.w_unlock(); + while(1){ + if(tuple->lock_.w_trylock()) { + tuple->writer_ = thid_; + write_set_.emplace_back(key, tuple); + goto FINISH_WRITE; + } + if(thid_ > tuple->reader_) { + tuple->writeflag_ = false; + status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + usleep(1); + } + } FINISH_WRITE: #if ADD_ANALYSIS @@ -255,75 +298,77 @@ void TxExecutor::write(uint64_t key) { void TxExecutor::readWrite(uint64_t key) { // if it already wrote the key object once. if (searchWriteSet(key)) goto FINISH_WRITE; - + Tuple *tuple; + tuple = get_tuple(Table, key); for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { if ((*rItr).key_ == key) { // hit -#if DLR0 - (*rItr).rcdptr_->lock_.upgrade(); -#elif defined(DLR1) - if (!(*rItr).rcdptr_->lock_.tryupgrade()) { - /** - * No-wait and abort. - */ - this->status_ = TransactionStatus::aborted; + tuple->latch_.w_lock(); + if(thid_ > tuple->reader_) { + tuple->latch_.w_unlock(); + status_ = TransactionStatus::aborted; goto FINISH_WRITE; } -#endif - - // upgrade success - // remove old element of read set. - for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); - ++lItr) { - if (*lItr == &((*rItr).rcdptr_->lock_)) { - write_set_.emplace_back(key, (*rItr).rcdptr_); - w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); - r_lock_list_.erase(lItr); - break; + else { + tuple->writeflag_ = true; // the fact that i am holding the lock suggests that there is no need to spinwait writeflag + tuple->latch_.w_unlock(); + while(1) { + if(tuple->lock_.tryupgrade()) { + tuple->reader_ = UNLOCKED; + tuple->writer_ = thid_; + for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); + ++lItr) { + if (*lItr == &((*rItr).rcdptr_->lock_)) { + write_set_.emplace_back(key, (*rItr).rcdptr_); + w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); + r_lock_list_.erase(lItr); + break; + } + } + read_set_.erase(rItr); + goto FINISH_WRITE; + } + usleep(1); } } - - read_set_.erase(rItr); - goto FINISH_WRITE; } } - /** - * Search tuple from data structure. - */ - Tuple *tuple; -#if MASSTREE_USE - tuple = MT.get_value(key); -#if ADD_ANALYSIS - ++sres_->local_tree_traversal_; -#endif -#else - tuple = get_tuple(Table, key); -#endif - -#if DLR0 - /** - * Lock with wait. - */ - tuple->lock_.w_lock(); -#elif defined(DLR1) - if (!tuple->lock_.w_trylock()) { - /** - * Nowait and abort. - */ - this->status_ = TransactionStatus::aborted; - goto FINISH_WRITE; + while (1) { + tuple->latch_.w_lock(); + if(tuple->writeflag_) { + if(thid_ > tuple->writer_) { + status_ = TransactionStatus::aborted; + tuple->latch_.w_unlock(); + goto FINISH_WRITE; + } + tuple->latch_.w_unlock(); + usleep(1); + continue; + } + tuple->writeflag_ = true; + if(thid_ > tuple->reader_) { + tuple->writeflag_ = false; + tuple->latch_.w_unlock(); + status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + tuple->latch_.w_unlock(); + while(1){ + if(tuple->lock_.w_trylock()) { + tuple->latch_.w_unlock(); + tuple->writer_ = thid_; + memcpy(this->return_val_, tuple->val_, VAL_SIZE); + w_lock_list_.emplace_back(&tuple->lock_); + write_set_.emplace_back(key, tuple); + goto FINISH_WRITE; + } + if(thid_ > tuple->reader_) { + status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + usleep(1); + } } -#endif - - // read payload - memcpy(this->return_val_, tuple->val_, VAL_SIZE); - // finish read. - - /** - * Register the contents to write lock list and write set. - */ - w_lock_list_.emplace_back(&tuple->lock_); - write_set_.emplace_back(key, tuple); FINISH_WRITE: return; @@ -334,11 +379,20 @@ void TxExecutor::readWrite(uint64_t key) { * @return void */ void TxExecutor::unlockList() { - for (auto itr = r_lock_list_.begin(); itr != r_lock_list_.end(); ++itr) - (*itr)->r_unlock(); - for (auto itr = w_lock_list_.begin(); itr != w_lock_list_.end(); ++itr) - (*itr)->w_unlock(); + for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) { + (*itr).rcdptr_->latch_.w_lock(); + int reader = (*itr).rcdptr_->lock_.counter.load(memory_order_acquire); + if(reader == 1) (*itr).rcdptr_->reader_ = UNLOCKED; + (*itr).rcdptr_->lock_.r_unlock(); + (*itr).rcdptr_->latch_.w_unlock(); + } + + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { + (*itr).rcdptr_->writeflag_ = false; + (*itr).rcdptr_->writer_ = UNLOCKED; + (*itr).rcdptr_->lock_.w_unlock(); + } /** * Clean-up local lock set. diff --git a/tictoc/build/.ninja_deps b/tictoc/build/.ninja_deps new file mode 100644 index 0000000000000000000000000000000000000000..10f82053c4a9aa5334b28d1335a7aff48f4d447a GIT binary patch literal 35048 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 literal 0 HcmV?d00001 diff --git a/tictoc/build/.ninja_log b/tictoc/build/.ninja_log new file mode 100644 index 00000000..4fed420d --- /dev/null +++ b/tictoc/build/.ninja_log @@ -0,0 +1,8 @@ +# ninja log v5 +0 445 1668087329801362193 CMakeFiles/tictoc.exe.dir/home/tngngn/ccbench/common/result.cc.o 43b4c771a03ac530 +1 711 1668087330065353515 CMakeFiles/tictoc.exe.dir/home/tngngn/ccbench/common/util.cc.o 256a9acb33c22082 +1 839 1668087330193349307 CMakeFiles/tictoc.exe.dir/result.cc.o 92561fb93c55f28d +1 1426 1668087330781329978 CMakeFiles/tictoc.exe.dir/tictoc.cc.o a3a206848fd0b4a1 +2 1437 1668087330789329716 CMakeFiles/tictoc.exe.dir/transaction.cc.o 67de39d100444d62 +2 1450 1668087330805329190 CMakeFiles/tictoc.exe.dir/util.cc.o 2a11247fe7affd08 +1450 1527 1668087330881326692 tictoc.exe b157a3edf0b62953 diff --git a/tictoc/build/CMakeCache.txt b/tictoc/build/CMakeCache.txt new file mode 100644 index 00000000..62f8e726 --- /dev/null +++ b/tictoc/build/CMakeCache.txt @@ -0,0 +1,473 @@ +# This is the CMakeCache file. +# For build in directory: /home/tngngn/ccbench/tictoc/build +# It was generated by CMake: /usr/local/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//The directory containing a CMake configuration file for Boost. +Boost_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0 + +Boost_FILESYSTEM_LIBRARY_RELEASE:STRING=/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 + +//Path to a file. +Boost_INCLUDE_DIR:PATH=/usr/include + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING=Release + +//CXX compiler +CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-9 + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-9 + +//Flags used by the CXX compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the CXX compiler during DEBUG builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the CXX compiler during RELEASE builds. +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//User executables (bin) +CMAKE_INSTALL_BINDIR:PATH=bin + +//Read-only architecture-independent data (DATAROOTDIR) +CMAKE_INSTALL_DATADIR:PATH= + +//Read-only architecture-independent data root (share) +CMAKE_INSTALL_DATAROOTDIR:PATH=share + +//Documentation root (DATAROOTDIR/doc/PROJECT_NAME) +CMAKE_INSTALL_DOCDIR:PATH= + +//C header files (include) +CMAKE_INSTALL_INCLUDEDIR:PATH=include + +//Info documentation (DATAROOTDIR/info) +CMAKE_INSTALL_INFODIR:PATH= + +//Object code libraries (lib) +CMAKE_INSTALL_LIBDIR:PATH=lib + +//Program executables (libexec) +CMAKE_INSTALL_LIBEXECDIR:PATH=libexec + +//Locale-dependent data (DATAROOTDIR/locale) +CMAKE_INSTALL_LOCALEDIR:PATH= + +//Modifiable single-machine data (var) +CMAKE_INSTALL_LOCALSTATEDIR:PATH=var + +//Man documentation (DATAROOTDIR/man) +CMAKE_INSTALL_MANDIR:PATH= + +//C header files for non-gcc (/usr/include) +CMAKE_INSTALL_OLDINCLUDEDIR:PATH=/usr/include + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Run-time variable data (LOCALSTATEDIR/run) +CMAKE_INSTALL_RUNSTATEDIR:PATH= + +//System admin executables (sbin) +CMAKE_INSTALL_SBINDIR:PATH=sbin + +//Modifiable architecture-independent data (com) +CMAKE_INSTALL_SHAREDSTATEDIR:PATH=com + +//Read-only single-machine data (etc) +CMAKE_INSTALL_SYSCONFDIR:PATH=etc + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Program used to build from build.ninja files. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/local/bin/ninja + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC=tictoc of ccbench + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=ccbench_tictoc + +//Value Computed by CMake +CMAKE_PROJECT_VERSION:STATIC=0.0.1 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MAJOR:STATIC=0 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MINOR:STATIC=0 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_PATCH:STATIC=1 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_TWEAK:STATIC= + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/usr/bin/readelf + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Dot tool for use with Doxygen +DOXYGEN_DOT_EXECUTABLE:FILEPATH=/usr/bin/dot + +//Doxygen documentation generation tool (http://www.doxygen.org) +DOXYGEN_EXECUTABLE:FILEPATH=/usr/bin/doxygen + +//enable coverage on debug build +ENABLE_COVERAGE:BOOL=OFF + +//enable sanitizer on debug build +ENABLE_SANITIZER:BOOL=ON + +//enable undefined behavior sanitizer on debug build +ENABLE_UB_SANITIZER:BOOL=OFF + +//The directory containing a CMake configuration file for boost_filesystem. +boost_filesystem_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0 + +//The directory containing a CMake configuration file for boost_headers. +boost_headers_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0 + +//Value Computed by CMake +ccbench_tictoc_BINARY_DIR:STATIC=/home/tngngn/ccbench/tictoc/build + +//Value Computed by CMake +ccbench_tictoc_SOURCE_DIR:STATIC=/home/tngngn/ccbench/tictoc + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: Boost_DIR +Boost_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/tngngn/ccbench/tictoc/build +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=17 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=0 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/local/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/local/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/local/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Ninja +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Test CMAKE_HAVE_LIBC_PTHREAD +CMAKE_HAVE_LIBC_PTHREAD:INTERNAL= +//Have library pthreads +CMAKE_HAVE_PTHREADS_CREATE:INTERNAL= +//Have library pthread +CMAKE_HAVE_PTHREAD_CREATE:INTERNAL=1 +//Have include pthread.h +CMAKE_HAVE_PTHREAD_H:INTERNAL=1 +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/tngngn/ccbench/tictoc +//ADVANCED property for variable: CMAKE_INSTALL_BINDIR +CMAKE_INSTALL_BINDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DATADIR +CMAKE_INSTALL_DATADIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DATAROOTDIR +CMAKE_INSTALL_DATAROOTDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DOCDIR +CMAKE_INSTALL_DOCDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_INCLUDEDIR +CMAKE_INSTALL_INCLUDEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_INFODIR +CMAKE_INSTALL_INFODIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LIBDIR +CMAKE_INSTALL_LIBDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LIBEXECDIR +CMAKE_INSTALL_LIBEXECDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LOCALEDIR +CMAKE_INSTALL_LOCALEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LOCALSTATEDIR +CMAKE_INSTALL_LOCALSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_MANDIR +CMAKE_INSTALL_MANDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_OLDINCLUDEDIR +CMAKE_INSTALL_OLDINCLUDEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_RUNSTATEDIR +CMAKE_INSTALL_RUNSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SBINDIR +CMAKE_INSTALL_SBINDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SHAREDSTATEDIR +CMAKE_INSTALL_SHAREDSTATEDIR-ADVANCED:INTERNAL=1 +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SYSCONFDIR +CMAKE_INSTALL_SYSCONFDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/local/share/cmake-3.17 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: DOXYGEN_DOT_EXECUTABLE +DOXYGEN_DOT_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: DOXYGEN_EXECUTABLE +DOXYGEN_EXECUTABLE-ADVANCED:INTERNAL=1 +//Details about finding Boost +FIND_PACKAGE_MESSAGE_DETAILS_Boost:INTERNAL=[/usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake][cfound components: filesystem ][v1.71.0()] +//Details about finding Doxygen +FIND_PACKAGE_MESSAGE_DETAILS_Doxygen:INTERNAL=[/usr/bin/doxygen][cfound components: doxygen dot ][v1.8.17()] +//Details about finding Threads +FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()] +//Details about finding gflags +FIND_PACKAGE_MESSAGE_DETAILS_gflags:INTERNAL=[/usr/lib/x86_64-linux-gnu/libgflags.so][/usr/include][v()] +//Details about finding glog +FIND_PACKAGE_MESSAGE_DETAILS_glog:INTERNAL=[/usr/lib/x86_64-linux-gnu/libglog.so][/usr/include][v()] +//CMAKE_INSTALL_PREFIX during last run +_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX:INTERNAL=/usr/local +//ADVANCED property for variable: boost_filesystem_DIR +boost_filesystem_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: boost_headers_DIR +boost_headers_DIR-ADVANCED:INTERNAL=1 + diff --git a/tictoc/build/CMakeDoxyfile.in b/tictoc/build/CMakeDoxyfile.in new file mode 100644 index 00000000..848a3c81 --- /dev/null +++ b/tictoc/build/CMakeDoxyfile.in @@ -0,0 +1,280 @@ +# +# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! +# + +DOXYFILE_ENCODING = @DOXYGEN_DOXYFILE_ENCODING@ +PROJECT_NAME = @DOXYGEN_PROJECT_NAME@ +PROJECT_NUMBER = @DOXYGEN_PROJECT_NUMBER@ +PROJECT_BRIEF = @DOXYGEN_PROJECT_BRIEF@ +PROJECT_LOGO = @DOXYGEN_PROJECT_LOGO@ +OUTPUT_DIRECTORY = @DOXYGEN_OUTPUT_DIRECTORY@ +CREATE_SUBDIRS = @DOXYGEN_CREATE_SUBDIRS@ +ALLOW_UNICODE_NAMES = @DOXYGEN_ALLOW_UNICODE_NAMES@ +OUTPUT_LANGUAGE = @DOXYGEN_OUTPUT_LANGUAGE@ +OUTPUT_TEXT_DIRECTION = @DOXYGEN_OUTPUT_TEXT_DIRECTION@ +BRIEF_MEMBER_DESC = @DOXYGEN_BRIEF_MEMBER_DESC@ +REPEAT_BRIEF = @DOXYGEN_REPEAT_BRIEF@ +ABBREVIATE_BRIEF = @DOXYGEN_ABBREVIATE_BRIEF@ +ALWAYS_DETAILED_SEC = @DOXYGEN_ALWAYS_DETAILED_SEC@ +INLINE_INHERITED_MEMB = @DOXYGEN_INLINE_INHERITED_MEMB@ +FULL_PATH_NAMES = @DOXYGEN_FULL_PATH_NAMES@ +STRIP_FROM_PATH = @DOXYGEN_STRIP_FROM_PATH@ +STRIP_FROM_INC_PATH = @DOXYGEN_STRIP_FROM_INC_PATH@ +SHORT_NAMES = @DOXYGEN_SHORT_NAMES@ +JAVADOC_AUTOBRIEF = @DOXYGEN_JAVADOC_AUTOBRIEF@ +JAVADOC_BANNER = @DOXYGEN_JAVADOC_BANNER@ +QT_AUTOBRIEF = @DOXYGEN_QT_AUTOBRIEF@ +MULTILINE_CPP_IS_BRIEF = @DOXYGEN_MULTILINE_CPP_IS_BRIEF@ +INHERIT_DOCS = @DOXYGEN_INHERIT_DOCS@ +SEPARATE_MEMBER_PAGES = @DOXYGEN_SEPARATE_MEMBER_PAGES@ +TAB_SIZE = @DOXYGEN_TAB_SIZE@ +ALIASES = @DOXYGEN_ALIASES@ +TCL_SUBST = @DOXYGEN_TCL_SUBST@ +OPTIMIZE_OUTPUT_FOR_C = @DOXYGEN_OPTIMIZE_OUTPUT_FOR_C@ +OPTIMIZE_OUTPUT_JAVA = @DOXYGEN_OPTIMIZE_OUTPUT_JAVA@ +OPTIMIZE_FOR_FORTRAN = @DOXYGEN_OPTIMIZE_FOR_FORTRAN@ +OPTIMIZE_OUTPUT_VHDL = @DOXYGEN_OPTIMIZE_OUTPUT_VHDL@ +OPTIMIZE_OUTPUT_SLICE = @DOXYGEN_OPTIMIZE_OUTPUT_SLICE@ +EXTENSION_MAPPING = @DOXYGEN_EXTENSION_MAPPING@ +MARKDOWN_SUPPORT = @DOXYGEN_MARKDOWN_SUPPORT@ +TOC_INCLUDE_HEADINGS = @DOXYGEN_TOC_INCLUDE_HEADINGS@ +AUTOLINK_SUPPORT = @DOXYGEN_AUTOLINK_SUPPORT@ +BUILTIN_STL_SUPPORT = @DOXYGEN_BUILTIN_STL_SUPPORT@ +CPP_CLI_SUPPORT = @DOXYGEN_CPP_CLI_SUPPORT@ +SIP_SUPPORT = @DOXYGEN_SIP_SUPPORT@ +IDL_PROPERTY_SUPPORT = @DOXYGEN_IDL_PROPERTY_SUPPORT@ +DISTRIBUTE_GROUP_DOC = @DOXYGEN_DISTRIBUTE_GROUP_DOC@ +GROUP_NESTED_COMPOUNDS = @DOXYGEN_GROUP_NESTED_COMPOUNDS@ +SUBGROUPING = @DOXYGEN_SUBGROUPING@ +INLINE_GROUPED_CLASSES = @DOXYGEN_INLINE_GROUPED_CLASSES@ +INLINE_SIMPLE_STRUCTS = @DOXYGEN_INLINE_SIMPLE_STRUCTS@ +TYPEDEF_HIDES_STRUCT = @DOXYGEN_TYPEDEF_HIDES_STRUCT@ +LOOKUP_CACHE_SIZE = @DOXYGEN_LOOKUP_CACHE_SIZE@ +EXTRACT_ALL = @DOXYGEN_EXTRACT_ALL@ +EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@ +EXTRACT_PRIV_VIRTUAL = @DOXYGEN_EXTRACT_PRIV_VIRTUAL@ +EXTRACT_PACKAGE = @DOXYGEN_EXTRACT_PACKAGE@ +EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@ +EXTRACT_LOCAL_CLASSES = @DOXYGEN_EXTRACT_LOCAL_CLASSES@ +EXTRACT_LOCAL_METHODS = @DOXYGEN_EXTRACT_LOCAL_METHODS@ +EXTRACT_ANON_NSPACES = @DOXYGEN_EXTRACT_ANON_NSPACES@ +HIDE_UNDOC_MEMBERS = @DOXYGEN_HIDE_UNDOC_MEMBERS@ +HIDE_UNDOC_CLASSES = @DOXYGEN_HIDE_UNDOC_CLASSES@ +HIDE_FRIEND_COMPOUNDS = @DOXYGEN_HIDE_FRIEND_COMPOUNDS@ +HIDE_IN_BODY_DOCS = @DOXYGEN_HIDE_IN_BODY_DOCS@ +INTERNAL_DOCS = @DOXYGEN_INTERNAL_DOCS@ +CASE_SENSE_NAMES = @DOXYGEN_CASE_SENSE_NAMES@ +HIDE_SCOPE_NAMES = @DOXYGEN_HIDE_SCOPE_NAMES@ +HIDE_COMPOUND_REFERENCE= @DOXYGEN_HIDE_COMPOUND_REFERENCE@ +SHOW_INCLUDE_FILES = @DOXYGEN_SHOW_INCLUDE_FILES@ +SHOW_GROUPED_MEMB_INC = @DOXYGEN_SHOW_GROUPED_MEMB_INC@ +FORCE_LOCAL_INCLUDES = @DOXYGEN_FORCE_LOCAL_INCLUDES@ +INLINE_INFO = @DOXYGEN_INLINE_INFO@ +SORT_MEMBER_DOCS = @DOXYGEN_SORT_MEMBER_DOCS@ +SORT_BRIEF_DOCS = @DOXYGEN_SORT_BRIEF_DOCS@ +SORT_MEMBERS_CTORS_1ST = @DOXYGEN_SORT_MEMBERS_CTORS_1ST@ +SORT_GROUP_NAMES = @DOXYGEN_SORT_GROUP_NAMES@ +SORT_BY_SCOPE_NAME = @DOXYGEN_SORT_BY_SCOPE_NAME@ +STRICT_PROTO_MATCHING = @DOXYGEN_STRICT_PROTO_MATCHING@ +GENERATE_TODOLIST = @DOXYGEN_GENERATE_TODOLIST@ +GENERATE_TESTLIST = @DOXYGEN_GENERATE_TESTLIST@ +GENERATE_BUGLIST = @DOXYGEN_GENERATE_BUGLIST@ +GENERATE_DEPRECATEDLIST= @DOXYGEN_GENERATE_DEPRECATEDLIST@ +ENABLED_SECTIONS = @DOXYGEN_ENABLED_SECTIONS@ +MAX_INITIALIZER_LINES = @DOXYGEN_MAX_INITIALIZER_LINES@ +SHOW_USED_FILES = @DOXYGEN_SHOW_USED_FILES@ +SHOW_FILES = @DOXYGEN_SHOW_FILES@ +SHOW_NAMESPACES = @DOXYGEN_SHOW_NAMESPACES@ +FILE_VERSION_FILTER = @DOXYGEN_FILE_VERSION_FILTER@ +LAYOUT_FILE = @DOXYGEN_LAYOUT_FILE@ +CITE_BIB_FILES = @DOXYGEN_CITE_BIB_FILES@ +QUIET = @DOXYGEN_QUIET@ +WARNINGS = @DOXYGEN_WARNINGS@ +WARN_IF_UNDOCUMENTED = @DOXYGEN_WARN_IF_UNDOCUMENTED@ +WARN_IF_DOC_ERROR = @DOXYGEN_WARN_IF_DOC_ERROR@ +WARN_NO_PARAMDOC = @DOXYGEN_WARN_NO_PARAMDOC@ +WARN_AS_ERROR = @DOXYGEN_WARN_AS_ERROR@ +WARN_FORMAT = @DOXYGEN_WARN_FORMAT@ +WARN_LOGFILE = @DOXYGEN_WARN_LOGFILE@ +INPUT = @DOXYGEN_INPUT@ +INPUT_ENCODING = @DOXYGEN_INPUT_ENCODING@ +FILE_PATTERNS = @DOXYGEN_FILE_PATTERNS@ +RECURSIVE = @DOXYGEN_RECURSIVE@ +EXCLUDE = @DOXYGEN_EXCLUDE@ +EXCLUDE_SYMLINKS = @DOXYGEN_EXCLUDE_SYMLINKS@ +EXCLUDE_PATTERNS = @DOXYGEN_EXCLUDE_PATTERNS@ +EXCLUDE_SYMBOLS = @DOXYGEN_EXCLUDE_SYMBOLS@ +EXAMPLE_PATH = @DOXYGEN_EXAMPLE_PATH@ +EXAMPLE_PATTERNS = @DOXYGEN_EXAMPLE_PATTERNS@ +EXAMPLE_RECURSIVE = @DOXYGEN_EXAMPLE_RECURSIVE@ +IMAGE_PATH = @DOXYGEN_IMAGE_PATH@ +INPUT_FILTER = @DOXYGEN_INPUT_FILTER@ +FILTER_PATTERNS = @DOXYGEN_FILTER_PATTERNS@ +FILTER_SOURCE_FILES = @DOXYGEN_FILTER_SOURCE_FILES@ +FILTER_SOURCE_PATTERNS = @DOXYGEN_FILTER_SOURCE_PATTERNS@ +USE_MDFILE_AS_MAINPAGE = @DOXYGEN_USE_MDFILE_AS_MAINPAGE@ +SOURCE_BROWSER = @DOXYGEN_SOURCE_BROWSER@ +INLINE_SOURCES = @DOXYGEN_INLINE_SOURCES@ +STRIP_CODE_COMMENTS = @DOXYGEN_STRIP_CODE_COMMENTS@ +REFERENCED_BY_RELATION = @DOXYGEN_REFERENCED_BY_RELATION@ +REFERENCES_RELATION = @DOXYGEN_REFERENCES_RELATION@ +REFERENCES_LINK_SOURCE = @DOXYGEN_REFERENCES_LINK_SOURCE@ +SOURCE_TOOLTIPS = @DOXYGEN_SOURCE_TOOLTIPS@ +USE_HTAGS = @DOXYGEN_USE_HTAGS@ +VERBATIM_HEADERS = @DOXYGEN_VERBATIM_HEADERS@ +CLANG_ASSISTED_PARSING = @DOXYGEN_CLANG_ASSISTED_PARSING@ +CLANG_OPTIONS = @DOXYGEN_CLANG_OPTIONS@ +CLANG_DATABASE_PATH = @DOXYGEN_CLANG_DATABASE_PATH@ +ALPHABETICAL_INDEX = @DOXYGEN_ALPHABETICAL_INDEX@ +COLS_IN_ALPHA_INDEX = @DOXYGEN_COLS_IN_ALPHA_INDEX@ +IGNORE_PREFIX = @DOXYGEN_IGNORE_PREFIX@ +GENERATE_HTML = @DOXYGEN_GENERATE_HTML@ +HTML_OUTPUT = @DOXYGEN_HTML_OUTPUT@ +HTML_FILE_EXTENSION = @DOXYGEN_HTML_FILE_EXTENSION@ +HTML_HEADER = @DOXYGEN_HTML_HEADER@ +HTML_FOOTER = @DOXYGEN_HTML_FOOTER@ +HTML_STYLESHEET = @DOXYGEN_HTML_STYLESHEET@ +HTML_EXTRA_STYLESHEET = @DOXYGEN_HTML_EXTRA_STYLESHEET@ +HTML_EXTRA_FILES = @DOXYGEN_HTML_EXTRA_FILES@ +HTML_COLORSTYLE_HUE = @DOXYGEN_HTML_COLORSTYLE_HUE@ +HTML_COLORSTYLE_SAT = @DOXYGEN_HTML_COLORSTYLE_SAT@ +HTML_COLORSTYLE_GAMMA = @DOXYGEN_HTML_COLORSTYLE_GAMMA@ +HTML_TIMESTAMP = @DOXYGEN_HTML_TIMESTAMP@ +HTML_DYNAMIC_MENUS = @DOXYGEN_HTML_DYNAMIC_MENUS@ +HTML_DYNAMIC_SECTIONS = @DOXYGEN_HTML_DYNAMIC_SECTIONS@ +HTML_INDEX_NUM_ENTRIES = @DOXYGEN_HTML_INDEX_NUM_ENTRIES@ +GENERATE_DOCSET = @DOXYGEN_GENERATE_DOCSET@ +DOCSET_FEEDNAME = @DOXYGEN_DOCSET_FEEDNAME@ +DOCSET_BUNDLE_ID = @DOXYGEN_DOCSET_BUNDLE_ID@ +DOCSET_PUBLISHER_ID = @DOXYGEN_DOCSET_PUBLISHER_ID@ +DOCSET_PUBLISHER_NAME = @DOXYGEN_DOCSET_PUBLISHER_NAME@ +GENERATE_HTMLHELP = @DOXYGEN_GENERATE_HTMLHELP@ +CHM_FILE = @DOXYGEN_CHM_FILE@ +HHC_LOCATION = @DOXYGEN_HHC_LOCATION@ +GENERATE_CHI = @DOXYGEN_GENERATE_CHI@ +CHM_INDEX_ENCODING = @DOXYGEN_CHM_INDEX_ENCODING@ +BINARY_TOC = @DOXYGEN_BINARY_TOC@ +TOC_EXPAND = @DOXYGEN_TOC_EXPAND@ +GENERATE_QHP = @DOXYGEN_GENERATE_QHP@ +QCH_FILE = @DOXYGEN_QCH_FILE@ +QHP_NAMESPACE = @DOXYGEN_QHP_NAMESPACE@ +QHP_VIRTUAL_FOLDER = @DOXYGEN_QHP_VIRTUAL_FOLDER@ +QHP_CUST_FILTER_NAME = @DOXYGEN_QHP_CUST_FILTER_NAME@ +QHP_CUST_FILTER_ATTRS = @DOXYGEN_QHP_CUST_FILTER_ATTRS@ +QHP_SECT_FILTER_ATTRS = @DOXYGEN_QHP_SECT_FILTER_ATTRS@ +QHG_LOCATION = @DOXYGEN_QHG_LOCATION@ +GENERATE_ECLIPSEHELP = @DOXYGEN_GENERATE_ECLIPSEHELP@ +ECLIPSE_DOC_ID = @DOXYGEN_ECLIPSE_DOC_ID@ +DISABLE_INDEX = @DOXYGEN_DISABLE_INDEX@ +GENERATE_TREEVIEW = @DOXYGEN_GENERATE_TREEVIEW@ +ENUM_VALUES_PER_LINE = @DOXYGEN_ENUM_VALUES_PER_LINE@ +TREEVIEW_WIDTH = @DOXYGEN_TREEVIEW_WIDTH@ +EXT_LINKS_IN_WINDOW = @DOXYGEN_EXT_LINKS_IN_WINDOW@ +FORMULA_FONTSIZE = @DOXYGEN_FORMULA_FONTSIZE@ +FORMULA_TRANSPARENT = @DOXYGEN_FORMULA_TRANSPARENT@ +FORMULA_MACROFILE = @DOXYGEN_FORMULA_MACROFILE@ +USE_MATHJAX = @DOXYGEN_USE_MATHJAX@ +MATHJAX_FORMAT = @DOXYGEN_MATHJAX_FORMAT@ +MATHJAX_RELPATH = @DOXYGEN_MATHJAX_RELPATH@ +MATHJAX_EXTENSIONS = @DOXYGEN_MATHJAX_EXTENSIONS@ +MATHJAX_CODEFILE = @DOXYGEN_MATHJAX_CODEFILE@ +SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ +SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ +EXTERNAL_SEARCH = @DOXYGEN_EXTERNAL_SEARCH@ +SEARCHENGINE_URL = @DOXYGEN_SEARCHENGINE_URL@ +SEARCHDATA_FILE = @DOXYGEN_SEARCHDATA_FILE@ +EXTERNAL_SEARCH_ID = @DOXYGEN_EXTERNAL_SEARCH_ID@ +EXTRA_SEARCH_MAPPINGS = @DOXYGEN_EXTRA_SEARCH_MAPPINGS@ +GENERATE_LATEX = @DOXYGEN_GENERATE_LATEX@ +LATEX_OUTPUT = @DOXYGEN_LATEX_OUTPUT@ +LATEX_CMD_NAME = @DOXYGEN_LATEX_CMD_NAME@ +MAKEINDEX_CMD_NAME = @DOXYGEN_MAKEINDEX_CMD_NAME@ +LATEX_MAKEINDEX_CMD = @DOXYGEN_LATEX_MAKEINDEX_CMD@ +COMPACT_LATEX = @DOXYGEN_COMPACT_LATEX@ +PAPER_TYPE = @DOXYGEN_PAPER_TYPE@ +EXTRA_PACKAGES = @DOXYGEN_EXTRA_PACKAGES@ +LATEX_HEADER = @DOXYGEN_LATEX_HEADER@ +LATEX_FOOTER = @DOXYGEN_LATEX_FOOTER@ +LATEX_EXTRA_STYLESHEET = @DOXYGEN_LATEX_EXTRA_STYLESHEET@ +LATEX_EXTRA_FILES = @DOXYGEN_LATEX_EXTRA_FILES@ +PDF_HYPERLINKS = @DOXYGEN_PDF_HYPERLINKS@ +USE_PDFLATEX = @DOXYGEN_USE_PDFLATEX@ +LATEX_BATCHMODE = @DOXYGEN_LATEX_BATCHMODE@ +LATEX_HIDE_INDICES = @DOXYGEN_LATEX_HIDE_INDICES@ +LATEX_SOURCE_CODE = @DOXYGEN_LATEX_SOURCE_CODE@ +LATEX_BIB_STYLE = @DOXYGEN_LATEX_BIB_STYLE@ +LATEX_TIMESTAMP = @DOXYGEN_LATEX_TIMESTAMP@ +LATEX_EMOJI_DIRECTORY = @DOXYGEN_LATEX_EMOJI_DIRECTORY@ +GENERATE_RTF = @DOXYGEN_GENERATE_RTF@ +RTF_OUTPUT = @DOXYGEN_RTF_OUTPUT@ +COMPACT_RTF = @DOXYGEN_COMPACT_RTF@ +RTF_HYPERLINKS = @DOXYGEN_RTF_HYPERLINKS@ +RTF_STYLESHEET_FILE = @DOXYGEN_RTF_STYLESHEET_FILE@ +RTF_EXTENSIONS_FILE = @DOXYGEN_RTF_EXTENSIONS_FILE@ +RTF_SOURCE_CODE = @DOXYGEN_RTF_SOURCE_CODE@ +GENERATE_MAN = @DOXYGEN_GENERATE_MAN@ +MAN_OUTPUT = @DOXYGEN_MAN_OUTPUT@ +MAN_EXTENSION = @DOXYGEN_MAN_EXTENSION@ +MAN_SUBDIR = @DOXYGEN_MAN_SUBDIR@ +MAN_LINKS = @DOXYGEN_MAN_LINKS@ +GENERATE_XML = @DOXYGEN_GENERATE_XML@ +XML_OUTPUT = @DOXYGEN_XML_OUTPUT@ +XML_PROGRAMLISTING = @DOXYGEN_XML_PROGRAMLISTING@ +XML_NS_MEMB_FILE_SCOPE = @DOXYGEN_XML_NS_MEMB_FILE_SCOPE@ +GENERATE_DOCBOOK = @DOXYGEN_GENERATE_DOCBOOK@ +DOCBOOK_OUTPUT = @DOXYGEN_DOCBOOK_OUTPUT@ +DOCBOOK_PROGRAMLISTING = @DOXYGEN_DOCBOOK_PROGRAMLISTING@ +GENERATE_AUTOGEN_DEF = @DOXYGEN_GENERATE_AUTOGEN_DEF@ +GENERATE_PERLMOD = @DOXYGEN_GENERATE_PERLMOD@ +PERLMOD_LATEX = @DOXYGEN_PERLMOD_LATEX@ +PERLMOD_PRETTY = @DOXYGEN_PERLMOD_PRETTY@ +PERLMOD_MAKEVAR_PREFIX = @DOXYGEN_PERLMOD_MAKEVAR_PREFIX@ +ENABLE_PREPROCESSING = @DOXYGEN_ENABLE_PREPROCESSING@ +MACRO_EXPANSION = @DOXYGEN_MACRO_EXPANSION@ +EXPAND_ONLY_PREDEF = @DOXYGEN_EXPAND_ONLY_PREDEF@ +SEARCH_INCLUDES = @DOXYGEN_SEARCH_INCLUDES@ +INCLUDE_PATH = @DOXYGEN_INCLUDE_PATH@ +INCLUDE_FILE_PATTERNS = @DOXYGEN_INCLUDE_FILE_PATTERNS@ +PREDEFINED = @DOXYGEN_PREDEFINED@ +EXPAND_AS_DEFINED = @DOXYGEN_EXPAND_AS_DEFINED@ +SKIP_FUNCTION_MACROS = @DOXYGEN_SKIP_FUNCTION_MACROS@ +TAGFILES = @DOXYGEN_TAGFILES@ +GENERATE_TAGFILE = @DOXYGEN_GENERATE_TAGFILE@ +ALLEXTERNALS = @DOXYGEN_ALLEXTERNALS@ +EXTERNAL_GROUPS = @DOXYGEN_EXTERNAL_GROUPS@ +EXTERNAL_PAGES = @DOXYGEN_EXTERNAL_PAGES@ +CLASS_DIAGRAMS = @DOXYGEN_CLASS_DIAGRAMS@ +DIA_PATH = @DOXYGEN_DIA_PATH@ +HIDE_UNDOC_RELATIONS = @DOXYGEN_HIDE_UNDOC_RELATIONS@ +HAVE_DOT = @DOXYGEN_HAVE_DOT@ +DOT_NUM_THREADS = @DOXYGEN_DOT_NUM_THREADS@ +DOT_FONTNAME = @DOXYGEN_DOT_FONTNAME@ +DOT_FONTSIZE = @DOXYGEN_DOT_FONTSIZE@ +DOT_FONTPATH = @DOXYGEN_DOT_FONTPATH@ +CLASS_GRAPH = @DOXYGEN_CLASS_GRAPH@ +COLLABORATION_GRAPH = @DOXYGEN_COLLABORATION_GRAPH@ +GROUP_GRAPHS = @DOXYGEN_GROUP_GRAPHS@ +UML_LOOK = @DOXYGEN_UML_LOOK@ +UML_LIMIT_NUM_FIELDS = @DOXYGEN_UML_LIMIT_NUM_FIELDS@ +TEMPLATE_RELATIONS = @DOXYGEN_TEMPLATE_RELATIONS@ +INCLUDE_GRAPH = @DOXYGEN_INCLUDE_GRAPH@ +INCLUDED_BY_GRAPH = @DOXYGEN_INCLUDED_BY_GRAPH@ +CALL_GRAPH = @DOXYGEN_CALL_GRAPH@ +CALLER_GRAPH = @DOXYGEN_CALLER_GRAPH@ +GRAPHICAL_HIERARCHY = @DOXYGEN_GRAPHICAL_HIERARCHY@ +DIRECTORY_GRAPH = @DOXYGEN_DIRECTORY_GRAPH@ +DOT_IMAGE_FORMAT = @DOXYGEN_DOT_IMAGE_FORMAT@ +INTERACTIVE_SVG = @DOXYGEN_INTERACTIVE_SVG@ +DOT_PATH = @DOXYGEN_DOT_PATH@ +DOTFILE_DIRS = @DOXYGEN_DOTFILE_DIRS@ +MSCFILE_DIRS = @DOXYGEN_MSCFILE_DIRS@ +DIAFILE_DIRS = @DOXYGEN_DIAFILE_DIRS@ +PLANTUML_JAR_PATH = @DOXYGEN_PLANTUML_JAR_PATH@ +PLANTUML_CFG_FILE = @DOXYGEN_PLANTUML_CFG_FILE@ +PLANTUML_INCLUDE_PATH = @DOXYGEN_PLANTUML_INCLUDE_PATH@ +DOT_GRAPH_MAX_NODES = @DOXYGEN_DOT_GRAPH_MAX_NODES@ +MAX_DOT_GRAPH_DEPTH = @DOXYGEN_MAX_DOT_GRAPH_DEPTH@ +DOT_TRANSPARENT = @DOXYGEN_DOT_TRANSPARENT@ +DOT_MULTI_TARGETS = @DOXYGEN_DOT_MULTI_TARGETS@ +GENERATE_LEGEND = @DOXYGEN_GENERATE_LEGEND@ +DOT_CLEANUP = @DOXYGEN_DOT_CLEANUP@ diff --git a/tictoc/build/CMakeDoxygenDefaults.cmake b/tictoc/build/CMakeDoxygenDefaults.cmake new file mode 100644 index 00000000..db28798f --- /dev/null +++ b/tictoc/build/CMakeDoxygenDefaults.cmake @@ -0,0 +1,672 @@ +# +# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! +# + +if(NOT DEFINED DOXYGEN_DOXYFILE_ENCODING) + set(DOXYGEN_DOXYFILE_ENCODING UTF-8) +endif() +if(NOT DEFINED DOXYGEN_PROJECT_NAME) + set(DOXYGEN_PROJECT_NAME "My Project") +endif() +if(NOT DEFINED DOXYGEN_CREATE_SUBDIRS) + set(DOXYGEN_CREATE_SUBDIRS NO) +endif() +if(NOT DEFINED DOXYGEN_ALLOW_UNICODE_NAMES) + set(DOXYGEN_ALLOW_UNICODE_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_OUTPUT_LANGUAGE) + set(DOXYGEN_OUTPUT_LANGUAGE English) +endif() +if(NOT DEFINED DOXYGEN_OUTPUT_TEXT_DIRECTION) + set(DOXYGEN_OUTPUT_TEXT_DIRECTION None) +endif() +if(NOT DEFINED DOXYGEN_BRIEF_MEMBER_DESC) + set(DOXYGEN_BRIEF_MEMBER_DESC YES) +endif() +if(NOT DEFINED DOXYGEN_REPEAT_BRIEF) + set(DOXYGEN_REPEAT_BRIEF YES) +endif() +if(NOT DEFINED DOXYGEN_ABBREVIATE_BRIEF) + set(DOXYGEN_ABBREVIATE_BRIEF "The $name class" + "The $name widget" + "The $name file" + is + provides + specifies + contains + represents + a + an + the) +endif() +if(NOT DEFINED DOXYGEN_ALWAYS_DETAILED_SEC) + set(DOXYGEN_ALWAYS_DETAILED_SEC NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_INHERITED_MEMB) + set(DOXYGEN_INLINE_INHERITED_MEMB NO) +endif() +if(NOT DEFINED DOXYGEN_FULL_PATH_NAMES) + set(DOXYGEN_FULL_PATH_NAMES YES) +endif() +if(NOT DEFINED DOXYGEN_SHORT_NAMES) + set(DOXYGEN_SHORT_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_JAVADOC_AUTOBRIEF) + set(DOXYGEN_JAVADOC_AUTOBRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_JAVADOC_BANNER) + set(DOXYGEN_JAVADOC_BANNER NO) +endif() +if(NOT DEFINED DOXYGEN_QT_AUTOBRIEF) + set(DOXYGEN_QT_AUTOBRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_MULTILINE_CPP_IS_BRIEF) + set(DOXYGEN_MULTILINE_CPP_IS_BRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_INHERIT_DOCS) + set(DOXYGEN_INHERIT_DOCS YES) +endif() +if(NOT DEFINED DOXYGEN_SEPARATE_MEMBER_PAGES) + set(DOXYGEN_SEPARATE_MEMBER_PAGES NO) +endif() +if(NOT DEFINED DOXYGEN_TAB_SIZE) + set(DOXYGEN_TAB_SIZE 4) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_FOR_C) + set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_JAVA) + set(DOXYGEN_OPTIMIZE_OUTPUT_JAVA NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_FOR_FORTRAN) + set(DOXYGEN_OPTIMIZE_FOR_FORTRAN NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_VHDL) + set(DOXYGEN_OPTIMIZE_OUTPUT_VHDL NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_SLICE) + set(DOXYGEN_OPTIMIZE_OUTPUT_SLICE NO) +endif() +if(NOT DEFINED DOXYGEN_MARKDOWN_SUPPORT) + set(DOXYGEN_MARKDOWN_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_TOC_INCLUDE_HEADINGS) + set(DOXYGEN_TOC_INCLUDE_HEADINGS 5) +endif() +if(NOT DEFINED DOXYGEN_AUTOLINK_SUPPORT) + set(DOXYGEN_AUTOLINK_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_BUILTIN_STL_SUPPORT) + set(DOXYGEN_BUILTIN_STL_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_CPP_CLI_SUPPORT) + set(DOXYGEN_CPP_CLI_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_SIP_SUPPORT) + set(DOXYGEN_SIP_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_IDL_PROPERTY_SUPPORT) + set(DOXYGEN_IDL_PROPERTY_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_DISTRIBUTE_GROUP_DOC) + set(DOXYGEN_DISTRIBUTE_GROUP_DOC NO) +endif() +if(NOT DEFINED DOXYGEN_GROUP_NESTED_COMPOUNDS) + set(DOXYGEN_GROUP_NESTED_COMPOUNDS NO) +endif() +if(NOT DEFINED DOXYGEN_SUBGROUPING) + set(DOXYGEN_SUBGROUPING YES) +endif() +if(NOT DEFINED DOXYGEN_INLINE_GROUPED_CLASSES) + set(DOXYGEN_INLINE_GROUPED_CLASSES NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_SIMPLE_STRUCTS) + set(DOXYGEN_INLINE_SIMPLE_STRUCTS NO) +endif() +if(NOT DEFINED DOXYGEN_TYPEDEF_HIDES_STRUCT) + set(DOXYGEN_TYPEDEF_HIDES_STRUCT NO) +endif() +if(NOT DEFINED DOXYGEN_LOOKUP_CACHE_SIZE) + set(DOXYGEN_LOOKUP_CACHE_SIZE 0) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_ALL) + set(DOXYGEN_EXTRACT_ALL NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PRIVATE) + set(DOXYGEN_EXTRACT_PRIVATE NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PRIV_VIRTUAL) + set(DOXYGEN_EXTRACT_PRIV_VIRTUAL NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PACKAGE) + set(DOXYGEN_EXTRACT_PACKAGE NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_STATIC) + set(DOXYGEN_EXTRACT_STATIC NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_CLASSES) + set(DOXYGEN_EXTRACT_LOCAL_CLASSES YES) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_METHODS) + set(DOXYGEN_EXTRACT_LOCAL_METHODS NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_ANON_NSPACES) + set(DOXYGEN_EXTRACT_ANON_NSPACES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_MEMBERS) + set(DOXYGEN_HIDE_UNDOC_MEMBERS NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_CLASSES) + set(DOXYGEN_HIDE_UNDOC_CLASSES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_FRIEND_COMPOUNDS) + set(DOXYGEN_HIDE_FRIEND_COMPOUNDS NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_IN_BODY_DOCS) + set(DOXYGEN_HIDE_IN_BODY_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_INTERNAL_DOCS) + set(DOXYGEN_INTERNAL_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_CASE_SENSE_NAMES) + set(DOXYGEN_CASE_SENSE_NAMES YES) +endif() +if(NOT DEFINED DOXYGEN_HIDE_SCOPE_NAMES) + set(DOXYGEN_HIDE_SCOPE_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_COMPOUND_REFERENCE) + set(DOXYGEN_HIDE_COMPOUND_REFERENCE NO) +endif() +if(NOT DEFINED DOXYGEN_SHOW_INCLUDE_FILES) + set(DOXYGEN_SHOW_INCLUDE_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_GROUPED_MEMB_INC) + set(DOXYGEN_SHOW_GROUPED_MEMB_INC NO) +endif() +if(NOT DEFINED DOXYGEN_FORCE_LOCAL_INCLUDES) + set(DOXYGEN_FORCE_LOCAL_INCLUDES NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_INFO) + set(DOXYGEN_INLINE_INFO YES) +endif() +if(NOT DEFINED DOXYGEN_SORT_MEMBER_DOCS) + set(DOXYGEN_SORT_MEMBER_DOCS YES) +endif() +if(NOT DEFINED DOXYGEN_SORT_BRIEF_DOCS) + set(DOXYGEN_SORT_BRIEF_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_MEMBERS_CTORS_1ST) + set(DOXYGEN_SORT_MEMBERS_CTORS_1ST NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_GROUP_NAMES) + set(DOXYGEN_SORT_GROUP_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_BY_SCOPE_NAME) + set(DOXYGEN_SORT_BY_SCOPE_NAME NO) +endif() +if(NOT DEFINED DOXYGEN_STRICT_PROTO_MATCHING) + set(DOXYGEN_STRICT_PROTO_MATCHING NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TODOLIST) + set(DOXYGEN_GENERATE_TODOLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TESTLIST) + set(DOXYGEN_GENERATE_TESTLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_BUGLIST) + set(DOXYGEN_GENERATE_BUGLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DEPRECATEDLIST) + set(DOXYGEN_GENERATE_DEPRECATEDLIST YES) +endif() +if(NOT DEFINED DOXYGEN_MAX_INITIALIZER_LINES) + set(DOXYGEN_MAX_INITIALIZER_LINES 30) +endif() +if(NOT DEFINED DOXYGEN_SHOW_USED_FILES) + set(DOXYGEN_SHOW_USED_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_FILES) + set(DOXYGEN_SHOW_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_NAMESPACES) + set(DOXYGEN_SHOW_NAMESPACES YES) +endif() +if(NOT DEFINED DOXYGEN_QUIET) + set(DOXYGEN_QUIET NO) +endif() +if(NOT DEFINED DOXYGEN_WARNINGS) + set(DOXYGEN_WARNINGS YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_IF_UNDOCUMENTED) + set(DOXYGEN_WARN_IF_UNDOCUMENTED YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_IF_DOC_ERROR) + set(DOXYGEN_WARN_IF_DOC_ERROR YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_NO_PARAMDOC) + set(DOXYGEN_WARN_NO_PARAMDOC NO) +endif() +if(NOT DEFINED DOXYGEN_WARN_AS_ERROR) + set(DOXYGEN_WARN_AS_ERROR NO) +endif() +if(NOT DEFINED DOXYGEN_WARN_FORMAT) + set(DOXYGEN_WARN_FORMAT "$file:$line: $text") +endif() +if(NOT DEFINED DOXYGEN_INPUT_ENCODING) + set(DOXYGEN_INPUT_ENCODING UTF-8) +endif() +if(NOT DEFINED DOXYGEN_FILE_PATTERNS) + set(DOXYGEN_FILE_PATTERNS *.c + *.cc + *.cxx + *.cpp + *.c++ + *.java + *.ii + *.ixx + *.ipp + *.i++ + *.inl + *.idl + *.ddl + *.odl + *.h + *.hh + *.hxx + *.hpp + *.h++ + *.cs + *.d + *.php + *.php4 + *.php5 + *.phtml + *.inc + *.m + *.markdown + *.md + *.mm + *.dox + *.doc + *.txt + *.py + *.pyw + *.f90 + *.f95 + *.f03 + *.f08 + *.f + *.for + *.tcl + *.vhd + *.vhdl + *.ucf + *.qsf + *.ice) +endif() +if(NOT DEFINED DOXYGEN_RECURSIVE) + set(DOXYGEN_RECURSIVE NO) +endif() +if(NOT DEFINED DOXYGEN_EXCLUDE_SYMLINKS) + set(DOXYGEN_EXCLUDE_SYMLINKS NO) +endif() +if(NOT DEFINED DOXYGEN_EXAMPLE_PATTERNS) + set(DOXYGEN_EXAMPLE_PATTERNS *) +endif() +if(NOT DEFINED DOXYGEN_EXAMPLE_RECURSIVE) + set(DOXYGEN_EXAMPLE_RECURSIVE NO) +endif() +if(NOT DEFINED DOXYGEN_FILTER_SOURCE_FILES) + set(DOXYGEN_FILTER_SOURCE_FILES NO) +endif() +if(NOT DEFINED DOXYGEN_SOURCE_BROWSER) + set(DOXYGEN_SOURCE_BROWSER NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_SOURCES) + set(DOXYGEN_INLINE_SOURCES NO) +endif() +if(NOT DEFINED DOXYGEN_STRIP_CODE_COMMENTS) + set(DOXYGEN_STRIP_CODE_COMMENTS YES) +endif() +if(NOT DEFINED DOXYGEN_REFERENCED_BY_RELATION) + set(DOXYGEN_REFERENCED_BY_RELATION NO) +endif() +if(NOT DEFINED DOXYGEN_REFERENCES_RELATION) + set(DOXYGEN_REFERENCES_RELATION NO) +endif() +if(NOT DEFINED DOXYGEN_REFERENCES_LINK_SOURCE) + set(DOXYGEN_REFERENCES_LINK_SOURCE YES) +endif() +if(NOT DEFINED DOXYGEN_SOURCE_TOOLTIPS) + set(DOXYGEN_SOURCE_TOOLTIPS YES) +endif() +if(NOT DEFINED DOXYGEN_USE_HTAGS) + set(DOXYGEN_USE_HTAGS NO) +endif() +if(NOT DEFINED DOXYGEN_VERBATIM_HEADERS) + set(DOXYGEN_VERBATIM_HEADERS YES) +endif() +if(NOT DEFINED DOXYGEN_CLANG_ASSISTED_PARSING) + set(DOXYGEN_CLANG_ASSISTED_PARSING NO) +endif() +if(NOT DEFINED DOXYGEN_ALPHABETICAL_INDEX) + set(DOXYGEN_ALPHABETICAL_INDEX YES) +endif() +if(NOT DEFINED DOXYGEN_COLS_IN_ALPHA_INDEX) + set(DOXYGEN_COLS_IN_ALPHA_INDEX 5) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_HTML) + set(DOXYGEN_GENERATE_HTML YES) +endif() +if(NOT DEFINED DOXYGEN_HTML_OUTPUT) + set(DOXYGEN_HTML_OUTPUT html) +endif() +if(NOT DEFINED DOXYGEN_HTML_FILE_EXTENSION) + set(DOXYGEN_HTML_FILE_EXTENSION .html) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_HUE) + set(DOXYGEN_HTML_COLORSTYLE_HUE 220) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_SAT) + set(DOXYGEN_HTML_COLORSTYLE_SAT 100) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_GAMMA) + set(DOXYGEN_HTML_COLORSTYLE_GAMMA 80) +endif() +if(NOT DEFINED DOXYGEN_HTML_TIMESTAMP) + set(DOXYGEN_HTML_TIMESTAMP NO) +endif() +if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_MENUS) + set(DOXYGEN_HTML_DYNAMIC_MENUS YES) +endif() +if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_SECTIONS) + set(DOXYGEN_HTML_DYNAMIC_SECTIONS NO) +endif() +if(NOT DEFINED DOXYGEN_HTML_INDEX_NUM_ENTRIES) + set(DOXYGEN_HTML_INDEX_NUM_ENTRIES 100) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DOCSET) + set(DOXYGEN_GENERATE_DOCSET NO) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_FEEDNAME) + set(DOXYGEN_DOCSET_FEEDNAME "Doxygen generated docs") +endif() +if(NOT DEFINED DOXYGEN_DOCSET_BUNDLE_ID) + set(DOXYGEN_DOCSET_BUNDLE_ID org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_ID) + set(DOXYGEN_DOCSET_PUBLISHER_ID org.doxygen.Publisher) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_NAME) + set(DOXYGEN_DOCSET_PUBLISHER_NAME Publisher) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_HTMLHELP) + set(DOXYGEN_GENERATE_HTMLHELP NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_CHI) + set(DOXYGEN_GENERATE_CHI NO) +endif() +if(NOT DEFINED DOXYGEN_BINARY_TOC) + set(DOXYGEN_BINARY_TOC NO) +endif() +if(NOT DEFINED DOXYGEN_TOC_EXPAND) + set(DOXYGEN_TOC_EXPAND NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_QHP) + set(DOXYGEN_GENERATE_QHP NO) +endif() +if(NOT DEFINED DOXYGEN_QHP_NAMESPACE) + set(DOXYGEN_QHP_NAMESPACE org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_QHP_VIRTUAL_FOLDER) + set(DOXYGEN_QHP_VIRTUAL_FOLDER doc) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_ECLIPSEHELP) + set(DOXYGEN_GENERATE_ECLIPSEHELP NO) +endif() +if(NOT DEFINED DOXYGEN_ECLIPSE_DOC_ID) + set(DOXYGEN_ECLIPSE_DOC_ID org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_DISABLE_INDEX) + set(DOXYGEN_DISABLE_INDEX NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TREEVIEW) + set(DOXYGEN_GENERATE_TREEVIEW NO) +endif() +if(NOT DEFINED DOXYGEN_ENUM_VALUES_PER_LINE) + set(DOXYGEN_ENUM_VALUES_PER_LINE 4) +endif() +if(NOT DEFINED DOXYGEN_TREEVIEW_WIDTH) + set(DOXYGEN_TREEVIEW_WIDTH 250) +endif() +if(NOT DEFINED DOXYGEN_EXT_LINKS_IN_WINDOW) + set(DOXYGEN_EXT_LINKS_IN_WINDOW NO) +endif() +if(NOT DEFINED DOXYGEN_FORMULA_FONTSIZE) + set(DOXYGEN_FORMULA_FONTSIZE 10) +endif() +if(NOT DEFINED DOXYGEN_FORMULA_TRANSPARENT) + set(DOXYGEN_FORMULA_TRANSPARENT YES) +endif() +if(NOT DEFINED DOXYGEN_USE_MATHJAX) + set(DOXYGEN_USE_MATHJAX NO) +endif() +if(NOT DEFINED DOXYGEN_MATHJAX_FORMAT) + set(DOXYGEN_MATHJAX_FORMAT HTML-CSS) +endif() +if(NOT DEFINED DOXYGEN_MATHJAX_RELPATH) + set(DOXYGEN_MATHJAX_RELPATH https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/) +endif() +if(NOT DEFINED DOXYGEN_SEARCHENGINE) + set(DOXYGEN_SEARCHENGINE YES) +endif() +if(NOT DEFINED DOXYGEN_SERVER_BASED_SEARCH) + set(DOXYGEN_SERVER_BASED_SEARCH NO) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_SEARCH) + set(DOXYGEN_EXTERNAL_SEARCH NO) +endif() +if(NOT DEFINED DOXYGEN_SEARCHDATA_FILE) + set(DOXYGEN_SEARCHDATA_FILE searchdata.xml) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_LATEX) + set(DOXYGEN_GENERATE_LATEX YES) +endif() +if(NOT DEFINED DOXYGEN_LATEX_OUTPUT) + set(DOXYGEN_LATEX_OUTPUT latex) +endif() +if(NOT DEFINED DOXYGEN_MAKEINDEX_CMD_NAME) + set(DOXYGEN_MAKEINDEX_CMD_NAME makeindex) +endif() +if(NOT DEFINED DOXYGEN_LATEX_MAKEINDEX_CMD) + set(DOXYGEN_LATEX_MAKEINDEX_CMD makeindex) +endif() +if(NOT DEFINED DOXYGEN_COMPACT_LATEX) + set(DOXYGEN_COMPACT_LATEX NO) +endif() +if(NOT DEFINED DOXYGEN_PAPER_TYPE) + set(DOXYGEN_PAPER_TYPE a4) +endif() +if(NOT DEFINED DOXYGEN_PDF_HYPERLINKS) + set(DOXYGEN_PDF_HYPERLINKS YES) +endif() +if(NOT DEFINED DOXYGEN_USE_PDFLATEX) + set(DOXYGEN_USE_PDFLATEX YES) +endif() +if(NOT DEFINED DOXYGEN_LATEX_BATCHMODE) + set(DOXYGEN_LATEX_BATCHMODE NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_HIDE_INDICES) + set(DOXYGEN_LATEX_HIDE_INDICES NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_SOURCE_CODE) + set(DOXYGEN_LATEX_SOURCE_CODE NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_BIB_STYLE) + set(DOXYGEN_LATEX_BIB_STYLE plain) +endif() +if(NOT DEFINED DOXYGEN_LATEX_TIMESTAMP) + set(DOXYGEN_LATEX_TIMESTAMP NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_RTF) + set(DOXYGEN_GENERATE_RTF NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_OUTPUT) + set(DOXYGEN_RTF_OUTPUT rtf) +endif() +if(NOT DEFINED DOXYGEN_COMPACT_RTF) + set(DOXYGEN_COMPACT_RTF NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_HYPERLINKS) + set(DOXYGEN_RTF_HYPERLINKS NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_SOURCE_CODE) + set(DOXYGEN_RTF_SOURCE_CODE NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_MAN) + set(DOXYGEN_GENERATE_MAN NO) +endif() +if(NOT DEFINED DOXYGEN_MAN_OUTPUT) + set(DOXYGEN_MAN_OUTPUT man) +endif() +if(NOT DEFINED DOXYGEN_MAN_EXTENSION) + set(DOXYGEN_MAN_EXTENSION .3) +endif() +if(NOT DEFINED DOXYGEN_MAN_LINKS) + set(DOXYGEN_MAN_LINKS NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_XML) + set(DOXYGEN_GENERATE_XML NO) +endif() +if(NOT DEFINED DOXYGEN_XML_OUTPUT) + set(DOXYGEN_XML_OUTPUT xml) +endif() +if(NOT DEFINED DOXYGEN_XML_PROGRAMLISTING) + set(DOXYGEN_XML_PROGRAMLISTING YES) +endif() +if(NOT DEFINED DOXYGEN_XML_NS_MEMB_FILE_SCOPE) + set(DOXYGEN_XML_NS_MEMB_FILE_SCOPE NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DOCBOOK) + set(DOXYGEN_GENERATE_DOCBOOK NO) +endif() +if(NOT DEFINED DOXYGEN_DOCBOOK_OUTPUT) + set(DOXYGEN_DOCBOOK_OUTPUT docbook) +endif() +if(NOT DEFINED DOXYGEN_DOCBOOK_PROGRAMLISTING) + set(DOXYGEN_DOCBOOK_PROGRAMLISTING NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_AUTOGEN_DEF) + set(DOXYGEN_GENERATE_AUTOGEN_DEF NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_PERLMOD) + set(DOXYGEN_GENERATE_PERLMOD NO) +endif() +if(NOT DEFINED DOXYGEN_PERLMOD_LATEX) + set(DOXYGEN_PERLMOD_LATEX NO) +endif() +if(NOT DEFINED DOXYGEN_PERLMOD_PRETTY) + set(DOXYGEN_PERLMOD_PRETTY YES) +endif() +if(NOT DEFINED DOXYGEN_ENABLE_PREPROCESSING) + set(DOXYGEN_ENABLE_PREPROCESSING YES) +endif() +if(NOT DEFINED DOXYGEN_MACRO_EXPANSION) + set(DOXYGEN_MACRO_EXPANSION NO) +endif() +if(NOT DEFINED DOXYGEN_EXPAND_ONLY_PREDEF) + set(DOXYGEN_EXPAND_ONLY_PREDEF NO) +endif() +if(NOT DEFINED DOXYGEN_SEARCH_INCLUDES) + set(DOXYGEN_SEARCH_INCLUDES YES) +endif() +if(NOT DEFINED DOXYGEN_SKIP_FUNCTION_MACROS) + set(DOXYGEN_SKIP_FUNCTION_MACROS YES) +endif() +if(NOT DEFINED DOXYGEN_ALLEXTERNALS) + set(DOXYGEN_ALLEXTERNALS NO) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_GROUPS) + set(DOXYGEN_EXTERNAL_GROUPS YES) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_PAGES) + set(DOXYGEN_EXTERNAL_PAGES YES) +endif() +if(NOT DEFINED DOXYGEN_CLASS_DIAGRAMS) + set(DOXYGEN_CLASS_DIAGRAMS YES) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_RELATIONS) + set(DOXYGEN_HIDE_UNDOC_RELATIONS YES) +endif() +if(NOT DEFINED DOXYGEN_HAVE_DOT) + set(DOXYGEN_HAVE_DOT YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_NUM_THREADS) + set(DOXYGEN_DOT_NUM_THREADS 0) +endif() +if(NOT DEFINED DOXYGEN_DOT_FONTNAME) + set(DOXYGEN_DOT_FONTNAME Helvetica) +endif() +if(NOT DEFINED DOXYGEN_DOT_FONTSIZE) + set(DOXYGEN_DOT_FONTSIZE 10) +endif() +if(NOT DEFINED DOXYGEN_CLASS_GRAPH) + set(DOXYGEN_CLASS_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_COLLABORATION_GRAPH) + set(DOXYGEN_COLLABORATION_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_GROUP_GRAPHS) + set(DOXYGEN_GROUP_GRAPHS YES) +endif() +if(NOT DEFINED DOXYGEN_UML_LOOK) + set(DOXYGEN_UML_LOOK NO) +endif() +if(NOT DEFINED DOXYGEN_UML_LIMIT_NUM_FIELDS) + set(DOXYGEN_UML_LIMIT_NUM_FIELDS 10) +endif() +if(NOT DEFINED DOXYGEN_TEMPLATE_RELATIONS) + set(DOXYGEN_TEMPLATE_RELATIONS NO) +endif() +if(NOT DEFINED DOXYGEN_INCLUDE_GRAPH) + set(DOXYGEN_INCLUDE_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_INCLUDED_BY_GRAPH) + set(DOXYGEN_INCLUDED_BY_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_CALL_GRAPH) + set(DOXYGEN_CALL_GRAPH NO) +endif() +if(NOT DEFINED DOXYGEN_CALLER_GRAPH) + set(DOXYGEN_CALLER_GRAPH NO) +endif() +if(NOT DEFINED DOXYGEN_GRAPHICAL_HIERARCHY) + set(DOXYGEN_GRAPHICAL_HIERARCHY YES) +endif() +if(NOT DEFINED DOXYGEN_DIRECTORY_GRAPH) + set(DOXYGEN_DIRECTORY_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_IMAGE_FORMAT) + set(DOXYGEN_DOT_IMAGE_FORMAT png) +endif() +if(NOT DEFINED DOXYGEN_INTERACTIVE_SVG) + set(DOXYGEN_INTERACTIVE_SVG NO) +endif() +if(NOT DEFINED DOXYGEN_DOT_GRAPH_MAX_NODES) + set(DOXYGEN_DOT_GRAPH_MAX_NODES 50) +endif() +if(NOT DEFINED DOXYGEN_MAX_DOT_GRAPH_DEPTH) + set(DOXYGEN_MAX_DOT_GRAPH_DEPTH 0) +endif() +if(NOT DEFINED DOXYGEN_DOT_TRANSPARENT) + set(DOXYGEN_DOT_TRANSPARENT NO) +endif() +if(NOT DEFINED DOXYGEN_DOT_MULTI_TARGETS) + set(DOXYGEN_DOT_MULTI_TARGETS NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_LEGEND) + set(DOXYGEN_GENERATE_LEGEND YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_CLEANUP) + set(DOXYGEN_DOT_CLEANUP YES) +endif() diff --git a/tictoc/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake b/tictoc/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake new file mode 100644 index 00000000..278ef39e --- /dev/null +++ b/tictoc/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake @@ -0,0 +1,88 @@ +set(CMAKE_CXX_COMPILER "/usr/bin/c++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "GNU") +set(CMAKE_CXX_COMPILER_VERSION "9.4.0") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_CXX_COMPILER_AR "/usr/bin/gcc-ar-9") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/gcc-ranlib-9") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCXX 1) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW ) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/tictoc/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin b/tictoc/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin new file mode 100755 index 0000000000000000000000000000000000000000..156cfcfc782ba2dc2f291ca842e4a4516fe2c356 GIT binary patch literal 16560 zcmeHOZ)_Y#6`%9j$)!!smoyvn%vnwdyOtmo7lvVrpwuPwvXOF z?)Io%(NJWFI0cgkRnUGwDn+15d};Xrp8!W`(@F?vgj9;4ULUuER;5=OoERY94~Tj#n5l!?6b&9!;ua#J-b(4kCRM{I=sHkOR#BOG z#%tt&k@=cGjXb(=g7g^edKjC9R;9Pl=|qjSMtyuDiO|-KSqux#soiM zil-YjWkoQ$^@d5$jXk8th(0hKecej_JO1uvJx!VsVHe(`Xu-(-?gKp;7pi|d;BG!b z{#NRT5XGO7!Yg)X(jy&vcW08VnRKo^**Y2SXzkdmm-6}^=^ERGK5$I+4Gak|Gm9LB zQTD|~Dr5cgv-h1U#vXj`#^jmevtRqwV*@`q_5|BNpD2R~^?68O8T04^Wz_Y5268l( z0WYS0oR!21Ut!?2I(1us+faue1Wv2NkFLPq3jDk4$P0+yD2A&;nC9qY!W>KI5}EYF zDJWu(H*e#4>>$5j<9QAszi8v>R)@5gya;#^@FL(vz>9zv0WShx1iT3R zQxW)6^X-2#rY{AI(@j6$Erjv8S*xM?k}>^U;JnnY?t2R8tJOQd4$!<^pgfemCrdp- zmfPRxuUve@LfF4( zZ35Q=m9zv0WShx1iT1%5%415MZk-I7lHqi2>2Xt8-?f}=skR(1n=qcV`j2o6_2-t zPhcn{pBPCWhy4Ob__q2#fbVGWJ=gr3)oKB75%6)qz(Tb;40r|b8Nl$BYV{?+rvY2& zr5L^&#pHYVi11B@d|TJ94xEKLY``0eB-tQvU}lE0A3QoP;ap1L(R87 z6nIn|+;ZT(@82O`L!$ou@EK+~$YVmA7JT+YoBEK51w*GAy4S5b367x%e;J6!;PWx4 zPXUVFVCYOkf3W3?{#a0(X^aJTexa!+*mi1_5e!eS?h8h8!EiL#77gy~3Tj=!mabr^ zD;SXP7k>%rp9eeM`#B7xm%Ipg5%415MZk-I7XdE3dANt22vBVv`=z1RRqWpw_}!g*aRvQ+q<30EcaGbwHM+f zDR?6*+doh3g*U^p%yERrK3RU5>i&+m9F2;lV;iQGHAnH_ zMhOmWB=hEYCO?wMm`N*NESZV&q!`U-3z?LaO6uXZj`sROcw{7PCW^(xl$pv|#VIjX zOk`7LvYgFMfr_nUf~4gT?LL%vFx5Rg+zpP>nN%^_)vu2h3c~zoyuBlx8_S!vKe>?& zOA`L!2FtxiqK9H;Y@o-4QzlN^Nn!SUWFUH|zuQ?OkFx*;=XlJRK^BajBf{*9AMT3A z&BMLDM`MHLV6-b9L#y%-%xI}Buks%sdr2h|R)STQ&do$3j)OBMN~yy!AnQCSV(vVxOW>D2o`;N;nuKp0c_5jWf!9+L zG}b1PpwA_xuLhmc;5-;lWYeS29PBq8;wf|(@L3qd?%DG%mvOxfQxxuWX%KE&HWt=5J_V2#_ zuRuLs6W8NUnoNZJJV>nc#d*Z9!pE+!ksc$PV;wFtKIPKq^)n;Ot)%}gmwtp481eVp zp4|4Hb?NhZoROcG*@k=kewXw){z4;3LY!arVBP=xjQe}Y+BNJXH|o>-r85i0HaB0|z_3fT{_HUC_` z2^qA-{(1csB7OG5@^m>|6n-F(Bk>x~`gheBm0^85^4PJ9M%W-tY@Ej!Qf?35|M343 eZo5OD2JQ}*arVoyxD2hQpA0LBwJrr$QT!cqBtQ)S literal 0 HcmV?d00001 diff --git a/tictoc/build/CMakeFiles/3.17.0/CMakeSystem.cmake b/tictoc/build/CMakeFiles/3.17.0/CMakeSystem.cmake new file mode 100644 index 00000000..0fd1f759 --- /dev/null +++ b/tictoc/build/CMakeFiles/3.17.0/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-5.4.0-113-generic") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "5.4.0-113-generic") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Linux-5.4.0-113-generic") +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_VERSION "5.4.0-113-generic") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/tictoc/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp b/tictoc/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 00000000..69cfdba6 --- /dev/null +++ b/tictoc/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,660 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_dialect_default = "INFO" ":" "dialect_default[" +#if CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} diff --git a/tictoc/build/CMakeFiles/CMakeError.log b/tictoc/build/CMakeFiles/CMakeError.log new file mode 100644 index 00000000..5da81105 --- /dev/null +++ b/tictoc/build/CMakeFiles/CMakeError.log @@ -0,0 +1,50 @@ +Performing C++ SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output: +Change Dir: /home/tngngn/ccbench/tictoc/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_ede5b && [1/2] Building CXX object CMakeFiles/cmTC_ede5b.dir/src.cxx.o +[2/2] Linking CXX executable cmTC_ede5b +FAILED: cmTC_ede5b +: && /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD CMakeFiles/cmTC_ede5b.dir/src.cxx.o -o cmTC_ede5b && : +/usr/bin/ld: CMakeFiles/cmTC_ede5b.dir/src.cxx.o: in function `main': +src.cxx:(.text+0x46): undefined reference to `pthread_create' +/usr/bin/ld: src.cxx:(.text+0x52): undefined reference to `pthread_detach' +/usr/bin/ld: src.cxx:(.text+0x5e): undefined reference to `pthread_cancel' +/usr/bin/ld: src.cxx:(.text+0x6f): undefined reference to `pthread_join' +collect2: error: ld returned 1 exit status +ninja: build stopped: subcommand failed. + + +Source file was: +#include + +void* test_func(void* data) +{ + return data; +} + +int main(void) +{ + pthread_t thread; + pthread_create(&thread, NULL, test_func, NULL); + pthread_detach(thread); + pthread_cancel(thread); + pthread_join(thread, NULL); + pthread_atfork(NULL, NULL, NULL); + pthread_exit(NULL); + + return 0; +} + +Determining if the function pthread_create exists in the pthreads failed with the following output: +Change Dir: /home/tngngn/ccbench/tictoc/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_239e3 && [1/2] Building CXX object CMakeFiles/cmTC_239e3.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_239e3 +FAILED: cmTC_239e3 +: && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_239e3.dir/CheckFunctionExists.cxx.o -o cmTC_239e3 -lpthreads && : +/usr/bin/ld: -lpthreads が見つかりません +collect2: error: ld returned 1 exit status +ninja: build stopped: subcommand failed. + + + diff --git a/tictoc/build/CMakeFiles/CMakeOutput.log b/tictoc/build/CMakeFiles/CMakeOutput.log new file mode 100644 index 00000000..d34dd3e6 --- /dev/null +++ b/tictoc/build/CMakeFiles/CMakeOutput.log @@ -0,0 +1,235 @@ +The system is: Linux - 5.4.0-113-generic - x86_64 +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: /usr/bin/c++ +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" + +The CXX compiler identification is GNU, found in "/home/tngngn/ccbench/tictoc/build/CMakeFiles/3.17.0/CompilerIdCXX/a.out" + +Determining if the CXX compiler works passed with the following output: +Change Dir: /home/tngngn/ccbench/tictoc/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_e39df && [1/2] Building CXX object CMakeFiles/cmTC_e39df.dir/testCXXCompiler.cxx.o +[2/2] Linking CXX executable cmTC_e39df + + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: /home/tngngn/ccbench/tictoc/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_f8be0 && [1/2] Building CXX object CMakeFiles/cmTC_f8be0.dir/CMakeCXXCompilerABI.cpp.o +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f8be0.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_f8be0.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccEHmNAT.s +GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9" +ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include" +#include "..." search starts here: +#include <...> search starts here: + /usr/include/c++/9 + /usr/include/x86_64-linux-gnu/c++/9 + /usr/include/c++/9/backward + /usr/lib/gcc/x86_64-linux-gnu/9/include + /usr/local/include + /usr/include/x86_64-linux-gnu + /usr/include +End of search list. +GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f8be0.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + as -v --64 -o CMakeFiles/cmTC_f8be0.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccEHmNAT.s +GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34 +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f8be0.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +[2/2] Linking CXX executable cmTC_f8be0 +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_f8be0' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccBmfq3c.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_f8be0 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_f8be0.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_f8be0' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/usr/include/c++/9] + add: [/usr/include/x86_64-linux-gnu/c++/9] + add: [/usr/include/c++/9/backward] + add: [/usr/lib/gcc/x86_64-linux-gnu/9/include] + add: [/usr/local/include] + add: [/usr/include/x86_64-linux-gnu] + add: [/usr/include] + end of search list found + collapse include dir [/usr/include/c++/9] ==> [/usr/include/c++/9] + collapse include dir [/usr/include/x86_64-linux-gnu/c++/9] ==> [/usr/include/x86_64-linux-gnu/c++/9] + collapse include dir [/usr/include/c++/9/backward] ==> [/usr/include/c++/9/backward] + collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/9/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/9/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/tngngn/ccbench/tictoc/build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/local/bin/ninja cmTC_f8be0 && [1/2] Building CXX object CMakeFiles/cmTC_f8be0.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f8be0.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_f8be0.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccEHmNAT.s] + ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9"] + ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/include/c++/9] + ignore line: [ /usr/include/x86_64-linux-gnu/c++/9] + ignore line: [ /usr/include/c++/9/backward] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/include/x86_64-linux-gnu] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f8be0.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_f8be0.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccEHmNAT.s] + ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f8be0.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [[2/2] Linking CXX executable cmTC_f8be0] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_f8be0' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccBmfq3c.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_f8be0 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_f8be0.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccBmfq3c.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--as-needed] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-o] ==> ignore + arg [cmTC_f8be0] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] + arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] + arg [CMakeFiles/cmTC_f8be0.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] ==> ignore + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9] ==> [/usr/lib/gcc/x86_64-linux-gnu/9] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> [/usr/lib] + implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc] + implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] + implicit fwks: [] + + +Determining if the include file pthread.h exists passed with the following output: +Change Dir: /home/tngngn/ccbench/tictoc/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_3d657 && [1/2] Building CXX object CMakeFiles/cmTC_3d657.dir/CheckIncludeFile.cxx.o +[2/2] Linking CXX executable cmTC_3d657 + + + +Determining if the function pthread_create exists in the pthread passed with the following output: +Change Dir: /home/tngngn/ccbench/tictoc/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_19892 && [1/2] Building CXX object CMakeFiles/cmTC_19892.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_19892 + + + diff --git a/tictoc/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx b/tictoc/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx new file mode 100644 index 00000000..13435e07 --- /dev/null +++ b/tictoc/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx @@ -0,0 +1,28 @@ +#ifdef CHECK_FUNCTION_EXISTS + +# ifdef __cplusplus +extern "C" +# endif + char + CHECK_FUNCTION_EXISTS(void); +# ifdef __CLASSIC_C__ +int main() +{ + int ac; + char* av[]; +# else +int main(int ac, char* av[]) +{ +# endif + CHECK_FUNCTION_EXISTS(); + if (ac > 1000) { + return *av[0]; + } + return 0; +} + +#else /* CHECK_FUNCTION_EXISTS */ + +# error "CHECK_FUNCTION_EXISTS has to specify the function" + +#endif /* CHECK_FUNCTION_EXISTS */ diff --git a/tictoc/build/CMakeFiles/TargetDirectories.txt b/tictoc/build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 00000000..b597d005 --- /dev/null +++ b/tictoc/build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +/home/tngngn/ccbench/tictoc/build/CMakeFiles/rebuild_cache.dir +/home/tngngn/ccbench/tictoc/build/CMakeFiles/edit_cache.dir +/home/tngngn/ccbench/tictoc/build/CMakeFiles/tictoc.exe.dir diff --git a/tictoc/build/CMakeFiles/cmake.check_cache b/tictoc/build/CMakeFiles/cmake.check_cache new file mode 100644 index 00000000..3dccd731 --- /dev/null +++ b/tictoc/build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/tictoc/build/build.ninja b/tictoc/build/build.ninja new file mode 100644 index 00000000..9972fcf1 --- /dev/null +++ b/tictoc/build/build.ninja @@ -0,0 +1,186 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.17 + +# This file contains all the build statements describing the +# compilation DAG. + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# +# Which is the root file. +# ============================================================================= + +# ============================================================================= +# Project: ccbench_tictoc +# Configurations: Release +# ============================================================================= + +############################################# +# Minimal version of Ninja required by this file + +ninja_required_version = 1.5 + + +############################################# +# Set configuration variable for custom commands. + +CONFIGURATION = Release +# ============================================================================= +# Include auxiliary files. + + +############################################# +# Include rules file. + +include rules.ninja + + +############################################# +# Utility command for rebuild_cache + +build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/tictoc/build && /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/tictoc -B/home/tngngn/ccbench/tictoc/build + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build rebuild_cache: phony CMakeFiles/rebuild_cache.util + + +############################################# +# Utility command for edit_cache + +build CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/tictoc/build && /usr/local/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. + DESC = No interactive CMake dialog available... + restat = 1 + +build edit_cache: phony CMakeFiles/edit_cache.util + +# ============================================================================= +# Object build statements for EXECUTABLE target tictoc.exe + + +############################################# +# Order-only phony target for tictoc.exe + +build cmake_object_order_depends_target_tictoc.exe_Release: phony || CMakeFiles/tictoc.exe.dir + +build CMakeFiles/tictoc.exe.dir/home/tngngn/ccbench/common/result.cc.o: CXX_COMPILER__tictoc.2eexe_Release /home/tngngn/ccbench/common/result.cc || cmake_object_order_depends_target_tictoc.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DMASSTREE_USE=1 -DNO_WAIT_LOCKING_IN_VALIDATION=1 -DNO_WAIT_OF_TICTOC=0 -DPARTITION_TABLE=0 -DPREEMPTIVE_ABORTS=1 -DSLEEP_READ_PHASE=0 -DTIMESTAMP_HISTORY=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/tictoc.exe.dir/home/tngngn/ccbench/common/result.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/tictoc.exe.dir + OBJECT_FILE_DIR = CMakeFiles/tictoc.exe.dir/home/tngngn/ccbench/common + TARGET_COMPILE_PDB = CMakeFiles/tictoc.exe.dir/ + TARGET_PDB = tictoc.exe.pdb + +build CMakeFiles/tictoc.exe.dir/home/tngngn/ccbench/common/util.cc.o: CXX_COMPILER__tictoc.2eexe_Release /home/tngngn/ccbench/common/util.cc || cmake_object_order_depends_target_tictoc.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DMASSTREE_USE=1 -DNO_WAIT_LOCKING_IN_VALIDATION=1 -DNO_WAIT_OF_TICTOC=0 -DPARTITION_TABLE=0 -DPREEMPTIVE_ABORTS=1 -DSLEEP_READ_PHASE=0 -DTIMESTAMP_HISTORY=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/tictoc.exe.dir/home/tngngn/ccbench/common/util.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/tictoc.exe.dir + OBJECT_FILE_DIR = CMakeFiles/tictoc.exe.dir/home/tngngn/ccbench/common + TARGET_COMPILE_PDB = CMakeFiles/tictoc.exe.dir/ + TARGET_PDB = tictoc.exe.pdb + +build CMakeFiles/tictoc.exe.dir/result.cc.o: CXX_COMPILER__tictoc.2eexe_Release ../result.cc || cmake_object_order_depends_target_tictoc.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DMASSTREE_USE=1 -DNO_WAIT_LOCKING_IN_VALIDATION=1 -DNO_WAIT_OF_TICTOC=0 -DPARTITION_TABLE=0 -DPREEMPTIVE_ABORTS=1 -DSLEEP_READ_PHASE=0 -DTIMESTAMP_HISTORY=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/tictoc.exe.dir/result.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/tictoc.exe.dir + OBJECT_FILE_DIR = CMakeFiles/tictoc.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/tictoc.exe.dir/ + TARGET_PDB = tictoc.exe.pdb + +build CMakeFiles/tictoc.exe.dir/tictoc.cc.o: CXX_COMPILER__tictoc.2eexe_Release ../tictoc.cc || cmake_object_order_depends_target_tictoc.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DMASSTREE_USE=1 -DNO_WAIT_LOCKING_IN_VALIDATION=1 -DNO_WAIT_OF_TICTOC=0 -DPARTITION_TABLE=0 -DPREEMPTIVE_ABORTS=1 -DSLEEP_READ_PHASE=0 -DTIMESTAMP_HISTORY=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/tictoc.exe.dir/tictoc.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/tictoc.exe.dir + OBJECT_FILE_DIR = CMakeFiles/tictoc.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/tictoc.exe.dir/ + TARGET_PDB = tictoc.exe.pdb + +build CMakeFiles/tictoc.exe.dir/transaction.cc.o: CXX_COMPILER__tictoc.2eexe_Release ../transaction.cc || cmake_object_order_depends_target_tictoc.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DMASSTREE_USE=1 -DNO_WAIT_LOCKING_IN_VALIDATION=1 -DNO_WAIT_OF_TICTOC=0 -DPARTITION_TABLE=0 -DPREEMPTIVE_ABORTS=1 -DSLEEP_READ_PHASE=0 -DTIMESTAMP_HISTORY=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/tictoc.exe.dir/transaction.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/tictoc.exe.dir + OBJECT_FILE_DIR = CMakeFiles/tictoc.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/tictoc.exe.dir/ + TARGET_PDB = tictoc.exe.pdb + +build CMakeFiles/tictoc.exe.dir/util.cc.o: CXX_COMPILER__tictoc.2eexe_Release ../util.cc || cmake_object_order_depends_target_tictoc.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DMASSTREE_USE=1 -DNO_WAIT_LOCKING_IN_VALIDATION=1 -DNO_WAIT_OF_TICTOC=0 -DPARTITION_TABLE=0 -DPREEMPTIVE_ABORTS=1 -DSLEEP_READ_PHASE=0 -DTIMESTAMP_HISTORY=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/tictoc.exe.dir/util.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/tictoc.exe.dir + OBJECT_FILE_DIR = CMakeFiles/tictoc.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/tictoc.exe.dir/ + TARGET_PDB = tictoc.exe.pdb + + +# ============================================================================= +# Link build statements for EXECUTABLE target tictoc.exe + + +############################################# +# Link the executable tictoc.exe + +build tictoc.exe: CXX_EXECUTABLE_LINKER__tictoc.2eexe_Release CMakeFiles/tictoc.exe.dir/home/tngngn/ccbench/common/result.cc.o CMakeFiles/tictoc.exe.dir/home/tngngn/ccbench/common/util.cc.o CMakeFiles/tictoc.exe.dir/result.cc.o CMakeFiles/tictoc.exe.dir/tictoc.cc.o CMakeFiles/tictoc.exe.dir/transaction.cc.o CMakeFiles/tictoc.exe.dir/util.cc.o | /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a + FLAGS = -O3 -DNDEBUG + LINK_LIBRARIES = /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a -lpthread + OBJECT_DIR = CMakeFiles/tictoc.exe.dir + POST_BUILD = : + PRE_LINK = : + TARGET_COMPILE_PDB = CMakeFiles/tictoc.exe.dir/ + TARGET_FILE = tictoc.exe + TARGET_PDB = tictoc.exe.pdb + +# ============================================================================= +# Target aliases. + +# ============================================================================= +# Folder targets. + +# ============================================================================= + +############################################# +# Folder: /home/tngngn/ccbench/tictoc/build + +build all: phony tictoc.exe + +# ============================================================================= +# Built-in targets + + +############################################# +# Re-run CMake if any of its inputs changed. + +build build.ninja: RERUN_CMAKE | ../CMakeLists.txt /home/tngngn/ccbench/cmake/CompileOptions.cmake /home/tngngn/ccbench/cmake/Findgflags.cmake /home/tngngn/ccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx + pool = console + + +############################################# +# A missing CMake input file is not an error. + +build ../CMakeLists.txt /home/tngngn/ccbench/cmake/CompileOptions.cmake /home/tngngn/ccbench/cmake/Findgflags.cmake /home/tngngn/ccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx: phony + + +############################################# +# Clean all the built files. + +build clean: CLEAN + + +############################################# +# Print all primary targets available. + +build help: HELP + + +############################################# +# Make the all target the default. + +default all diff --git a/tictoc/build/cmake_install.cmake b/tictoc/build/cmake_install.cmake new file mode 100644 index 00000000..48bbfb80 --- /dev/null +++ b/tictoc/build/cmake_install.cmake @@ -0,0 +1,49 @@ +# Install script for directory: /home/tngngn/ccbench/tictoc + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "/home/tngngn/ccbench/tictoc/build/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/tictoc/build/rules.ninja b/tictoc/build/rules.ninja new file mode 100644 index 00000000..3f694d35 --- /dev/null +++ b/tictoc/build/rules.ninja @@ -0,0 +1,64 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.17 + +# This file contains all the rules used to get the outputs files +# built from the input files. +# It is included in the main 'build.ninja'. + +# ============================================================================= +# Project: ccbench_tictoc +# Configurations: Release +# ============================================================================= +# ============================================================================= + +############################################# +# Rule for running custom commands. + +rule CUSTOM_COMMAND + command = $COMMAND + description = $DESC + + +############################################# +# Rule for compiling CXX files. + +rule CXX_COMPILER__tictoc.2eexe_Release + depfile = $DEP_FILE + deps = gcc + command = /usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building CXX object $out + + +############################################# +# Rule for linking CXX executable. + +rule CXX_EXECUTABLE_LINKER__tictoc.2eexe_Release + command = $PRE_LINK && /usr/bin/c++ $FLAGS $LINK_FLAGS $in -o $TARGET_FILE $LINK_PATH $LINK_LIBRARIES && $POST_BUILD + description = Linking CXX executable $TARGET_FILE + restat = $RESTAT + + +############################################# +# Rule for re-running cmake. + +rule RERUN_CMAKE + command = /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/tictoc -B/home/tngngn/ccbench/tictoc/build + description = Re-running CMake... + generator = 1 + + +############################################# +# Rule for cleaning all built files. + +rule CLEAN + command = /usr/local/bin/ninja $FILE_ARG -t clean $TARGETS + description = Cleaning all built files... + + +############################################# +# Rule for printing all primary targets available. + +rule HELP + command = /usr/local/bin/ninja -t targets + description = All primary targets available: + diff --git a/wait-die/CMakeLists.txt b/wait-die/CMakeLists.txt new file mode 100644 index 00000000..06756666 --- /dev/null +++ b/wait-die/CMakeLists.txt @@ -0,0 +1,81 @@ +cmake_minimum_required(VERSION 3.10) + +project(ccbench_ss2pl + VERSION 0.0.1 + DESCRIPTION "ss2pl of ccbench" + LANGUAGES CXX) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake") + +option(ENABLE_SANITIZER "enable sanitizer on debug build" ON) +option(ENABLE_UB_SANITIZER "enable undefined behavior sanitizer on debug build" OFF) +option(ENABLE_COVERAGE "enable coverage on debug build" OFF) + +find_package(Doxygen) +find_package(Threads REQUIRED) +find_package(gflags REQUIRED) +find_package(glog REQUIRED) +find_package(Boost + COMPONENTS filesystem) + +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) +include(CompileOptions) + +enable_testing() +add_subdirectory(test) + +file(GLOB SS2PL_SOURCES + "../common/result.cc" + "../common/util.cc" + "ss2pl.cc" + "result.cc" + "transaction.cc" + "util.cc" + ) + +add_executable(ss2pl.exe ${SS2PL_SOURCES}) + +target_link_libraries(ss2pl.exe + Boost::filesystem + gflags::gflags + ${PROJECT_SOURCE_DIR}/../third_party/mimalloc/out/release/libmimalloc.a + ${PROJECT_SOURCE_DIR}/../third_party/masstree/libkohler_masstree_json.a + Threads::Threads + ) + +if (DEFINED ADD_ANALYSIS) + add_definitions(-DADD_ANALYSIS=${ADD_ANALYSIS}) +else () + add_definitions(-DADD_ANALYSIS=0) +endif () + +if (DEFINED BACK_OFF) + add_definitions(-DBACK_OFF=${BACK_OFF}) +else () + add_definitions(-DBACK_OFF=0) +endif () + +if (DEFINED KEY_SIZE) + add_definitions(-DKEY_SIZE=${KEY_SIZE}) +else () + add_definitions(-DKEY_SIZE=8) +endif () + +if (DEFINED KEY_SORT) + add_definitions(-DKEY_SORT=${KEY_SORT}) +else () + add_definitions(-DKEY_SORT=0) +endif () + +if (DEFINED MASSTREE_USE) + add_definitions(-DMASSTREE_USE=${MASSTREE_USE}) +else () + add_definitions(-DMASSTREE_USE=1) +endif () + +if (DEFINED VAL_SIZE) + add_definitions(-DVAL_SIZE=${VAL_SIZE}) +else () + add_definitions(-DVAL_SIZE=4) +endif () diff --git a/wait-die/README.md b/wait-die/README.md new file mode 100644 index 00000000..73c470b1 --- /dev/null +++ b/wait-die/README.md @@ -0,0 +1,52 @@ +# 2PL + +## How to use +- Build masstree +``` +$ cd ../ +$ ./bootstrap.sh +``` +This makes ../third_party/masstree/libkohler_masstree_json.a used by building ss2pl. +- Build mimalloc +``` +$ cd ../ +$ ./bootstrap_mimalloc.sh +``` +This makes ../third_party/mimalloc/out/release/libmimalloc.a used by building ss2pl. +- Build +``` +$ mkdir build +$ cd build +$ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release .. +$ ninja +``` +- Confirm usage +``` +$ ./ss2pl.exe -help +``` +- Execution example +``` +$ numactl --interleave=all ./ss2pl.exe -clocks_per_us=2100 -extime=3 -max_ope=10 -rmw=0 -rratio=100 -thread_num=224 -tuple_num=1000000 -ycsb=1 -zipf_skew=0 +``` + +## How to customize options in CMakeLists.txt +- `ADD_ANALYSIS` : If this is 1, it is deeper analysis than setting 0.
+default : `0` +- `BACK_OFF` : If this is 1, it use Cicada's backoff.
+default : `0` +- `KEY_SORT` : If this is 1, its transaction accesses records in ascending key order.
+default : `0` +- `MASSTREE_USE` : If this is 1, it use masstree as data structure. If not, it use simple array αs data structure. +default : `1` +- `VAL_SIZE` : Value of key-value size. In other words, payload size.
+default : `4` +- `DLR0` : Dead lock resolution is timeout. +- `DLR1` : Dead lock resolution is no-wait. + +## Optimizations +- Backoff. +- Timeout of dead lock resolution. +- No-wait of dead lock resolution. + +## Implementation +- Lock : reader/writer lock diff --git a/wait-die/build/.ninja_deps b/wait-die/build/.ninja_deps new file mode 100644 index 0000000000000000000000000000000000000000..d0878100c291d8cb87d5fa9ec025f755154af371 GIT binary patch literal 48508 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 literal 0 HcmV?d00001 diff --git a/wait-die/build/CMakeFiles/3.17.0/CMakeSystem.cmake b/wait-die/build/CMakeFiles/3.17.0/CMakeSystem.cmake new file mode 100644 index 00000000..0fd1f759 --- /dev/null +++ b/wait-die/build/CMakeFiles/3.17.0/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-5.4.0-113-generic") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "5.4.0-113-generic") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Linux-5.4.0-113-generic") +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_VERSION "5.4.0-113-generic") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/wait-die/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp b/wait-die/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 00000000..69cfdba6 --- /dev/null +++ b/wait-die/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,660 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_dialect_default = "INFO" ":" "dialect_default[" +#if CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} diff --git a/wait-die/build/CMakeFiles/CMakeError.log b/wait-die/build/CMakeFiles/CMakeError.log new file mode 100644 index 00000000..f5532dda --- /dev/null +++ b/wait-die/build/CMakeFiles/CMakeError.log @@ -0,0 +1,50 @@ +Performing C++ SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output: +Change Dir: /home/tngngn/ccbench/wait-die/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_8709e && [1/2] Building CXX object CMakeFiles/cmTC_8709e.dir/src.cxx.o +[2/2] Linking CXX executable cmTC_8709e +FAILED: cmTC_8709e +: && /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD CMakeFiles/cmTC_8709e.dir/src.cxx.o -o cmTC_8709e && : +/usr/bin/ld: CMakeFiles/cmTC_8709e.dir/src.cxx.o: in function `main': +src.cxx:(.text+0x46): undefined reference to `pthread_create' +/usr/bin/ld: src.cxx:(.text+0x52): undefined reference to `pthread_detach' +/usr/bin/ld: src.cxx:(.text+0x5e): undefined reference to `pthread_cancel' +/usr/bin/ld: src.cxx:(.text+0x6f): undefined reference to `pthread_join' +collect2: error: ld returned 1 exit status +ninja: build stopped: subcommand failed. + + +Source file was: +#include + +void* test_func(void* data) +{ + return data; +} + +int main(void) +{ + pthread_t thread; + pthread_create(&thread, NULL, test_func, NULL); + pthread_detach(thread); + pthread_cancel(thread); + pthread_join(thread, NULL); + pthread_atfork(NULL, NULL, NULL); + pthread_exit(NULL); + + return 0; +} + +Determining if the function pthread_create exists in the pthreads failed with the following output: +Change Dir: /home/tngngn/ccbench/wait-die/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_fa51f && [1/2] Building CXX object CMakeFiles/cmTC_fa51f.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_fa51f +FAILED: cmTC_fa51f +: && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_fa51f.dir/CheckFunctionExists.cxx.o -o cmTC_fa51f -lpthreads && : +/usr/bin/ld: -lpthreads が見つかりません +collect2: error: ld returned 1 exit status +ninja: build stopped: subcommand failed. + + + diff --git a/wait-die/build/CMakeFiles/CMakeOutput.log b/wait-die/build/CMakeFiles/CMakeOutput.log new file mode 100644 index 00000000..ca5346ff --- /dev/null +++ b/wait-die/build/CMakeFiles/CMakeOutput.log @@ -0,0 +1,235 @@ +The system is: Linux - 5.4.0-113-generic - x86_64 +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: /usr/bin/c++ +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" + +The CXX compiler identification is GNU, found in "/home/tngngn/ccbench/wait-die/build/CMakeFiles/3.17.0/CompilerIdCXX/a.out" + +Determining if the CXX compiler works passed with the following output: +Change Dir: /home/tngngn/ccbench/wait-die/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_742c8 && [1/2] Building CXX object CMakeFiles/cmTC_742c8.dir/testCXXCompiler.cxx.o +[2/2] Linking CXX executable cmTC_742c8 + + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: /home/tngngn/ccbench/wait-die/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_8f4de && [1/2] Building CXX object CMakeFiles/cmTC_8f4de.dir/CMakeCXXCompilerABI.cpp.o +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_8f4de.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_8f4de.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cc8KnJGa.s +GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9" +ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include" +#include "..." search starts here: +#include <...> search starts here: + /usr/include/c++/9 + /usr/include/x86_64-linux-gnu/c++/9 + /usr/include/c++/9/backward + /usr/lib/gcc/x86_64-linux-gnu/9/include + /usr/local/include + /usr/include/x86_64-linux-gnu + /usr/include +End of search list. +GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_8f4de.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + as -v --64 -o CMakeFiles/cmTC_8f4de.dir/CMakeCXXCompilerABI.cpp.o /tmp/cc8KnJGa.s +GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34 +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_8f4de.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +[2/2] Linking CXX executable cmTC_8f4de +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_8f4de' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccMpEEPw.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_8f4de /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_8f4de.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_8f4de' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/usr/include/c++/9] + add: [/usr/include/x86_64-linux-gnu/c++/9] + add: [/usr/include/c++/9/backward] + add: [/usr/lib/gcc/x86_64-linux-gnu/9/include] + add: [/usr/local/include] + add: [/usr/include/x86_64-linux-gnu] + add: [/usr/include] + end of search list found + collapse include dir [/usr/include/c++/9] ==> [/usr/include/c++/9] + collapse include dir [/usr/include/x86_64-linux-gnu/c++/9] ==> [/usr/include/x86_64-linux-gnu/c++/9] + collapse include dir [/usr/include/c++/9/backward] ==> [/usr/include/c++/9/backward] + collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/9/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/9/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/tngngn/ccbench/wait-die/build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/local/bin/ninja cmTC_8f4de && [1/2] Building CXX object CMakeFiles/cmTC_8f4de.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_8f4de.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_8f4de.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cc8KnJGa.s] + ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9"] + ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/include/c++/9] + ignore line: [ /usr/include/x86_64-linux-gnu/c++/9] + ignore line: [ /usr/include/c++/9/backward] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/include/x86_64-linux-gnu] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_8f4de.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_8f4de.dir/CMakeCXXCompilerABI.cpp.o /tmp/cc8KnJGa.s] + ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_8f4de.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [[2/2] Linking CXX executable cmTC_8f4de] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_8f4de' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccMpEEPw.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_8f4de /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_8f4de.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccMpEEPw.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--as-needed] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-o] ==> ignore + arg [cmTC_8f4de] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] + arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] + arg [CMakeFiles/cmTC_8f4de.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] ==> ignore + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9] ==> [/usr/lib/gcc/x86_64-linux-gnu/9] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> [/usr/lib] + implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc] + implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] + implicit fwks: [] + + +Determining if the include file pthread.h exists passed with the following output: +Change Dir: /home/tngngn/ccbench/wait-die/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_81a88 && [1/2] Building CXX object CMakeFiles/cmTC_81a88.dir/CheckIncludeFile.cxx.o +[2/2] Linking CXX executable cmTC_81a88 + + + +Determining if the function pthread_create exists in the pthread passed with the following output: +Change Dir: /home/tngngn/ccbench/wait-die/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_0c277 && [1/2] Building CXX object CMakeFiles/cmTC_0c277.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_0c277 + + + diff --git a/wait-die/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx b/wait-die/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx new file mode 100644 index 00000000..13435e07 --- /dev/null +++ b/wait-die/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx @@ -0,0 +1,28 @@ +#ifdef CHECK_FUNCTION_EXISTS + +# ifdef __cplusplus +extern "C" +# endif + char + CHECK_FUNCTION_EXISTS(void); +# ifdef __CLASSIC_C__ +int main() +{ + int ac; + char* av[]; +# else +int main(int ac, char* av[]) +{ +# endif + CHECK_FUNCTION_EXISTS(); + if (ac > 1000) { + return *av[0]; + } + return 0; +} + +#else /* CHECK_FUNCTION_EXISTS */ + +# error "CHECK_FUNCTION_EXISTS has to specify the function" + +#endif /* CHECK_FUNCTION_EXISTS */ diff --git a/wait-die/build/CMakeFiles/TargetDirectories.txt b/wait-die/build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 00000000..b954d225 --- /dev/null +++ b/wait-die/build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,8 @@ +/home/tngngn/ccbench/wait-die/build/CMakeFiles/rebuild_cache.dir +/home/tngngn/ccbench/wait-die/build/CMakeFiles/edit_cache.dir +/home/tngngn/ccbench/wait-die/build/CMakeFiles/test.dir +/home/tngngn/ccbench/wait-die/build/CMakeFiles/ss2pl.exe.dir +/home/tngngn/ccbench/wait-die/build/test/CMakeFiles/rebuild_cache.dir +/home/tngngn/ccbench/wait-die/build/test/CMakeFiles/edit_cache.dir +/home/tngngn/ccbench/wait-die/build/test/CMakeFiles/test.dir +/home/tngngn/ccbench/wait-die/build/test/CMakeFiles/make_db_test.dir diff --git a/wait-die/build/CMakeFiles/cmake.check_cache b/wait-die/build/CMakeFiles/cmake.check_cache new file mode 100644 index 00000000..3dccd731 --- /dev/null +++ b/wait-die/build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/wait-die/build/CTestTestfile.cmake b/wait-die/build/CTestTestfile.cmake new file mode 100644 index 00000000..8465cb15 --- /dev/null +++ b/wait-die/build/CTestTestfile.cmake @@ -0,0 +1,7 @@ +# CMake generated Testfile for +# Source directory: /home/tngngn/ccbench/wait-die +# Build directory: /home/tngngn/ccbench/wait-die/build +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. +subdirs("test") diff --git a/wait-die/build/build.ninja b/wait-die/build/build.ninja new file mode 100644 index 00000000..5911c46d --- /dev/null +++ b/wait-die/build/build.ninja @@ -0,0 +1,334 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.17 + +# This file contains all the build statements describing the +# compilation DAG. + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# +# Which is the root file. +# ============================================================================= + +# ============================================================================= +# Project: ccbench_ss2pl +# Configurations: Release +# ============================================================================= + +############################################# +# Minimal version of Ninja required by this file + +ninja_required_version = 1.5 + + +############################################# +# Set configuration variable for custom commands. + +CONFIGURATION = Release +# ============================================================================= +# Include auxiliary files. + + +############################################# +# Include rules file. + +include rules.ninja + + +############################################# +# Utility command for rebuild_cache + +build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/wait-die/build && /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/wait-die -B/home/tngngn/ccbench/wait-die/build + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build rebuild_cache: phony CMakeFiles/rebuild_cache.util + + +############################################# +# Utility command for edit_cache + +build CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/wait-die/build && /usr/local/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. + DESC = No interactive CMake dialog available... + restat = 1 + +build edit_cache: phony CMakeFiles/edit_cache.util + + +############################################# +# Utility command for test + +build CMakeFiles/test.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/wait-die/build && /usr/local/bin/ctest --force-new-ctest-process + DESC = Running tests... + pool = console + restat = 1 + +build test: phony CMakeFiles/test.util + +# ============================================================================= +# Object build statements for EXECUTABLE target ss2pl.exe + + +############################################# +# Order-only phony target for ss2pl.exe + +build cmake_object_order_depends_target_ss2pl.exe_Release: phony || CMakeFiles/ss2pl.exe.dir + +build CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Release /home/tngngn/ccbench/common/result.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Release /home/tngngn/ccbench/common/util.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../result.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/result.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../ss2pl.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/transaction.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../transaction.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/transaction.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../util.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/util.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + + +# ============================================================================= +# Link build statements for EXECUTABLE target ss2pl.exe + + +############################################# +# Link the executable ss2pl.exe + +build ss2pl.exe: CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Release CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o CMakeFiles/ss2pl.exe.dir/result.cc.o CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o CMakeFiles/ss2pl.exe.dir/transaction.cc.o CMakeFiles/ss2pl.exe.dir/util.cc.o | /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a + FLAGS = -O3 -DNDEBUG + LINK_LIBRARIES = /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a -lpthread + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + POST_BUILD = : + PRE_LINK = : + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_FILE = ss2pl.exe + TARGET_PDB = ss2pl.exe.pdb + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# /home/tngngn/ccbench/wait-die/CMakeLists.txt +# ============================================================================= + + +############################################# +# Utility command for rebuild_cache + +build test/CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/wait-die/build/test && /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/wait-die -B/home/tngngn/ccbench/wait-die/build + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build test/rebuild_cache: phony test/CMakeFiles/rebuild_cache.util + + +############################################# +# Utility command for edit_cache + +build test/CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/wait-die/build/test && /usr/local/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. + DESC = No interactive CMake dialog available... + restat = 1 + +build test/edit_cache: phony test/CMakeFiles/edit_cache.util + + +############################################# +# Utility command for test + +build test/CMakeFiles/test.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/wait-die/build/test && /usr/local/bin/ctest --force-new-ctest-process + DESC = Running tests... + pool = console + restat = 1 + +build test/test: phony test/CMakeFiles/test.util + +# ============================================================================= +# Object build statements for EXECUTABLE target make_db_test + + +############################################# +# Order-only phony target for make_db_test + +build cmake_object_order_depends_target_make_db_test_Release: phony || test/CMakeFiles/make_db_test.dir + +build test/CMakeFiles/make_db_test.dir/make_db_test.cpp.o: CXX_COMPILER__make_db_test_Release ../test/make_db_test.cpp || cmake_object_order_depends_target_make_db_test_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = test/CMakeFiles/make_db_test.dir/make_db_test.cpp.o.d + FLAGS = -O3 -DNDEBUG -Wall -Wextra -Werror -std=c++17 + INCLUDES = -I../../third_party/googletest/googletest/include + OBJECT_DIR = test/CMakeFiles/make_db_test.dir + OBJECT_FILE_DIR = test/CMakeFiles/make_db_test.dir + TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ + TARGET_PDB = test/make_db_test.pdb + +build test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common/result.cc.o: CXX_COMPILER__make_db_test_Release /home/tngngn/ccbench/common/result.cc || cmake_object_order_depends_target_make_db_test_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common/result.cc.o.d + FLAGS = -O3 -DNDEBUG -Wall -Wextra -Werror -std=c++17 + INCLUDES = -I../../third_party/googletest/googletest/include + OBJECT_DIR = test/CMakeFiles/make_db_test.dir + OBJECT_FILE_DIR = test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common + TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ + TARGET_PDB = test/make_db_test.pdb + +build test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common/util.cc.o: CXX_COMPILER__make_db_test_Release /home/tngngn/ccbench/common/util.cc || cmake_object_order_depends_target_make_db_test_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common/util.cc.o.d + FLAGS = -O3 -DNDEBUG -Wall -Wextra -Werror -std=c++17 + INCLUDES = -I../../third_party/googletest/googletest/include + OBJECT_DIR = test/CMakeFiles/make_db_test.dir + OBJECT_FILE_DIR = test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common + TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ + TARGET_PDB = test/make_db_test.pdb + +build test/CMakeFiles/make_db_test.dir/__/result.cc.o: CXX_COMPILER__make_db_test_Release ../result.cc || cmake_object_order_depends_target_make_db_test_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = test/CMakeFiles/make_db_test.dir/__/result.cc.o.d + FLAGS = -O3 -DNDEBUG -Wall -Wextra -Werror -std=c++17 + INCLUDES = -I../../third_party/googletest/googletest/include + OBJECT_DIR = test/CMakeFiles/make_db_test.dir + OBJECT_FILE_DIR = test/CMakeFiles/make_db_test.dir/__ + TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ + TARGET_PDB = test/make_db_test.pdb + +build test/CMakeFiles/make_db_test.dir/__/transaction.cc.o: CXX_COMPILER__make_db_test_Release ../transaction.cc || cmake_object_order_depends_target_make_db_test_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = test/CMakeFiles/make_db_test.dir/__/transaction.cc.o.d + FLAGS = -O3 -DNDEBUG -Wall -Wextra -Werror -std=c++17 + INCLUDES = -I../../third_party/googletest/googletest/include + OBJECT_DIR = test/CMakeFiles/make_db_test.dir + OBJECT_FILE_DIR = test/CMakeFiles/make_db_test.dir/__ + TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ + TARGET_PDB = test/make_db_test.pdb + +build test/CMakeFiles/make_db_test.dir/__/util.cc.o: CXX_COMPILER__make_db_test_Release ../util.cc || cmake_object_order_depends_target_make_db_test_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = test/CMakeFiles/make_db_test.dir/__/util.cc.o.d + FLAGS = -O3 -DNDEBUG -Wall -Wextra -Werror -std=c++17 + INCLUDES = -I../../third_party/googletest/googletest/include + OBJECT_DIR = test/CMakeFiles/make_db_test.dir + OBJECT_FILE_DIR = test/CMakeFiles/make_db_test.dir/__ + TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ + TARGET_PDB = test/make_db_test.pdb + + +# ============================================================================= +# Link build statements for EXECUTABLE target make_db_test + + +############################################# +# Link the executable test/make_db_test + +build test/make_db_test: CXX_EXECUTABLE_LINKER__make_db_test_Release test/CMakeFiles/make_db_test.dir/make_db_test.cpp.o test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common/result.cc.o test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common/util.cc.o test/CMakeFiles/make_db_test.dir/__/result.cc.o test/CMakeFiles/make_db_test.dir/__/transaction.cc.o test/CMakeFiles/make_db_test.dir/__/util.cc.o | /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so /usr/lib/x86_64-linux-gnu/libglog.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a ../../third_party/googletest/build/lib/libgtest.a ../../third_party/googletest/build/lib/libgtest_main.a + FLAGS = -O3 -DNDEBUG + LINK_LIBRARIES = /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so /usr/lib/x86_64-linux-gnu/libglog.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a ../../third_party/googletest/build/lib/libgtest.a ../../third_party/googletest/build/lib/libgtest_main.a -lpthread + OBJECT_DIR = test/CMakeFiles/make_db_test.dir + POST_BUILD = : + PRE_LINK = : + TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ + TARGET_FILE = test/make_db_test + TARGET_PDB = test/make_db_test.pdb + +# ============================================================================= +# Target aliases. + +build make_db_test: phony test/make_db_test + +# ============================================================================= +# Folder targets. + +# ============================================================================= + +############################################# +# Folder: /home/tngngn/ccbench/wait-die/build + +build all: phony ss2pl.exe test/all + +# ============================================================================= + +############################################# +# Folder: /home/tngngn/ccbench/wait-die/build/test + +build test/all: phony test/make_db_test + +# ============================================================================= +# Built-in targets + + +############################################# +# Re-run CMake if any of its inputs changed. + +build build.ninja: RERUN_CMAKE | ../CMakeLists.txt ../test/CMakeLists.txt /home/tngngn/ccbench/cmake/CompileOptions.cmake /home/tngngn/ccbench/cmake/Findgflags.cmake /home/tngngn/ccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx + pool = console + + +############################################# +# A missing CMake input file is not an error. + +build ../CMakeLists.txt ../test/CMakeLists.txt /home/tngngn/ccbench/cmake/CompileOptions.cmake /home/tngngn/ccbench/cmake/Findgflags.cmake /home/tngngn/ccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx: phony + + +############################################# +# Clean all the built files. + +build clean: CLEAN + + +############################################# +# Print all primary targets available. + +build help: HELP + + +############################################# +# Make the all target the default. + +default all diff --git a/wait-die/build/cmake_install.cmake b/wait-die/build/cmake_install.cmake new file mode 100644 index 00000000..997916cf --- /dev/null +++ b/wait-die/build/cmake_install.cmake @@ -0,0 +1,55 @@ +# Install script for directory: /home/tngngn/ccbench/wait-die + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +if(NOT CMAKE_INSTALL_LOCAL_ONLY) + # Include the install script for each subdirectory. + include("/home/tngngn/ccbench/wait-die/build/test/cmake_install.cmake") + +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "/home/tngngn/ccbench/wait-die/build/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/wait-die/build/rules.ninja b/wait-die/build/rules.ninja new file mode 100644 index 00000000..e07442a1 --- /dev/null +++ b/wait-die/build/rules.ninja @@ -0,0 +1,83 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.17 + +# This file contains all the rules used to get the outputs files +# built from the input files. +# It is included in the main 'build.ninja'. + +# ============================================================================= +# Project: ccbench_ss2pl +# Configurations: Release +# ============================================================================= +# ============================================================================= + +############################################# +# Rule for running custom commands. + +rule CUSTOM_COMMAND + command = $COMMAND + description = $DESC + + +############################################# +# Rule for compiling CXX files. + +rule CXX_COMPILER__ss2pl.2eexe_Release + depfile = $DEP_FILE + deps = gcc + command = /usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building CXX object $out + + +############################################# +# Rule for linking CXX executable. + +rule CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Release + command = $PRE_LINK && /usr/bin/c++ $FLAGS $LINK_FLAGS $in -o $TARGET_FILE $LINK_PATH $LINK_LIBRARIES && $POST_BUILD + description = Linking CXX executable $TARGET_FILE + restat = $RESTAT + + +############################################# +# Rule for compiling CXX files. + +rule CXX_COMPILER__make_db_test_Release + depfile = $DEP_FILE + deps = gcc + command = /usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building CXX object $out + + +############################################# +# Rule for linking CXX executable. + +rule CXX_EXECUTABLE_LINKER__make_db_test_Release + command = $PRE_LINK && /usr/bin/c++ $FLAGS $LINK_FLAGS $in -o $TARGET_FILE $LINK_PATH $LINK_LIBRARIES && $POST_BUILD + description = Linking CXX executable $TARGET_FILE + restat = $RESTAT + + +############################################# +# Rule for re-running cmake. + +rule RERUN_CMAKE + command = /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/wait-die -B/home/tngngn/ccbench/wait-die/build + description = Re-running CMake... + generator = 1 + + +############################################# +# Rule for cleaning all built files. + +rule CLEAN + command = /usr/local/bin/ninja $FILE_ARG -t clean $TARGETS + description = Cleaning all built files... + + +############################################# +# Rule for printing all primary targets available. + +rule HELP + command = /usr/local/bin/ninja -t targets + description = All primary targets available: + diff --git a/wait-die/build/test/CTestTestfile.cmake b/wait-die/build/test/CTestTestfile.cmake new file mode 100644 index 00000000..0f1e98c5 --- /dev/null +++ b/wait-die/build/test/CTestTestfile.cmake @@ -0,0 +1,8 @@ +# CMake generated Testfile for +# Source directory: /home/tngngn/ccbench/wait-die/test +# Build directory: /home/tngngn/ccbench/wait-die/build/test +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. +add_test(make_db_test "/home/tngngn/ccbench/wait-die/build/test/make_db_test" "--gtest_output=xml:make_db_test_gtest_result.xml") +set_tests_properties(make_db_test PROPERTIES _BACKTRACE_TRIPLES "/home/tngngn/ccbench/wait-die/test/CMakeLists.txt;72;add_test;/home/tngngn/ccbench/wait-die/test/CMakeLists.txt;0;") diff --git a/wait-die/build/test/cmake_install.cmake b/wait-die/build/test/cmake_install.cmake new file mode 100644 index 00000000..0629bae2 --- /dev/null +++ b/wait-die/build/test/cmake_install.cmake @@ -0,0 +1,39 @@ +# Install script for directory: /home/tngngn/ccbench/wait-die/test + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + diff --git a/wait-die/build/test/make_db_test b/wait-die/build/test/make_db_test new file mode 100755 index 0000000000000000000000000000000000000000..934043a7fb9122fcdd8475b563f48d5b499315af GIT binary patch literal 1165216 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�)2zhXoNm8pdXy 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�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
cjsNYI_vbLc>Q*74b4kbaQYGztR)50IunVdlA>v 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

9;hahr_`|JAV(tx+K7Q})I%lszym}+ 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

Ux*%i|1R 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 literal 0 HcmV?d00001 diff --git a/wait-die/include/common.hh b/wait-die/include/common.hh new file mode 100644 index 00000000..579055ef --- /dev/null +++ b/wait-die/include/common.hh @@ -0,0 +1,57 @@ +#pragma once + +#include + +#include "../../include/cache_line_size.hh" +#include "../../include/int64byte.hh" +#include "../../include/masstree_wrapper.hh" +#include "tuple.hh" + +#include "gflags/gflags.h" +#include "glog/logging.h" + +#ifdef GLOBAL_VALUE_DEFINE +#define GLOBAL + +#if MASSTREE_USE +alignas(CACHE_LINE_SIZE) GLOBAL MasstreeWrapper MT; +#endif + +#else +#define GLOBAL extern + +#if MASSTREE_USE +alignas(CACHE_LINE_SIZE) GLOBAL MasstreeWrapper MT; +#endif + +#endif + +#ifdef GLOBAL_VALUE_DEFINE +DEFINE_uint64(clocks_per_us, 2100, + "CPU_MHz. Use this info for measuring time."); +DEFINE_uint64(extime, 3, "Execution time[sec]."); +DEFINE_uint64(max_ope, 10, + "Total number of operations per single transaction."); +DEFINE_bool(rmw, false, + "True means read modify write, false means blind write."); +DEFINE_uint64(rratio, 50, "read ratio of single transaction."); +DEFINE_uint64(thread_num, 10, "Total number of worker threads."); +DEFINE_uint64(tuple_num, 1000000, "Total number of records."); +DEFINE_bool(ycsb, true, + "True uses zipf_skew, false uses faster random generator."); +DEFINE_double(zipf_skew, 0, "zipf skew. 0 ~ 0.999..."); +#else +DECLARE_uint64(clocks_per_us); +DECLARE_uint64(extime); +DECLARE_uint64(max_ope); +DECLARE_bool(rmw); +DECLARE_uint64(rratio); +DECLARE_uint64(thread_num); +DECLARE_uint64(tuple_num); +DECLARE_bool(ycsb); +DECLARE_double(zipf_skew); +#endif + +alignas(CACHE_LINE_SIZE) GLOBAL Tuple *Table; +alignas(CACHE_LINE_SIZE) GLOBAL int thread_stats[224]; +alignas(CACHE_LINE_SIZE) GLOBAL int thread_timestamp[224]; diff --git a/wait-die/include/result.hh b/wait-die/include/result.hh new file mode 100644 index 00000000..26dd8285 --- /dev/null +++ b/wait-die/include/result.hh @@ -0,0 +1,9 @@ +#pragma once + +#include + +#include "../../include/result.hh" + +extern std::vector SS2PLResult; + +extern void initResult(); diff --git a/wait-die/include/ss2pl_op_element.hh b/wait-die/include/ss2pl_op_element.hh new file mode 100644 index 00000000..6162c229 --- /dev/null +++ b/wait-die/include/ss2pl_op_element.hh @@ -0,0 +1,18 @@ +#pragma once + +#include "../../include/op_element.hh" + +template +class SetElement : public OpElement { +public: + using OpElement::OpElement; + + char val_[VAL_SIZE]; + + SetElement(uint64_t key, T *rcdptr) : OpElement::OpElement(key, rcdptr) {} + + SetElement(uint64_t key, T *rcdptr, char *val) + : OpElement::OpElement(key, rcdptr) { + memcpy(this->val_, val, VAL_SIZE); + } +}; diff --git a/wait-die/include/transaction.hh b/wait-die/include/transaction.hh new file mode 100644 index 00000000..f79b4713 --- /dev/null +++ b/wait-die/include/transaction.hh @@ -0,0 +1,68 @@ +#pragma once + +#include + +#include "../../include/procedure.hh" +#include "../../include/result.hh" +#include "../../include/rwlock.hh" +#include "../../include/string.hh" +#include "../../include/util.hh" +#include "ss2pl_op_element.hh" +#include "tuple.hh" + +enum class TransactionStatus : uint8_t { + inFlight, + committed, + aborted, +}; + +extern void writeValGenerator(char *writeVal, size_t val_size, size_t thid); + +class TxExecutor { +public: + alignas(CACHE_LINE_SIZE) int thid_; + alignas(CACHE_LINE_SIZE) int txid_; + std::vector r_lock_list_; + std::vector w_lock_list_; + TransactionStatus status_ = TransactionStatus::inFlight; + Result *sres_; + vector > read_set_; + vector > write_set_; + vector pro_set_; + + char write_val_[VAL_SIZE]; + char return_val_[VAL_SIZE]; + + TxExecutor(int thid, Result *sres) : thid_(thid), sres_(sres) { + read_set_.reserve(FLAGS_max_ope); + write_set_.reserve(FLAGS_max_ope); + pro_set_.reserve(FLAGS_max_ope); + r_lock_list_.reserve(FLAGS_max_ope); + w_lock_list_.reserve(FLAGS_max_ope); + + genStringRepeatedNumber(write_val_, VAL_SIZE, thid); + } + + SetElement *searchReadSet(uint64_t key); + + SetElement *searchWriteSet(uint64_t key); + + void warmupTuple(uint64_t key); + + void begin(); + + void read(uint64_t key); + + void write(uint64_t key); + + void readWrite(uint64_t key); + + void commit(); + + void abort(); + + void unlockList(); + + // inline + Tuple *get_tuple(Tuple *table, uint64_t key) { return &table[key]; } +}; diff --git a/wait-die/include/tuple.hh b/wait-die/include/tuple.hh new file mode 100644 index 00000000..b1cd41eb --- /dev/null +++ b/wait-die/include/tuple.hh @@ -0,0 +1,19 @@ +#pragma once + +#include +#include + +#include "../../include/cache_line_size.hh" +#include "../../include/inline.hh" +#include "../../include/rwlock.hh" + +using namespace std; +#define UNLOCKED INT32_MAX + +class Tuple { +public: + alignas(CACHE_LINE_SIZE) RWLock lock_; + char val_[VAL_SIZE]; + int writer_; + int reader_; +}; diff --git a/wait-die/include/util.hh b/wait-die/include/util.hh new file mode 100644 index 00000000..547508fa --- /dev/null +++ b/wait-die/include/util.hh @@ -0,0 +1,13 @@ +#pragma once + +extern void chkArg(); + +extern void displayDB(); + +extern void displayParameter(); + +extern void makeDB(); + +extern void partTableInit([[maybe_unused]] size_t thid, uint64_t start, uint64_t end); + +extern void ShowOptParameters(); diff --git a/wait-die/result.cc b/wait-die/result.cc new file mode 100644 index 00000000..ff17dd8d --- /dev/null +++ b/wait-die/result.cc @@ -0,0 +1,11 @@ +#include "include/result.hh" +#include "include/common.hh" + +#include "../include/cache_line_size.hh" +#include "../include/result.hh" + +using namespace std; + +alignas(CACHE_LINE_SIZE) std::vector SS2PLResult; + +void initResult() { SS2PLResult.resize(FLAGS_thread_num); } diff --git a/wait-die/script/test_cache_ana.sh b/wait-die/script/test_cache_ana.sh new file mode 100755 index 00000000..df6753dd --- /dev/null +++ b/wait-die/script/test_cache_ana.sh @@ -0,0 +1,227 @@ +#test_cache_ana.sh(ss2pl) +maxope=10 +thread=24 +cpu_mhz=2400 +extime=3 +epoch=5 + +tuple=100 +workload=0 +result=result_ss2pl_r10_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=1 +result=result_ss2pl_r8_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=2 +result=result_ss2pl_r5_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=3 +result=result_ss2pl_r2_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=4 +result=result_ss2pl_r0_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + diff --git a/wait-die/script/test_t1k.sh b/wait-die/script/test_t1k.sh new file mode 100755 index 00000000..73dbfec1 --- /dev/null +++ b/wait-die/script/test_t1k.sh @@ -0,0 +1,382 @@ +#test_t1k.sh(ss2pl) +tuple=1000 +maxope=10 +cpu_mhz=2400 +extime=3 +epoch=5 + +workload=0 +result=result_ss2pl_r10_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=1 +result=result_ss2pl_r8_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=2 +result=result_ss2pl_r5_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=3 +result=result_ss2pl_r2_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=4 +result=result_ss2pl_r0_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + diff --git a/wait-die/script/test_t1m.sh b/wait-die/script/test_t1m.sh new file mode 100755 index 00000000..9b30a188 --- /dev/null +++ b/wait-die/script/test_t1m.sh @@ -0,0 +1,382 @@ +#test_t1m.sh(ss2pl) +tuple=1000000 +maxope=10 +cpu_mhz=2400 +extime=3 +epoch=5 + +workload=0 +result=result_ss2pl_r10_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=1 +result=result_ss2pl_r8_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=2 +result=result_ss2pl_r5_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=3 +result=result_ss2pl_r2_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=4 +result=result_ss2pl_r0_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + diff --git a/wait-die/script/test_t200.sh b/wait-die/script/test_t200.sh new file mode 100755 index 00000000..ed333bb7 --- /dev/null +++ b/wait-die/script/test_t200.sh @@ -0,0 +1,382 @@ +#test_t200.sh(ss2pl) +tuple=200 +maxope=10 +cpu_mhz=2400 +extime=3 +epoch=5 + +workload=0 +result=result_ss2pl_r10_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=1 +result=result_ss2pl_r8_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=2 +result=result_ss2pl_r5_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=3 +result=result_ss2pl_r2_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=4 +result=result_ss2pl_r0_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + diff --git a/wait-die/script/tst200-1k-1m.sh b/wait-die/script/tst200-1k-1m.sh new file mode 100755 index 00000000..c347fa88 --- /dev/null +++ b/wait-die/script/tst200-1k-1m.sh @@ -0,0 +1,1991 @@ +#tst200-1k-1m.sh(ss2pl) +maxope=10 +rmw=off +skew=0 +ycsb=off +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +#kugiri +rratio=0 +tuple=200 +result=result_ss2pl_r0_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=20 +tuple=200 +result=result_ss2pl_r2_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=80 +tuple=200 +result=result_ss2pl_r8_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=100 +tuple=200 +result=result_ss2pl_r10_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=0 +tuple=1000 +result=result_ss2pl_r0_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=20 +tuple=1000 +result=result_ss2pl_r2_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=80 +tuple=1000 +result=result_ss2pl_r8_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=100 +tuple=1000 +result=result_ss2pl_r10_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=0 +tuple=1000000 +result=result_ss2pl_r0_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=20 +tuple=1000000 +result=result_ss2pl_r2_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=80 +tuple=1000000 +result=result_ss2pl_r8_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=100 +tuple=1000000 +result=result_ss2pl_r10_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/wait-die/script/ycsb-xope.sh b/wait-die/script/ycsb-xope.sh new file mode 100755 index 00000000..7398b793 --- /dev/null +++ b/wait-die/script/ycsb-xope.sh @@ -0,0 +1,106 @@ +#ycsb-xope.sh(ss2pl) +tuple=100000000 +maxope=10 +rratio=95 +rmw=off +skew=0.8 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j KEY_SIZE=8 VAL_SIZE=4 +cd script/ + +result=result_ss2pl-dlr1_ycsbB_tuple100m_skew08_ope10-100.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + +for ((maxope=10; maxope<=100; maxope+=10)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$maxope $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done diff --git a/wait-die/script/ycsb-xrratio.sh b/wait-die/script/ycsb-xrratio.sh new file mode 100755 index 00000000..e4e74263 --- /dev/null +++ b/wait-die/script/ycsb-xrratio.sh @@ -0,0 +1,102 @@ +#ycsb-xrratio.sh(ss2pl) +tuple=1000000 +maxope=10 +rratio=0 +rmw=off +skew=0.9 +ycsb=on +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +result=result_ss2pl-dlr1_tuple1m_val1k_skew09_rratio0-100.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + +for ((rratio=0; rratio<=100; rratio+=10)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$rratio $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done diff --git a/wait-die/script/ycsb-xrs.sh b/wait-die/script/ycsb-xrs.sh new file mode 100755 index 00000000..fb18cb42 --- /dev/null +++ b/wait-die/script/ycsb-xrs.sh @@ -0,0 +1,118 @@ +#ycsb-xrs.sh(ss2pl) +maxope=10 +rratioary=(50 95 100) +rmw=off +skew=0.9 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j KEY_SIZE=8 VAL_SIZE=1000 +cd script/ + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50 ; then + result=result_ss2pl_ycsbA_tuple1k-100m_val1k_skew09.dat + elif test $rratio = 95 ; then + result=result_ss2pl_ycsbB_tuple1k-100m_val1k_skew09.dat + elif test $rratio = 100 ; then + result=result_ss2pl_ycsbC_tuple1k-100m_val1k_skew09.dat + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + + for ((tuple=1000; tuple<=100000000; tuple*=10)) + do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$tuple $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/wait-die/script/ycsb-xskew.sh b/wait-die/script/ycsb-xskew.sh new file mode 100755 index 00000000..314e6020 --- /dev/null +++ b/wait-die/script/ycsb-xskew.sh @@ -0,0 +1,131 @@ +#ycsb-xrs.sh(ss2pl) +tuple=10000000 +maxope=16 +rratioary=(50 95) +rmw=on +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j VAL_SIZE=100 +cd script/ + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50; then + thread=28 + result=result_2pl_ycsbA_tuple10m_ope16_rmw_skew0-099_th28.dat + elif test $rratio = 95; then + thread=28 + result=result_2pl_ycsbB_tuple10m_ope16_rmw_skew0-099_th28.dat + elif test $rratio = 100; then + result=result_ss2pl_ycsbC_tuple1k_skew0-099.dat + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw skew $ycsb $cpu_mhz $extime" >> $result + ../ss2pl.exe > exp.txt + tmpStr=`grep ShowOptParameters ./exp.txt` + echo "#$tmpStr" >> $result + + for ((tmpskew = 0; tmpskew <= 105; tmpskew += 10)) + do + if test $tmpskew = 100 ; then + tmpskew=95 + fi + if test $tmpskew = 105 ; then + tmpskew=99 + fi + skew=`echo "scale=3; $tmpskew / 100.0" | bc -l | xargs printf %.2f` + + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$skew $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/wait-die/script/ycsb-xth.sh b/wait-die/script/ycsb-xth.sh new file mode 100755 index 00000000..1ff00ecf --- /dev/null +++ b/wait-die/script/ycsb-xth.sh @@ -0,0 +1,124 @@ +#ycsb-xrs.sh(ss2pl) +tuple=10000000 +maxope=1 +#rratioary=(50 95 100) +rratioary=(95) +rmw=on +skew=0.99 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j VAL_SIZE=100 +cd script/ + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50 ; then + result=result_2pl_ycsbA_tuple10m_ope16_rmw_skew099.dat + elif test $rratio = 95 ; then + result=result_2pl_ycsbB_tuple10m_ope1_rmw_skew099.dat + elif test $rratio = 100 ; then + result=result_ss2pl_ycsbC_tuple10m_ope1_skew099.dat + maxope=1 + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + + for ((thread=1; thread<=25; thread+=5)) + do + if test $thread = 6 ; then + thread=5 + fi + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$thread $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/wait-die/script/ycsb-xval.sh b/wait-die/script/ycsb-xval.sh new file mode 100755 index 00000000..e5c64aea --- /dev/null +++ b/wait-die/script/ycsb-xval.sh @@ -0,0 +1,122 @@ +#ycsb-xrs.sh(ss2pl) +tuple=1000000 +maxope=10 +rratioary=(95) +rmw=off +skew=0 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50; then + result=result_ss2pl_ycsbA_tuple100m_skew09_val4-1k.dat + elif test $rratio = 95; then + result=result_ss2pl_ycsbB_tuple1m_val10-100k.dat + elif test $rratio = 100; then + result=result_ss2pl_ycsbC_tuple100m_skew09_val4-1k.dat + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + + for ((val = 10; val <= 100000; val *= 10)) + do + if test $val = 104 ; then + val=100 + fi + cd ../ + make clean; make -j VAL_SIZE=$val + cd script + + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$val $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/wait-die/script/ycsbA-xrs-cache.sh b/wait-die/script/ycsbA-xrs-cache.sh new file mode 100755 index 00000000..61dbd5f4 --- /dev/null +++ b/wait-die/script/ycsbA-xrs-cache.sh @@ -0,0 +1,52 @@ +#ycsbA-xrs-cache.sh(ss2pl) +maxope=10 +thread=24 +rratio=50 +skew=0 +ycsb=ON +cpu_mhz=2400 +extime=3 +epoch=5 + +result=result_ss2pl_ycsbA_tuple100-10m_cachemiss.dat +rm $result +echo "#tuple num, cache-misses, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=10000000; tuple*=10)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime" + echo "$tuple $epoch" + + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-misses,cache-references -o ss2pl-cache-ana.txt ./ss2pl.exe $tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl-cache-ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + diff --git a/wait-die/script/ycsbA.sh b/wait-die/script/ycsbA.sh new file mode 100755 index 00000000..c83e85f6 --- /dev/null +++ b/wait-die/script/ycsbA.sh @@ -0,0 +1,510 @@ +#ycsbA.sh(ss2pl) +maxope=10 +rratio=50 +rmw=off +skew=0 +ycsb=on +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +tuple=500 +result=result_ss2pl_ycsbA_tuple500_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=500000 +result=result_ss2pl_ycsbA_tuple500k_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=5000000 +result=result_ss2pl_ycsbA_tuple5m_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/wait-die/script/ycsbB.sh b/wait-die/script/ycsbB.sh new file mode 100755 index 00000000..2a5966d9 --- /dev/null +++ b/wait-die/script/ycsbB.sh @@ -0,0 +1,510 @@ +#ycsbB.sh(ss2pl) +maxope=10 +rratio=95 +rmw=off +skew=0 +ycsb=on +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +tuple=500 +result=result_ss2pl_ycsbB_tuple500_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=500000 +result=result_ss2pl_ycsbB_tuple500k_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=5000000 +result=result_ss2pl_ycsbB_tuple5m_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/wait-die/script/ycsbC.sh b/wait-die/script/ycsbC.sh new file mode 100755 index 00000000..4894481b --- /dev/null +++ b/wait-die/script/ycsbC.sh @@ -0,0 +1,187 @@ +#ycsbC.sh(ss2pl) +#tuple=1000000000 +tuple=1000 +maxope=10 +rratio=100 +rmw=off +skew=0.9 +ycsb=on +cpu_mhz=2100 +extime=1 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +result=result_ss2pl_ycsbC_tuple1g_skew09_val1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/wait-die/ss2pl.cc b/wait-die/ss2pl.cc new file mode 100644 index 00000000..069cca42 --- /dev/null +++ b/wait-die/ss2pl.cc @@ -0,0 +1,147 @@ +#include //isdigit, +#include +#include //strlen, +#include //syscall(SYS_gettid), +#include //syscall(SYS_gettid), +#include //syscall(SYS_gettid), +#include + +#include +#include //string +#include + +#define GLOBAL_VALUE_DEFINE + +#include "../include/atomic_wrapper.hh" +#include "../include/backoff.hh" +#include "../include/cpu.hh" +#include "../include/debug.hh" +#include "../include/fence.hh" +#include "../include/int64byte.hh" +#include "../include/masstree_wrapper.hh" +#include "../include/procedure.hh" +#include "../include/random.hh" +#include "../include/result.hh" +#include "../include/tsc.hh" +#include "../include/util.hh" +#include "../include/zipf.hh" +#include "include/common.hh" +#include "include/result.hh" +#include "include/transaction.hh" +#include "include/util.hh" + +long long int central_timestamp = 0; + +void worker(size_t thid, char &ready, const bool &start, const bool &quit) { + Result &myres = std::ref(SS2PLResult[thid]); + Xoroshiro128Plus rnd; + rnd.init(); + TxExecutor trans(thid, (Result *) &myres); + FastZipf zipf(&rnd, FLAGS_zipf_skew, FLAGS_tuple_num); + Backoff backoff(FLAGS_clocks_per_us); + +#if MASSTREE_USE + MasstreeWrapper::thread_init(int(thid)); +#endif + +#ifdef Linux + setThreadAffinity(thid); + // printf("Thread #%d: on CPU %d\n", *myid, sched_getcpu()); + // printf("sysconf(_SC_NPROCESSORS_CONF) %ld\n", + // sysconf(_SC_NPROCESSORS_CONF)); +#endif // Linux + + storeRelease(ready, 1); + while (!loadAcquire(start)) _mm_pause(); + while (!loadAcquire(quit)) { + makeProcedure(trans.pro_set_, rnd, zipf, FLAGS_tuple_num, FLAGS_max_ope, FLAGS_thread_num, + FLAGS_rratio, FLAGS_rmw, FLAGS_ycsb, false, thid, myres); + trans.txid_ = __atomic_add_fetch(¢ral_timestamp, 1, __ATOMIC_SEQ_CST); +RETRY: + if (loadAcquire(quit)) break; + if (thid == 0) leaderBackoffWork(backoff, SS2PLResult); + + trans.begin(); + for (auto itr = trans.pro_set_.begin(); itr != trans.pro_set_.end(); + ++itr) { + if ((*itr).ope_ == Ope::READ) { + trans.read((*itr).key_); + } else if ((*itr).ope_ == Ope::WRITE) { + trans.write((*itr).key_); + } else if ((*itr).ope_ == Ope::READ_MODIFY_WRITE) { + trans.readWrite((*itr).key_); + } else { + ERR; + } + + if (trans.status_ == TransactionStatus::aborted) { + trans.abort(); + goto RETRY; + } + } + + trans.commit(); + /** + * local_commit_counts is used at ../include/backoff.hh to calcurate about + * backoff. + */ + storeRelease(myres.local_commit_counts_, + loadAcquire(myres.local_commit_counts_) + 1); + } + + return; +} + +void touchTuples([[maybe_unused]] size_t thid, uint64_t start, uint64_t end) { + Result &myres = std::ref(SS2PLResult[thid]); + TxExecutor trans(thid, (Result *)&myres); + for (auto i = start; i <= end; ++i) { + trans.warmupTuple(i); + } +} + +void warmup() { + + size_t maxthread = decideParallelBuildNumber(FLAGS_tuple_num); + std::vector thv; + for (size_t i = 0; i < maxthread; ++i) { + thv.emplace_back(touchTuples, i, i * (FLAGS_tuple_num / maxthread), + (i + 1) * (FLAGS_tuple_num / maxthread) - 1); + } + for (auto &th : thv) th.join(); + +} + +int main(int argc, char *argv[]) try { + gflags::SetUsageMessage("2PL benchmark."); + gflags::ParseCommandLineFlags(&argc, &argv, true); + chkArg(); + makeDB(); + + alignas(CACHE_LINE_SIZE) bool start = false; + alignas(CACHE_LINE_SIZE) bool quit = false; + initResult(); + + std::vector readys(FLAGS_thread_num); + std::vector thv; + for (size_t i = 0; i < FLAGS_thread_num; ++i) + thv.emplace_back(worker, i, std::ref(readys[i]), std::ref(start), + std::ref(quit)); + waitForReady(readys); + storeRelease(start, true); + for (size_t i = 0; i < FLAGS_extime; ++i) { + sleepMs(1000); + } + storeRelease(quit, true); + for (auto &th : thv) th.join(); + + for (unsigned int i = 0; i < FLAGS_thread_num; ++i) { + SS2PLResult[0].addLocalAllResult(SS2PLResult[i]); + } + ShowOptParameters(); + SS2PLResult[0].displayAllResult(FLAGS_clocks_per_us, FLAGS_extime, FLAGS_thread_num); + + return 0; +} catch (bad_alloc) { + ERR; +} diff --git a/wait-die/test/CMakeLists.txt b/wait-die/test/CMakeLists.txt new file mode 100644 index 00000000..9b5dd16f --- /dev/null +++ b/wait-die/test/CMakeLists.txt @@ -0,0 +1,76 @@ +file(GLOB SS2PL_SOURCES + "${PROJECT_SOURCE_DIR}/../common/result.cc" + "${PROJECT_SOURCE_DIR}/../common/util.cc" + "${PROJECT_SOURCE_DIR}/result.cc" + "${PROJECT_SOURCE_DIR}/transaction.cc" + "${PROJECT_SOURCE_DIR}/util.cc" + ) + +file (GLOB TEST_SOURCES +"make_db_test.cpp" +) + +if (DEFINED ADD_ANALYSIS) + add_definitions(-DADD_ANALYSIS=${ADD_ANALYSIS}) +else () + add_definitions(-DADD_ANALYSIS=0) +endif () + +if (DEFINED BACK_OFF) + add_definitions(-DBACK_OFF=${BACK_OFF}) +else () + add_definitions(-DBACK_OFF=0) +endif () + +add_definitions(-DDLR1) + +if (DEFINED KEY_SIZE) + add_definitions(-DKEY_SIZE=${KEY_SIZE}) +else () + add_definitions(-DKEY_SIZE=8) +endif () + +if (DEFINED KEY_SORT) + add_definitions(-DKEY_SORT=${KEY_SORT}) +else () + add_definitions(-DKEY_SORT=0) +endif () + +if (DEFINED MASSTREE_USE) + add_definitions(-DMASSTREE_USE=${MASSTREE_USE}) +else () + add_definitions(-DMASSTREE_USE=1) +endif () + +if (DEFINED VAL_SIZE) + add_definitions(-DVAL_SIZE=${VAL_SIZE}) +else () + add_definitions(-DVAL_SIZE=4) +endif () + +foreach(src IN LISTS TEST_SOURCES) + get_filename_component(fname "${src}" NAME_WE) + set(test_name "${fname}") + + add_executable(${test_name} ${src} ${SS2PL_SOURCES}) + + target_include_directories(${test_name} + PRIVATE ${PROJECT_SOURCE_DIR}/../third_party/googletest/googletest/include + ) + + target_link_libraries(${test_name} + Boost::filesystem + gflags::gflags + glog::glog + ${PROJECT_SOURCE_DIR}/../third_party/mimalloc/out/release/libmimalloc.a + ${PROJECT_SOURCE_DIR}/../third_party/masstree/libkohler_masstree_json.a + Threads::Threads + ${PROJECT_SOURCE_DIR}/../third_party/googletest/build/lib/libgtest.a + ${PROJECT_SOURCE_DIR}/../third_party/googletest/build/lib/libgtest_main.a + ) + set_compile_options(${test_name}) + add_test( + NAME ${test_name} + COMMAND ${test_name} --gtest_output=xml:${test_name}_gtest_result.xml + ) +endforeach() \ No newline at end of file diff --git a/wait-die/test/make_db_test.cpp b/wait-die/test/make_db_test.cpp new file mode 100644 index 00000000..260dd3a3 --- /dev/null +++ b/wait-die/test/make_db_test.cpp @@ -0,0 +1,40 @@ + +#include + +#define GLOBAL_VALUE_DEFINE + +#include "../../include/backoff.hh" +#include "../include/common.hh" +#include "../include/util.hh" + +#include "glog/logging.h" +#include "gtest/gtest.h" + +namespace ccbench::testing { + +class make_db_test : public ::testing::Test { +public: + static void call_once_f() { + google::InitGoogleLogging("make_db_test_log"); + FLAGS_stderrthreshold = 0; + } + + void SetUp() override { std::call_once(init_, call_once_f); } + + void TearDown() override {} + +private: + static inline std::once_flag init_; // NOLINT +}; + +TEST_F(make_db_test, simple) { // NOLINT + makeDB(); + // verify effect makeDb + for (std::uint64_t i = 0; i < FLAGS_tuple_num; ++i) { + ASSERT_EQ(Table[i].val_[0], 'a'); + ASSERT_EQ(Table[i].val_[1], '\0'); + ASSERT_EQ(Table[i].lock_.counter.load(std::memory_order_acquire), 0); + } +} + +} // namespace ccbench::testing \ No newline at end of file diff --git a/wait-die/transaction.cc b/wait-die/transaction.cc new file mode 100644 index 00000000..2a80ca8d --- /dev/null +++ b/wait-die/transaction.cc @@ -0,0 +1,341 @@ +#include +#include + +#include + +#include "../include/backoff.hh" +#include "../include/debug.hh" +#include "../include/procedure.hh" +#include "../include/result.hh" +#include "include/common.hh" +#include "include/transaction.hh" + +using namespace std; + +extern void display_procedure_vector(std::vector &pro); + +void TxExecutor::warmupTuple(uint64_t key) { + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#else + tuple = get_tuple(Table, key); +#endif + // memcpy(tuple->val_, write_val_, VAL_SIZE); + tuple->lock_.init(); + tuple->writer_ = UNLOCKED; + tuple->reader_ = UNLOCKED; +} + +/** + * @brief Search xxx set + * @detail Search element of local set corresponding to given key. + * In this prototype system, the value to be updated for each worker thread + * is fixed for high performance, so it is only necessary to check the key match. + * @param Key [in] the key of key-value + * @return Corresponding element of local set + */ +inline SetElement *TxExecutor::searchReadSet(uint64_t key) { + for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) { + if ((*itr).key_ == key) return &(*itr); + } + + return nullptr; +} + +/** + * @brief Search xxx set + * @detail Search element of local set corresponding to given key. + * In this prototype system, the value to be updated for each worker thread + * is fixed for high performance, so it is only necessary to check the key match. + * @param Key [in] the key of key-value + * @return Corresponding element of local set + */ +inline SetElement *TxExecutor::searchWriteSet(uint64_t key) { + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { + if ((*itr).key_ == key) return &(*itr); + } + + return nullptr; +} + +/** + * @brief function about abort. + * Clean-up local read/write set. + * Release locks. + * @return void + */ +void TxExecutor::abort() { + /** + * Release locks + */ + unlockList(); + + /** + * Clean-up local read/write set. + */ + read_set_.clear(); + write_set_.clear(); + + ++sres_->local_abort_counts_; + +#if BACK_OFF +#if ADD_ANALYSIS + uint64_t start(rdtscp()); +#endif + + Backoff::backoff(FLAGS_clocks_per_us); + +#if ADD_ANALYSIS + sres_->local_backoff_latency_ += rdtscp() - start; +#endif + +#endif +} + +/** + * @brief success termination of transaction. + * @return void + */ +void TxExecutor::commit() { + //printf("tx%d commit\n", thid_); + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { + /** + * update payload. + */ + memcpy((*itr).rcdptr_->val_, write_val_, VAL_SIZE); + } + + /** + * Release locks. + */ + unlockList(); + + /** + * Clean-up local read/write set. + */ + read_set_.clear(); + write_set_.clear(); + + txid_ += FLAGS_thread_num; + +} + +/** + * @brief Initialize function of transaction. + * Allocate timestamp. + * @return void + */ +void TxExecutor::begin() { this->status_ = TransactionStatus::inFlight; } + +/** + * @brief Transaction read function. + * @param [in] key The key of key-value + */ +void TxExecutor::read(uint64_t key) { +#if ADD_ANALYSIS + uint64_t start = rdtscp(); +#endif // ADD_ANALYSIS + + /** + * read-own-writes or re-read from local read set. + */ + if (searchWriteSet(key) || searchReadSet(key)) goto FINISH_READ; + + /** + * Search tuple from data structure. + */ + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#if ADD_ANALYSIS + ++sres_->local_tree_traversal_; +#endif +#else + tuple = get_tuple(Table, key); +#endif + + if (tuple->lock_.r_trylock()) { + r_lock_list_.emplace_back(&tuple->lock_); + read_set_.emplace_back(key, tuple, tuple->val_); + } else { + if(thid_ < tuple->reader_) { + tuple->reader_ = thid_; + tuple->lock_.r_lock(); + r_lock_list_.emplace_back(&tuple->lock_); + read_set_.emplace_back(key, tuple, tuple->val_); + } else { + this->status_ = TransactionStatus::aborted; + goto FINISH_READ; + } + } + + +FINISH_READ: + +#if ADD_ANALYSIS + sres_->local_read_latency_ += rdtscp() - start; +#endif + return; +} + +/** + * @brief transaction write operation + * @param [in] key The key of key-value + * @return void + */ +void TxExecutor::write(uint64_t key) { +#if ADD_ANALYSIS + uint64_t start = rdtscp(); +#endif + + // if it already wrote the key object once. + if (searchWriteSet(key)) goto FINISH_WRITE; + + /** + * Search tuple from data structure. + */ + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#if ADD_ANALYSIS + ++sres_->local_tree_traversal_; +#endif +#else + tuple = get_tuple(Table, key); +#endif + + for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { + if ((*rItr).key_ == key) { // hit + if (!(*rItr).rcdptr_->lock_.tryupgrade()) { + if(thid_ < (*rItr).rcdptr_->writer_) { + (*rItr).rcdptr_->writer_ = thid_; + (*rItr).rcdptr_->lock_.upgrade(); + } else { + this->status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + } + + // upgrade success + // remove old element from read lock list + + for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); + ++lItr) { + if (*lItr == &((*rItr).rcdptr_->lock_)) { + write_set_.emplace_back(key, (*rItr).rcdptr_); + w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); + r_lock_list_.erase(lItr); + break; + } + } + + read_set_.erase(rItr); + goto FINISH_WRITE; + } + } + + if (!tuple->lock_.w_trylock()) { + if(thid_ < tuple->writer_) { + tuple->writer_ = thid_; + tuple->lock_.w_lock(); + } else { + this->status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + } + + /** + * Register the contents to write lock list and write set. + */ + + +FINISH_WRITE: +#if ADD_ANALYSIS + sres_->local_write_latency_ += rdtscp() - start; +#endif // ADD_ANALYSIS + return; +} + +/** + * @brief transaction readWrite (RMW) operation + */ +void TxExecutor::readWrite(uint64_t key) { + // if it already wrote the key object once. + if (searchWriteSet(key)) goto FINISH_WRITE; + + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#if ADD_ANALYSIS + ++sres_->local_tree_traversal_; +#endif +#else + tuple = get_tuple(Table, key); +#endif + + for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { + if ((*rItr).key_ == key) { // hit + if (!(*rItr).rcdptr_->lock_.tryupgrade()) { + if(thid_ < (*rItr).rcdptr_->reader_) { + (*rItr).rcdptr_->reader_ = UNLOCKED; + (*rItr).rcdptr_->writer_ = thid_; + (*rItr).rcdptr_->lock_.upgrade(); + } else { + this->status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + } + + // upgrade success + // remove old element from read lock list + + for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); + ++lItr) { + if (*lItr == &((*rItr).rcdptr_->lock_)) { + write_set_.emplace_back(key, (*rItr).rcdptr_); + w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); + r_lock_list_.erase(lItr); + break; + } + } + + read_set_.erase(rItr); + goto FINISH_WRITE; + } + } + + if (!tuple->lock_.w_trylock()) { + if(thid_ < tuple->reader_) { + tuple->reader_ = UNLOCKED; + tuple->writer_ = thid_; + tuple->lock_.w_lock(); + } else { + this->status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + } + + +FINISH_WRITE: + return; +} + +/** + * @brief unlock and clean-up local lock set. + * @return void + */ +void TxExecutor::unlockList() { + + for (auto itr = r_lock_list_.begin(); itr != r_lock_list_.end(); ++itr) + (*itr)->r_unlock(); + + for (auto itr = w_lock_list_.begin(); itr != w_lock_list_.end(); ++itr) + (*itr)->w_unlock(); + + /** + * Clean-up local lock set. + */ + r_lock_list_.clear(); + w_lock_list_.clear(); +} diff --git a/wait-die/util.cc b/wait-die/util.cc new file mode 100644 index 00000000..7954dad7 --- /dev/null +++ b/wait-die/util.cc @@ -0,0 +1,118 @@ + +#include +#include // syscall(SYS_gettid), +#include // syscall(SSY_gettid), +#include // syscall(SSY_gettid), + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../include/config.hh" +#include "../include/debug.hh" +#include "../include/masstree_wrapper.hh" +#include "../include/procedure.hh" +#include "../include/random.hh" +#include "../include/result.hh" +#include "../include/zipf.hh" +#include "include/common.hh" +#include "include/tuple.hh" +#include "include/util.hh" + +void chkArg() { + displayParameter(); + + if (FLAGS_rratio > 100) { + ERR; + } + + if (FLAGS_clocks_per_us < 100) { + cout << "CPU_MHZ is less than 100. are your really?" << endl; + ERR; + } +} + +void displayDB() { + Tuple *tuple; + + for (unsigned int i = 0; i < FLAGS_tuple_num; i++) { + tuple = &Table[i]; + cout << "------------------------------" << endl; // - 30 + cout << "key: " << i << endl; + cout << "val: " << tuple->val_ << endl; + } +} + +void displayParameter() { + cout << "#FLAGS_clocks_per_us:\t" << FLAGS_clocks_per_us << endl; + cout << "#FLAGS_extime:\t\t" << FLAGS_extime << endl; + cout << "#FLAGS_max_ope:\t\t" << FLAGS_max_ope << endl; + cout << "#FLAGS_rmw:\t\t" << FLAGS_rmw << endl; + cout << "#FLAGS_rratio:\t\t" << FLAGS_rratio << endl; + cout << "#FLAGS_thread_num:\t" << FLAGS_thread_num << endl; + cout << "#FLAGS_tuple_num:\t" << FLAGS_tuple_num << endl; + cout << "#FLAGS_ycsb:\t\t" << FLAGS_ycsb << endl; + cout << "#FLAGS_zipf_skew:\t" << FLAGS_zipf_skew << endl; +} + +void partTableInit([[maybe_unused]] size_t thid, uint64_t start, uint64_t end) { + // printf("partTableInit(...): thid %zu : %lu : %lu\n", thid, start, end); +#if MASSTREE_USE + MasstreeWrapper::thread_init(thid); +#endif + + for (auto i = start; i <= end; ++i) { + Table[i].val_[0] = 'a'; + Table[i].val_[1] = '\0'; + Table[i].lock_.init(); +#if MASSTREE_USE + MT.insert_value(i, &Table[i]); +#endif + } +} + +void makeDB() { + if (posix_memalign((void **) &Table, PAGE_SIZE, FLAGS_tuple_num * sizeof(Tuple)) != + 0) + ERR; +#if dbs11 + if (madvise((void *)Table, (FLAGS_tuple_num) * sizeof(Tuple), MADV_HUGEPAGE) != 0) + ERR; +#endif + + // maxthread は masstree 構築の最大並行スレッド数。 + // 初期値はハードウェア最大値。 + // FLAGS_tuple_num を均等に分割できる最大スレッド数を求める。 + size_t maxthread = decideParallelBuildNumber(FLAGS_tuple_num); + + std::vector thv; + // cout << "masstree 並列構築スレッド数 " << maxthread << endl; + for (size_t i = 0; i < maxthread; ++i) { + thv.emplace_back(partTableInit, i, i * (FLAGS_tuple_num / maxthread), + (i + 1) * (FLAGS_tuple_num / maxthread) - 1); + } + for (auto &th : thv) th.join(); +} + +void +ShowOptParameters() { + cout << "#ShowOptParameters()" + << ": ADD_ANALYSIS " << ADD_ANALYSIS + << ": BACK_OFF " << BACK_OFF + #ifdef DLR0 + << ": DLR0 " + #elif defined DLR1 + << ": DLR1 " + #endif + << ": MASSTREE_USE " << MASSTREE_USE + << ": KEY_SIZE " << KEY_SIZE + << ": KEY_SORT " << KEY_SORT + << ": VAL_SIZE " << VAL_SIZE + << endl; +} diff --git a/wait-die/wait-die/CMakeLists.txt b/wait-die/wait-die/CMakeLists.txt new file mode 100644 index 00000000..1d3fb04c --- /dev/null +++ b/wait-die/wait-die/CMakeLists.txt @@ -0,0 +1,78 @@ +cmake_minimum_required(VERSION 3.10) + +project(ccbench_waitdie + VERSION 0.0.1 + DESCRIPTION "ss2pl of ccbench" + LANGUAGES CXX) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake") + +option(ENABLE_SANITIZER "enable sanitizer on debug build" ON) +option(ENABLE_UB_SANITIZER "enable undefined behavior sanitizer on debug build" OFF) +option(ENABLE_COVERAGE "enable coverage on debug build" OFF) + +find_package(Doxygen) +find_package(Threads REQUIRED) +find_package(gflags REQUIRED) +find_package(glog REQUIRED) +find_package(Boost + COMPONENTS filesystem) + +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) +include(CompileOptions) + +file(GLOB ERMIA_SOURCES + "../common/result.cc" + "../common/util.cc" + "waitdie.cc" + "result.cc" + "transaction.cc" + "util.cc" + ) + +add_executable(waitdie.exe ${ERMIA_SOURCES}) + +target_link_libraries(waitdie.exe + Boost::filesystem + gflags::gflags + ${PROJECT_SOURCE_DIR}/../third_party/mimalloc/out/release/libmimalloc.a + ${PROJECT_SOURCE_DIR}/../third_party/masstree/libkohler_masstree_json.a + Threads::Threads + ) + +if (DEFINED ADD_ANALYSIS) + add_definitions(-DADD_ANALYSIS=${ADD_ANALYSIS}) +else () + add_definitions(-DADD_ANALYSIS=0) +endif () + +if (DEFINED BACK_OFF) + add_definitions(-DBACK_OFF=${BACK_OFF}) +else () + add_definitions(-DBACK_OFF=0) +endif () + +if (DEFINED KEY_SIZE) + add_definitions(-DKEY_SIZE=${KEY_SIZE}) +else () + add_definitions(-DKEY_SIZE=8) +endif () + +if (DEFINED KEY_SORT) + add_definitions(-DKEY_SORT=${KEY_SORT}) +else () + add_definitions(-DKEY_SORT=0) +endif () + +if (DEFINED MASSTREE_USE) + add_definitions(-DMASSTREE_USE=${MASSTREE_USE}) +else () + add_definitions(-DMASSTREE_USE=1) +endif () + +if (DEFINED VAL_SIZE) + add_definitions(-DVAL_SIZE=${VAL_SIZE}) +else () + add_definitions(-DVAL_SIZE=4) +endif () diff --git a/wait-die/wait-die/README.md b/wait-die/wait-die/README.md new file mode 100644 index 00000000..cfb40298 --- /dev/null +++ b/wait-die/wait-die/README.md @@ -0,0 +1,48 @@ +# SS2PL wait-die variant + +## How to use +- Build masstree in ccbench directory +``` +$ ./build_tools/bootstrap.sh +``` +This makes ccbench/third_party/masstree/libkohler_masstree_json.a used by building ss2pl. +- Build mimalloc +``` +$ ./build_tools/bootstrap_mimalloc.sh +``` +This makes ccbench/third_party/mimalloc/out/release/libmimalloc.a used by building ss2pl. +- Build in wound-wait directory +``` +$ mkdir build +$ cd build +$ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release .. +$ ninja +``` +- Confirm usage +``` +$ ./waitdie.exe -help +``` +- Execution example +``` +$ numactl --interleave=all ./waitdie.exe -clocks_per_us=2100 -extime=3 -max_ope=10 -rmw=0 -rratio=100 -thread_num=224 -tuple_num=1000000 -ycsb=1 -zipf_skew=0 +``` + +## How to customize options in CMakeLists.txt +- `ADD_ANALYSIS` : If this is 1, it is deeper analysis than setting 0.
+default : `0` +- `BACK_OFF` : If this is 1, it use Cicada's backoff.
+default : `0` +- `KEY_SORT` : If this is 1, its transaction accesses records in ascending key order.
+default : `0` +- `MASSTREE_USE` : If this is 1, it use masstree as data structure. If not, it use simple array αs data structure. +default : `1` +- `VAL_SIZE` : Value of key-value size. In other words, payload size.
+default : `4` + +## Optimizations +- Backoff. +- Timeout of dead lock resolution. +- No-wait of dead lock resolution. + +## Implementation +- Lock : reader/writer lock diff --git a/wait-die/wait-die/build/.ninja_deps b/wait-die/wait-die/build/.ninja_deps new file mode 100644 index 0000000000000000000000000000000000000000..b36f8d6cb300f76b4b4e8a9de819726b699c6b18 GIT binary patch literal 34552 zcmciL2Y}R6yYTTy??pgBQI{soouwB+rFZP~GR)3qcLt_0Wp_b(FM_D_rgZFr9T22T z2kD@I1+cuYz1RCc$z&$GQ?uW9@4feTciB8oa&mH#b8?ayYp1yEt`U|D+2bo!M3SWL z=+wtDQtoPZ$iB23i`}1LmrZi6Y|5~E(`;_1oaT3B@xN()t2JGAS#4=nx6|o%rFmsv zz~MJpttPi5{mcK{&AO7ykfeWzPZ99}pEu3!vN{48a+=SdVNLaTQp()nRu9a#OQhfiyKC-R}2^U#)IerajAK`;**u zMsnRgGsUvIWS=OS^hdO^Wy%(RfNCM)ca}F!xPISg3dL&Gb^b<9^MpCdp5(Z_89w_M zSt-k}$>%xTuB_AycOczC>Mu!^QPiQ&A4pfr__MK`)RxUnwx7r`RM%EdKwsHElCQKa zeOplvtH2A$)($N7_d~QY>YIVbWA=~s$Y#Hn=C1D7_vF;iU-xQ`oa;}^6aF2s z)$+%R2FcO*mSu_eRXK(Zd%88%CUY)&Q+bsfDvs846A&+g1f z&5*4Qs#I&UUnF1NOo!XzcTwIO6~1>isNCmI2=A2tHVQM%?!A#e!JTx8pEfoC&{)K zT92rsPsmI1JPGBcx-4F=J4d8TSCika-DkD9+%7x&V6t6FK2L1d?xG_RSJ}(t)z4pF zx@!tum)R1$Mt)3ejr_3$&_I>4f21!1e@x4=TGJxhbQ^uQsPu@J^m$sJ8Ih;<4_w$X z9hNNRe7$Hak86=XAQCT-m*hF1T#M2iZt9rJD!J#$P4f7vxn{F2TawO^pIrYLx(rHZ zjh5HSCPym8mCh6>*PbD=PaDk@S7CLt(y4;vde!6)$xZUyqxIQc{#0;rJ4s$d`;=W7 zc8j?3Nzw_HC$4*?orSWFCtnsdhk=x6W5<%uOCRl*eK{77QpTg?CD}FuVy{!}8M4c7 z_m3v~NK*SJ#%4a*K|drmcsQvXrA|UghmtR&dJg#PSw7jX9NdHC8a#h=*^=}D`R(&x zgQ8z6g4_0c16H<8)1*IA>iEF_!#aE(*(z4DpLHbJmehJ{YO?JkC&^>$@!PzNpu*RH zz2qiaZ%S&a&t~C{BQ>~+J;~?mx1DP7TE*~B+MRsaeQJ$61AaMIsqbBebG z*1wI|821M1$;hpN#gXMsxA>HsrL76#m9dSSYn469X)nDSt^B&OsG$sobT=&T#NLLu zmv9A~ve#}6-+jDIeBAwIA3PR2qhU#Ui`Y7G>c;8LR`&DF*kw@ah1(^uk7lb)RvOS7 zvDYikj9_6U>2=~F&P`o?h+8qcU-nuUy_-d)D|cGTFhts7I9D7EHFtCD{mGEi16gSn zpHKE`qf$wFEp~jUU1;SL_4+FD@s5GVPp2EaU3`Vu7{@>@i}L?XwwDu>L7nMfe3@Z( zd)UpFh);=rY#nwdcd9IVG4{6o-X>{T7N^rTwcr;__^_ILz8m-W>4T zm5cuK*Mc(jrQ!#l9}1^a~i6~dsICboFXV^3C99&(cDO+0; ze}6n~$7r)n_Hx8!C4O}h@r?BYve&C5JQqLSYnPoCm&-hcj`~JG+}uyGN2% z#f$M}=48+|R}vHN9HPUsyRwMogj^_V zOf`PynR`?gnrus07CNTM-J4mw%qK1;FXFt3KHds$Ns<=;SR`=pu8x@<{$#^|=q=B_<@cTxK5r^yY~Z~S{$b)SQoPmyP& zei=qe^T~kW%*wQg zd3Kxh1o;tTyx=HQRPG#>N3?4nJv=AeY?dWif58k%nng~Mb42Q~3XW)%6)Wn8Il$ZU0p@hD@u+}PVwyF<2@lVF{q+X@XniO-I`POCc6BS`^bLf6^k`Y}2e zlg&?FM4hWERnBD}%M%~-;1FAxb5f>Xlw2>l@!FPpyQ)n4OQVQ2)Q)L8`g{-hF^-dR z4<_euTPO~ex;e>Be8hgM?a?LYNRo@?Db#(QF@w51bPMPtCf@#q0;vs0?D8p<7m77= z=Ry2P;zP$%>o?WyEAiIcTuZv0aj@NQ4&{7-A5c?VoXC@iO;_I4nX!N-)n+M1JeU0W*OJZJE z8-PDXzM(Ol)$JZ>m(6x}=oC_Rn5 z#pevCNIl7kIF|`YWiCU^Kx&~qh>N&BN5rLSw@OlX;tjQb_JY|!j-n)Wi?%IY|B>f< z$K+2};v@ykxptlVCyGjZ)Xo_YH8h&H9$n7SWaaJZFr zsV|OnVjVHs3+-O*20O-%QHxI*IuH|a40M|g?q{aODk~dqAA6n5bEpH^`-zDd)2IuT z>+yXoPx3gbS*f9^3+Y~R6JN)4JD`*)bh|CJBR^)niP1oMAhRto@#=(2n;NL}7Ls%i z@$uS9C_XepZL+l~*nWiG3uv8Sn|Y6$(mbVB2gMI0Y~@lRH6hk$J&77_OkTWp6Rck`a8T+sEkT(AF8io}tPaFY#HK_qznDU2hDef9 z6Rb~+N4>H`ne)G!*civuAMiNjMzNRkGK^((Lzc(e*8q2+`a7Kl#K*WcDuWKYE89Ji zNtXHv);lWT7UO(%3`Q;1BR)pG_|)@GlJ1HfLmw~BWl5?_OpN+qx=xbnusmM-QTq=< zDN}7?6n-akV0E zCq~)#sBiFUH;};xRa{(ZBo!Zg<=1ADZi`(8bw-JEZ!8M`n6uS@*2u56MQvx*t$Gu`7eZkaK~WS#ag;zwltO8gL0ObTc~n3}+>A=7j4HSVRUyWf z)p09sgE${<#~rv6DX58Bs10#G*Tr3^2XTHhKtnWwXa}h^uYso5D(#DJc38@82X|g`eOhF zVh{#n2!>)9%oq*}(qTmg#JnAcO3DJwS+ZjUM#2FuEs_gj{O-Xhh-X1uQY1eD$OgBz zQZBfROJndj#$p`CV*(~(5+-8`reYeVV+Lko7G`4(p1@qp!;_egr|>kM!2&GAA}q!d zEX6V`#|o^(Dm;tluo`Qy7VEGc8?X_Z@H}3?i+Bky;}yJ$*RUB|@H*bWn|KRv;~l(< zt=NX`cn>?U6Ypaec4H6rVjuS706xG$9KvB7!BHH;ah$+Oe27yxjWallb2yI+xQI*m z2p{7zuHY&@!Ke5PpW_;?;|9LKm*|WFezrk*94Z7U>#77(( z2A~`~QFT)BZvSOhw%zM?IeA}Fo&PMF{5Ba=XSyuPQ#$&^ zi-h;u_f-qTj9K5mqLPh#DCo7WZJx1bLWdP}tM=eyYJRi97T zv&8#uRC}iA{G@LalvzAH@LQCRt4ZGw8?Vkov0O(ScB^>RTl#P8@+j@m#e4%#C|nuh z198;he~3?sUe{cpc*tOJNM92Z<2WkolwG30X6+rj&;-j@3CfbEA}P(6#K$|Hyk*Jz zm3E~8e-XRf>PM;AryIn?t3Pp0&~8JIs6>x*JwX{nj`mrtYsAKHQx0>w7EF0QPq6M_ zsB&}uS?qNy=MEoOwK76d-^1m!`IPt=$I+_3D#{p=n25esU8uB$t8v!Bd9C#KSE8*$ zTgX~2$5{vG81IfTwv8Jj-kD6 zJBGZ~L!09j=HQ&+`Pkc3U*Th$=ZJ}Sz9{oymK-LN++GGv%IvH-0B6aI(f-A?gv+rt zz$=fu$ZWEmi5;uKxu_V&k3%q1f=;#3^#()l2YY0xoUp^ZE~y--dcazz&~` zvkmRJv?bto2R9*|h`o()f1)0RP-k*n%ZWQr;_iP5Ji$4gt=Vd4_sYv?*&F^trb+0G&IW3(atc9d((!Pw;vzO&E0 zEiv)hfoRLYVC5QefcO|~Eqsi$PXq*e{QX*)&cDn4^B<9t==J!JQ5B`g9 zPz=RU0wqxjr6Klb6DmTqrJGR+l~Dy^4#WX558{LivF1a*W!VN4K~a=JS=2^d+y!yZ zT^;pM9}UnDjUd`YDojX&IOa{z6wM&&vjtkB6~w(*8{C7o5N-Tk+=u(o9v#pTolpzk z;d}gmAMq1@#xM94zu|ZMfj{vV{>DG}7t&4q9}1x`ia?u#>A~Wj=!M=`g)ZodZYYQH z=#D;k01x6JJd8*1D2lSqVknLhD2b=|`_p&^3$PH2uoz4599AO(rHFrwpQZU(2Fv+< z1y17(#5~kYSTPGSGC>!aXU@;fzh`3(p1@qp!;_egiI{}Rn1ZQD$23gGQY^ztJd08A z!UsPB$VLuwF&bm=IL2Ze#$y83U@g{RJvL%9w%~QVfj99M-o`t47iVz}WvPd9D31!L zh?`Lfl~Dz^Kuk(kLv`GW+fW0y;~ML^jvKgxf8U7|)I=@R#s!vL#3gtz16#2T+p!n> z@DX<6eeA++?7@BrChxm6re%40=G{i~%)`*{XBNZm3p)o#V z*{5j2?@iGRh52^{+=8mO6}O=VZpR(C6Dg>P&ghGN=#K#yh(Q>PAsC8bFk?8Hvz-=b ziB@QhHu#)n7VN-59L5nG#W5Vm37p3l_!9S!*B0$?FYbf5Zp4|R3_frXGm+Fc*GsX# zCR6ykS9bEZYU5RXn^QIQB$3oqRch28pc}o7}ED=iyQTp>YiD{faChB~i zkH=JEt(@QFv`d(y3`g?JA=>#YpZE~%>q%`>9p-8q-9k?D8o+Tqg znRb?5OR9|G{iJZcyh@H}7kQ6|?){{2sPqc4qOInMRo{_P=Q)*{<1=@}r9_Y8c8dWP z_4yJpiR(s`HP5Q07s+d#f87zsK3^VRMkLz63*?Hnny38wcdYVmN_sx&GK%BQ=_9_` zhYf8?w4J=+(njJFw`c9Rsn69nkdyGZsiD$(V%z86?}$2!Z2N9;?1QaqT~cM#wg09j z+gfrW>O1;&l{0%yFh0(;WMsB_r>$JmRws^k`mOE&pJNnn5!;>%?n9jQTkT$Jz`?8j zTs@U-JeznM;-LXAqlu4x*rZj&r{u3|_0~vymx*YG(#pi^U#N`pwqvG`{ zWh2iJAF8h;?(x(QAe(GYlNY)MCXq+W&{CzR$c^ZKLrWQ#>&v7KSE9EA%ArerfL_&m%8|y35nH)jlOus=3LpTPai1;L4v!J}=kpkzHDu=8%`<`4ixsY|6=J z`^ZVq7DsAd<{;Y2tR&*;QN$NhC@pd(@rm0m?U9x>gILk7;ZJg&iH{4P zV+ttKxRRgv$os>{_g8$xMc!wI#}MAA%e6^bn=~rw^6>jE9+szs_EGB?^3GAai3#2Z zQx#f_I!Ee?y8iH-s59#F@I0j>yzbD7#k;xUn2ikPMmgt|FZLP1a&dg3EDv52cx)Q{ z1|U1J;`qdh<=LEg4_UnbsEp-o!ELL@UMrgRoj^7zi{+x;@~kgQ89Ak?KlrR&wDRSN z;n4w~W)+VD*+vfWU`I5M-ETylIti(jz(`5x?%sz2ZQ9f~>9y2bRV6)w4 z77d*F7~*;tlP2EJyvie|2fQlgliTxqA?lz5KgHZw7k)2-q9}&qD1nkFh0-X4vgnF# z(9eDL;NSXr(s*;B`uWCabD(117hy4$AOm8)^f`X6hM33uke{cp3fi3BT7F*%F}K$d z*ZBQ9w7JfT{C+bkp)#t#4im&Y=nYtq4l872A`9Xist&3%>id)R_`7J&Vt&-exHe(Co&HHX;`8I6Fd)R@Ucptm48+))9`>-De@Bt3u5Dw!Aj^Y@O;{;CP zG|u2G&fz>R;36*JBYcd@xPq(r1fQbQO~H37`Pl_s@qalNE1nNTn~xQ9-1_-tZEjgS zgV5%e^>fQ&PF>8U>*tuiW&b4prhi7#jemECm?!Unp6G?%=z|CFARfZQcm$8)G4w@0 z^v3`U#2^gD5DdjIm@ym{{7Mnh`DuliqtAehOk}|ZJ4Rq691zb*wC4lyo(&Wwt{95r zJGS#Ze!!1#@;4XU@L&|Y@WGD&vXO&ajK&x|jONze0z)1?s^p{KbyO5HNR(p^3%n)ohjSzQK0;cQCfa? z^4l9Y-__%n?Fg5E`+x$jBU}o`N(EYnJ=1B?_JlE4f!7f}9-Rxcj_h=&JzS1X1ztzE z932a^j^@;dCv;WmP_T7myIl5A`)bcRIvZ~vYPX;}!1ouZETUdRmm2B5f|W(ABV4iU z%e@6F3)K=n#_bBcj&M=hvX1TruiNm7SjRmDDi6~vyi>33RU6h}qz~bFkCrO6CfCTg z!7(P!ut92NaNGJ5uBGwZP@`&LFjs%UX>K&PNy|`=-OOOF*B}0TOjB}=)O9Z34Idh) z&{mol+%{jU5jxI|4d!NLhR>QbgSpuj{<|u{e$GU0djsc6w#Vvl1{|Ywmmn#Xbr`8P zW~}+|JZUB1eI$eB_hp60Sd9#B+oQh86WVw~gZbh=R^=HPI<=(+2J@|s3})>8p&@d8 zgZca?m}EILO5%MsgZUnBrqveeg_wUL-^jJek`b=^x(0KtjvVow9Lo5r4!K6!oz;=) z2>5KeI|J^w4eonRy35UXO@wN%mcjCSMvCthREjUvG??pjHp_4Y|2r}%26MSKHrFsln_Ekj?l73kL*h{G?FMrlIpN$I26O#%LRvlFMy{c2i#S2UO;ozoV7}GC*W}Sk zf`?hEPJRm4N8RL!evU2nCrXB~M zqc!s%0}&sJ6|0e|gv+AaPTru(#Q2L#6Q5-s=|ZCg$Heo9=lH!4>)(WmD2C!Ffs!bN z(hy}}GZFLnVt&~HF~{tL3$f;!#T;Kf)Q5hq?;8KUjv^?EGAN5Vcmj5qFc&w_6TQ$I zt115)ti?Lq1PO&8=1(_3Kc8NWe^*BXG(;oZjZ~yT%&#>;toe3vJ!}Ip@7@-o{oRZE za6j6k13E&Ri!V%B)?))UViTUn3wRMP;bpvnSMeG)V+&r#8+a3M;cdKwcd-@QupRGV z2X^9p?80vB!CvgcejLCDIEX_yj3YRTV>pfzIEfE&3a4=fXK@baaRC=`2_NBOT*eh# z#V7a_pW$;{!*vvK>peDrqP#1JXH*`l2^uYso5D(#D zJc36do~!glKlH}{48$M|#t;m}FqknM;+eu_TtYgm$bgJYWMKqG!i}f#3>IJ^7GW`- z!V=8FY)r%?OvV&U#WYNZ2czJH4}JuYjU41+G{)d@jKw&N#{|s4Ow7ZRn2)7chUHj+ zl~{#m@f=oT4c1~E)?*_!V+&r#8+a3M;cdKwcd-@QupRGVFZSUh?8N)nh27YL{WyRR z@G-97BCbNrv3G=p-*@034&gA4;3$saI8NXsKEx@U#u=Q&Ih@A@e1cA_^Gkk;`SxgY z_rJ32H~fx2@F)Jl-}ndrq6oP~Q4GaV0wqxj;#oo<np|M+H>G&8URRsDfKi71dB3 zx8gR`!0iyv3GPG+YN8fuqYmogF4RMPG(bZ%!re%P32A7IxtNc6Xolu!ftF~6)@XzL z&mcPUw=U?4Zs?94=!stFjXrn)58@#_j7RV&9z$RBLw^jwKn%iQ48c$ggBinNK{~9+ zfQ(FJ!3H}r$Z4K%JK>z*tK?Goq_(BLUZNGS z962fZw-x@_q%5w1Wr?Z5PwGN9rqMobVUxS@=@=RpGh7lME2b^%hjoFxo zCovyS;b}aB1z3nhSd1l@h)I}?DVU0MOv7|6#WF%+?Odj*)F^<|=OtOk95`6K_H3(-%B{;e?E ztAJZj6}RFx)WGey19u_?HPIP;(GUGG00S`ygE0g{F$`u5hv-8~AzD8w@%Nih2!+uN z-BA-g&=bAzztw;KO8K-tRE!~#=|{^DR}SS7Z@f~J<;74O-?5$V@dJLu|L?xI2-_$P zBYpA{#LvT%_=Yn5grD&X#F#1twNM-L(Gi{SCCi`UXRI-hk-q*X)^j)Oi_^Dj{|$Sq z_|Rl2`lZUm)1ig`&c92B`!aoB=Lv9kUxH=LiAnZ74F01vcJW;)#mQU1{r=CCan6|m zr$it43%?g)UE;b}48>6bB~c2caWg7Gl(PyNqY3JvKKuxv4#d8i**p^usD|s;ah&)fFdZ0GAN7MsEfN$4b{;e9ncY-Pz&NZupS$*5u5NlUcifZ z2`}Rnyo%Sb8C&o=-oTr93vc5cyo;^ahV6I{JFpY)V;6Q~5B6do_TvCPz(E|sVI09x z9K&&(z)5_FQ#g$?IE!;Qj|;enOZW&M<1((`Dn7xd_za)p8m{A0>f=EXGqQV5dW^n&-y3{(YJrd-%gwpek;~ZK#3UaR=^13TmP=`l28DV*mzX5C&rihGH1Z z7>vn%vnwdyOtmo7lvVrpwuPwvXOF z?)Io%(NJWFI0cgkRnUGwDn+15d};Xrp8!W`(@F?vgj9;4ULUuER;5=OoERY94~Tj#n5l!?6b&9!;ua#J-b(4kCRM{I=sHkOR#BOG z#%tt&k@=cGjXb(=g7g^edKjC9R;9Pl=|qjSMtyuDiO|-KSqux#soiM zil-YjWkoQ$^@d5$jXk8th(0hKecej_JO1uvJx!VsVHe(`Xu-(-?gKp;7pi|d;BG!b z{#NRT5XGO7!Yg)X(jy&vcW08VnRKo^**Y2SXzkdmm-6}^=^ERGK5$I+4Gak|Gm9LB zQTD|~Dr5cgv-h1U#vXj`#^jmevtRqwV*@`q_5|BNpD2R~^?68O8T04^Wz_Y5268l( z0WYS0oR!21Ut!?2I(1us+faue1Wv2NkFLPq3jDk4$P0+yD2A&;nC9qY!W>KI5}EYF zDJWu(H*e#4>>$5j<9QAszi8v>R)@5gya;#^@FL(vz>9zv0WShx1iT3R zQxW)6^X-2#rY{AI(@j6$Erjv8S*xM?k}>^U;JnnY?t2R8tJOQd4$!<^pgfemCrdp- zmfPRxuUve@LfF4( zZ35Q=m9zv0WShx1iT1%5%415MZk-I7lHqi2>2Xt8-?f}=skR(1n=qcV`j2o6_2-t zPhcn{pBPCWhy4Ob__q2#fbVGWJ=gr3)oKB75%6)qz(Tb;40r|b8Nl$BYV{?+rvY2& zr5L^&#pHYVi11B@d|TJ94xEKLY``0eB-tQvU}lE0A3QoP;ap1L(R87 z6nIn|+;ZT(@82O`L!$ou@EK+~$YVmA7JT+YoBEK51w*GAy4S5b367x%e;J6!;PWx4 zPXUVFVCYOkf3W3?{#a0(X^aJTexa!+*mi1_5e!eS?h8h8!EiL#77gy~3Tj=!mabr^ zD;SXP7k>%rp9eeM`#B7xm%Ipg5%415MZk-I7XdE3dANt22vBVv`=z1RRqWpw_}!g*aRvQ+q<30EcaGbwHM+f zDR?6*+doh3g*U^p%yERrK3RU5>i&+m9F2;lV;iQGHAnH_ zMhOmWB=hEYCO?wMm`N*NESZV&q!`U-3z?LaO6uXZj`sROcw{7PCW^(xl$pv|#VIjX zOk`7LvYgFMfr_nUf~4gT?LL%vFx5Rg+zpP>nN%^_)vu2h3c~zoyuBlx8_S!vKe>?& zOA`L!2FtxiqK9H;Y@o-4QzlN^Nn!SUWFUH|zuQ?OkFx*;=XlJRK^BajBf{*9AMT3A z&BMLDM`MHLV6-b9L#y%-%xI}Buks%sdr2h|R)STQ&do$3j)OBMN~yy!AnQCSV(vVxOW>D2o`;N;nuKp0c_5jWf!9+L zG}b1PpwA_xuLhmc;5-;lWYeS29PBq8;wf|(@L3qd?%DG%mvOxfQxxuWX%KE&HWt=5J_V2#_ zuRuLs6W8NUnoNZJJV>nc#d*Z9!pE+!ksc$PV;wFtKIPKq^)n;Ot)%}gmwtp481eVp zp4|4Hb?NhZoROcG*@k=kewXw){z4;3LY!arVBP=xjQe}Y+BNJXH|o>-r85i0HaB0|z_3fT{_HUC_` z2^qA-{(1csB7OG5@^m>|6n-F(Bk>x~`gheBm0^85^4PJ9M%W-tY@Ej!Qf?35|M343 eZo5OD2JQ}*arVoyxD2hQpA0LBwJrr$QT!cqBtQ)S literal 0 HcmV?d00001 diff --git a/wait-die/wait-die/build/CMakeFiles/3.17.0/CMakeSystem.cmake b/wait-die/wait-die/build/CMakeFiles/3.17.0/CMakeSystem.cmake new file mode 100644 index 00000000..0fd1f759 --- /dev/null +++ b/wait-die/wait-die/build/CMakeFiles/3.17.0/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-5.4.0-113-generic") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "5.4.0-113-generic") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Linux-5.4.0-113-generic") +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_VERSION "5.4.0-113-generic") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/wait-die/wait-die/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp b/wait-die/wait-die/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 00000000..69cfdba6 --- /dev/null +++ b/wait-die/wait-die/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,660 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_dialect_default = "INFO" ":" "dialect_default[" +#if CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} diff --git a/wait-die/wait-die/build/CMakeFiles/CMakeError.log b/wait-die/wait-die/build/CMakeFiles/CMakeError.log new file mode 100644 index 00000000..5b57c61f --- /dev/null +++ b/wait-die/wait-die/build/CMakeFiles/CMakeError.log @@ -0,0 +1,50 @@ +Performing C++ SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output: +Change Dir: /home/tngngn/tccbench/wait-die/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_74519 && [1/2] Building CXX object CMakeFiles/cmTC_74519.dir/src.cxx.o +[2/2] Linking CXX executable cmTC_74519 +FAILED: cmTC_74519 +: && /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD CMakeFiles/cmTC_74519.dir/src.cxx.o -o cmTC_74519 && : +/usr/bin/ld: CMakeFiles/cmTC_74519.dir/src.cxx.o: in function `main': +src.cxx:(.text+0x46): undefined reference to `pthread_create' +/usr/bin/ld: src.cxx:(.text+0x52): undefined reference to `pthread_detach' +/usr/bin/ld: src.cxx:(.text+0x5e): undefined reference to `pthread_cancel' +/usr/bin/ld: src.cxx:(.text+0x6f): undefined reference to `pthread_join' +collect2: error: ld returned 1 exit status +ninja: build stopped: subcommand failed. + + +Source file was: +#include + +void* test_func(void* data) +{ + return data; +} + +int main(void) +{ + pthread_t thread; + pthread_create(&thread, NULL, test_func, NULL); + pthread_detach(thread); + pthread_cancel(thread); + pthread_join(thread, NULL); + pthread_atfork(NULL, NULL, NULL); + pthread_exit(NULL); + + return 0; +} + +Determining if the function pthread_create exists in the pthreads failed with the following output: +Change Dir: /home/tngngn/tccbench/wait-die/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_4b97e && [1/2] Building CXX object CMakeFiles/cmTC_4b97e.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_4b97e +FAILED: cmTC_4b97e +: && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_4b97e.dir/CheckFunctionExists.cxx.o -o cmTC_4b97e -lpthreads && : +/usr/bin/ld: -lpthreads が見つかりません +collect2: error: ld returned 1 exit status +ninja: build stopped: subcommand failed. + + + diff --git a/wait-die/wait-die/build/CMakeFiles/CMakeOutput.log b/wait-die/wait-die/build/CMakeFiles/CMakeOutput.log new file mode 100644 index 00000000..21b2926c --- /dev/null +++ b/wait-die/wait-die/build/CMakeFiles/CMakeOutput.log @@ -0,0 +1,235 @@ +The system is: Linux - 5.4.0-113-generic - x86_64 +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: /usr/bin/c++ +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" + +The CXX compiler identification is GNU, found in "/home/tngngn/tccbench/wait-die/build/CMakeFiles/3.17.0/CompilerIdCXX/a.out" + +Determining if the CXX compiler works passed with the following output: +Change Dir: /home/tngngn/tccbench/wait-die/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_3f3ca && [1/2] Building CXX object CMakeFiles/cmTC_3f3ca.dir/testCXXCompiler.cxx.o +[2/2] Linking CXX executable cmTC_3f3ca + + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: /home/tngngn/tccbench/wait-die/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_ba609 && [1/2] Building CXX object CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccgINL6R.s +GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9" +ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include" +#include "..." search starts here: +#include <...> search starts here: + /usr/include/c++/9 + /usr/include/x86_64-linux-gnu/c++/9 + /usr/include/c++/9/backward + /usr/lib/gcc/x86_64-linux-gnu/9/include + /usr/local/include + /usr/include/x86_64-linux-gnu + /usr/include +End of search list. +GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + as -v --64 -o CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccgINL6R.s +GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34 +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +[2/2] Linking CXX executable cmTC_ba609 +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_ba609' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/cc9ZQZya.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_ba609 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_ba609' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/usr/include/c++/9] + add: [/usr/include/x86_64-linux-gnu/c++/9] + add: [/usr/include/c++/9/backward] + add: [/usr/lib/gcc/x86_64-linux-gnu/9/include] + add: [/usr/local/include] + add: [/usr/include/x86_64-linux-gnu] + add: [/usr/include] + end of search list found + collapse include dir [/usr/include/c++/9] ==> [/usr/include/c++/9] + collapse include dir [/usr/include/x86_64-linux-gnu/c++/9] ==> [/usr/include/x86_64-linux-gnu/c++/9] + collapse include dir [/usr/include/c++/9/backward] ==> [/usr/include/c++/9/backward] + collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/9/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/9/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/tngngn/tccbench/wait-die/build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/local/bin/ninja cmTC_ba609 && [1/2] Building CXX object CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccgINL6R.s] + ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9"] + ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/include/c++/9] + ignore line: [ /usr/include/x86_64-linux-gnu/c++/9] + ignore line: [ /usr/include/c++/9/backward] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/include/x86_64-linux-gnu] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccgINL6R.s] + ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [[2/2] Linking CXX executable cmTC_ba609] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_ba609' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/cc9ZQZya.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_ba609 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/cc9ZQZya.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--as-needed] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-o] ==> ignore + arg [cmTC_ba609] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] + arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] + arg [CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] ==> ignore + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9] ==> [/usr/lib/gcc/x86_64-linux-gnu/9] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> [/usr/lib] + implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc] + implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] + implicit fwks: [] + + +Determining if the include file pthread.h exists passed with the following output: +Change Dir: /home/tngngn/tccbench/wait-die/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_80ac1 && [1/2] Building CXX object CMakeFiles/cmTC_80ac1.dir/CheckIncludeFile.cxx.o +[2/2] Linking CXX executable cmTC_80ac1 + + + +Determining if the function pthread_create exists in the pthread passed with the following output: +Change Dir: /home/tngngn/tccbench/wait-die/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_76630 && [1/2] Building CXX object CMakeFiles/cmTC_76630.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_76630 + + + diff --git a/wait-die/wait-die/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx b/wait-die/wait-die/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx new file mode 100644 index 00000000..13435e07 --- /dev/null +++ b/wait-die/wait-die/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx @@ -0,0 +1,28 @@ +#ifdef CHECK_FUNCTION_EXISTS + +# ifdef __cplusplus +extern "C" +# endif + char + CHECK_FUNCTION_EXISTS(void); +# ifdef __CLASSIC_C__ +int main() +{ + int ac; + char* av[]; +# else +int main(int ac, char* av[]) +{ +# endif + CHECK_FUNCTION_EXISTS(); + if (ac > 1000) { + return *av[0]; + } + return 0; +} + +#else /* CHECK_FUNCTION_EXISTS */ + +# error "CHECK_FUNCTION_EXISTS has to specify the function" + +#endif /* CHECK_FUNCTION_EXISTS */ diff --git a/wait-die/wait-die/build/CMakeFiles/TargetDirectories.txt b/wait-die/wait-die/build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 00000000..ea42ef9e --- /dev/null +++ b/wait-die/wait-die/build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +/home/tngngn/tccbench/wait-die/build/CMakeFiles/rebuild_cache.dir +/home/tngngn/tccbench/wait-die/build/CMakeFiles/edit_cache.dir +/home/tngngn/tccbench/wait-die/build/CMakeFiles/waitdie.exe.dir diff --git a/wait-die/wait-die/build/CMakeFiles/cmake.check_cache b/wait-die/wait-die/build/CMakeFiles/cmake.check_cache new file mode 100644 index 00000000..3dccd731 --- /dev/null +++ b/wait-die/wait-die/build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/wait-die/wait-die/build/build.ninja b/wait-die/wait-die/build/build.ninja new file mode 100644 index 00000000..7d76183a --- /dev/null +++ b/wait-die/wait-die/build/build.ninja @@ -0,0 +1,186 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.17 + +# This file contains all the build statements describing the +# compilation DAG. + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# +# Which is the root file. +# ============================================================================= + +# ============================================================================= +# Project: ccbench_waitdie +# Configurations: Release +# ============================================================================= + +############################################# +# Minimal version of Ninja required by this file + +ninja_required_version = 1.5 + + +############################################# +# Set configuration variable for custom commands. + +CONFIGURATION = Release +# ============================================================================= +# Include auxiliary files. + + +############################################# +# Include rules file. + +include rules.ninja + + +############################################# +# Utility command for rebuild_cache + +build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/tccbench/wait-die/build && /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/tccbench/wait-die -B/home/tngngn/tccbench/wait-die/build + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build rebuild_cache: phony CMakeFiles/rebuild_cache.util + + +############################################# +# Utility command for edit_cache + +build CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/tccbench/wait-die/build && /usr/local/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. + DESC = No interactive CMake dialog available... + restat = 1 + +build edit_cache: phony CMakeFiles/edit_cache.util + +# ============================================================================= +# Object build statements for EXECUTABLE target waitdie.exe + + +############################################# +# Order-only phony target for waitdie.exe + +build cmake_object_order_depends_target_waitdie.exe_Release: phony || CMakeFiles/waitdie.exe.dir + +build CMakeFiles/waitdie.exe.dir/home/tngngn/tccbench/common/result.cc.o: CXX_COMPILER__waitdie.2eexe_Release /home/tngngn/tccbench/common/result.cc || cmake_object_order_depends_target_waitdie.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/waitdie.exe.dir/home/tngngn/tccbench/common/result.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/waitdie.exe.dir + OBJECT_FILE_DIR = CMakeFiles/waitdie.exe.dir/home/tngngn/tccbench/common + TARGET_COMPILE_PDB = CMakeFiles/waitdie.exe.dir/ + TARGET_PDB = waitdie.exe.pdb + +build CMakeFiles/waitdie.exe.dir/home/tngngn/tccbench/common/util.cc.o: CXX_COMPILER__waitdie.2eexe_Release /home/tngngn/tccbench/common/util.cc || cmake_object_order_depends_target_waitdie.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/waitdie.exe.dir/home/tngngn/tccbench/common/util.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/waitdie.exe.dir + OBJECT_FILE_DIR = CMakeFiles/waitdie.exe.dir/home/tngngn/tccbench/common + TARGET_COMPILE_PDB = CMakeFiles/waitdie.exe.dir/ + TARGET_PDB = waitdie.exe.pdb + +build CMakeFiles/waitdie.exe.dir/result.cc.o: CXX_COMPILER__waitdie.2eexe_Release ../result.cc || cmake_object_order_depends_target_waitdie.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/waitdie.exe.dir/result.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/waitdie.exe.dir + OBJECT_FILE_DIR = CMakeFiles/waitdie.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/waitdie.exe.dir/ + TARGET_PDB = waitdie.exe.pdb + +build CMakeFiles/waitdie.exe.dir/transaction.cc.o: CXX_COMPILER__waitdie.2eexe_Release ../transaction.cc || cmake_object_order_depends_target_waitdie.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/waitdie.exe.dir/transaction.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/waitdie.exe.dir + OBJECT_FILE_DIR = CMakeFiles/waitdie.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/waitdie.exe.dir/ + TARGET_PDB = waitdie.exe.pdb + +build CMakeFiles/waitdie.exe.dir/util.cc.o: CXX_COMPILER__waitdie.2eexe_Release ../util.cc || cmake_object_order_depends_target_waitdie.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/waitdie.exe.dir/util.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/waitdie.exe.dir + OBJECT_FILE_DIR = CMakeFiles/waitdie.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/waitdie.exe.dir/ + TARGET_PDB = waitdie.exe.pdb + +build CMakeFiles/waitdie.exe.dir/waitdie.cc.o: CXX_COMPILER__waitdie.2eexe_Release ../waitdie.cc || cmake_object_order_depends_target_waitdie.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/waitdie.exe.dir/waitdie.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/waitdie.exe.dir + OBJECT_FILE_DIR = CMakeFiles/waitdie.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/waitdie.exe.dir/ + TARGET_PDB = waitdie.exe.pdb + + +# ============================================================================= +# Link build statements for EXECUTABLE target waitdie.exe + + +############################################# +# Link the executable waitdie.exe + +build waitdie.exe: CXX_EXECUTABLE_LINKER__waitdie.2eexe_Release CMakeFiles/waitdie.exe.dir/home/tngngn/tccbench/common/result.cc.o CMakeFiles/waitdie.exe.dir/home/tngngn/tccbench/common/util.cc.o CMakeFiles/waitdie.exe.dir/result.cc.o CMakeFiles/waitdie.exe.dir/transaction.cc.o CMakeFiles/waitdie.exe.dir/util.cc.o CMakeFiles/waitdie.exe.dir/waitdie.cc.o | /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a + FLAGS = -O3 -DNDEBUG + LINK_LIBRARIES = /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a -lpthread + OBJECT_DIR = CMakeFiles/waitdie.exe.dir + POST_BUILD = : + PRE_LINK = : + TARGET_COMPILE_PDB = CMakeFiles/waitdie.exe.dir/ + TARGET_FILE = waitdie.exe + TARGET_PDB = waitdie.exe.pdb + +# ============================================================================= +# Target aliases. + +# ============================================================================= +# Folder targets. + +# ============================================================================= + +############################################# +# Folder: /home/tngngn/tccbench/wait-die/build + +build all: phony waitdie.exe + +# ============================================================================= +# Built-in targets + + +############################################# +# Re-run CMake if any of its inputs changed. + +build build.ninja: RERUN_CMAKE | ../CMakeLists.txt /home/tngngn/tccbench/cmake/CompileOptions.cmake /home/tngngn/tccbench/cmake/Findgflags.cmake /home/tngngn/tccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx + pool = console + + +############################################# +# A missing CMake input file is not an error. + +build ../CMakeLists.txt /home/tngngn/tccbench/cmake/CompileOptions.cmake /home/tngngn/tccbench/cmake/Findgflags.cmake /home/tngngn/tccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx: phony + + +############################################# +# Clean all the built files. + +build clean: CLEAN + + +############################################# +# Print all primary targets available. + +build help: HELP + + +############################################# +# Make the all target the default. + +default all diff --git a/wait-die/wait-die/build/cmake_install.cmake b/wait-die/wait-die/build/cmake_install.cmake new file mode 100644 index 00000000..6a618fcc --- /dev/null +++ b/wait-die/wait-die/build/cmake_install.cmake @@ -0,0 +1,49 @@ +# Install script for directory: /home/tngngn/tccbench/wait-die + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "/home/tngngn/tccbench/wait-die/build/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/wait-die/wait-die/build/rules.ninja b/wait-die/wait-die/build/rules.ninja new file mode 100644 index 00000000..0549c50f --- /dev/null +++ b/wait-die/wait-die/build/rules.ninja @@ -0,0 +1,64 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.17 + +# This file contains all the rules used to get the outputs files +# built from the input files. +# It is included in the main 'build.ninja'. + +# ============================================================================= +# Project: ccbench_waitdie +# Configurations: Release +# ============================================================================= +# ============================================================================= + +############################################# +# Rule for running custom commands. + +rule CUSTOM_COMMAND + command = $COMMAND + description = $DESC + + +############################################# +# Rule for compiling CXX files. + +rule CXX_COMPILER__waitdie.2eexe_Release + depfile = $DEP_FILE + deps = gcc + command = /usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building CXX object $out + + +############################################# +# Rule for linking CXX executable. + +rule CXX_EXECUTABLE_LINKER__waitdie.2eexe_Release + command = $PRE_LINK && /usr/bin/c++ $FLAGS $LINK_FLAGS $in -o $TARGET_FILE $LINK_PATH $LINK_LIBRARIES && $POST_BUILD + description = Linking CXX executable $TARGET_FILE + restat = $RESTAT + + +############################################# +# Rule for re-running cmake. + +rule RERUN_CMAKE + command = /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/tccbench/wait-die -B/home/tngngn/tccbench/wait-die/build + description = Re-running CMake... + generator = 1 + + +############################################# +# Rule for cleaning all built files. + +rule CLEAN + command = /usr/local/bin/ninja $FILE_ARG -t clean $TARGETS + description = Cleaning all built files... + + +############################################# +# Rule for printing all primary targets available. + +rule HELP + command = /usr/local/bin/ninja -t targets + description = All primary targets available: + diff --git a/wait-die/wait-die/include/common.hh b/wait-die/wait-die/include/common.hh new file mode 100644 index 00000000..4d3e7ba5 --- /dev/null +++ b/wait-die/wait-die/include/common.hh @@ -0,0 +1,57 @@ +#pragma once + +#include + +#include "../../include/cache_line_size.hh" +#include "../../include/int64byte.hh" +#include "../../include/masstree_wrapper.hh" +#include "tuple.hh" + +#include "gflags/gflags.h" +#include "glog/logging.h" + +#ifdef GLOBAL_VALUE_DEFINE +#define GLOBAL + +#if MASSTREE_USE +alignas(CACHE_LINE_SIZE) GLOBAL MasstreeWrapper MT; +#endif + +#else +#define GLOBAL extern + +#if MASSTREE_USE +alignas(CACHE_LINE_SIZE) GLOBAL MasstreeWrapper MT; +#endif + +#endif + +#ifdef GLOBAL_VALUE_DEFINE +DEFINE_uint64(clocks_per_us, 2100, + "CPU_MHz. Use this info for measuring time."); +DEFINE_uint64(extime, 3, "Execution time[sec]."); +DEFINE_uint64(max_ope, 10, + "Total number of operations per single transaction."); +DEFINE_bool(rmw, false, + "True means read modify write, false means blind write."); +DEFINE_uint64(rratio, 50, "read ratio of single transaction."); +DEFINE_uint64(thread_num, 10, "Total number of worker threads."); +DEFINE_uint64(tuple_num, 1000000, "Total number of records."); +DEFINE_bool(ycsb, true, + "True uses zipf_skew, false uses faster random generator."); +DEFINE_double(zipf_skew, 0, "zipf skew. 0 ~ 0.999..."); +#else +DECLARE_uint64(clocks_per_us); +DECLARE_uint64(extime); +DECLARE_uint64(max_ope); +DECLARE_bool(rmw); +DECLARE_uint64(rratio); +DECLARE_uint64(thread_num); +DECLARE_uint64(tuple_num); +DECLARE_bool(ycsb); +DECLARE_double(zipf_skew); +#endif + +alignas(CACHE_LINE_SIZE) GLOBAL Tuple *Table; +alignas(CACHE_LINE_SIZE) GLOBAL int thread_stats[224]; // *** added by tatsu: thread_stats[i] = 1 means thread i needs to abort +alignas(CACHE_LINE_SIZE) GLOBAL int thread_timestamp[224]; // *** added by tatsu diff --git a/wait-die/wait-die/include/result.hh b/wait-die/wait-die/include/result.hh new file mode 100644 index 00000000..26dd8285 --- /dev/null +++ b/wait-die/wait-die/include/result.hh @@ -0,0 +1,9 @@ +#pragma once + +#include + +#include "../../include/result.hh" + +extern std::vector SS2PLResult; + +extern void initResult(); diff --git a/wait-die/wait-die/include/ss2pl_op_element.hh b/wait-die/wait-die/include/ss2pl_op_element.hh new file mode 100644 index 00000000..6162c229 --- /dev/null +++ b/wait-die/wait-die/include/ss2pl_op_element.hh @@ -0,0 +1,18 @@ +#pragma once + +#include "../../include/op_element.hh" + +template +class SetElement : public OpElement { +public: + using OpElement::OpElement; + + char val_[VAL_SIZE]; + + SetElement(uint64_t key, T *rcdptr) : OpElement::OpElement(key, rcdptr) {} + + SetElement(uint64_t key, T *rcdptr, char *val) + : OpElement::OpElement(key, rcdptr) { + memcpy(this->val_, val, VAL_SIZE); + } +}; diff --git a/wait-die/wait-die/include/transaction.hh b/wait-die/wait-die/include/transaction.hh new file mode 100644 index 00000000..4ab7c0da --- /dev/null +++ b/wait-die/wait-die/include/transaction.hh @@ -0,0 +1,68 @@ +#pragma once + +#include + +#include "../../include/procedure.hh" +#include "../../include/result.hh" +#include "../../include/rwlock.hh" +#include "../../include/string.hh" +#include "../../include/util.hh" +#include "ss2pl_op_element.hh" +#include "tuple.hh" + +enum class TransactionStatus : uint8_t { + inFlight, + committed, + aborted, +}; + +extern void writeValGenerator(char *writeVal, size_t val_size, size_t thid); + +class TxExecutor { +public: + alignas(CACHE_LINE_SIZE) int thid_; + int txid_; + std::vector r_lock_list_; + std::vector w_lock_list_; + TransactionStatus status_ = TransactionStatus::inFlight; + Result *sres_; + vector > read_set_; + vector > write_set_; + vector pro_set_; + + char write_val_[VAL_SIZE]; + char return_val_[VAL_SIZE]; + + TxExecutor(int thid, Result *sres) : thid_(thid), sres_(sres), txid_(thid) { + read_set_.reserve(FLAGS_max_ope); + write_set_.reserve(FLAGS_max_ope); + pro_set_.reserve(FLAGS_max_ope); + r_lock_list_.reserve(FLAGS_max_ope); + w_lock_list_.reserve(FLAGS_max_ope); + + genStringRepeatedNumber(write_val_, VAL_SIZE, thid); + } + + SetElement *searchReadSet(uint64_t key); + + SetElement *searchWriteSet(uint64_t key); + + void warmupTuple(uint64_t key); + + void begin(); + + void read(uint64_t key); + + void write(uint64_t key); + + void readWrite(uint64_t key); + + void commit(); + + void abort(); + + void unlockList(); + + // inline + Tuple *get_tuple(Tuple *table, uint64_t key) { return &table[key]; } +}; diff --git a/wait-die/wait-die/include/tuple.hh b/wait-die/wait-die/include/tuple.hh new file mode 100644 index 00000000..239dd56c --- /dev/null +++ b/wait-die/wait-die/include/tuple.hh @@ -0,0 +1,22 @@ +#pragma once + +#include +#include + +#include "../../include/cache_line_size.hh" +#include "../../include/inline.hh" +#include "../../include/rwlock.hh" + +using namespace std; + +#define UNLOCKED INT32_MAX + +class Tuple { +public: + alignas(CACHE_LINE_SIZE) RWLock lock_; + RWLock latch_; + char val_[VAL_SIZE]; + uint32_t writer_; + uint32_t reader_; + bool writeflag_; +}; diff --git a/wait-die/wait-die/include/util.hh b/wait-die/wait-die/include/util.hh new file mode 100644 index 00000000..547508fa --- /dev/null +++ b/wait-die/wait-die/include/util.hh @@ -0,0 +1,13 @@ +#pragma once + +extern void chkArg(); + +extern void displayDB(); + +extern void displayParameter(); + +extern void makeDB(); + +extern void partTableInit([[maybe_unused]] size_t thid, uint64_t start, uint64_t end); + +extern void ShowOptParameters(); diff --git a/wait-die/wait-die/result.cc b/wait-die/wait-die/result.cc new file mode 100644 index 00000000..ff17dd8d --- /dev/null +++ b/wait-die/wait-die/result.cc @@ -0,0 +1,11 @@ +#include "include/result.hh" +#include "include/common.hh" + +#include "../include/cache_line_size.hh" +#include "../include/result.hh" + +using namespace std; + +alignas(CACHE_LINE_SIZE) std::vector SS2PLResult; + +void initResult() { SS2PLResult.resize(FLAGS_thread_num); } diff --git a/wait-die/wait-die/script/comparecc.sh b/wait-die/wait-die/script/comparecc.sh new file mode 100755 index 00000000..300ccfdd --- /dev/null +++ b/wait-die/wait-die/script/comparecc.sh @@ -0,0 +1,6 @@ +cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DVAL_SIZE=1000 -DMASSTREE_USE=0 -DBACK_OFF=1 .. +ninja +for i in 8 16 32 64 96 120 +do + numactl --interleave=all ./waitdie.exe -clocks_per_us=2100 -extime=3 -max_ope=16 -rmw=0 -rratio=50 -thread_num=$i -tuple_num=100000000 -ycsb=1 -zipf_skew=0.9 +done \ No newline at end of file diff --git a/wait-die/wait-die/script/high_contention.sh b/wait-die/wait-die/script/high_contention.sh new file mode 100755 index 00000000..eedea4e9 --- /dev/null +++ b/wait-die/wait-die/script/high_contention.sh @@ -0,0 +1,15 @@ +for k in 4 +# 10000 100000 +do + cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DVAL_SIZE=$k -DMASSTREE_USE=0 -DBACK_OFF=1 .. + ninja + for j in 16 + # 32 + do + for i in 1 8 16 32 64 96 120 + do + numactl --interleave=all ./ss2pl.exe -clocks_per_us=2100 -extime=3 -max_ope=$j -rmw=0 -rratio=50 -thread_num=$i -tuple_num=1000000 -ycsb=1 -zipf_skew=0.9 + done + done +done +# numactl --interleave=all ./ss2pl.exe -clocks_per_us=2100 -extime=3 -max_ope=16 -rmw=0 -rratio=50 -thread_num=16 -tuple_num=100000000 -ycsb=1 -zipf_skew=0.8 \ No newline at end of file diff --git a/wait-die/wait-die/script/high_contentionA.sh b/wait-die/wait-die/script/high_contentionA.sh new file mode 100755 index 00000000..06bd9800 --- /dev/null +++ b/wait-die/wait-die/script/high_contentionA.sh @@ -0,0 +1,7 @@ +cmake -G Ninja -DCMAKE_BUILD_TYPE=RELEASE -DVAL_SIZE=4 -DMASSTREE_USE=0 -DBACK_OFF=1 .. +ninja +for i in 8 16 32 64 96 120 +do + numactl --interleave=all ./waitdie.exe -clocks_per_us=2100 -extime=3 -max_ope=16 -rmw=0 -rratio=50 -thread_num=$i -tuple_num=1000000 -ycsb=1 -zipf_skew=0.99 +done +# numactl --interleave=all ./bamboo.exe -clocks_per_us=2100 -extime=3 -max_ope=16 -rmw=0 -rratio=50 -thread_num=16 -tuple_num=100000000 -ycsb=1 -zipf_skew=0.99 diff --git a/wait-die/wait-die/script/low_contention.sh b/wait-die/wait-die/script/low_contention.sh new file mode 100755 index 00000000..ae9d752a --- /dev/null +++ b/wait-die/wait-die/script/low_contention.sh @@ -0,0 +1,7 @@ +cmake -G Ninja -DCMAKE_BUILD_TYPE=RELEASE -DVAL_SIZE=4 -DMASSTREE_USE=0 -DBACK_OFF=0 .. +ninja +for i in 56 112 168 224 #8 16 32 64 96 120 168 224 +do + numactl --interleave=all ./ss2pl.exe -clocks_per_us=2100 -extime=3 -max_ope=16 -rmw=0 -rratio=50 -thread_num=$i -tuple_num=1000000 -ycsb=1 -zipf_skew=0 +done +# numactl --interleave=all ./bamboo.exe -clocks_per_us=2100 -extime=3 -max_ope=16 -rmw=0 -rratio=50 -thread_num=16 -tuple_num=100000000 -ycsb=1 -zipf_skew=0 diff --git a/wait-die/wait-die/script/test_cache_ana.sh b/wait-die/wait-die/script/test_cache_ana.sh new file mode 100755 index 00000000..df6753dd --- /dev/null +++ b/wait-die/wait-die/script/test_cache_ana.sh @@ -0,0 +1,227 @@ +#test_cache_ana.sh(ss2pl) +maxope=10 +thread=24 +cpu_mhz=2400 +extime=3 +epoch=5 + +tuple=100 +workload=0 +result=result_ss2pl_r10_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=1 +result=result_ss2pl_r8_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=2 +result=result_ss2pl_r5_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=3 +result=result_ss2pl_r2_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=4 +result=result_ss2pl_r0_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + diff --git a/wait-die/wait-die/script/test_t1k.sh b/wait-die/wait-die/script/test_t1k.sh new file mode 100755 index 00000000..73dbfec1 --- /dev/null +++ b/wait-die/wait-die/script/test_t1k.sh @@ -0,0 +1,382 @@ +#test_t1k.sh(ss2pl) +tuple=1000 +maxope=10 +cpu_mhz=2400 +extime=3 +epoch=5 + +workload=0 +result=result_ss2pl_r10_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=1 +result=result_ss2pl_r8_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=2 +result=result_ss2pl_r5_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=3 +result=result_ss2pl_r2_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=4 +result=result_ss2pl_r0_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + diff --git a/wait-die/wait-die/script/test_t1m.sh b/wait-die/wait-die/script/test_t1m.sh new file mode 100755 index 00000000..9b30a188 --- /dev/null +++ b/wait-die/wait-die/script/test_t1m.sh @@ -0,0 +1,382 @@ +#test_t1m.sh(ss2pl) +tuple=1000000 +maxope=10 +cpu_mhz=2400 +extime=3 +epoch=5 + +workload=0 +result=result_ss2pl_r10_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=1 +result=result_ss2pl_r8_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=2 +result=result_ss2pl_r5_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=3 +result=result_ss2pl_r2_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=4 +result=result_ss2pl_r0_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + diff --git a/wait-die/wait-die/script/test_t200.sh b/wait-die/wait-die/script/test_t200.sh new file mode 100755 index 00000000..ed333bb7 --- /dev/null +++ b/wait-die/wait-die/script/test_t200.sh @@ -0,0 +1,382 @@ +#test_t200.sh(ss2pl) +tuple=200 +maxope=10 +cpu_mhz=2400 +extime=3 +epoch=5 + +workload=0 +result=result_ss2pl_r10_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=1 +result=result_ss2pl_r8_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=2 +result=result_ss2pl_r5_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=3 +result=result_ss2pl_r2_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=4 +result=result_ss2pl_r0_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + diff --git a/wait-die/wait-die/script/tst200-1k-1m.sh b/wait-die/wait-die/script/tst200-1k-1m.sh new file mode 100755 index 00000000..c347fa88 --- /dev/null +++ b/wait-die/wait-die/script/tst200-1k-1m.sh @@ -0,0 +1,1991 @@ +#tst200-1k-1m.sh(ss2pl) +maxope=10 +rmw=off +skew=0 +ycsb=off +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +#kugiri +rratio=0 +tuple=200 +result=result_ss2pl_r0_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=20 +tuple=200 +result=result_ss2pl_r2_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=80 +tuple=200 +result=result_ss2pl_r8_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=100 +tuple=200 +result=result_ss2pl_r10_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=0 +tuple=1000 +result=result_ss2pl_r0_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=20 +tuple=1000 +result=result_ss2pl_r2_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=80 +tuple=1000 +result=result_ss2pl_r8_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=100 +tuple=1000 +result=result_ss2pl_r10_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=0 +tuple=1000000 +result=result_ss2pl_r0_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=20 +tuple=1000000 +result=result_ss2pl_r2_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=80 +tuple=1000000 +result=result_ss2pl_r8_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=100 +tuple=1000000 +result=result_ss2pl_r10_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/wait-die/wait-die/script/ycsb-xope.sh b/wait-die/wait-die/script/ycsb-xope.sh new file mode 100755 index 00000000..7398b793 --- /dev/null +++ b/wait-die/wait-die/script/ycsb-xope.sh @@ -0,0 +1,106 @@ +#ycsb-xope.sh(ss2pl) +tuple=100000000 +maxope=10 +rratio=95 +rmw=off +skew=0.8 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j KEY_SIZE=8 VAL_SIZE=4 +cd script/ + +result=result_ss2pl-dlr1_ycsbB_tuple100m_skew08_ope10-100.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + +for ((maxope=10; maxope<=100; maxope+=10)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$maxope $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done diff --git a/wait-die/wait-die/script/ycsb-xrratio.sh b/wait-die/wait-die/script/ycsb-xrratio.sh new file mode 100755 index 00000000..e4e74263 --- /dev/null +++ b/wait-die/wait-die/script/ycsb-xrratio.sh @@ -0,0 +1,102 @@ +#ycsb-xrratio.sh(ss2pl) +tuple=1000000 +maxope=10 +rratio=0 +rmw=off +skew=0.9 +ycsb=on +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +result=result_ss2pl-dlr1_tuple1m_val1k_skew09_rratio0-100.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + +for ((rratio=0; rratio<=100; rratio+=10)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$rratio $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done diff --git a/wait-die/wait-die/script/ycsb-xrs.sh b/wait-die/wait-die/script/ycsb-xrs.sh new file mode 100755 index 00000000..fb18cb42 --- /dev/null +++ b/wait-die/wait-die/script/ycsb-xrs.sh @@ -0,0 +1,118 @@ +#ycsb-xrs.sh(ss2pl) +maxope=10 +rratioary=(50 95 100) +rmw=off +skew=0.9 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j KEY_SIZE=8 VAL_SIZE=1000 +cd script/ + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50 ; then + result=result_ss2pl_ycsbA_tuple1k-100m_val1k_skew09.dat + elif test $rratio = 95 ; then + result=result_ss2pl_ycsbB_tuple1k-100m_val1k_skew09.dat + elif test $rratio = 100 ; then + result=result_ss2pl_ycsbC_tuple1k-100m_val1k_skew09.dat + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + + for ((tuple=1000; tuple<=100000000; tuple*=10)) + do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$tuple $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/wait-die/wait-die/script/ycsb-xskew.sh b/wait-die/wait-die/script/ycsb-xskew.sh new file mode 100755 index 00000000..314e6020 --- /dev/null +++ b/wait-die/wait-die/script/ycsb-xskew.sh @@ -0,0 +1,131 @@ +#ycsb-xrs.sh(ss2pl) +tuple=10000000 +maxope=16 +rratioary=(50 95) +rmw=on +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j VAL_SIZE=100 +cd script/ + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50; then + thread=28 + result=result_2pl_ycsbA_tuple10m_ope16_rmw_skew0-099_th28.dat + elif test $rratio = 95; then + thread=28 + result=result_2pl_ycsbB_tuple10m_ope16_rmw_skew0-099_th28.dat + elif test $rratio = 100; then + result=result_ss2pl_ycsbC_tuple1k_skew0-099.dat + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw skew $ycsb $cpu_mhz $extime" >> $result + ../ss2pl.exe > exp.txt + tmpStr=`grep ShowOptParameters ./exp.txt` + echo "#$tmpStr" >> $result + + for ((tmpskew = 0; tmpskew <= 105; tmpskew += 10)) + do + if test $tmpskew = 100 ; then + tmpskew=95 + fi + if test $tmpskew = 105 ; then + tmpskew=99 + fi + skew=`echo "scale=3; $tmpskew / 100.0" | bc -l | xargs printf %.2f` + + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$skew $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/wait-die/wait-die/script/ycsb-xth.sh b/wait-die/wait-die/script/ycsb-xth.sh new file mode 100755 index 00000000..1ff00ecf --- /dev/null +++ b/wait-die/wait-die/script/ycsb-xth.sh @@ -0,0 +1,124 @@ +#ycsb-xrs.sh(ss2pl) +tuple=10000000 +maxope=1 +#rratioary=(50 95 100) +rratioary=(95) +rmw=on +skew=0.99 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j VAL_SIZE=100 +cd script/ + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50 ; then + result=result_2pl_ycsbA_tuple10m_ope16_rmw_skew099.dat + elif test $rratio = 95 ; then + result=result_2pl_ycsbB_tuple10m_ope1_rmw_skew099.dat + elif test $rratio = 100 ; then + result=result_ss2pl_ycsbC_tuple10m_ope1_skew099.dat + maxope=1 + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + + for ((thread=1; thread<=25; thread+=5)) + do + if test $thread = 6 ; then + thread=5 + fi + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$thread $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/wait-die/wait-die/script/ycsb-xval.sh b/wait-die/wait-die/script/ycsb-xval.sh new file mode 100755 index 00000000..e5c64aea --- /dev/null +++ b/wait-die/wait-die/script/ycsb-xval.sh @@ -0,0 +1,122 @@ +#ycsb-xrs.sh(ss2pl) +tuple=1000000 +maxope=10 +rratioary=(95) +rmw=off +skew=0 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50; then + result=result_ss2pl_ycsbA_tuple100m_skew09_val4-1k.dat + elif test $rratio = 95; then + result=result_ss2pl_ycsbB_tuple1m_val10-100k.dat + elif test $rratio = 100; then + result=result_ss2pl_ycsbC_tuple100m_skew09_val4-1k.dat + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + + for ((val = 10; val <= 100000; val *= 10)) + do + if test $val = 104 ; then + val=100 + fi + cd ../ + make clean; make -j VAL_SIZE=$val + cd script + + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$val $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/wait-die/wait-die/script/ycsbA-xrs-cache.sh b/wait-die/wait-die/script/ycsbA-xrs-cache.sh new file mode 100755 index 00000000..61dbd5f4 --- /dev/null +++ b/wait-die/wait-die/script/ycsbA-xrs-cache.sh @@ -0,0 +1,52 @@ +#ycsbA-xrs-cache.sh(ss2pl) +maxope=10 +thread=24 +rratio=50 +skew=0 +ycsb=ON +cpu_mhz=2400 +extime=3 +epoch=5 + +result=result_ss2pl_ycsbA_tuple100-10m_cachemiss.dat +rm $result +echo "#tuple num, cache-misses, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=10000000; tuple*=10)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime" + echo "$tuple $epoch" + + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-misses,cache-references -o ss2pl-cache-ana.txt ./ss2pl.exe $tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl-cache-ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + diff --git a/wait-die/wait-die/script/ycsbA.sh b/wait-die/wait-die/script/ycsbA.sh new file mode 100755 index 00000000..c83e85f6 --- /dev/null +++ b/wait-die/wait-die/script/ycsbA.sh @@ -0,0 +1,510 @@ +#ycsbA.sh(ss2pl) +maxope=10 +rratio=50 +rmw=off +skew=0 +ycsb=on +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +tuple=500 +result=result_ss2pl_ycsbA_tuple500_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=500000 +result=result_ss2pl_ycsbA_tuple500k_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=5000000 +result=result_ss2pl_ycsbA_tuple5m_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/wait-die/wait-die/script/ycsbB.sh b/wait-die/wait-die/script/ycsbB.sh new file mode 100755 index 00000000..2a5966d9 --- /dev/null +++ b/wait-die/wait-die/script/ycsbB.sh @@ -0,0 +1,510 @@ +#ycsbB.sh(ss2pl) +maxope=10 +rratio=95 +rmw=off +skew=0 +ycsb=on +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +tuple=500 +result=result_ss2pl_ycsbB_tuple500_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=500000 +result=result_ss2pl_ycsbB_tuple500k_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=5000000 +result=result_ss2pl_ycsbB_tuple5m_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/wait-die/wait-die/script/ycsbC.sh b/wait-die/wait-die/script/ycsbC.sh new file mode 100755 index 00000000..4894481b --- /dev/null +++ b/wait-die/wait-die/script/ycsbC.sh @@ -0,0 +1,187 @@ +#ycsbC.sh(ss2pl) +#tuple=1000000000 +tuple=1000 +maxope=10 +rratio=100 +rmw=off +skew=0.9 +ycsb=on +cpu_mhz=2100 +extime=1 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +result=result_ss2pl_ycsbC_tuple1g_skew09_val1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/wait-die/wait-die/transaction.cc b/wait-die/wait-die/transaction.cc new file mode 100644 index 00000000..3b7ee44c --- /dev/null +++ b/wait-die/wait-die/transaction.cc @@ -0,0 +1,435 @@ + +#include +#include + +#include + +#include "../include/backoff.hh" +#include "../include/debug.hh" +#include "../include/procedure.hh" +#include "../include/result.hh" +#include "include/common.hh" +#include "include/transaction.hh" + +// #define NONTS + +using namespace std; + +extern void display_procedure_vector(std::vector &pro); + +void TxExecutor::warmupTuple(uint64_t key) { + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#else + tuple = get_tuple(Table, key); +#endif + // memcpy(tuple->val_, write_val_, VAL_SIZE); + tuple->lock_.init(); + tuple->latch_.init(); + tuple->writer_ = UNLOCKED; + tuple->reader_ = UNLOCKED; + tuple->writeflag_ = false; +} + +/** + * @brief Search xxx set + * @detail Search element of local set corresponding to given key. + * In this prototype system, the value to be updated for each worker thread + * is fixed for high performance, so it is only necessary to check the key match. + * @param Key [in] the key of key-value + * @return Corresponding element of local set + */ +inline SetElement *TxExecutor::searchReadSet(uint64_t key) { + for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) { + if ((*itr).key_ == key) return &(*itr); + } + + return nullptr; +} + +/** + * @brief Search xxx set + * @detail Search element of local set corresponding to given key. + * In this prototype system, the value to be updated for each worker thread + * is fixed for high performance, so it is only necessary to check the key match. + * @param Key [in] the key of key-value + * @return Corresponding element of local set + */ +inline SetElement *TxExecutor::searchWriteSet(uint64_t key) { + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { + if ((*itr).key_ == key) return &(*itr); + } + + return nullptr; +} + +/** + * @brief function about abort. + * Clean-up local read/write set. + * Release locks. + * @return void + */ +void TxExecutor::abort() { + /** + * Release locks + */ + unlockList(); + + /** + * Clean-up local read/write set. + */ + read_set_.clear(); + write_set_.clear(); + + ++sres_->local_abort_counts_; + +#if BACK_OFF +#if ADD_ANALYSIS + uint64_t start(rdtscp()); +#endif + + Backoff::backoff(FLAGS_clocks_per_us); + +#if ADD_ANALYSIS + sres_->local_backoff_latency_ += rdtscp() - start; +#endif + +#endif +} + +/** + * @brief success termination of transaction. + * @return void + */ +void TxExecutor::commit() { + //printf("tx%d commit\n", thid_); + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { + /** + * update payload. + */ + memcpy((*itr).rcdptr_->val_, write_val_, VAL_SIZE); + } + + /** + * Release locks. + */ + unlockList(); + + /** + * Clean-up local read/write set. + */ + read_set_.clear(); + write_set_.clear(); +#ifdef NONTS + txid_ += FLAGS_thread_num; +#endif +} + +/** + * @brief Initialize function of transaction. + * Allocate timestamp. + * @return void + */ +void TxExecutor::begin() { this->status_ = TransactionStatus::inFlight; } + +void setOwner(atomic &owner, int txid){ + int expected, desired; + desired = txid; + for (;;) { + expected = owner.load(memory_order_acquire); + if (owner.compare_exchange_strong( + expected, desired, memory_order_acq_rel, memory_order_acquire)) + return; + } +} + +/** + * @brief Transaction read function. + * @param [in] key The key of key-value + */ +void TxExecutor::read(uint64_t key) { +#if ADD_ANALYSIS + uint64_t start = rdtscp(); +#endif // ADD_ANALYSIS + + /** + * read-own-writes or re-read from local read set. + */ + if (searchWriteSet(key) || searchReadSet(key)) goto FINISH_READ; + + /** + * Search tuple from data structure. + */ + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#if ADD_ANALYSIS + ++sres_->local_tree_traversal_; +#endif +#else + tuple = get_tuple(Table, key); +#endif + while(1) { + if(!tuple->latch_.w_trylock()) { + usleep(1); + continue; + } + if(tuple->writeflag_) { + if(txid_ > tuple->writer_) { + tuple->latch_.w_unlock(); + status_ = TransactionStatus::aborted; + goto FINISH_READ; + } + tuple->latch_.w_unlock(); + usleep(1); + continue; + } + else { + while(1) { + if(tuple->lock_.r_trylock()) { + if(txid_ < tuple->reader_) + tuple->reader_ = txid_; + tuple->latch_.w_unlock(); + read_set_.emplace_back(key, tuple, tuple->val_); + goto FINISH_READ; + } + usleep(1); + } + } + } + +FINISH_READ: + +#if ADD_ANALYSIS + sres_->local_read_latency_ += rdtscp() - start; +#endif + return; +} + +/** + * @brief transaction write operation + * @param [in] key The key of key-value + * @return void + */ +void TxExecutor::write(uint64_t key) { +#if ADD_ANALYSIS + uint64_t start = rdtscp(); +#endif + + // if it already wrote the key object once. + if (searchWriteSet(key)) goto FINISH_WRITE; + /** + * Search tuple from data structure. + */ + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#if ADD_ANALYSIS + ++sres_->local_tree_traversal_; +#endif +#else + tuple = get_tuple(Table, key); +#endif + // cout << "tuple " << key << endl; + // cout << "tuple reader_ = " << tuple->reader_ << endl; + // cout << "tuple writer_ = " << tuple->writer_ << endl; + for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { + if ((*rItr).key_ == key) { // hit + while(1) { + if(!tuple->latch_.w_trylock()) { + usleep(1); + continue; + } + if(tuple->writeflag_) { + if(txid_ > tuple->writer_) { + tuple->latch_.w_unlock(); + status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + tuple->latch_.w_unlock(); + usleep(1); + continue; + } + tuple->writeflag_ = true; // the fact that i am holding the lock suggests that there is no need to spinwait writeflag + tuple->writer_ = txid_; + if(txid_ > tuple->reader_) { + tuple->writeflag_ = false; + tuple->latch_.w_unlock(); + status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + tuple->latch_.w_unlock(); + while(1) { + if(tuple->lock_.tryupgrade()) { + tuple->reader_ = UNLOCKED; + tuple->writer_ = txid_; + write_set_.emplace_back(key, (*rItr).rcdptr_); + read_set_.erase(rItr); + goto FINISH_WRITE; + } + if(txid_ > tuple->reader_) { + tuple->writeflag_ = false; + status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + usleep(1); + } + } + } + } + + while (1) { + if(!tuple->latch_.w_trylock()) { + usleep(1); + continue; + } + if(tuple->writeflag_) { + if(txid_ > tuple->writer_) { + tuple->latch_.w_unlock(); + status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + tuple->latch_.w_unlock(); + usleep(1); + continue; + } + tuple->writeflag_ = true; + tuple->writer_ = txid_; + if(txid_ > tuple->reader_) { + tuple->writeflag_ = false; + tuple->latch_.w_unlock(); + status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + tuple->latch_.w_unlock(); + while(1){ + if(tuple->lock_.w_trylock()) { + tuple->writer_ = txid_; + write_set_.emplace_back(key, tuple); + goto FINISH_WRITE; + } + if(txid_ > tuple->reader_) { + tuple->writeflag_ = false; + status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + usleep(1); + } + } + +FINISH_WRITE: +#if ADD_ANALYSIS + sres_->local_write_latency_ += rdtscp() - start; +#endif // ADD_ANALYSIS + return; +} + +/** + * @brief transaction readWrite (RMW) operation + */ +void TxExecutor::readWrite(uint64_t key) { + // if it already wrote the key object once. + if (searchWriteSet(key)) goto FINISH_WRITE; + Tuple *tuple; + tuple = get_tuple(Table, key); + for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { + if ((*rItr).key_ == key) { // hit + tuple->latch_.w_lock(); + if(txid_ > tuple->reader_) { + tuple->latch_.w_unlock(); + status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + else { + tuple->writeflag_ = true; // the fact that i am holding the lock suggests that there is no need to spinwait writeflag + tuple->latch_.w_unlock(); + while(1) { + if(tuple->lock_.tryupgrade()) { + tuple->reader_ = UNLOCKED; + tuple->writer_ = txid_; + for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); + ++lItr) { + if (*lItr == &((*rItr).rcdptr_->lock_)) { + write_set_.emplace_back(key, (*rItr).rcdptr_); + w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); + r_lock_list_.erase(lItr); + break; + } + } + read_set_.erase(rItr); + goto FINISH_WRITE; + } + usleep(1); + } + } + } + } + + while (1) { + tuple->latch_.w_lock(); + if(tuple->writeflag_) { + if(txid_ > tuple->writer_) { + status_ = TransactionStatus::aborted; + tuple->latch_.w_unlock(); + goto FINISH_WRITE; + } + tuple->latch_.w_unlock(); + usleep(1); + continue; + } + tuple->writeflag_ = true; + if(txid_ > tuple->reader_) { + tuple->writeflag_ = false; + tuple->latch_.w_unlock(); + status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + tuple->latch_.w_unlock(); + while(1){ + if(tuple->lock_.w_trylock()) { + tuple->latch_.w_unlock(); + tuple->writer_ = txid_; + memcpy(this->return_val_, tuple->val_, VAL_SIZE); + w_lock_list_.emplace_back(&tuple->lock_); + write_set_.emplace_back(key, tuple); + goto FINISH_WRITE; + } + if(txid_ > tuple->reader_) { + status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + usleep(1); + } + } + +FINISH_WRITE: + return; +} + +/** + * @brief unlock and clean-up local lock set. + * @return void + */ +void TxExecutor::unlockList() { + + for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) { + (*itr).rcdptr_->latch_.w_lock(); + int reader = (*itr).rcdptr_->lock_.counter.load(memory_order_acquire); + if(reader == 1) (*itr).rcdptr_->reader_ = UNLOCKED; + (*itr).rcdptr_->lock_.r_unlock(); + (*itr).rcdptr_->latch_.w_unlock(); + } + + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { + (*itr).rcdptr_->writeflag_ = false; + (*itr).rcdptr_->writer_ = UNLOCKED; + (*itr).rcdptr_->lock_.w_unlock(); + } + + /** + * Clean-up local lock set. + */ + r_lock_list_.clear(); + w_lock_list_.clear(); +} diff --git a/wait-die/wait-die/util.cc b/wait-die/wait-die/util.cc new file mode 100644 index 00000000..56853473 --- /dev/null +++ b/wait-die/wait-die/util.cc @@ -0,0 +1,118 @@ + +#include +#include // syscall(SYS_gettid), +#include // syscall(SSY_gettid), +#include // syscall(SSY_gettid), + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../include/config.hh" +#include "../include/debug.hh" +#include "../include/masstree_wrapper.hh" +#include "../include/procedure.hh" +#include "../include/random.hh" +#include "../include/result.hh" +#include "../include/zipf.hh" +#include "include/common.hh" +#include "include/tuple.hh" +#include "include/util.hh" + +void chkArg() { + displayParameter(); + + if (FLAGS_rratio > 100) { + ERR; + } + + if (FLAGS_clocks_per_us < 100) { + cout << "CPU_MHZ is less than 100. are your really?" << endl; + ERR; + } +} + +void displayDB() { + Tuple *tuple; + + for (unsigned int i = 0; i < FLAGS_tuple_num; i++) { + tuple = &Table[i]; + cout << "------------------------------" << endl; // - 30 + cout << "key: " << i << endl; + cout << "val: " << tuple->val_ << endl; + } +} + +void displayParameter() { + cout << "#FLAGS_clocks_per_us:\t" << FLAGS_clocks_per_us << endl; + cout << "#FLAGS_extime:\t\t" << FLAGS_extime << endl; + cout << "#FLAGS_max_ope:\t\t" << FLAGS_max_ope << endl; + cout << "#FLAGS_rmw:\t\t" << FLAGS_rmw << endl; + cout << "#FLAGS_rratio:\t\t" << FLAGS_rratio << endl; + cout << "#FLAGS_thread_num:\t" << FLAGS_thread_num << endl; + cout << "#FLAGS_tuple_num:\t" << FLAGS_tuple_num << endl; + cout << "#FLAGS_ycsb:\t\t" << FLAGS_ycsb << endl; + cout << "#FLAGS_zipf_skew:\t" << FLAGS_zipf_skew << endl; +} + +void partTableInit([[maybe_unused]] size_t thid, uint64_t start, uint64_t end) { + // printf("partTableInit(...): thid %zu : %lu : %lu\n", thid, start, end); +#if MASSTREE_USE + MasstreeWrapper::thread_init(thid); +#endif + + for (auto i = start; i <= end; ++i) { + Table[i].val_[0] = 'a'; + Table[i].val_[1] = '\0'; + +#if MASSTREE_USE + MT.insert_value(i, &Table[i]); +#endif + } +} + +void makeDB() { + if (posix_memalign((void **) &Table, PAGE_SIZE, FLAGS_tuple_num * sizeof(Tuple)) != + 0) + ERR; +#if dbs11 + if (madvise((void *)Table, (FLAGS_tuple_num) * sizeof(Tuple), MADV_HUGEPAGE) != 0) + ERR; +#endif + + // maxthread は masstree 構築の最大並行スレッド数。 + // 初期値はハードウェア最大値。 + // FLAGS_tuple_num を均等に分割できる最大スレッド数を求める。 + size_t maxthread = decideParallelBuildNumber(FLAGS_tuple_num); + + std::vector thv; + // cout << "masstree 並列構築スレッド数 " << maxthread << endl; + for (size_t i = 0; i < maxthread; ++i) { + thv.emplace_back(partTableInit, i, i * (FLAGS_tuple_num / maxthread), + (i + 1) * (FLAGS_tuple_num / maxthread) - 1); + } + for (auto &th : thv) th.join(); +} + +void +ShowOptParameters() { + cout << "#ShowOptParameters()" + << ": ADD_ANALYSIS " << ADD_ANALYSIS + << ": BACK_OFF " << BACK_OFF + #ifdef DLR0 + << ": DLR0 " + #elif defined DLR1 + << ": DLR1 " + #endif + << ": MASSTREE_USE " << MASSTREE_USE + << ": KEY_SIZE " << KEY_SIZE + << ": KEY_SORT " << KEY_SORT + << ": VAL_SIZE " << VAL_SIZE + << endl; +} diff --git a/wait-die/wait-die/waitdie.cc b/wait-die/wait-die/waitdie.cc new file mode 100644 index 00000000..650b7118 --- /dev/null +++ b/wait-die/wait-die/waitdie.cc @@ -0,0 +1,167 @@ + +#include //isdigit, +#include +#include //strlen, +#include //syscall(SYS_gettid), +#include //syscall(SYS_gettid), +#include //syscall(SYS_gettid), +#include + +#include +#include //string +#include + +#define GLOBAL_VALUE_DEFINE + +#include "../include/atomic_wrapper.hh" +#include "../include/backoff.hh" +#include "../include/cpu.hh" +#include "../include/debug.hh" +#include "../include/fence.hh" +#include "../include/int64byte.hh" +#include "../include/masstree_wrapper.hh" +#include "../include/procedure.hh" +#include "../include/random.hh" +#include "../include/result.hh" +#include "../include/tsc.hh" +#include "../include/util.hh" +#include "../include/zipf.hh" +#include "include/common.hh" +#include "include/result.hh" +#include "include/transaction.hh" +#include "include/util.hh" + +// #define NONTS +// #define INTERACTIVE + +#ifndef NONTS +long long int central_timestamp = 0; //*** added by tatsu +#endif + +void worker(size_t thid, char &ready, const bool &start, const bool &quit) { + Result &myres = std::ref(SS2PLResult[thid]); + Xoroshiro128Plus rnd; + rnd.init(); + TxExecutor trans(thid, (Result *) &myres); + FastZipf zipf(&rnd, FLAGS_zipf_skew, FLAGS_tuple_num); + Backoff backoff(FLAGS_clocks_per_us); + +#if MASSTREE_USE + MasstreeWrapper::thread_init(int(thid)); +#endif + +#ifdef Linux + setThreadAffinity(thid); + // printf("Thread #%d: on CPU %d\n", *myid, sched_getcpu()); + // printf("sysconf(_SC_NPROCESSORS_CONF) %ld\n", + // sysconf(_SC_NPROCESSORS_CONF)); +#endif // Linux + + storeRelease(ready, 1); + while (!loadAcquire(start)) _mm_pause(); + while (!loadAcquire(quit)) { + makeProcedure(trans.pro_set_, rnd, zipf, FLAGS_tuple_num, FLAGS_max_ope, FLAGS_thread_num, + FLAGS_rratio, FLAGS_rmw, FLAGS_ycsb, false, thid, myres); +#ifndef NONTS + trans.txid_ = __atomic_add_fetch(¢ral_timestamp, 1, __ATOMIC_SEQ_CST); //*** added by tatsu +#endif +RETRY: + if (loadAcquire(quit)) break; + if (thid == 0) leaderBackoffWork(backoff, SS2PLResult); + + trans.begin(); + for (auto itr = trans.pro_set_.begin(); itr != trans.pro_set_.end(); + ++itr) { + if ((*itr).ope_ == Ope::READ) { +#ifdef INTERACTIVE + usleep(1); +#endif + trans.read((*itr).key_); + } else if ((*itr).ope_ == Ope::WRITE) { +#ifdef INTERACTIVE + usleep(1); +#endif + trans.write((*itr).key_); + } else if ((*itr).ope_ == Ope::READ_MODIFY_WRITE) { +#ifdef INTERACTIVE + usleep(1); +#endif + trans.readWrite((*itr).key_); + } else { + ERR; + } + + if (trans.status_ == TransactionStatus::aborted) { + trans.abort(); + goto RETRY; + } + } + + trans.commit(); + /** + * local_commit_counts is used at ../include/backoff.hh to calcurate about + * backoff. + */ + storeRelease(myres.local_commit_counts_, + loadAcquire(myres.local_commit_counts_) + 1); + } + + return; +} + +void touchTuples([[maybe_unused]] size_t thid, uint64_t start, uint64_t end) { + Result &myres = std::ref(SS2PLResult[thid]); + TxExecutor trans(thid, (Result *)&myres); + for (auto i = start; i <= end; ++i) { + trans.warmupTuple(i); + } +} + +void warmup() { + cout << "begin warm up" << endl; + size_t maxthread = decideParallelBuildNumber(FLAGS_tuple_num); + std::vector thv; + for (size_t i = 0; i < maxthread; ++i) { + thv.emplace_back(touchTuples, i, i * (FLAGS_tuple_num / maxthread), + (i + 1) * (FLAGS_tuple_num / maxthread) - 1); + } + for (auto &th : thv) th.join(); + cout << "finish warm up" << endl; +} + +int main(int argc, char *argv[]) try { + gflags::SetUsageMessage("2PL benchmark."); + gflags::ParseCommandLineFlags(&argc, &argv, true); + chkArg(); + makeDB(); + for (int i = 0; i < FLAGS_thread_num; i++){ // + thread_stats[i] = 0; // + thread_timestamp[i] = 0; // + } // + alignas(CACHE_LINE_SIZE) bool start = false; + alignas(CACHE_LINE_SIZE) bool quit = false; + initResult(); + warmup(); + std::vector readys(FLAGS_thread_num); + std::vector thv; + for (size_t i = 0; i < FLAGS_thread_num; ++i) + thv.emplace_back(worker, i, std::ref(readys[i]), std::ref(start), + std::ref(quit)); + waitForReady(readys); + storeRelease(start, true); + for (size_t i = 0; i < FLAGS_extime; ++i) { + sleepMs(1000); + } + storeRelease(quit, true); + for (auto &th : thv) th.join(); + + for (unsigned int i = 0; i < FLAGS_thread_num; ++i) { + SS2PLResult[0].addLocalAllResult(SS2PLResult[i]); + } + ShowOptParameters(); + SS2PLResult[0].displayAllResult(FLAGS_clocks_per_us, FLAGS_extime, FLAGS_thread_num); + + return 0; +} catch (bad_alloc) { + ERR; +} diff --git a/wound-wait/CMakeLists.txt b/wound-wait/CMakeLists.txt new file mode 100644 index 00000000..61817a38 --- /dev/null +++ b/wound-wait/CMakeLists.txt @@ -0,0 +1,80 @@ +cmake_minimum_required(VERSION 3.10) + +project(ccbench_ss2pl + VERSION 0.0.1 + DESCRIPTION "ss2pl of ccbench" + LANGUAGES CXX) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake") + +option(ENABLE_SANITIZER "enable sanitizer on debug build" ON) +option(ENABLE_UB_SANITIZER "enable undefined behavior sanitizer on debug build" OFF) +option(ENABLE_COVERAGE "enable coverage on debug build" OFF) + +find_package(Doxygen) +find_package(Threads REQUIRED) +find_package(gflags REQUIRED) +find_package(glog REQUIRED) +find_package(Boost + COMPONENTS filesystem) + +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) +include(CompileOptions) + +file(GLOB ERMIA_SOURCES + "../common/result.cc" + "../common/util.cc" + "ss2pl.cc" + "result.cc" + "transaction.cc" + "util.cc" + ) + +add_executable(ss2pl.exe ${ERMIA_SOURCES}) + +target_link_libraries(ss2pl.exe + Boost::filesystem + gflags::gflags + ${PROJECT_SOURCE_DIR}/../third_party/mimalloc/out/release/libmimalloc.a + ${PROJECT_SOURCE_DIR}/../third_party/masstree/libkohler_masstree_json.a + Threads::Threads + ) + +if (DEFINED ADD_ANALYSIS) + add_definitions(-DADD_ANALYSIS=${ADD_ANALYSIS}) +else () + add_definitions(-DADD_ANALYSIS=0) +endif () + +if (DEFINED BACK_OFF) + add_definitions(-DBACK_OFF=${BACK_OFF}) +else () + add_definitions(-DBACK_OFF=0) +endif () + +add_definitions(-DDLR1) + +if (DEFINED KEY_SIZE) + add_definitions(-DKEY_SIZE=${KEY_SIZE}) +else () + add_definitions(-DKEY_SIZE=8) +endif () + +if (DEFINED KEY_SORT) + add_definitions(-DKEY_SORT=${KEY_SORT}) +else () + add_definitions(-DKEY_SORT=0) +endif () + +if (DEFINED MASSTREE_USE) + add_definitions(-DMASSTREE_USE=${MASSTREE_USE}) +else () + add_definitions(-DMASSTREE_USE=1) +endif () + +if (DEFINED VAL_SIZE) + add_definitions(-DVAL_SIZE=${VAL_SIZE}) +else () + add_definitions(-DVAL_SIZE=4) +endif () diff --git a/wound-wait/README.md b/wound-wait/README.md new file mode 100644 index 00000000..fdbe3c4b --- /dev/null +++ b/wound-wait/README.md @@ -0,0 +1,50 @@ +# 2PL + +## How to use +- Build masstree in ccbench directory +``` +$ ./build_tools/bootstrap.sh +``` +This makes ccbench/third_party/masstree/libkohler_masstree_json.a used by building ss2pl. +- Build mimalloc in ccbench directory +``` +$ ./build_tools/bootstrap_mimalloc.sh +``` +This makes ../third_party/mimalloc/out/release/libmimalloc.a used by building ss2pl. +- Build +``` +$ mkdir build +$ cd build +$ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release .. +$ ninja +``` +- Confirm usage +``` +$ ./ss2pl.exe -help +``` +- Execution example +``` +$ numactl --interleave=all ./ss2pl.exe -clocks_per_us=2100 -extime=3 -max_ope=10 -rmw=0 -rratio=100 -thread_num=224 -tuple_num=1000000 -ycsb=1 -zipf_skew=0 +``` + +## How to customize options in CMakeLists.txt +- `ADD_ANALYSIS` : If this is 1, it is deeper analysis than setting 0.
+default : `0` +- `BACK_OFF` : If this is 1, it use Cicada's backoff.
+default : `0` +- `KEY_SORT` : If this is 1, its transaction accesses records in ascending key order.
+default : `0` +- `MASSTREE_USE` : If this is 1, it use masstree as data structure. If not, it use simple array αs data structure. +default : `1` +- `VAL_SIZE` : Value of key-value size. In other words, payload size.
+default : `4` +- `DLR0` : Dead lock resolution is timeout. +- `DLR1` : Dead lock resolution is no-wait. + +## Optimizations +- Backoff. +- Timeout of dead lock resolution. +- No-wait of dead lock resolution. + +## Implementation +- Lock : reader/writer lock diff --git a/wound-wait/build/.ninja_deps b/wound-wait/build/.ninja_deps new file mode 100644 index 0000000000000000000000000000000000000000..6caee4661c860d8ff64d0e35287e82cf496d369c GIT binary patch literal 34536 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 M9zWnG{EW5uKSm57qW}N^ literal 0 HcmV?d00001 diff --git a/wound-wait/build/.ninja_log b/wound-wait/build/.ninja_log new file mode 100644 index 00000000..6ca5c779 --- /dev/null +++ b/wound-wait/build/.ninja_log @@ -0,0 +1,8 @@ +# ninja log v5 +1 437 1669911522423246670 CMakeFiles/ss2pl.exe.dir/home/tngngn/tccbench/common/result.cc.o 1fc0f6a712375650 +1 705 1669911522691243343 CMakeFiles/ss2pl.exe.dir/home/tngngn/tccbench/common/util.cc.o ed8ffe74aa2f4052 +1 915 1669911522899240762 CMakeFiles/ss2pl.exe.dir/result.cc.o 851e6c2fa850bcf5 +3 1363 1669911523347235201 CMakeFiles/ss2pl.exe.dir/util.cc.o c9c2e62e88d9d2c6 +2 1379 1669911523363235002 CMakeFiles/ss2pl.exe.dir/transaction.cc.o 57b8653ac41a1255 +2 1391 1669911523379234804 CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o 788a57bce6d40cdd +1391 1465 1669911523451233910 ss2pl.exe 1fa7cafaa908adf6 diff --git a/wound-wait/build/CMakeCache.txt b/wound-wait/build/CMakeCache.txt new file mode 100644 index 00000000..592221a0 --- /dev/null +++ b/wound-wait/build/CMakeCache.txt @@ -0,0 +1,473 @@ +# This is the CMakeCache file. +# For build in directory: /home/tngngn/tccbench/w-w/build +# It was generated by CMake: /usr/local/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//The directory containing a CMake configuration file for Boost. +Boost_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0 + +Boost_FILESYSTEM_LIBRARY_RELEASE:STRING=/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 + +//Path to a file. +Boost_INCLUDE_DIR:PATH=/usr/include + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING=Release + +//CXX compiler +CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-9 + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-9 + +//Flags used by the CXX compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the CXX compiler during DEBUG builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the CXX compiler during RELEASE builds. +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//User executables (bin) +CMAKE_INSTALL_BINDIR:PATH=bin + +//Read-only architecture-independent data (DATAROOTDIR) +CMAKE_INSTALL_DATADIR:PATH= + +//Read-only architecture-independent data root (share) +CMAKE_INSTALL_DATAROOTDIR:PATH=share + +//Documentation root (DATAROOTDIR/doc/PROJECT_NAME) +CMAKE_INSTALL_DOCDIR:PATH= + +//C header files (include) +CMAKE_INSTALL_INCLUDEDIR:PATH=include + +//Info documentation (DATAROOTDIR/info) +CMAKE_INSTALL_INFODIR:PATH= + +//Object code libraries (lib) +CMAKE_INSTALL_LIBDIR:PATH=lib + +//Program executables (libexec) +CMAKE_INSTALL_LIBEXECDIR:PATH=libexec + +//Locale-dependent data (DATAROOTDIR/locale) +CMAKE_INSTALL_LOCALEDIR:PATH= + +//Modifiable single-machine data (var) +CMAKE_INSTALL_LOCALSTATEDIR:PATH=var + +//Man documentation (DATAROOTDIR/man) +CMAKE_INSTALL_MANDIR:PATH= + +//C header files for non-gcc (/usr/include) +CMAKE_INSTALL_OLDINCLUDEDIR:PATH=/usr/include + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Run-time variable data (LOCALSTATEDIR/run) +CMAKE_INSTALL_RUNSTATEDIR:PATH= + +//System admin executables (sbin) +CMAKE_INSTALL_SBINDIR:PATH=sbin + +//Modifiable architecture-independent data (com) +CMAKE_INSTALL_SHAREDSTATEDIR:PATH=com + +//Read-only single-machine data (etc) +CMAKE_INSTALL_SYSCONFDIR:PATH=etc + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Program used to build from build.ninja files. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/local/bin/ninja + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC=ss2pl of ccbench + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=ccbench_ss2pl + +//Value Computed by CMake +CMAKE_PROJECT_VERSION:STATIC=0.0.1 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MAJOR:STATIC=0 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MINOR:STATIC=0 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_PATCH:STATIC=1 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_TWEAK:STATIC= + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/usr/bin/readelf + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Dot tool for use with Doxygen +DOXYGEN_DOT_EXECUTABLE:FILEPATH=/usr/bin/dot + +//Doxygen documentation generation tool (http://www.doxygen.org) +DOXYGEN_EXECUTABLE:FILEPATH=/usr/bin/doxygen + +//enable coverage on debug build +ENABLE_COVERAGE:BOOL=OFF + +//enable sanitizer on debug build +ENABLE_SANITIZER:BOOL=ON + +//enable undefined behavior sanitizer on debug build +ENABLE_UB_SANITIZER:BOOL=OFF + +//The directory containing a CMake configuration file for boost_filesystem. +boost_filesystem_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0 + +//The directory containing a CMake configuration file for boost_headers. +boost_headers_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0 + +//Value Computed by CMake +ccbench_ss2pl_BINARY_DIR:STATIC=/home/tngngn/tccbench/w-w/build + +//Value Computed by CMake +ccbench_ss2pl_SOURCE_DIR:STATIC=/home/tngngn/tccbench/w-w + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: Boost_DIR +Boost_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/tngngn/tccbench/w-w/build +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=17 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=0 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/local/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/local/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/local/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Ninja +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Test CMAKE_HAVE_LIBC_PTHREAD +CMAKE_HAVE_LIBC_PTHREAD:INTERNAL= +//Have library pthreads +CMAKE_HAVE_PTHREADS_CREATE:INTERNAL= +//Have library pthread +CMAKE_HAVE_PTHREAD_CREATE:INTERNAL=1 +//Have include pthread.h +CMAKE_HAVE_PTHREAD_H:INTERNAL=1 +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/tngngn/tccbench/w-w +//ADVANCED property for variable: CMAKE_INSTALL_BINDIR +CMAKE_INSTALL_BINDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DATADIR +CMAKE_INSTALL_DATADIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DATAROOTDIR +CMAKE_INSTALL_DATAROOTDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DOCDIR +CMAKE_INSTALL_DOCDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_INCLUDEDIR +CMAKE_INSTALL_INCLUDEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_INFODIR +CMAKE_INSTALL_INFODIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LIBDIR +CMAKE_INSTALL_LIBDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LIBEXECDIR +CMAKE_INSTALL_LIBEXECDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LOCALEDIR +CMAKE_INSTALL_LOCALEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LOCALSTATEDIR +CMAKE_INSTALL_LOCALSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_MANDIR +CMAKE_INSTALL_MANDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_OLDINCLUDEDIR +CMAKE_INSTALL_OLDINCLUDEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_RUNSTATEDIR +CMAKE_INSTALL_RUNSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SBINDIR +CMAKE_INSTALL_SBINDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SHAREDSTATEDIR +CMAKE_INSTALL_SHAREDSTATEDIR-ADVANCED:INTERNAL=1 +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SYSCONFDIR +CMAKE_INSTALL_SYSCONFDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/local/share/cmake-3.17 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: DOXYGEN_DOT_EXECUTABLE +DOXYGEN_DOT_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: DOXYGEN_EXECUTABLE +DOXYGEN_EXECUTABLE-ADVANCED:INTERNAL=1 +//Details about finding Boost +FIND_PACKAGE_MESSAGE_DETAILS_Boost:INTERNAL=[/usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake][cfound components: filesystem ][v1.71.0()] +//Details about finding Doxygen +FIND_PACKAGE_MESSAGE_DETAILS_Doxygen:INTERNAL=[/usr/bin/doxygen][cfound components: doxygen dot ][v1.8.17()] +//Details about finding Threads +FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()] +//Details about finding gflags +FIND_PACKAGE_MESSAGE_DETAILS_gflags:INTERNAL=[/usr/lib/x86_64-linux-gnu/libgflags.so][/usr/include][v()] +//Details about finding glog +FIND_PACKAGE_MESSAGE_DETAILS_glog:INTERNAL=[/usr/lib/x86_64-linux-gnu/libglog.so][/usr/include][v()] +//CMAKE_INSTALL_PREFIX during last run +_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX:INTERNAL=/usr/local +//ADVANCED property for variable: boost_filesystem_DIR +boost_filesystem_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: boost_headers_DIR +boost_headers_DIR-ADVANCED:INTERNAL=1 + diff --git a/wound-wait/build/CMakeDoxyfile.in b/wound-wait/build/CMakeDoxyfile.in new file mode 100644 index 00000000..848a3c81 --- /dev/null +++ b/wound-wait/build/CMakeDoxyfile.in @@ -0,0 +1,280 @@ +# +# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! +# + +DOXYFILE_ENCODING = @DOXYGEN_DOXYFILE_ENCODING@ +PROJECT_NAME = @DOXYGEN_PROJECT_NAME@ +PROJECT_NUMBER = @DOXYGEN_PROJECT_NUMBER@ +PROJECT_BRIEF = @DOXYGEN_PROJECT_BRIEF@ +PROJECT_LOGO = @DOXYGEN_PROJECT_LOGO@ +OUTPUT_DIRECTORY = @DOXYGEN_OUTPUT_DIRECTORY@ +CREATE_SUBDIRS = @DOXYGEN_CREATE_SUBDIRS@ +ALLOW_UNICODE_NAMES = @DOXYGEN_ALLOW_UNICODE_NAMES@ +OUTPUT_LANGUAGE = @DOXYGEN_OUTPUT_LANGUAGE@ +OUTPUT_TEXT_DIRECTION = @DOXYGEN_OUTPUT_TEXT_DIRECTION@ +BRIEF_MEMBER_DESC = @DOXYGEN_BRIEF_MEMBER_DESC@ +REPEAT_BRIEF = @DOXYGEN_REPEAT_BRIEF@ +ABBREVIATE_BRIEF = @DOXYGEN_ABBREVIATE_BRIEF@ +ALWAYS_DETAILED_SEC = @DOXYGEN_ALWAYS_DETAILED_SEC@ +INLINE_INHERITED_MEMB = @DOXYGEN_INLINE_INHERITED_MEMB@ +FULL_PATH_NAMES = @DOXYGEN_FULL_PATH_NAMES@ +STRIP_FROM_PATH = @DOXYGEN_STRIP_FROM_PATH@ +STRIP_FROM_INC_PATH = @DOXYGEN_STRIP_FROM_INC_PATH@ +SHORT_NAMES = @DOXYGEN_SHORT_NAMES@ +JAVADOC_AUTOBRIEF = @DOXYGEN_JAVADOC_AUTOBRIEF@ +JAVADOC_BANNER = @DOXYGEN_JAVADOC_BANNER@ +QT_AUTOBRIEF = @DOXYGEN_QT_AUTOBRIEF@ +MULTILINE_CPP_IS_BRIEF = @DOXYGEN_MULTILINE_CPP_IS_BRIEF@ +INHERIT_DOCS = @DOXYGEN_INHERIT_DOCS@ +SEPARATE_MEMBER_PAGES = @DOXYGEN_SEPARATE_MEMBER_PAGES@ +TAB_SIZE = @DOXYGEN_TAB_SIZE@ +ALIASES = @DOXYGEN_ALIASES@ +TCL_SUBST = @DOXYGEN_TCL_SUBST@ +OPTIMIZE_OUTPUT_FOR_C = @DOXYGEN_OPTIMIZE_OUTPUT_FOR_C@ +OPTIMIZE_OUTPUT_JAVA = @DOXYGEN_OPTIMIZE_OUTPUT_JAVA@ +OPTIMIZE_FOR_FORTRAN = @DOXYGEN_OPTIMIZE_FOR_FORTRAN@ +OPTIMIZE_OUTPUT_VHDL = @DOXYGEN_OPTIMIZE_OUTPUT_VHDL@ +OPTIMIZE_OUTPUT_SLICE = @DOXYGEN_OPTIMIZE_OUTPUT_SLICE@ +EXTENSION_MAPPING = @DOXYGEN_EXTENSION_MAPPING@ +MARKDOWN_SUPPORT = @DOXYGEN_MARKDOWN_SUPPORT@ +TOC_INCLUDE_HEADINGS = @DOXYGEN_TOC_INCLUDE_HEADINGS@ +AUTOLINK_SUPPORT = @DOXYGEN_AUTOLINK_SUPPORT@ +BUILTIN_STL_SUPPORT = @DOXYGEN_BUILTIN_STL_SUPPORT@ +CPP_CLI_SUPPORT = @DOXYGEN_CPP_CLI_SUPPORT@ +SIP_SUPPORT = @DOXYGEN_SIP_SUPPORT@ +IDL_PROPERTY_SUPPORT = @DOXYGEN_IDL_PROPERTY_SUPPORT@ +DISTRIBUTE_GROUP_DOC = @DOXYGEN_DISTRIBUTE_GROUP_DOC@ +GROUP_NESTED_COMPOUNDS = @DOXYGEN_GROUP_NESTED_COMPOUNDS@ +SUBGROUPING = @DOXYGEN_SUBGROUPING@ +INLINE_GROUPED_CLASSES = @DOXYGEN_INLINE_GROUPED_CLASSES@ +INLINE_SIMPLE_STRUCTS = @DOXYGEN_INLINE_SIMPLE_STRUCTS@ +TYPEDEF_HIDES_STRUCT = @DOXYGEN_TYPEDEF_HIDES_STRUCT@ +LOOKUP_CACHE_SIZE = @DOXYGEN_LOOKUP_CACHE_SIZE@ +EXTRACT_ALL = @DOXYGEN_EXTRACT_ALL@ +EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@ +EXTRACT_PRIV_VIRTUAL = @DOXYGEN_EXTRACT_PRIV_VIRTUAL@ +EXTRACT_PACKAGE = @DOXYGEN_EXTRACT_PACKAGE@ +EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@ +EXTRACT_LOCAL_CLASSES = @DOXYGEN_EXTRACT_LOCAL_CLASSES@ +EXTRACT_LOCAL_METHODS = @DOXYGEN_EXTRACT_LOCAL_METHODS@ +EXTRACT_ANON_NSPACES = @DOXYGEN_EXTRACT_ANON_NSPACES@ +HIDE_UNDOC_MEMBERS = @DOXYGEN_HIDE_UNDOC_MEMBERS@ +HIDE_UNDOC_CLASSES = @DOXYGEN_HIDE_UNDOC_CLASSES@ +HIDE_FRIEND_COMPOUNDS = @DOXYGEN_HIDE_FRIEND_COMPOUNDS@ +HIDE_IN_BODY_DOCS = @DOXYGEN_HIDE_IN_BODY_DOCS@ +INTERNAL_DOCS = @DOXYGEN_INTERNAL_DOCS@ +CASE_SENSE_NAMES = @DOXYGEN_CASE_SENSE_NAMES@ +HIDE_SCOPE_NAMES = @DOXYGEN_HIDE_SCOPE_NAMES@ +HIDE_COMPOUND_REFERENCE= @DOXYGEN_HIDE_COMPOUND_REFERENCE@ +SHOW_INCLUDE_FILES = @DOXYGEN_SHOW_INCLUDE_FILES@ +SHOW_GROUPED_MEMB_INC = @DOXYGEN_SHOW_GROUPED_MEMB_INC@ +FORCE_LOCAL_INCLUDES = @DOXYGEN_FORCE_LOCAL_INCLUDES@ +INLINE_INFO = @DOXYGEN_INLINE_INFO@ +SORT_MEMBER_DOCS = @DOXYGEN_SORT_MEMBER_DOCS@ +SORT_BRIEF_DOCS = @DOXYGEN_SORT_BRIEF_DOCS@ +SORT_MEMBERS_CTORS_1ST = @DOXYGEN_SORT_MEMBERS_CTORS_1ST@ +SORT_GROUP_NAMES = @DOXYGEN_SORT_GROUP_NAMES@ +SORT_BY_SCOPE_NAME = @DOXYGEN_SORT_BY_SCOPE_NAME@ +STRICT_PROTO_MATCHING = @DOXYGEN_STRICT_PROTO_MATCHING@ +GENERATE_TODOLIST = @DOXYGEN_GENERATE_TODOLIST@ +GENERATE_TESTLIST = @DOXYGEN_GENERATE_TESTLIST@ +GENERATE_BUGLIST = @DOXYGEN_GENERATE_BUGLIST@ +GENERATE_DEPRECATEDLIST= @DOXYGEN_GENERATE_DEPRECATEDLIST@ +ENABLED_SECTIONS = @DOXYGEN_ENABLED_SECTIONS@ +MAX_INITIALIZER_LINES = @DOXYGEN_MAX_INITIALIZER_LINES@ +SHOW_USED_FILES = @DOXYGEN_SHOW_USED_FILES@ +SHOW_FILES = @DOXYGEN_SHOW_FILES@ +SHOW_NAMESPACES = @DOXYGEN_SHOW_NAMESPACES@ +FILE_VERSION_FILTER = @DOXYGEN_FILE_VERSION_FILTER@ +LAYOUT_FILE = @DOXYGEN_LAYOUT_FILE@ +CITE_BIB_FILES = @DOXYGEN_CITE_BIB_FILES@ +QUIET = @DOXYGEN_QUIET@ +WARNINGS = @DOXYGEN_WARNINGS@ +WARN_IF_UNDOCUMENTED = @DOXYGEN_WARN_IF_UNDOCUMENTED@ +WARN_IF_DOC_ERROR = @DOXYGEN_WARN_IF_DOC_ERROR@ +WARN_NO_PARAMDOC = @DOXYGEN_WARN_NO_PARAMDOC@ +WARN_AS_ERROR = @DOXYGEN_WARN_AS_ERROR@ +WARN_FORMAT = @DOXYGEN_WARN_FORMAT@ +WARN_LOGFILE = @DOXYGEN_WARN_LOGFILE@ +INPUT = @DOXYGEN_INPUT@ +INPUT_ENCODING = @DOXYGEN_INPUT_ENCODING@ +FILE_PATTERNS = @DOXYGEN_FILE_PATTERNS@ +RECURSIVE = @DOXYGEN_RECURSIVE@ +EXCLUDE = @DOXYGEN_EXCLUDE@ +EXCLUDE_SYMLINKS = @DOXYGEN_EXCLUDE_SYMLINKS@ +EXCLUDE_PATTERNS = @DOXYGEN_EXCLUDE_PATTERNS@ +EXCLUDE_SYMBOLS = @DOXYGEN_EXCLUDE_SYMBOLS@ +EXAMPLE_PATH = @DOXYGEN_EXAMPLE_PATH@ +EXAMPLE_PATTERNS = @DOXYGEN_EXAMPLE_PATTERNS@ +EXAMPLE_RECURSIVE = @DOXYGEN_EXAMPLE_RECURSIVE@ +IMAGE_PATH = @DOXYGEN_IMAGE_PATH@ +INPUT_FILTER = @DOXYGEN_INPUT_FILTER@ +FILTER_PATTERNS = @DOXYGEN_FILTER_PATTERNS@ +FILTER_SOURCE_FILES = @DOXYGEN_FILTER_SOURCE_FILES@ +FILTER_SOURCE_PATTERNS = @DOXYGEN_FILTER_SOURCE_PATTERNS@ +USE_MDFILE_AS_MAINPAGE = @DOXYGEN_USE_MDFILE_AS_MAINPAGE@ +SOURCE_BROWSER = @DOXYGEN_SOURCE_BROWSER@ +INLINE_SOURCES = @DOXYGEN_INLINE_SOURCES@ +STRIP_CODE_COMMENTS = @DOXYGEN_STRIP_CODE_COMMENTS@ +REFERENCED_BY_RELATION = @DOXYGEN_REFERENCED_BY_RELATION@ +REFERENCES_RELATION = @DOXYGEN_REFERENCES_RELATION@ +REFERENCES_LINK_SOURCE = @DOXYGEN_REFERENCES_LINK_SOURCE@ +SOURCE_TOOLTIPS = @DOXYGEN_SOURCE_TOOLTIPS@ +USE_HTAGS = @DOXYGEN_USE_HTAGS@ +VERBATIM_HEADERS = @DOXYGEN_VERBATIM_HEADERS@ +CLANG_ASSISTED_PARSING = @DOXYGEN_CLANG_ASSISTED_PARSING@ +CLANG_OPTIONS = @DOXYGEN_CLANG_OPTIONS@ +CLANG_DATABASE_PATH = @DOXYGEN_CLANG_DATABASE_PATH@ +ALPHABETICAL_INDEX = @DOXYGEN_ALPHABETICAL_INDEX@ +COLS_IN_ALPHA_INDEX = @DOXYGEN_COLS_IN_ALPHA_INDEX@ +IGNORE_PREFIX = @DOXYGEN_IGNORE_PREFIX@ +GENERATE_HTML = @DOXYGEN_GENERATE_HTML@ +HTML_OUTPUT = @DOXYGEN_HTML_OUTPUT@ +HTML_FILE_EXTENSION = @DOXYGEN_HTML_FILE_EXTENSION@ +HTML_HEADER = @DOXYGEN_HTML_HEADER@ +HTML_FOOTER = @DOXYGEN_HTML_FOOTER@ +HTML_STYLESHEET = @DOXYGEN_HTML_STYLESHEET@ +HTML_EXTRA_STYLESHEET = @DOXYGEN_HTML_EXTRA_STYLESHEET@ +HTML_EXTRA_FILES = @DOXYGEN_HTML_EXTRA_FILES@ +HTML_COLORSTYLE_HUE = @DOXYGEN_HTML_COLORSTYLE_HUE@ +HTML_COLORSTYLE_SAT = @DOXYGEN_HTML_COLORSTYLE_SAT@ +HTML_COLORSTYLE_GAMMA = @DOXYGEN_HTML_COLORSTYLE_GAMMA@ +HTML_TIMESTAMP = @DOXYGEN_HTML_TIMESTAMP@ +HTML_DYNAMIC_MENUS = @DOXYGEN_HTML_DYNAMIC_MENUS@ +HTML_DYNAMIC_SECTIONS = @DOXYGEN_HTML_DYNAMIC_SECTIONS@ +HTML_INDEX_NUM_ENTRIES = @DOXYGEN_HTML_INDEX_NUM_ENTRIES@ +GENERATE_DOCSET = @DOXYGEN_GENERATE_DOCSET@ +DOCSET_FEEDNAME = @DOXYGEN_DOCSET_FEEDNAME@ +DOCSET_BUNDLE_ID = @DOXYGEN_DOCSET_BUNDLE_ID@ +DOCSET_PUBLISHER_ID = @DOXYGEN_DOCSET_PUBLISHER_ID@ +DOCSET_PUBLISHER_NAME = @DOXYGEN_DOCSET_PUBLISHER_NAME@ +GENERATE_HTMLHELP = @DOXYGEN_GENERATE_HTMLHELP@ +CHM_FILE = @DOXYGEN_CHM_FILE@ +HHC_LOCATION = @DOXYGEN_HHC_LOCATION@ +GENERATE_CHI = @DOXYGEN_GENERATE_CHI@ +CHM_INDEX_ENCODING = @DOXYGEN_CHM_INDEX_ENCODING@ +BINARY_TOC = @DOXYGEN_BINARY_TOC@ +TOC_EXPAND = @DOXYGEN_TOC_EXPAND@ +GENERATE_QHP = @DOXYGEN_GENERATE_QHP@ +QCH_FILE = @DOXYGEN_QCH_FILE@ +QHP_NAMESPACE = @DOXYGEN_QHP_NAMESPACE@ +QHP_VIRTUAL_FOLDER = @DOXYGEN_QHP_VIRTUAL_FOLDER@ +QHP_CUST_FILTER_NAME = @DOXYGEN_QHP_CUST_FILTER_NAME@ +QHP_CUST_FILTER_ATTRS = @DOXYGEN_QHP_CUST_FILTER_ATTRS@ +QHP_SECT_FILTER_ATTRS = @DOXYGEN_QHP_SECT_FILTER_ATTRS@ +QHG_LOCATION = @DOXYGEN_QHG_LOCATION@ +GENERATE_ECLIPSEHELP = @DOXYGEN_GENERATE_ECLIPSEHELP@ +ECLIPSE_DOC_ID = @DOXYGEN_ECLIPSE_DOC_ID@ +DISABLE_INDEX = @DOXYGEN_DISABLE_INDEX@ +GENERATE_TREEVIEW = @DOXYGEN_GENERATE_TREEVIEW@ +ENUM_VALUES_PER_LINE = @DOXYGEN_ENUM_VALUES_PER_LINE@ +TREEVIEW_WIDTH = @DOXYGEN_TREEVIEW_WIDTH@ +EXT_LINKS_IN_WINDOW = @DOXYGEN_EXT_LINKS_IN_WINDOW@ +FORMULA_FONTSIZE = @DOXYGEN_FORMULA_FONTSIZE@ +FORMULA_TRANSPARENT = @DOXYGEN_FORMULA_TRANSPARENT@ +FORMULA_MACROFILE = @DOXYGEN_FORMULA_MACROFILE@ +USE_MATHJAX = @DOXYGEN_USE_MATHJAX@ +MATHJAX_FORMAT = @DOXYGEN_MATHJAX_FORMAT@ +MATHJAX_RELPATH = @DOXYGEN_MATHJAX_RELPATH@ +MATHJAX_EXTENSIONS = @DOXYGEN_MATHJAX_EXTENSIONS@ +MATHJAX_CODEFILE = @DOXYGEN_MATHJAX_CODEFILE@ +SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ +SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ +EXTERNAL_SEARCH = @DOXYGEN_EXTERNAL_SEARCH@ +SEARCHENGINE_URL = @DOXYGEN_SEARCHENGINE_URL@ +SEARCHDATA_FILE = @DOXYGEN_SEARCHDATA_FILE@ +EXTERNAL_SEARCH_ID = @DOXYGEN_EXTERNAL_SEARCH_ID@ +EXTRA_SEARCH_MAPPINGS = @DOXYGEN_EXTRA_SEARCH_MAPPINGS@ +GENERATE_LATEX = @DOXYGEN_GENERATE_LATEX@ +LATEX_OUTPUT = @DOXYGEN_LATEX_OUTPUT@ +LATEX_CMD_NAME = @DOXYGEN_LATEX_CMD_NAME@ +MAKEINDEX_CMD_NAME = @DOXYGEN_MAKEINDEX_CMD_NAME@ +LATEX_MAKEINDEX_CMD = @DOXYGEN_LATEX_MAKEINDEX_CMD@ +COMPACT_LATEX = @DOXYGEN_COMPACT_LATEX@ +PAPER_TYPE = @DOXYGEN_PAPER_TYPE@ +EXTRA_PACKAGES = @DOXYGEN_EXTRA_PACKAGES@ +LATEX_HEADER = @DOXYGEN_LATEX_HEADER@ +LATEX_FOOTER = @DOXYGEN_LATEX_FOOTER@ +LATEX_EXTRA_STYLESHEET = @DOXYGEN_LATEX_EXTRA_STYLESHEET@ +LATEX_EXTRA_FILES = @DOXYGEN_LATEX_EXTRA_FILES@ +PDF_HYPERLINKS = @DOXYGEN_PDF_HYPERLINKS@ +USE_PDFLATEX = @DOXYGEN_USE_PDFLATEX@ +LATEX_BATCHMODE = @DOXYGEN_LATEX_BATCHMODE@ +LATEX_HIDE_INDICES = @DOXYGEN_LATEX_HIDE_INDICES@ +LATEX_SOURCE_CODE = @DOXYGEN_LATEX_SOURCE_CODE@ +LATEX_BIB_STYLE = @DOXYGEN_LATEX_BIB_STYLE@ +LATEX_TIMESTAMP = @DOXYGEN_LATEX_TIMESTAMP@ +LATEX_EMOJI_DIRECTORY = @DOXYGEN_LATEX_EMOJI_DIRECTORY@ +GENERATE_RTF = @DOXYGEN_GENERATE_RTF@ +RTF_OUTPUT = @DOXYGEN_RTF_OUTPUT@ +COMPACT_RTF = @DOXYGEN_COMPACT_RTF@ +RTF_HYPERLINKS = @DOXYGEN_RTF_HYPERLINKS@ +RTF_STYLESHEET_FILE = @DOXYGEN_RTF_STYLESHEET_FILE@ +RTF_EXTENSIONS_FILE = @DOXYGEN_RTF_EXTENSIONS_FILE@ +RTF_SOURCE_CODE = @DOXYGEN_RTF_SOURCE_CODE@ +GENERATE_MAN = @DOXYGEN_GENERATE_MAN@ +MAN_OUTPUT = @DOXYGEN_MAN_OUTPUT@ +MAN_EXTENSION = @DOXYGEN_MAN_EXTENSION@ +MAN_SUBDIR = @DOXYGEN_MAN_SUBDIR@ +MAN_LINKS = @DOXYGEN_MAN_LINKS@ +GENERATE_XML = @DOXYGEN_GENERATE_XML@ +XML_OUTPUT = @DOXYGEN_XML_OUTPUT@ +XML_PROGRAMLISTING = @DOXYGEN_XML_PROGRAMLISTING@ +XML_NS_MEMB_FILE_SCOPE = @DOXYGEN_XML_NS_MEMB_FILE_SCOPE@ +GENERATE_DOCBOOK = @DOXYGEN_GENERATE_DOCBOOK@ +DOCBOOK_OUTPUT = @DOXYGEN_DOCBOOK_OUTPUT@ +DOCBOOK_PROGRAMLISTING = @DOXYGEN_DOCBOOK_PROGRAMLISTING@ +GENERATE_AUTOGEN_DEF = @DOXYGEN_GENERATE_AUTOGEN_DEF@ +GENERATE_PERLMOD = @DOXYGEN_GENERATE_PERLMOD@ +PERLMOD_LATEX = @DOXYGEN_PERLMOD_LATEX@ +PERLMOD_PRETTY = @DOXYGEN_PERLMOD_PRETTY@ +PERLMOD_MAKEVAR_PREFIX = @DOXYGEN_PERLMOD_MAKEVAR_PREFIX@ +ENABLE_PREPROCESSING = @DOXYGEN_ENABLE_PREPROCESSING@ +MACRO_EXPANSION = @DOXYGEN_MACRO_EXPANSION@ +EXPAND_ONLY_PREDEF = @DOXYGEN_EXPAND_ONLY_PREDEF@ +SEARCH_INCLUDES = @DOXYGEN_SEARCH_INCLUDES@ +INCLUDE_PATH = @DOXYGEN_INCLUDE_PATH@ +INCLUDE_FILE_PATTERNS = @DOXYGEN_INCLUDE_FILE_PATTERNS@ +PREDEFINED = @DOXYGEN_PREDEFINED@ +EXPAND_AS_DEFINED = @DOXYGEN_EXPAND_AS_DEFINED@ +SKIP_FUNCTION_MACROS = @DOXYGEN_SKIP_FUNCTION_MACROS@ +TAGFILES = @DOXYGEN_TAGFILES@ +GENERATE_TAGFILE = @DOXYGEN_GENERATE_TAGFILE@ +ALLEXTERNALS = @DOXYGEN_ALLEXTERNALS@ +EXTERNAL_GROUPS = @DOXYGEN_EXTERNAL_GROUPS@ +EXTERNAL_PAGES = @DOXYGEN_EXTERNAL_PAGES@ +CLASS_DIAGRAMS = @DOXYGEN_CLASS_DIAGRAMS@ +DIA_PATH = @DOXYGEN_DIA_PATH@ +HIDE_UNDOC_RELATIONS = @DOXYGEN_HIDE_UNDOC_RELATIONS@ +HAVE_DOT = @DOXYGEN_HAVE_DOT@ +DOT_NUM_THREADS = @DOXYGEN_DOT_NUM_THREADS@ +DOT_FONTNAME = @DOXYGEN_DOT_FONTNAME@ +DOT_FONTSIZE = @DOXYGEN_DOT_FONTSIZE@ +DOT_FONTPATH = @DOXYGEN_DOT_FONTPATH@ +CLASS_GRAPH = @DOXYGEN_CLASS_GRAPH@ +COLLABORATION_GRAPH = @DOXYGEN_COLLABORATION_GRAPH@ +GROUP_GRAPHS = @DOXYGEN_GROUP_GRAPHS@ +UML_LOOK = @DOXYGEN_UML_LOOK@ +UML_LIMIT_NUM_FIELDS = @DOXYGEN_UML_LIMIT_NUM_FIELDS@ +TEMPLATE_RELATIONS = @DOXYGEN_TEMPLATE_RELATIONS@ +INCLUDE_GRAPH = @DOXYGEN_INCLUDE_GRAPH@ +INCLUDED_BY_GRAPH = @DOXYGEN_INCLUDED_BY_GRAPH@ +CALL_GRAPH = @DOXYGEN_CALL_GRAPH@ +CALLER_GRAPH = @DOXYGEN_CALLER_GRAPH@ +GRAPHICAL_HIERARCHY = @DOXYGEN_GRAPHICAL_HIERARCHY@ +DIRECTORY_GRAPH = @DOXYGEN_DIRECTORY_GRAPH@ +DOT_IMAGE_FORMAT = @DOXYGEN_DOT_IMAGE_FORMAT@ +INTERACTIVE_SVG = @DOXYGEN_INTERACTIVE_SVG@ +DOT_PATH = @DOXYGEN_DOT_PATH@ +DOTFILE_DIRS = @DOXYGEN_DOTFILE_DIRS@ +MSCFILE_DIRS = @DOXYGEN_MSCFILE_DIRS@ +DIAFILE_DIRS = @DOXYGEN_DIAFILE_DIRS@ +PLANTUML_JAR_PATH = @DOXYGEN_PLANTUML_JAR_PATH@ +PLANTUML_CFG_FILE = @DOXYGEN_PLANTUML_CFG_FILE@ +PLANTUML_INCLUDE_PATH = @DOXYGEN_PLANTUML_INCLUDE_PATH@ +DOT_GRAPH_MAX_NODES = @DOXYGEN_DOT_GRAPH_MAX_NODES@ +MAX_DOT_GRAPH_DEPTH = @DOXYGEN_MAX_DOT_GRAPH_DEPTH@ +DOT_TRANSPARENT = @DOXYGEN_DOT_TRANSPARENT@ +DOT_MULTI_TARGETS = @DOXYGEN_DOT_MULTI_TARGETS@ +GENERATE_LEGEND = @DOXYGEN_GENERATE_LEGEND@ +DOT_CLEANUP = @DOXYGEN_DOT_CLEANUP@ diff --git a/wound-wait/build/CMakeDoxygenDefaults.cmake b/wound-wait/build/CMakeDoxygenDefaults.cmake new file mode 100644 index 00000000..db28798f --- /dev/null +++ b/wound-wait/build/CMakeDoxygenDefaults.cmake @@ -0,0 +1,672 @@ +# +# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! +# + +if(NOT DEFINED DOXYGEN_DOXYFILE_ENCODING) + set(DOXYGEN_DOXYFILE_ENCODING UTF-8) +endif() +if(NOT DEFINED DOXYGEN_PROJECT_NAME) + set(DOXYGEN_PROJECT_NAME "My Project") +endif() +if(NOT DEFINED DOXYGEN_CREATE_SUBDIRS) + set(DOXYGEN_CREATE_SUBDIRS NO) +endif() +if(NOT DEFINED DOXYGEN_ALLOW_UNICODE_NAMES) + set(DOXYGEN_ALLOW_UNICODE_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_OUTPUT_LANGUAGE) + set(DOXYGEN_OUTPUT_LANGUAGE English) +endif() +if(NOT DEFINED DOXYGEN_OUTPUT_TEXT_DIRECTION) + set(DOXYGEN_OUTPUT_TEXT_DIRECTION None) +endif() +if(NOT DEFINED DOXYGEN_BRIEF_MEMBER_DESC) + set(DOXYGEN_BRIEF_MEMBER_DESC YES) +endif() +if(NOT DEFINED DOXYGEN_REPEAT_BRIEF) + set(DOXYGEN_REPEAT_BRIEF YES) +endif() +if(NOT DEFINED DOXYGEN_ABBREVIATE_BRIEF) + set(DOXYGEN_ABBREVIATE_BRIEF "The $name class" + "The $name widget" + "The $name file" + is + provides + specifies + contains + represents + a + an + the) +endif() +if(NOT DEFINED DOXYGEN_ALWAYS_DETAILED_SEC) + set(DOXYGEN_ALWAYS_DETAILED_SEC NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_INHERITED_MEMB) + set(DOXYGEN_INLINE_INHERITED_MEMB NO) +endif() +if(NOT DEFINED DOXYGEN_FULL_PATH_NAMES) + set(DOXYGEN_FULL_PATH_NAMES YES) +endif() +if(NOT DEFINED DOXYGEN_SHORT_NAMES) + set(DOXYGEN_SHORT_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_JAVADOC_AUTOBRIEF) + set(DOXYGEN_JAVADOC_AUTOBRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_JAVADOC_BANNER) + set(DOXYGEN_JAVADOC_BANNER NO) +endif() +if(NOT DEFINED DOXYGEN_QT_AUTOBRIEF) + set(DOXYGEN_QT_AUTOBRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_MULTILINE_CPP_IS_BRIEF) + set(DOXYGEN_MULTILINE_CPP_IS_BRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_INHERIT_DOCS) + set(DOXYGEN_INHERIT_DOCS YES) +endif() +if(NOT DEFINED DOXYGEN_SEPARATE_MEMBER_PAGES) + set(DOXYGEN_SEPARATE_MEMBER_PAGES NO) +endif() +if(NOT DEFINED DOXYGEN_TAB_SIZE) + set(DOXYGEN_TAB_SIZE 4) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_FOR_C) + set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_JAVA) + set(DOXYGEN_OPTIMIZE_OUTPUT_JAVA NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_FOR_FORTRAN) + set(DOXYGEN_OPTIMIZE_FOR_FORTRAN NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_VHDL) + set(DOXYGEN_OPTIMIZE_OUTPUT_VHDL NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_SLICE) + set(DOXYGEN_OPTIMIZE_OUTPUT_SLICE NO) +endif() +if(NOT DEFINED DOXYGEN_MARKDOWN_SUPPORT) + set(DOXYGEN_MARKDOWN_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_TOC_INCLUDE_HEADINGS) + set(DOXYGEN_TOC_INCLUDE_HEADINGS 5) +endif() +if(NOT DEFINED DOXYGEN_AUTOLINK_SUPPORT) + set(DOXYGEN_AUTOLINK_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_BUILTIN_STL_SUPPORT) + set(DOXYGEN_BUILTIN_STL_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_CPP_CLI_SUPPORT) + set(DOXYGEN_CPP_CLI_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_SIP_SUPPORT) + set(DOXYGEN_SIP_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_IDL_PROPERTY_SUPPORT) + set(DOXYGEN_IDL_PROPERTY_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_DISTRIBUTE_GROUP_DOC) + set(DOXYGEN_DISTRIBUTE_GROUP_DOC NO) +endif() +if(NOT DEFINED DOXYGEN_GROUP_NESTED_COMPOUNDS) + set(DOXYGEN_GROUP_NESTED_COMPOUNDS NO) +endif() +if(NOT DEFINED DOXYGEN_SUBGROUPING) + set(DOXYGEN_SUBGROUPING YES) +endif() +if(NOT DEFINED DOXYGEN_INLINE_GROUPED_CLASSES) + set(DOXYGEN_INLINE_GROUPED_CLASSES NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_SIMPLE_STRUCTS) + set(DOXYGEN_INLINE_SIMPLE_STRUCTS NO) +endif() +if(NOT DEFINED DOXYGEN_TYPEDEF_HIDES_STRUCT) + set(DOXYGEN_TYPEDEF_HIDES_STRUCT NO) +endif() +if(NOT DEFINED DOXYGEN_LOOKUP_CACHE_SIZE) + set(DOXYGEN_LOOKUP_CACHE_SIZE 0) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_ALL) + set(DOXYGEN_EXTRACT_ALL NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PRIVATE) + set(DOXYGEN_EXTRACT_PRIVATE NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PRIV_VIRTUAL) + set(DOXYGEN_EXTRACT_PRIV_VIRTUAL NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PACKAGE) + set(DOXYGEN_EXTRACT_PACKAGE NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_STATIC) + set(DOXYGEN_EXTRACT_STATIC NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_CLASSES) + set(DOXYGEN_EXTRACT_LOCAL_CLASSES YES) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_METHODS) + set(DOXYGEN_EXTRACT_LOCAL_METHODS NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_ANON_NSPACES) + set(DOXYGEN_EXTRACT_ANON_NSPACES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_MEMBERS) + set(DOXYGEN_HIDE_UNDOC_MEMBERS NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_CLASSES) + set(DOXYGEN_HIDE_UNDOC_CLASSES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_FRIEND_COMPOUNDS) + set(DOXYGEN_HIDE_FRIEND_COMPOUNDS NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_IN_BODY_DOCS) + set(DOXYGEN_HIDE_IN_BODY_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_INTERNAL_DOCS) + set(DOXYGEN_INTERNAL_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_CASE_SENSE_NAMES) + set(DOXYGEN_CASE_SENSE_NAMES YES) +endif() +if(NOT DEFINED DOXYGEN_HIDE_SCOPE_NAMES) + set(DOXYGEN_HIDE_SCOPE_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_COMPOUND_REFERENCE) + set(DOXYGEN_HIDE_COMPOUND_REFERENCE NO) +endif() +if(NOT DEFINED DOXYGEN_SHOW_INCLUDE_FILES) + set(DOXYGEN_SHOW_INCLUDE_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_GROUPED_MEMB_INC) + set(DOXYGEN_SHOW_GROUPED_MEMB_INC NO) +endif() +if(NOT DEFINED DOXYGEN_FORCE_LOCAL_INCLUDES) + set(DOXYGEN_FORCE_LOCAL_INCLUDES NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_INFO) + set(DOXYGEN_INLINE_INFO YES) +endif() +if(NOT DEFINED DOXYGEN_SORT_MEMBER_DOCS) + set(DOXYGEN_SORT_MEMBER_DOCS YES) +endif() +if(NOT DEFINED DOXYGEN_SORT_BRIEF_DOCS) + set(DOXYGEN_SORT_BRIEF_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_MEMBERS_CTORS_1ST) + set(DOXYGEN_SORT_MEMBERS_CTORS_1ST NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_GROUP_NAMES) + set(DOXYGEN_SORT_GROUP_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_BY_SCOPE_NAME) + set(DOXYGEN_SORT_BY_SCOPE_NAME NO) +endif() +if(NOT DEFINED DOXYGEN_STRICT_PROTO_MATCHING) + set(DOXYGEN_STRICT_PROTO_MATCHING NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TODOLIST) + set(DOXYGEN_GENERATE_TODOLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TESTLIST) + set(DOXYGEN_GENERATE_TESTLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_BUGLIST) + set(DOXYGEN_GENERATE_BUGLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DEPRECATEDLIST) + set(DOXYGEN_GENERATE_DEPRECATEDLIST YES) +endif() +if(NOT DEFINED DOXYGEN_MAX_INITIALIZER_LINES) + set(DOXYGEN_MAX_INITIALIZER_LINES 30) +endif() +if(NOT DEFINED DOXYGEN_SHOW_USED_FILES) + set(DOXYGEN_SHOW_USED_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_FILES) + set(DOXYGEN_SHOW_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_NAMESPACES) + set(DOXYGEN_SHOW_NAMESPACES YES) +endif() +if(NOT DEFINED DOXYGEN_QUIET) + set(DOXYGEN_QUIET NO) +endif() +if(NOT DEFINED DOXYGEN_WARNINGS) + set(DOXYGEN_WARNINGS YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_IF_UNDOCUMENTED) + set(DOXYGEN_WARN_IF_UNDOCUMENTED YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_IF_DOC_ERROR) + set(DOXYGEN_WARN_IF_DOC_ERROR YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_NO_PARAMDOC) + set(DOXYGEN_WARN_NO_PARAMDOC NO) +endif() +if(NOT DEFINED DOXYGEN_WARN_AS_ERROR) + set(DOXYGEN_WARN_AS_ERROR NO) +endif() +if(NOT DEFINED DOXYGEN_WARN_FORMAT) + set(DOXYGEN_WARN_FORMAT "$file:$line: $text") +endif() +if(NOT DEFINED DOXYGEN_INPUT_ENCODING) + set(DOXYGEN_INPUT_ENCODING UTF-8) +endif() +if(NOT DEFINED DOXYGEN_FILE_PATTERNS) + set(DOXYGEN_FILE_PATTERNS *.c + *.cc + *.cxx + *.cpp + *.c++ + *.java + *.ii + *.ixx + *.ipp + *.i++ + *.inl + *.idl + *.ddl + *.odl + *.h + *.hh + *.hxx + *.hpp + *.h++ + *.cs + *.d + *.php + *.php4 + *.php5 + *.phtml + *.inc + *.m + *.markdown + *.md + *.mm + *.dox + *.doc + *.txt + *.py + *.pyw + *.f90 + *.f95 + *.f03 + *.f08 + *.f + *.for + *.tcl + *.vhd + *.vhdl + *.ucf + *.qsf + *.ice) +endif() +if(NOT DEFINED DOXYGEN_RECURSIVE) + set(DOXYGEN_RECURSIVE NO) +endif() +if(NOT DEFINED DOXYGEN_EXCLUDE_SYMLINKS) + set(DOXYGEN_EXCLUDE_SYMLINKS NO) +endif() +if(NOT DEFINED DOXYGEN_EXAMPLE_PATTERNS) + set(DOXYGEN_EXAMPLE_PATTERNS *) +endif() +if(NOT DEFINED DOXYGEN_EXAMPLE_RECURSIVE) + set(DOXYGEN_EXAMPLE_RECURSIVE NO) +endif() +if(NOT DEFINED DOXYGEN_FILTER_SOURCE_FILES) + set(DOXYGEN_FILTER_SOURCE_FILES NO) +endif() +if(NOT DEFINED DOXYGEN_SOURCE_BROWSER) + set(DOXYGEN_SOURCE_BROWSER NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_SOURCES) + set(DOXYGEN_INLINE_SOURCES NO) +endif() +if(NOT DEFINED DOXYGEN_STRIP_CODE_COMMENTS) + set(DOXYGEN_STRIP_CODE_COMMENTS YES) +endif() +if(NOT DEFINED DOXYGEN_REFERENCED_BY_RELATION) + set(DOXYGEN_REFERENCED_BY_RELATION NO) +endif() +if(NOT DEFINED DOXYGEN_REFERENCES_RELATION) + set(DOXYGEN_REFERENCES_RELATION NO) +endif() +if(NOT DEFINED DOXYGEN_REFERENCES_LINK_SOURCE) + set(DOXYGEN_REFERENCES_LINK_SOURCE YES) +endif() +if(NOT DEFINED DOXYGEN_SOURCE_TOOLTIPS) + set(DOXYGEN_SOURCE_TOOLTIPS YES) +endif() +if(NOT DEFINED DOXYGEN_USE_HTAGS) + set(DOXYGEN_USE_HTAGS NO) +endif() +if(NOT DEFINED DOXYGEN_VERBATIM_HEADERS) + set(DOXYGEN_VERBATIM_HEADERS YES) +endif() +if(NOT DEFINED DOXYGEN_CLANG_ASSISTED_PARSING) + set(DOXYGEN_CLANG_ASSISTED_PARSING NO) +endif() +if(NOT DEFINED DOXYGEN_ALPHABETICAL_INDEX) + set(DOXYGEN_ALPHABETICAL_INDEX YES) +endif() +if(NOT DEFINED DOXYGEN_COLS_IN_ALPHA_INDEX) + set(DOXYGEN_COLS_IN_ALPHA_INDEX 5) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_HTML) + set(DOXYGEN_GENERATE_HTML YES) +endif() +if(NOT DEFINED DOXYGEN_HTML_OUTPUT) + set(DOXYGEN_HTML_OUTPUT html) +endif() +if(NOT DEFINED DOXYGEN_HTML_FILE_EXTENSION) + set(DOXYGEN_HTML_FILE_EXTENSION .html) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_HUE) + set(DOXYGEN_HTML_COLORSTYLE_HUE 220) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_SAT) + set(DOXYGEN_HTML_COLORSTYLE_SAT 100) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_GAMMA) + set(DOXYGEN_HTML_COLORSTYLE_GAMMA 80) +endif() +if(NOT DEFINED DOXYGEN_HTML_TIMESTAMP) + set(DOXYGEN_HTML_TIMESTAMP NO) +endif() +if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_MENUS) + set(DOXYGEN_HTML_DYNAMIC_MENUS YES) +endif() +if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_SECTIONS) + set(DOXYGEN_HTML_DYNAMIC_SECTIONS NO) +endif() +if(NOT DEFINED DOXYGEN_HTML_INDEX_NUM_ENTRIES) + set(DOXYGEN_HTML_INDEX_NUM_ENTRIES 100) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DOCSET) + set(DOXYGEN_GENERATE_DOCSET NO) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_FEEDNAME) + set(DOXYGEN_DOCSET_FEEDNAME "Doxygen generated docs") +endif() +if(NOT DEFINED DOXYGEN_DOCSET_BUNDLE_ID) + set(DOXYGEN_DOCSET_BUNDLE_ID org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_ID) + set(DOXYGEN_DOCSET_PUBLISHER_ID org.doxygen.Publisher) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_NAME) + set(DOXYGEN_DOCSET_PUBLISHER_NAME Publisher) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_HTMLHELP) + set(DOXYGEN_GENERATE_HTMLHELP NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_CHI) + set(DOXYGEN_GENERATE_CHI NO) +endif() +if(NOT DEFINED DOXYGEN_BINARY_TOC) + set(DOXYGEN_BINARY_TOC NO) +endif() +if(NOT DEFINED DOXYGEN_TOC_EXPAND) + set(DOXYGEN_TOC_EXPAND NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_QHP) + set(DOXYGEN_GENERATE_QHP NO) +endif() +if(NOT DEFINED DOXYGEN_QHP_NAMESPACE) + set(DOXYGEN_QHP_NAMESPACE org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_QHP_VIRTUAL_FOLDER) + set(DOXYGEN_QHP_VIRTUAL_FOLDER doc) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_ECLIPSEHELP) + set(DOXYGEN_GENERATE_ECLIPSEHELP NO) +endif() +if(NOT DEFINED DOXYGEN_ECLIPSE_DOC_ID) + set(DOXYGEN_ECLIPSE_DOC_ID org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_DISABLE_INDEX) + set(DOXYGEN_DISABLE_INDEX NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TREEVIEW) + set(DOXYGEN_GENERATE_TREEVIEW NO) +endif() +if(NOT DEFINED DOXYGEN_ENUM_VALUES_PER_LINE) + set(DOXYGEN_ENUM_VALUES_PER_LINE 4) +endif() +if(NOT DEFINED DOXYGEN_TREEVIEW_WIDTH) + set(DOXYGEN_TREEVIEW_WIDTH 250) +endif() +if(NOT DEFINED DOXYGEN_EXT_LINKS_IN_WINDOW) + set(DOXYGEN_EXT_LINKS_IN_WINDOW NO) +endif() +if(NOT DEFINED DOXYGEN_FORMULA_FONTSIZE) + set(DOXYGEN_FORMULA_FONTSIZE 10) +endif() +if(NOT DEFINED DOXYGEN_FORMULA_TRANSPARENT) + set(DOXYGEN_FORMULA_TRANSPARENT YES) +endif() +if(NOT DEFINED DOXYGEN_USE_MATHJAX) + set(DOXYGEN_USE_MATHJAX NO) +endif() +if(NOT DEFINED DOXYGEN_MATHJAX_FORMAT) + set(DOXYGEN_MATHJAX_FORMAT HTML-CSS) +endif() +if(NOT DEFINED DOXYGEN_MATHJAX_RELPATH) + set(DOXYGEN_MATHJAX_RELPATH https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/) +endif() +if(NOT DEFINED DOXYGEN_SEARCHENGINE) + set(DOXYGEN_SEARCHENGINE YES) +endif() +if(NOT DEFINED DOXYGEN_SERVER_BASED_SEARCH) + set(DOXYGEN_SERVER_BASED_SEARCH NO) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_SEARCH) + set(DOXYGEN_EXTERNAL_SEARCH NO) +endif() +if(NOT DEFINED DOXYGEN_SEARCHDATA_FILE) + set(DOXYGEN_SEARCHDATA_FILE searchdata.xml) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_LATEX) + set(DOXYGEN_GENERATE_LATEX YES) +endif() +if(NOT DEFINED DOXYGEN_LATEX_OUTPUT) + set(DOXYGEN_LATEX_OUTPUT latex) +endif() +if(NOT DEFINED DOXYGEN_MAKEINDEX_CMD_NAME) + set(DOXYGEN_MAKEINDEX_CMD_NAME makeindex) +endif() +if(NOT DEFINED DOXYGEN_LATEX_MAKEINDEX_CMD) + set(DOXYGEN_LATEX_MAKEINDEX_CMD makeindex) +endif() +if(NOT DEFINED DOXYGEN_COMPACT_LATEX) + set(DOXYGEN_COMPACT_LATEX NO) +endif() +if(NOT DEFINED DOXYGEN_PAPER_TYPE) + set(DOXYGEN_PAPER_TYPE a4) +endif() +if(NOT DEFINED DOXYGEN_PDF_HYPERLINKS) + set(DOXYGEN_PDF_HYPERLINKS YES) +endif() +if(NOT DEFINED DOXYGEN_USE_PDFLATEX) + set(DOXYGEN_USE_PDFLATEX YES) +endif() +if(NOT DEFINED DOXYGEN_LATEX_BATCHMODE) + set(DOXYGEN_LATEX_BATCHMODE NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_HIDE_INDICES) + set(DOXYGEN_LATEX_HIDE_INDICES NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_SOURCE_CODE) + set(DOXYGEN_LATEX_SOURCE_CODE NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_BIB_STYLE) + set(DOXYGEN_LATEX_BIB_STYLE plain) +endif() +if(NOT DEFINED DOXYGEN_LATEX_TIMESTAMP) + set(DOXYGEN_LATEX_TIMESTAMP NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_RTF) + set(DOXYGEN_GENERATE_RTF NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_OUTPUT) + set(DOXYGEN_RTF_OUTPUT rtf) +endif() +if(NOT DEFINED DOXYGEN_COMPACT_RTF) + set(DOXYGEN_COMPACT_RTF NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_HYPERLINKS) + set(DOXYGEN_RTF_HYPERLINKS NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_SOURCE_CODE) + set(DOXYGEN_RTF_SOURCE_CODE NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_MAN) + set(DOXYGEN_GENERATE_MAN NO) +endif() +if(NOT DEFINED DOXYGEN_MAN_OUTPUT) + set(DOXYGEN_MAN_OUTPUT man) +endif() +if(NOT DEFINED DOXYGEN_MAN_EXTENSION) + set(DOXYGEN_MAN_EXTENSION .3) +endif() +if(NOT DEFINED DOXYGEN_MAN_LINKS) + set(DOXYGEN_MAN_LINKS NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_XML) + set(DOXYGEN_GENERATE_XML NO) +endif() +if(NOT DEFINED DOXYGEN_XML_OUTPUT) + set(DOXYGEN_XML_OUTPUT xml) +endif() +if(NOT DEFINED DOXYGEN_XML_PROGRAMLISTING) + set(DOXYGEN_XML_PROGRAMLISTING YES) +endif() +if(NOT DEFINED DOXYGEN_XML_NS_MEMB_FILE_SCOPE) + set(DOXYGEN_XML_NS_MEMB_FILE_SCOPE NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DOCBOOK) + set(DOXYGEN_GENERATE_DOCBOOK NO) +endif() +if(NOT DEFINED DOXYGEN_DOCBOOK_OUTPUT) + set(DOXYGEN_DOCBOOK_OUTPUT docbook) +endif() +if(NOT DEFINED DOXYGEN_DOCBOOK_PROGRAMLISTING) + set(DOXYGEN_DOCBOOK_PROGRAMLISTING NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_AUTOGEN_DEF) + set(DOXYGEN_GENERATE_AUTOGEN_DEF NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_PERLMOD) + set(DOXYGEN_GENERATE_PERLMOD NO) +endif() +if(NOT DEFINED DOXYGEN_PERLMOD_LATEX) + set(DOXYGEN_PERLMOD_LATEX NO) +endif() +if(NOT DEFINED DOXYGEN_PERLMOD_PRETTY) + set(DOXYGEN_PERLMOD_PRETTY YES) +endif() +if(NOT DEFINED DOXYGEN_ENABLE_PREPROCESSING) + set(DOXYGEN_ENABLE_PREPROCESSING YES) +endif() +if(NOT DEFINED DOXYGEN_MACRO_EXPANSION) + set(DOXYGEN_MACRO_EXPANSION NO) +endif() +if(NOT DEFINED DOXYGEN_EXPAND_ONLY_PREDEF) + set(DOXYGEN_EXPAND_ONLY_PREDEF NO) +endif() +if(NOT DEFINED DOXYGEN_SEARCH_INCLUDES) + set(DOXYGEN_SEARCH_INCLUDES YES) +endif() +if(NOT DEFINED DOXYGEN_SKIP_FUNCTION_MACROS) + set(DOXYGEN_SKIP_FUNCTION_MACROS YES) +endif() +if(NOT DEFINED DOXYGEN_ALLEXTERNALS) + set(DOXYGEN_ALLEXTERNALS NO) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_GROUPS) + set(DOXYGEN_EXTERNAL_GROUPS YES) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_PAGES) + set(DOXYGEN_EXTERNAL_PAGES YES) +endif() +if(NOT DEFINED DOXYGEN_CLASS_DIAGRAMS) + set(DOXYGEN_CLASS_DIAGRAMS YES) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_RELATIONS) + set(DOXYGEN_HIDE_UNDOC_RELATIONS YES) +endif() +if(NOT DEFINED DOXYGEN_HAVE_DOT) + set(DOXYGEN_HAVE_DOT YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_NUM_THREADS) + set(DOXYGEN_DOT_NUM_THREADS 0) +endif() +if(NOT DEFINED DOXYGEN_DOT_FONTNAME) + set(DOXYGEN_DOT_FONTNAME Helvetica) +endif() +if(NOT DEFINED DOXYGEN_DOT_FONTSIZE) + set(DOXYGEN_DOT_FONTSIZE 10) +endif() +if(NOT DEFINED DOXYGEN_CLASS_GRAPH) + set(DOXYGEN_CLASS_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_COLLABORATION_GRAPH) + set(DOXYGEN_COLLABORATION_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_GROUP_GRAPHS) + set(DOXYGEN_GROUP_GRAPHS YES) +endif() +if(NOT DEFINED DOXYGEN_UML_LOOK) + set(DOXYGEN_UML_LOOK NO) +endif() +if(NOT DEFINED DOXYGEN_UML_LIMIT_NUM_FIELDS) + set(DOXYGEN_UML_LIMIT_NUM_FIELDS 10) +endif() +if(NOT DEFINED DOXYGEN_TEMPLATE_RELATIONS) + set(DOXYGEN_TEMPLATE_RELATIONS NO) +endif() +if(NOT DEFINED DOXYGEN_INCLUDE_GRAPH) + set(DOXYGEN_INCLUDE_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_INCLUDED_BY_GRAPH) + set(DOXYGEN_INCLUDED_BY_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_CALL_GRAPH) + set(DOXYGEN_CALL_GRAPH NO) +endif() +if(NOT DEFINED DOXYGEN_CALLER_GRAPH) + set(DOXYGEN_CALLER_GRAPH NO) +endif() +if(NOT DEFINED DOXYGEN_GRAPHICAL_HIERARCHY) + set(DOXYGEN_GRAPHICAL_HIERARCHY YES) +endif() +if(NOT DEFINED DOXYGEN_DIRECTORY_GRAPH) + set(DOXYGEN_DIRECTORY_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_IMAGE_FORMAT) + set(DOXYGEN_DOT_IMAGE_FORMAT png) +endif() +if(NOT DEFINED DOXYGEN_INTERACTIVE_SVG) + set(DOXYGEN_INTERACTIVE_SVG NO) +endif() +if(NOT DEFINED DOXYGEN_DOT_GRAPH_MAX_NODES) + set(DOXYGEN_DOT_GRAPH_MAX_NODES 50) +endif() +if(NOT DEFINED DOXYGEN_MAX_DOT_GRAPH_DEPTH) + set(DOXYGEN_MAX_DOT_GRAPH_DEPTH 0) +endif() +if(NOT DEFINED DOXYGEN_DOT_TRANSPARENT) + set(DOXYGEN_DOT_TRANSPARENT NO) +endif() +if(NOT DEFINED DOXYGEN_DOT_MULTI_TARGETS) + set(DOXYGEN_DOT_MULTI_TARGETS NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_LEGEND) + set(DOXYGEN_GENERATE_LEGEND YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_CLEANUP) + set(DOXYGEN_DOT_CLEANUP YES) +endif() diff --git a/wound-wait/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake b/wound-wait/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake new file mode 100644 index 00000000..278ef39e --- /dev/null +++ b/wound-wait/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake @@ -0,0 +1,88 @@ +set(CMAKE_CXX_COMPILER "/usr/bin/c++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "GNU") +set(CMAKE_CXX_COMPILER_VERSION "9.4.0") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_CXX_COMPILER_AR "/usr/bin/gcc-ar-9") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/gcc-ranlib-9") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCXX 1) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW ) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/wound-wait/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin b/wound-wait/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin new file mode 100755 index 0000000000000000000000000000000000000000..156cfcfc782ba2dc2f291ca842e4a4516fe2c356 GIT binary patch literal 16560 zcmeHOZ)_Y#6`%9j$)!!smoyvn%vnwdyOtmo7lvVrpwuPwvXOF z?)Io%(NJWFI0cgkRnUGwDn+15d};Xrp8!W`(@F?vgj9;4ULUuER;5=OoERY94~Tj#n5l!?6b&9!;ua#J-b(4kCRM{I=sHkOR#BOG z#%tt&k@=cGjXb(=g7g^edKjC9R;9Pl=|qjSMtyuDiO|-KSqux#soiM zil-YjWkoQ$^@d5$jXk8th(0hKecej_JO1uvJx!VsVHe(`Xu-(-?gKp;7pi|d;BG!b z{#NRT5XGO7!Yg)X(jy&vcW08VnRKo^**Y2SXzkdmm-6}^=^ERGK5$I+4Gak|Gm9LB zQTD|~Dr5cgv-h1U#vXj`#^jmevtRqwV*@`q_5|BNpD2R~^?68O8T04^Wz_Y5268l( z0WYS0oR!21Ut!?2I(1us+faue1Wv2NkFLPq3jDk4$P0+yD2A&;nC9qY!W>KI5}EYF zDJWu(H*e#4>>$5j<9QAszi8v>R)@5gya;#^@FL(vz>9zv0WShx1iT3R zQxW)6^X-2#rY{AI(@j6$Erjv8S*xM?k}>^U;JnnY?t2R8tJOQd4$!<^pgfemCrdp- zmfPRxuUve@LfF4( zZ35Q=m9zv0WShx1iT1%5%415MZk-I7lHqi2>2Xt8-?f}=skR(1n=qcV`j2o6_2-t zPhcn{pBPCWhy4Ob__q2#fbVGWJ=gr3)oKB75%6)qz(Tb;40r|b8Nl$BYV{?+rvY2& zr5L^&#pHYVi11B@d|TJ94xEKLY``0eB-tQvU}lE0A3QoP;ap1L(R87 z6nIn|+;ZT(@82O`L!$ou@EK+~$YVmA7JT+YoBEK51w*GAy4S5b367x%e;J6!;PWx4 zPXUVFVCYOkf3W3?{#a0(X^aJTexa!+*mi1_5e!eS?h8h8!EiL#77gy~3Tj=!mabr^ zD;SXP7k>%rp9eeM`#B7xm%Ipg5%415MZk-I7XdE3dANt22vBVv`=z1RRqWpw_}!g*aRvQ+q<30EcaGbwHM+f zDR?6*+doh3g*U^p%yERrK3RU5>i&+m9F2;lV;iQGHAnH_ zMhOmWB=hEYCO?wMm`N*NESZV&q!`U-3z?LaO6uXZj`sROcw{7PCW^(xl$pv|#VIjX zOk`7LvYgFMfr_nUf~4gT?LL%vFx5Rg+zpP>nN%^_)vu2h3c~zoyuBlx8_S!vKe>?& zOA`L!2FtxiqK9H;Y@o-4QzlN^Nn!SUWFUH|zuQ?OkFx*;=XlJRK^BajBf{*9AMT3A z&BMLDM`MHLV6-b9L#y%-%xI}Buks%sdr2h|R)STQ&do$3j)OBMN~yy!AnQCSV(vVxOW>D2o`;N;nuKp0c_5jWf!9+L zG}b1PpwA_xuLhmc;5-;lWYeS29PBq8;wf|(@L3qd?%DG%mvOxfQxxuWX%KE&HWt=5J_V2#_ zuRuLs6W8NUnoNZJJV>nc#d*Z9!pE+!ksc$PV;wFtKIPKq^)n;Ot)%}gmwtp481eVp zp4|4Hb?NhZoROcG*@k=kewXw){z4;3LY!arVBP=xjQe}Y+BNJXH|o>-r85i0HaB0|z_3fT{_HUC_` z2^qA-{(1csB7OG5@^m>|6n-F(Bk>x~`gheBm0^85^4PJ9M%W-tY@Ej!Qf?35|M343 eZo5OD2JQ}*arVoyxD2hQpA0LBwJrr$QT!cqBtQ)S literal 0 HcmV?d00001 diff --git a/wound-wait/build/CMakeFiles/3.17.0/CMakeSystem.cmake b/wound-wait/build/CMakeFiles/3.17.0/CMakeSystem.cmake new file mode 100644 index 00000000..0fd1f759 --- /dev/null +++ b/wound-wait/build/CMakeFiles/3.17.0/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-5.4.0-113-generic") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "5.4.0-113-generic") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Linux-5.4.0-113-generic") +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_VERSION "5.4.0-113-generic") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/wound-wait/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp b/wound-wait/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 00000000..69cfdba6 --- /dev/null +++ b/wound-wait/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,660 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_dialect_default = "INFO" ":" "dialect_default[" +#if CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} diff --git a/wound-wait/build/CMakeFiles/CMakeError.log b/wound-wait/build/CMakeFiles/CMakeError.log new file mode 100644 index 00000000..6ff9b6ee --- /dev/null +++ b/wound-wait/build/CMakeFiles/CMakeError.log @@ -0,0 +1,50 @@ +Performing C++ SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output: +Change Dir: /home/tngngn/tccbench/w-w/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_3bac9 && [1/2] Building CXX object CMakeFiles/cmTC_3bac9.dir/src.cxx.o +[2/2] Linking CXX executable cmTC_3bac9 +FAILED: cmTC_3bac9 +: && /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD CMakeFiles/cmTC_3bac9.dir/src.cxx.o -o cmTC_3bac9 && : +/usr/bin/ld: CMakeFiles/cmTC_3bac9.dir/src.cxx.o: in function `main': +src.cxx:(.text+0x46): undefined reference to `pthread_create' +/usr/bin/ld: src.cxx:(.text+0x52): undefined reference to `pthread_detach' +/usr/bin/ld: src.cxx:(.text+0x5e): undefined reference to `pthread_cancel' +/usr/bin/ld: src.cxx:(.text+0x6f): undefined reference to `pthread_join' +collect2: error: ld returned 1 exit status +ninja: build stopped: subcommand failed. + + +Source file was: +#include + +void* test_func(void* data) +{ + return data; +} + +int main(void) +{ + pthread_t thread; + pthread_create(&thread, NULL, test_func, NULL); + pthread_detach(thread); + pthread_cancel(thread); + pthread_join(thread, NULL); + pthread_atfork(NULL, NULL, NULL); + pthread_exit(NULL); + + return 0; +} + +Determining if the function pthread_create exists in the pthreads failed with the following output: +Change Dir: /home/tngngn/tccbench/w-w/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_dc0cf && [1/2] Building CXX object CMakeFiles/cmTC_dc0cf.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_dc0cf +FAILED: cmTC_dc0cf +: && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_dc0cf.dir/CheckFunctionExists.cxx.o -o cmTC_dc0cf -lpthreads && : +/usr/bin/ld: -lpthreads が見つかりません +collect2: error: ld returned 1 exit status +ninja: build stopped: subcommand failed. + + + diff --git a/wound-wait/build/CMakeFiles/CMakeOutput.log b/wound-wait/build/CMakeFiles/CMakeOutput.log new file mode 100644 index 00000000..76791b93 --- /dev/null +++ b/wound-wait/build/CMakeFiles/CMakeOutput.log @@ -0,0 +1,235 @@ +The system is: Linux - 5.4.0-113-generic - x86_64 +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: /usr/bin/c++ +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" + +The CXX compiler identification is GNU, found in "/home/tngngn/tccbench/w-w/build/CMakeFiles/3.17.0/CompilerIdCXX/a.out" + +Determining if the CXX compiler works passed with the following output: +Change Dir: /home/tngngn/tccbench/w-w/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_52806 && [1/2] Building CXX object CMakeFiles/cmTC_52806.dir/testCXXCompiler.cxx.o +[2/2] Linking CXX executable cmTC_52806 + + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: /home/tngngn/tccbench/w-w/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_5ce5b && [1/2] Building CXX object CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cci25DEe.s +GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9" +ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include" +#include "..." search starts here: +#include <...> search starts here: + /usr/include/c++/9 + /usr/include/x86_64-linux-gnu/c++/9 + /usr/include/c++/9/backward + /usr/lib/gcc/x86_64-linux-gnu/9/include + /usr/local/include + /usr/include/x86_64-linux-gnu + /usr/include +End of search list. +GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + as -v --64 -o CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o /tmp/cci25DEe.s +GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34 +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +[2/2] Linking CXX executable cmTC_5ce5b +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_5ce5b' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccQ2ZfRx.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_5ce5b /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_5ce5b' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/usr/include/c++/9] + add: [/usr/include/x86_64-linux-gnu/c++/9] + add: [/usr/include/c++/9/backward] + add: [/usr/lib/gcc/x86_64-linux-gnu/9/include] + add: [/usr/local/include] + add: [/usr/include/x86_64-linux-gnu] + add: [/usr/include] + end of search list found + collapse include dir [/usr/include/c++/9] ==> [/usr/include/c++/9] + collapse include dir [/usr/include/x86_64-linux-gnu/c++/9] ==> [/usr/include/x86_64-linux-gnu/c++/9] + collapse include dir [/usr/include/c++/9/backward] ==> [/usr/include/c++/9/backward] + collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/9/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/9/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/tngngn/tccbench/w-w/build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/local/bin/ninja cmTC_5ce5b && [1/2] Building CXX object CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cci25DEe.s] + ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9"] + ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/include/c++/9] + ignore line: [ /usr/include/x86_64-linux-gnu/c++/9] + ignore line: [ /usr/include/c++/9/backward] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/include/x86_64-linux-gnu] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o /tmp/cci25DEe.s] + ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [[2/2] Linking CXX executable cmTC_5ce5b] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_5ce5b' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccQ2ZfRx.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_5ce5b /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccQ2ZfRx.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--as-needed] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-o] ==> ignore + arg [cmTC_5ce5b] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] + arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] + arg [CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] ==> ignore + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9] ==> [/usr/lib/gcc/x86_64-linux-gnu/9] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> [/usr/lib] + implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc] + implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] + implicit fwks: [] + + +Determining if the include file pthread.h exists passed with the following output: +Change Dir: /home/tngngn/tccbench/w-w/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_23fa3 && [1/2] Building CXX object CMakeFiles/cmTC_23fa3.dir/CheckIncludeFile.cxx.o +[2/2] Linking CXX executable cmTC_23fa3 + + + +Determining if the function pthread_create exists in the pthread passed with the following output: +Change Dir: /home/tngngn/tccbench/w-w/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_011f0 && [1/2] Building CXX object CMakeFiles/cmTC_011f0.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_011f0 + + + diff --git a/wound-wait/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx b/wound-wait/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx new file mode 100644 index 00000000..13435e07 --- /dev/null +++ b/wound-wait/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx @@ -0,0 +1,28 @@ +#ifdef CHECK_FUNCTION_EXISTS + +# ifdef __cplusplus +extern "C" +# endif + char + CHECK_FUNCTION_EXISTS(void); +# ifdef __CLASSIC_C__ +int main() +{ + int ac; + char* av[]; +# else +int main(int ac, char* av[]) +{ +# endif + CHECK_FUNCTION_EXISTS(); + if (ac > 1000) { + return *av[0]; + } + return 0; +} + +#else /* CHECK_FUNCTION_EXISTS */ + +# error "CHECK_FUNCTION_EXISTS has to specify the function" + +#endif /* CHECK_FUNCTION_EXISTS */ diff --git a/wound-wait/build/CMakeFiles/TargetDirectories.txt b/wound-wait/build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 00000000..9f92b9b4 --- /dev/null +++ b/wound-wait/build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +/home/tngngn/tccbench/w-w/build/CMakeFiles/rebuild_cache.dir +/home/tngngn/tccbench/w-w/build/CMakeFiles/edit_cache.dir +/home/tngngn/tccbench/w-w/build/CMakeFiles/ss2pl.exe.dir diff --git a/wound-wait/build/CMakeFiles/cmake.check_cache b/wound-wait/build/CMakeFiles/cmake.check_cache new file mode 100644 index 00000000..3dccd731 --- /dev/null +++ b/wound-wait/build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/wound-wait/build/build.ninja b/wound-wait/build/build.ninja new file mode 100644 index 00000000..35fca374 --- /dev/null +++ b/wound-wait/build/build.ninja @@ -0,0 +1,186 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.17 + +# This file contains all the build statements describing the +# compilation DAG. + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# +# Which is the root file. +# ============================================================================= + +# ============================================================================= +# Project: ccbench_ss2pl +# Configurations: Release +# ============================================================================= + +############################################# +# Minimal version of Ninja required by this file + +ninja_required_version = 1.5 + + +############################################# +# Set configuration variable for custom commands. + +CONFIGURATION = Release +# ============================================================================= +# Include auxiliary files. + + +############################################# +# Include rules file. + +include rules.ninja + + +############################################# +# Utility command for rebuild_cache + +build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/tccbench/w-w/build && /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/tccbench/w-w -B/home/tngngn/tccbench/w-w/build + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build rebuild_cache: phony CMakeFiles/rebuild_cache.util + + +############################################# +# Utility command for edit_cache + +build CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/tccbench/w-w/build && /usr/local/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. + DESC = No interactive CMake dialog available... + restat = 1 + +build edit_cache: phony CMakeFiles/edit_cache.util + +# ============================================================================= +# Object build statements for EXECUTABLE target ss2pl.exe + + +############################################# +# Order-only phony target for ss2pl.exe + +build cmake_object_order_depends_target_ss2pl.exe_Release: phony || CMakeFiles/ss2pl.exe.dir + +build CMakeFiles/ss2pl.exe.dir/home/tngngn/tccbench/common/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Release /home/tngngn/tccbench/common/result.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/home/tngngn/tccbench/common/result.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir/home/tngngn/tccbench/common + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/home/tngngn/tccbench/common/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Release /home/tngngn/tccbench/common/util.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/home/tngngn/tccbench/common/util.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir/home/tngngn/tccbench/common + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../result.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/result.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../ss2pl.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/transaction.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../transaction.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/transaction.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../util.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/util.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + + +# ============================================================================= +# Link build statements for EXECUTABLE target ss2pl.exe + + +############################################# +# Link the executable ss2pl.exe + +build ss2pl.exe: CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Release CMakeFiles/ss2pl.exe.dir/home/tngngn/tccbench/common/result.cc.o CMakeFiles/ss2pl.exe.dir/home/tngngn/tccbench/common/util.cc.o CMakeFiles/ss2pl.exe.dir/result.cc.o CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o CMakeFiles/ss2pl.exe.dir/transaction.cc.o CMakeFiles/ss2pl.exe.dir/util.cc.o | /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a + FLAGS = -O3 -DNDEBUG + LINK_LIBRARIES = /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a -lpthread + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + POST_BUILD = : + PRE_LINK = : + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_FILE = ss2pl.exe + TARGET_PDB = ss2pl.exe.pdb + +# ============================================================================= +# Target aliases. + +# ============================================================================= +# Folder targets. + +# ============================================================================= + +############################################# +# Folder: /home/tngngn/tccbench/w-w/build + +build all: phony ss2pl.exe + +# ============================================================================= +# Built-in targets + + +############################################# +# Re-run CMake if any of its inputs changed. + +build build.ninja: RERUN_CMAKE | ../CMakeLists.txt /home/tngngn/tccbench/cmake/CompileOptions.cmake /home/tngngn/tccbench/cmake/Findgflags.cmake /home/tngngn/tccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx + pool = console + + +############################################# +# A missing CMake input file is not an error. + +build ../CMakeLists.txt /home/tngngn/tccbench/cmake/CompileOptions.cmake /home/tngngn/tccbench/cmake/Findgflags.cmake /home/tngngn/tccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx: phony + + +############################################# +# Clean all the built files. + +build clean: CLEAN + + +############################################# +# Print all primary targets available. + +build help: HELP + + +############################################# +# Make the all target the default. + +default all diff --git a/wound-wait/build/cmake_install.cmake b/wound-wait/build/cmake_install.cmake new file mode 100644 index 00000000..cf48223a --- /dev/null +++ b/wound-wait/build/cmake_install.cmake @@ -0,0 +1,49 @@ +# Install script for directory: /home/tngngn/tccbench/w-w + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "/home/tngngn/tccbench/w-w/build/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/wound-wait/build/rules.ninja b/wound-wait/build/rules.ninja new file mode 100644 index 00000000..8867ea69 --- /dev/null +++ b/wound-wait/build/rules.ninja @@ -0,0 +1,64 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.17 + +# This file contains all the rules used to get the outputs files +# built from the input files. +# It is included in the main 'build.ninja'. + +# ============================================================================= +# Project: ccbench_ss2pl +# Configurations: Release +# ============================================================================= +# ============================================================================= + +############################################# +# Rule for running custom commands. + +rule CUSTOM_COMMAND + command = $COMMAND + description = $DESC + + +############################################# +# Rule for compiling CXX files. + +rule CXX_COMPILER__ss2pl.2eexe_Release + depfile = $DEP_FILE + deps = gcc + command = /usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building CXX object $out + + +############################################# +# Rule for linking CXX executable. + +rule CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Release + command = $PRE_LINK && /usr/bin/c++ $FLAGS $LINK_FLAGS $in -o $TARGET_FILE $LINK_PATH $LINK_LIBRARIES && $POST_BUILD + description = Linking CXX executable $TARGET_FILE + restat = $RESTAT + + +############################################# +# Rule for re-running cmake. + +rule RERUN_CMAKE + command = /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/tccbench/w-w -B/home/tngngn/tccbench/w-w/build + description = Re-running CMake... + generator = 1 + + +############################################# +# Rule for cleaning all built files. + +rule CLEAN + command = /usr/local/bin/ninja $FILE_ARG -t clean $TARGETS + description = Cleaning all built files... + + +############################################# +# Rule for printing all primary targets available. + +rule HELP + command = /usr/local/bin/ninja -t targets + description = All primary targets available: + diff --git a/wound-wait/include/common.hh b/wound-wait/include/common.hh new file mode 100644 index 00000000..579055ef --- /dev/null +++ b/wound-wait/include/common.hh @@ -0,0 +1,57 @@ +#pragma once + +#include + +#include "../../include/cache_line_size.hh" +#include "../../include/int64byte.hh" +#include "../../include/masstree_wrapper.hh" +#include "tuple.hh" + +#include "gflags/gflags.h" +#include "glog/logging.h" + +#ifdef GLOBAL_VALUE_DEFINE +#define GLOBAL + +#if MASSTREE_USE +alignas(CACHE_LINE_SIZE) GLOBAL MasstreeWrapper MT; +#endif + +#else +#define GLOBAL extern + +#if MASSTREE_USE +alignas(CACHE_LINE_SIZE) GLOBAL MasstreeWrapper MT; +#endif + +#endif + +#ifdef GLOBAL_VALUE_DEFINE +DEFINE_uint64(clocks_per_us, 2100, + "CPU_MHz. Use this info for measuring time."); +DEFINE_uint64(extime, 3, "Execution time[sec]."); +DEFINE_uint64(max_ope, 10, + "Total number of operations per single transaction."); +DEFINE_bool(rmw, false, + "True means read modify write, false means blind write."); +DEFINE_uint64(rratio, 50, "read ratio of single transaction."); +DEFINE_uint64(thread_num, 10, "Total number of worker threads."); +DEFINE_uint64(tuple_num, 1000000, "Total number of records."); +DEFINE_bool(ycsb, true, + "True uses zipf_skew, false uses faster random generator."); +DEFINE_double(zipf_skew, 0, "zipf skew. 0 ~ 0.999..."); +#else +DECLARE_uint64(clocks_per_us); +DECLARE_uint64(extime); +DECLARE_uint64(max_ope); +DECLARE_bool(rmw); +DECLARE_uint64(rratio); +DECLARE_uint64(thread_num); +DECLARE_uint64(tuple_num); +DECLARE_bool(ycsb); +DECLARE_double(zipf_skew); +#endif + +alignas(CACHE_LINE_SIZE) GLOBAL Tuple *Table; +alignas(CACHE_LINE_SIZE) GLOBAL int thread_stats[224]; +alignas(CACHE_LINE_SIZE) GLOBAL int thread_timestamp[224]; diff --git a/wound-wait/include/result.hh b/wound-wait/include/result.hh new file mode 100644 index 00000000..26dd8285 --- /dev/null +++ b/wound-wait/include/result.hh @@ -0,0 +1,9 @@ +#pragma once + +#include + +#include "../../include/result.hh" + +extern std::vector SS2PLResult; + +extern void initResult(); diff --git a/wound-wait/include/ss2pl_op_element.hh b/wound-wait/include/ss2pl_op_element.hh new file mode 100644 index 00000000..6162c229 --- /dev/null +++ b/wound-wait/include/ss2pl_op_element.hh @@ -0,0 +1,18 @@ +#pragma once + +#include "../../include/op_element.hh" + +template +class SetElement : public OpElement { +public: + using OpElement::OpElement; + + char val_[VAL_SIZE]; + + SetElement(uint64_t key, T *rcdptr) : OpElement::OpElement(key, rcdptr) {} + + SetElement(uint64_t key, T *rcdptr, char *val) + : OpElement::OpElement(key, rcdptr) { + memcpy(this->val_, val, VAL_SIZE); + } +}; diff --git a/wound-wait/include/transaction.hh b/wound-wait/include/transaction.hh new file mode 100644 index 00000000..5431f352 --- /dev/null +++ b/wound-wait/include/transaction.hh @@ -0,0 +1,65 @@ +#pragma once + +#include + +#include "../../include/procedure.hh" +#include "../../include/result.hh" +#include "../../include/rwlock.hh" +#include "../../include/string.hh" +#include "../../include/util.hh" +#include "ss2pl_op_element.hh" +#include "tuple.hh" + +enum class TransactionStatus : uint8_t { + inFlight, + committed, + aborted, +}; + +extern void writeValGenerator(char *writeVal, size_t val_size, size_t thid); + +class TxExecutor { +public: + alignas(CACHE_LINE_SIZE) int thid_; + std::vector r_lock_list_; + std::vector w_lock_list_; + TransactionStatus status_ = TransactionStatus::inFlight; + Result *sres_; + vector > read_set_; + vector > write_set_; + vector pro_set_; + + char write_val_[VAL_SIZE]; + char return_val_[VAL_SIZE]; + + TxExecutor(int thid, Result *sres) : thid_(thid), sres_(sres) { + read_set_.reserve(FLAGS_max_ope); + write_set_.reserve(FLAGS_max_ope); + pro_set_.reserve(FLAGS_max_ope); + r_lock_list_.reserve(FLAGS_max_ope); + w_lock_list_.reserve(FLAGS_max_ope); + + genStringRepeatedNumber(write_val_, VAL_SIZE, thid); + } + + SetElement *searchReadSet(uint64_t key); + + SetElement *searchWriteSet(uint64_t key); + + void begin(); + + void read(uint64_t key); + + void write(uint64_t key); + + void readWrite(uint64_t key); + + void commit(); + + void abort(); + + void unlockList(); + + // inline + Tuple *get_tuple(Tuple *table, uint64_t key) { return &table[key]; } +}; diff --git a/wound-wait/include/tuple.hh b/wound-wait/include/tuple.hh new file mode 100644 index 00000000..de240080 --- /dev/null +++ b/wound-wait/include/tuple.hh @@ -0,0 +1,19 @@ +#pragma once + +#include +#include + +#include "../../include/cache_line_size.hh" +#include "../../include/inline.hh" +#include "../../include/rwlock.hh" + +using namespace std; + +class Tuple { +public: + alignas(CACHE_LINE_SIZE) RWLock lock_; + char val_[VAL_SIZE]; + int writer = 0; + int readers[224] = {0}; + int writers[224] = {0}; +}; diff --git a/wound-wait/include/util.hh b/wound-wait/include/util.hh new file mode 100644 index 00000000..547508fa --- /dev/null +++ b/wound-wait/include/util.hh @@ -0,0 +1,13 @@ +#pragma once + +extern void chkArg(); + +extern void displayDB(); + +extern void displayParameter(); + +extern void makeDB(); + +extern void partTableInit([[maybe_unused]] size_t thid, uint64_t start, uint64_t end); + +extern void ShowOptParameters(); diff --git a/wound-wait/result.cc b/wound-wait/result.cc new file mode 100644 index 00000000..ff17dd8d --- /dev/null +++ b/wound-wait/result.cc @@ -0,0 +1,11 @@ +#include "include/result.hh" +#include "include/common.hh" + +#include "../include/cache_line_size.hh" +#include "../include/result.hh" + +using namespace std; + +alignas(CACHE_LINE_SIZE) std::vector SS2PLResult; + +void initResult() { SS2PLResult.resize(FLAGS_thread_num); } diff --git a/wound-wait/script/test_cache_ana.sh b/wound-wait/script/test_cache_ana.sh new file mode 100755 index 00000000..df6753dd --- /dev/null +++ b/wound-wait/script/test_cache_ana.sh @@ -0,0 +1,227 @@ +#test_cache_ana.sh(ss2pl) +maxope=10 +thread=24 +cpu_mhz=2400 +extime=3 +epoch=5 + +tuple=100 +workload=0 +result=result_ss2pl_r10_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=1 +result=result_ss2pl_r8_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=2 +result=result_ss2pl_r5_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=3 +result=result_ss2pl_r2_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=4 +result=result_ss2pl_r0_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + diff --git a/wound-wait/script/test_t1k.sh b/wound-wait/script/test_t1k.sh new file mode 100755 index 00000000..73dbfec1 --- /dev/null +++ b/wound-wait/script/test_t1k.sh @@ -0,0 +1,382 @@ +#test_t1k.sh(ss2pl) +tuple=1000 +maxope=10 +cpu_mhz=2400 +extime=3 +epoch=5 + +workload=0 +result=result_ss2pl_r10_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=1 +result=result_ss2pl_r8_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=2 +result=result_ss2pl_r5_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=3 +result=result_ss2pl_r2_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=4 +result=result_ss2pl_r0_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + diff --git a/wound-wait/script/test_t1m.sh b/wound-wait/script/test_t1m.sh new file mode 100755 index 00000000..9b30a188 --- /dev/null +++ b/wound-wait/script/test_t1m.sh @@ -0,0 +1,382 @@ +#test_t1m.sh(ss2pl) +tuple=1000000 +maxope=10 +cpu_mhz=2400 +extime=3 +epoch=5 + +workload=0 +result=result_ss2pl_r10_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=1 +result=result_ss2pl_r8_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=2 +result=result_ss2pl_r5_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=3 +result=result_ss2pl_r2_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=4 +result=result_ss2pl_r0_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + diff --git a/wound-wait/script/test_t200.sh b/wound-wait/script/test_t200.sh new file mode 100755 index 00000000..ed333bb7 --- /dev/null +++ b/wound-wait/script/test_t200.sh @@ -0,0 +1,382 @@ +#test_t200.sh(ss2pl) +tuple=200 +maxope=10 +cpu_mhz=2400 +extime=3 +epoch=5 + +workload=0 +result=result_ss2pl_r10_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=1 +result=result_ss2pl_r8_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=2 +result=result_ss2pl_r5_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=3 +result=result_ss2pl_r2_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=4 +result=result_ss2pl_r0_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + diff --git a/wound-wait/script/tst200-1k-1m.sh b/wound-wait/script/tst200-1k-1m.sh new file mode 100755 index 00000000..c347fa88 --- /dev/null +++ b/wound-wait/script/tst200-1k-1m.sh @@ -0,0 +1,1991 @@ +#tst200-1k-1m.sh(ss2pl) +maxope=10 +rmw=off +skew=0 +ycsb=off +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +#kugiri +rratio=0 +tuple=200 +result=result_ss2pl_r0_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=20 +tuple=200 +result=result_ss2pl_r2_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=80 +tuple=200 +result=result_ss2pl_r8_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=100 +tuple=200 +result=result_ss2pl_r10_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=0 +tuple=1000 +result=result_ss2pl_r0_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=20 +tuple=1000 +result=result_ss2pl_r2_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=80 +tuple=1000 +result=result_ss2pl_r8_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=100 +tuple=1000 +result=result_ss2pl_r10_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=0 +tuple=1000000 +result=result_ss2pl_r0_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=20 +tuple=1000000 +result=result_ss2pl_r2_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=80 +tuple=1000000 +result=result_ss2pl_r8_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=100 +tuple=1000000 +result=result_ss2pl_r10_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/wound-wait/script/ycsb-xope.sh b/wound-wait/script/ycsb-xope.sh new file mode 100755 index 00000000..7398b793 --- /dev/null +++ b/wound-wait/script/ycsb-xope.sh @@ -0,0 +1,106 @@ +#ycsb-xope.sh(ss2pl) +tuple=100000000 +maxope=10 +rratio=95 +rmw=off +skew=0.8 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j KEY_SIZE=8 VAL_SIZE=4 +cd script/ + +result=result_ss2pl-dlr1_ycsbB_tuple100m_skew08_ope10-100.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + +for ((maxope=10; maxope<=100; maxope+=10)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$maxope $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done diff --git a/wound-wait/script/ycsb-xrratio.sh b/wound-wait/script/ycsb-xrratio.sh new file mode 100755 index 00000000..e4e74263 --- /dev/null +++ b/wound-wait/script/ycsb-xrratio.sh @@ -0,0 +1,102 @@ +#ycsb-xrratio.sh(ss2pl) +tuple=1000000 +maxope=10 +rratio=0 +rmw=off +skew=0.9 +ycsb=on +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +result=result_ss2pl-dlr1_tuple1m_val1k_skew09_rratio0-100.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + +for ((rratio=0; rratio<=100; rratio+=10)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$rratio $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done diff --git a/wound-wait/script/ycsb-xrs.sh b/wound-wait/script/ycsb-xrs.sh new file mode 100755 index 00000000..fb18cb42 --- /dev/null +++ b/wound-wait/script/ycsb-xrs.sh @@ -0,0 +1,118 @@ +#ycsb-xrs.sh(ss2pl) +maxope=10 +rratioary=(50 95 100) +rmw=off +skew=0.9 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j KEY_SIZE=8 VAL_SIZE=1000 +cd script/ + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50 ; then + result=result_ss2pl_ycsbA_tuple1k-100m_val1k_skew09.dat + elif test $rratio = 95 ; then + result=result_ss2pl_ycsbB_tuple1k-100m_val1k_skew09.dat + elif test $rratio = 100 ; then + result=result_ss2pl_ycsbC_tuple1k-100m_val1k_skew09.dat + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + + for ((tuple=1000; tuple<=100000000; tuple*=10)) + do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$tuple $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/wound-wait/script/ycsb-xskew.sh b/wound-wait/script/ycsb-xskew.sh new file mode 100755 index 00000000..314e6020 --- /dev/null +++ b/wound-wait/script/ycsb-xskew.sh @@ -0,0 +1,131 @@ +#ycsb-xrs.sh(ss2pl) +tuple=10000000 +maxope=16 +rratioary=(50 95) +rmw=on +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j VAL_SIZE=100 +cd script/ + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50; then + thread=28 + result=result_2pl_ycsbA_tuple10m_ope16_rmw_skew0-099_th28.dat + elif test $rratio = 95; then + thread=28 + result=result_2pl_ycsbB_tuple10m_ope16_rmw_skew0-099_th28.dat + elif test $rratio = 100; then + result=result_ss2pl_ycsbC_tuple1k_skew0-099.dat + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw skew $ycsb $cpu_mhz $extime" >> $result + ../ss2pl.exe > exp.txt + tmpStr=`grep ShowOptParameters ./exp.txt` + echo "#$tmpStr" >> $result + + for ((tmpskew = 0; tmpskew <= 105; tmpskew += 10)) + do + if test $tmpskew = 100 ; then + tmpskew=95 + fi + if test $tmpskew = 105 ; then + tmpskew=99 + fi + skew=`echo "scale=3; $tmpskew / 100.0" | bc -l | xargs printf %.2f` + + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$skew $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/wound-wait/script/ycsb-xth.sh b/wound-wait/script/ycsb-xth.sh new file mode 100755 index 00000000..1ff00ecf --- /dev/null +++ b/wound-wait/script/ycsb-xth.sh @@ -0,0 +1,124 @@ +#ycsb-xrs.sh(ss2pl) +tuple=10000000 +maxope=1 +#rratioary=(50 95 100) +rratioary=(95) +rmw=on +skew=0.99 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j VAL_SIZE=100 +cd script/ + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50 ; then + result=result_2pl_ycsbA_tuple10m_ope16_rmw_skew099.dat + elif test $rratio = 95 ; then + result=result_2pl_ycsbB_tuple10m_ope1_rmw_skew099.dat + elif test $rratio = 100 ; then + result=result_ss2pl_ycsbC_tuple10m_ope1_skew099.dat + maxope=1 + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + + for ((thread=1; thread<=25; thread+=5)) + do + if test $thread = 6 ; then + thread=5 + fi + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$thread $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/wound-wait/script/ycsb-xval.sh b/wound-wait/script/ycsb-xval.sh new file mode 100755 index 00000000..e5c64aea --- /dev/null +++ b/wound-wait/script/ycsb-xval.sh @@ -0,0 +1,122 @@ +#ycsb-xrs.sh(ss2pl) +tuple=1000000 +maxope=10 +rratioary=(95) +rmw=off +skew=0 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50; then + result=result_ss2pl_ycsbA_tuple100m_skew09_val4-1k.dat + elif test $rratio = 95; then + result=result_ss2pl_ycsbB_tuple1m_val10-100k.dat + elif test $rratio = 100; then + result=result_ss2pl_ycsbC_tuple100m_skew09_val4-1k.dat + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + + for ((val = 10; val <= 100000; val *= 10)) + do + if test $val = 104 ; then + val=100 + fi + cd ../ + make clean; make -j VAL_SIZE=$val + cd script + + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$val $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/wound-wait/script/ycsbA-xrs-cache.sh b/wound-wait/script/ycsbA-xrs-cache.sh new file mode 100755 index 00000000..61dbd5f4 --- /dev/null +++ b/wound-wait/script/ycsbA-xrs-cache.sh @@ -0,0 +1,52 @@ +#ycsbA-xrs-cache.sh(ss2pl) +maxope=10 +thread=24 +rratio=50 +skew=0 +ycsb=ON +cpu_mhz=2400 +extime=3 +epoch=5 + +result=result_ss2pl_ycsbA_tuple100-10m_cachemiss.dat +rm $result +echo "#tuple num, cache-misses, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=10000000; tuple*=10)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime" + echo "$tuple $epoch" + + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-misses,cache-references -o ss2pl-cache-ana.txt ./ss2pl.exe $tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl-cache-ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + diff --git a/wound-wait/script/ycsbA.sh b/wound-wait/script/ycsbA.sh new file mode 100755 index 00000000..c83e85f6 --- /dev/null +++ b/wound-wait/script/ycsbA.sh @@ -0,0 +1,510 @@ +#ycsbA.sh(ss2pl) +maxope=10 +rratio=50 +rmw=off +skew=0 +ycsb=on +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +tuple=500 +result=result_ss2pl_ycsbA_tuple500_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=500000 +result=result_ss2pl_ycsbA_tuple500k_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=5000000 +result=result_ss2pl_ycsbA_tuple5m_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/wound-wait/script/ycsbB.sh b/wound-wait/script/ycsbB.sh new file mode 100755 index 00000000..2a5966d9 --- /dev/null +++ b/wound-wait/script/ycsbB.sh @@ -0,0 +1,510 @@ +#ycsbB.sh(ss2pl) +maxope=10 +rratio=95 +rmw=off +skew=0 +ycsb=on +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +tuple=500 +result=result_ss2pl_ycsbB_tuple500_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=500000 +result=result_ss2pl_ycsbB_tuple500k_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=5000000 +result=result_ss2pl_ycsbB_tuple5m_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/wound-wait/script/ycsbC.sh b/wound-wait/script/ycsbC.sh new file mode 100755 index 00000000..4894481b --- /dev/null +++ b/wound-wait/script/ycsbC.sh @@ -0,0 +1,187 @@ +#ycsbC.sh(ss2pl) +#tuple=1000000000 +tuple=1000 +maxope=10 +rratio=100 +rmw=off +skew=0.9 +ycsb=on +cpu_mhz=2100 +extime=1 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +result=result_ss2pl_ycsbC_tuple1g_skew09_val1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/wound-wait/ss2pl.cc b/wound-wait/ss2pl.cc new file mode 100644 index 00000000..50a514c4 --- /dev/null +++ b/wound-wait/ss2pl.cc @@ -0,0 +1,129 @@ + +#include //isdigit, +#include +#include //strlen, +#include //syscall(SYS_gettid), +#include //syscall(SYS_gettid), +#include //syscall(SYS_gettid), +#include + +#include +#include //string +#include + +#define GLOBAL_VALUE_DEFINE + +#include "../include/atomic_wrapper.hh" +#include "../include/backoff.hh" +#include "../include/cpu.hh" +#include "../include/debug.hh" +#include "../include/fence.hh" +#include "../include/int64byte.hh" +#include "../include/masstree_wrapper.hh" +#include "../include/procedure.hh" +#include "../include/random.hh" +#include "../include/result.hh" +#include "../include/tsc.hh" +#include "../include/util.hh" +#include "../include/zipf.hh" +#include "include/common.hh" +#include "include/result.hh" +#include "include/transaction.hh" +#include "include/util.hh" + +long long int central_timestamp = 0; + +void worker(size_t thid, char &ready, const bool &start, const bool &quit) { + Result &myres = std::ref(SS2PLResult[thid]); + Xoroshiro128Plus rnd; + rnd.init(); + TxExecutor trans(thid, (Result *) &myres); + FastZipf zipf(&rnd, FLAGS_zipf_skew, FLAGS_tuple_num); + Backoff backoff(FLAGS_clocks_per_us); + +#if MASSTREE_USE + MasstreeWrapper::thread_init(int(thid)); +#endif + +#ifdef Linux + setThreadAffinity(thid); + // printf("Thread #%d: on CPU %d\n", *myid, sched_getcpu()); + // printf("sysconf(_SC_NPROCESSORS_CONF) %ld\n", + // sysconf(_SC_NPROCESSORS_CONF)); +#endif // Linux + + storeRelease(ready, 1); + while (!loadAcquire(start)) _mm_pause(); + while (!loadAcquire(quit)) { + makeProcedure(trans.pro_set_, rnd, zipf, FLAGS_tuple_num, FLAGS_max_ope, FLAGS_thread_num, + FLAGS_rratio, FLAGS_rmw, FLAGS_ycsb, false, thid, myres); + thread_timestamp[thid] = __atomic_add_fetch(¢ral_timestamp, 1, __ATOMIC_SEQ_CST); +RETRY: + thread_stats[thid] = 0; + if (loadAcquire(quit)) break; + if (thid == 0) leaderBackoffWork(backoff, SS2PLResult); + + trans.begin(); + for (auto itr = trans.pro_set_.begin(); itr != trans.pro_set_.end(); + ++itr) { + if ((*itr).ope_ == Ope::READ) { + trans.read((*itr).key_); + } else if ((*itr).ope_ == Ope::WRITE) { + trans.write((*itr).key_); + } else if ((*itr).ope_ == Ope::READ_MODIFY_WRITE) { + trans.readWrite((*itr).key_); + } else { + ERR; + } + + if (thread_stats[thid] == 1) { + trans.status_ = TransactionStatus::aborted; + trans.abort(); + goto RETRY; + } + } + + trans.commit(); + /** + * local_commit_counts is used at ../include/backoff.hh to calcurate about + * backoff. + */ + storeRelease(myres.local_commit_counts_, + loadAcquire(myres.local_commit_counts_) + 1); + } + + return; +} + +int main(int argc, char *argv[]) try { + gflags::SetUsageMessage("2PL benchmark."); + gflags::ParseCommandLineFlags(&argc, &argv, true); + chkArg(); + makeDB(); + + alignas(CACHE_LINE_SIZE) bool start = false; + alignas(CACHE_LINE_SIZE) bool quit = false; + initResult(); + std::vector readys(FLAGS_thread_num); + std::vector thv; + for (size_t i = 0; i < FLAGS_thread_num; ++i) + thv.emplace_back(worker, i, std::ref(readys[i]), std::ref(start), + std::ref(quit)); + waitForReady(readys); + storeRelease(start, true); + for (size_t i = 0; i < FLAGS_extime; ++i) { + sleepMs(1000); + } + storeRelease(quit, true); + for (auto &th : thv) th.join(); + + for (unsigned int i = 0; i < FLAGS_thread_num; ++i) { + SS2PLResult[0].addLocalAllResult(SS2PLResult[i]); + } + ShowOptParameters(); + SS2PLResult[0].displayAllResult(FLAGS_clocks_per_us, FLAGS_extime, FLAGS_thread_num); + + return 0; +} catch (bad_alloc) { + ERR; +} diff --git a/wound-wait/transaction.cc b/wound-wait/transaction.cc new file mode 100644 index 00000000..1af4d9b2 --- /dev/null +++ b/wound-wait/transaction.cc @@ -0,0 +1,363 @@ + +#include +#include + +#include + +#include "../include/backoff.hh" +#include "../include/debug.hh" +#include "../include/procedure.hh" +#include "../include/result.hh" +#include "include/common.hh" +#include "include/transaction.hh" + +using namespace std; + +extern void display_procedure_vector(std::vector &pro); + +/** + * @brief Search xxx set + * @detail Search element of local set corresponding to given key. + * In this prototype system, the value to be updated for each worker thread + * is fixed for high performance, so it is only necessary to check the key match. + * @param Key [in] the key of key-value + * @return Corresponding element of local set + */ +inline SetElement *TxExecutor::searchReadSet(uint64_t key) { + for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) { + if ((*itr).key_ == key) return &(*itr); + } + + return nullptr; +} + +/** + * @brief Search xxx set + * @detail Search element of local set corresponding to given key. + * In this prototype system, the value to be updated for each worker thread + * is fixed for high performance, so it is only necessary to check the key match. + * @param Key [in] the key of key-value + * @return Corresponding element of local set + */ +inline SetElement *TxExecutor::searchWriteSet(uint64_t key) { + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { + if ((*itr).key_ == key) return &(*itr); + } + + return nullptr; +} + +/** + * @brief function about abort. + * Clean-up local read/write set. + * Release locks. + * @return void + */ +void TxExecutor::abort() { + /** + * Release locks + */ + unlockList(); + + /** + * Clean-up local read/write set. + */ + read_set_.clear(); + write_set_.clear(); + + ++sres_->local_abort_counts_; + +#if BACK_OFF +#if ADD_ANALYSIS + uint64_t start(rdtscp()); +#endif + + Backoff::backoff(FLAGS_clocks_per_us); + +#if ADD_ANALYSIS + sres_->local_backoff_latency_ += rdtscp() - start; +#endif + +#endif +} + +/** + * @brief success termination of transaction. + * @return void + */ +void TxExecutor::commit() { + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { + /** + * update payload. + */ + memcpy((*itr).rcdptr_->val_, write_val_, VAL_SIZE); + } + + /** + * Release locks. + */ + unlockList(); + + /** + * Clean-up local read/write set. + */ + read_set_.clear(); + write_set_.clear(); +} + +/** + * @brief Initialize function of transaction. + * Allocate timestamp. + * @return void + */ +void TxExecutor::begin() { this->status_ = TransactionStatus::inFlight; } + +/** + * @brief Transaction read function. + * @param [in] key The key of key-value + */ +void TxExecutor::read(uint64_t key) { +#if ADD_ANALYSIS + uint64_t start = rdtscp(); +#endif // ADD_ANALYSIS + + /** + * read-own-writes or re-read from local read set. + */ + if (searchWriteSet(key) || searchReadSet(key)) goto FINISH_READ; + + /** + * Search tuple from data structure. + */ + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#if ADD_ANALYSIS + ++sres_->local_tree_traversal_; +#endif +#else + tuple = get_tuple(Table, key); +#endif + + while (1) { + if (tuple->lock_.r_trylock()) { + r_lock_list_.emplace_back(&tuple->lock_); + read_set_.emplace_back(key, tuple, tuple->val_); + tuple->readers[thid_] = 1; + break; + } + else { + /** + * wound wait + */ + for (int i = 0; i < FLAGS_thread_num; i++) { + if (tuple->writers[i] > 0 && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_READ; + } + } + +FINISH_READ: + +#if ADD_ANALYSIS + sres_->local_read_latency_ += rdtscp() - start; +#endif + return; +} + +/** + * @brief transaction write operation + * @param [in] key The key of key-value + * @return void + */ +void TxExecutor::write(uint64_t key) { +#if ADD_ANALYSIS + uint64_t start = rdtscp(); +#endif + + // if it already wrote the key object once. + if (searchWriteSet(key)) goto FINISH_WRITE; + /** + * Search tuple from data structure. + */ + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#if ADD_ANALYSIS + ++sres_->local_tree_traversal_; +#endif +#else + tuple = get_tuple(Table, key); +#endif + for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { + if ((*rItr).key_ == key) { // hit + while (1) { + if (!(*rItr).rcdptr_->lock_.tryupgrade()) { + for (int i = 0; i < FLAGS_thread_num; i++) { + if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } else { + break; + } + } + + // upgrade success + // remove old element of read lock list. + tuple->readers[this->thid_] = 0; + tuple->writers[this->thid_] = 1; + for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); + ++lItr) { + if (*lItr == &((*rItr).rcdptr_->lock_)) { + write_set_.emplace_back(key, (*rItr).rcdptr_); + w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); + r_lock_list_.erase(lItr); + break; + } + } + + read_set_.erase(rItr); + goto FINISH_WRITE; + } + } + + while (1) { + if (!tuple->lock_.w_trylock()) { + /** + * wound-wait. + */ + for (int i = 0; i < FLAGS_thread_num; i++) { + if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } else { + break; + } + } + + + /** + * Register the contents to write lock list and write set. + */ + tuple->writers[thid_] = 1; + w_lock_list_.emplace_back(&tuple->lock_); + write_set_.emplace_back(key, tuple); + +FINISH_WRITE: +#if ADD_ANALYSIS + sres_->local_write_latency_ += rdtscp() - start; +#endif // ADD_ANALYSIS + return; +} + +/** + * @brief transaction readWrite (RMW) operation + */ +void TxExecutor::readWrite(uint64_t key) { + // if it already wrote the key object once. + if (searchWriteSet(key)) goto FINISH_WRITE; + /** + * Search tuple from data structure. + */ + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#if ADD_ANALYSIS + ++sres_->local_tree_traversal_; +#endif +#else + tuple = get_tuple(Table, key); +#endif + for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { + if ((*rItr).key_ == key) { // hit + while (1) { + if (!(*rItr).rcdptr_->lock_.tryupgrade()) { + for (int i = 0; i < FLAGS_thread_num; i++) { + if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } else { + break; + } + } + + // upgrade success + // remove old element of read set. + tuple->readers[this->thid_] = 0; + tuple->writers[this->thid_] = 1; + for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); + ++lItr) { + if (*lItr == &((*rItr).rcdptr_->lock_)) { + write_set_.emplace_back(key, (*rItr).rcdptr_); + w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); + r_lock_list_.erase(lItr); + break; + } + } + + read_set_.erase(rItr); + goto FINISH_WRITE; + } + } + + while (1) { + if (!tuple->lock_.w_trylock()) { + /** + * wound-wait. + */ + for (int i = 0; i < FLAGS_thread_num; i++) { + if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } else { + break; + } + } + + // read payload + memcpy(this->return_val_, tuple->val_, VAL_SIZE); + // finish read. + + /** + * Register the contents to write lock list and write set. + */ + w_lock_list_.emplace_back(&tuple->lock_); + write_set_.emplace_back(key, tuple); + +FINISH_WRITE: + return; +} + +/** + * @brief unlock and clean-up local lock set. + * @return void + */ +void TxExecutor::unlockList() { + for (auto itr = r_lock_list_.begin(); itr != r_lock_list_.end(); ++itr) + (*itr)->r_unlock(); + + for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) + (*itr).rcdptr_->readers[this->thid_] = -1; + + for (auto itr = w_lock_list_.begin(); itr != w_lock_list_.end(); ++itr) + (*itr)->w_unlock(); + + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) + (*itr).rcdptr_->writers[this->thid_] = -1; + + /** + * Clean-up local lock set. + */ + r_lock_list_.clear(); + w_lock_list_.clear(); +} diff --git a/wound-wait/util.cc b/wound-wait/util.cc new file mode 100644 index 00000000..56853473 --- /dev/null +++ b/wound-wait/util.cc @@ -0,0 +1,118 @@ + +#include +#include // syscall(SYS_gettid), +#include // syscall(SSY_gettid), +#include // syscall(SSY_gettid), + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../include/config.hh" +#include "../include/debug.hh" +#include "../include/masstree_wrapper.hh" +#include "../include/procedure.hh" +#include "../include/random.hh" +#include "../include/result.hh" +#include "../include/zipf.hh" +#include "include/common.hh" +#include "include/tuple.hh" +#include "include/util.hh" + +void chkArg() { + displayParameter(); + + if (FLAGS_rratio > 100) { + ERR; + } + + if (FLAGS_clocks_per_us < 100) { + cout << "CPU_MHZ is less than 100. are your really?" << endl; + ERR; + } +} + +void displayDB() { + Tuple *tuple; + + for (unsigned int i = 0; i < FLAGS_tuple_num; i++) { + tuple = &Table[i]; + cout << "------------------------------" << endl; // - 30 + cout << "key: " << i << endl; + cout << "val: " << tuple->val_ << endl; + } +} + +void displayParameter() { + cout << "#FLAGS_clocks_per_us:\t" << FLAGS_clocks_per_us << endl; + cout << "#FLAGS_extime:\t\t" << FLAGS_extime << endl; + cout << "#FLAGS_max_ope:\t\t" << FLAGS_max_ope << endl; + cout << "#FLAGS_rmw:\t\t" << FLAGS_rmw << endl; + cout << "#FLAGS_rratio:\t\t" << FLAGS_rratio << endl; + cout << "#FLAGS_thread_num:\t" << FLAGS_thread_num << endl; + cout << "#FLAGS_tuple_num:\t" << FLAGS_tuple_num << endl; + cout << "#FLAGS_ycsb:\t\t" << FLAGS_ycsb << endl; + cout << "#FLAGS_zipf_skew:\t" << FLAGS_zipf_skew << endl; +} + +void partTableInit([[maybe_unused]] size_t thid, uint64_t start, uint64_t end) { + // printf("partTableInit(...): thid %zu : %lu : %lu\n", thid, start, end); +#if MASSTREE_USE + MasstreeWrapper::thread_init(thid); +#endif + + for (auto i = start; i <= end; ++i) { + Table[i].val_[0] = 'a'; + Table[i].val_[1] = '\0'; + +#if MASSTREE_USE + MT.insert_value(i, &Table[i]); +#endif + } +} + +void makeDB() { + if (posix_memalign((void **) &Table, PAGE_SIZE, FLAGS_tuple_num * sizeof(Tuple)) != + 0) + ERR; +#if dbs11 + if (madvise((void *)Table, (FLAGS_tuple_num) * sizeof(Tuple), MADV_HUGEPAGE) != 0) + ERR; +#endif + + // maxthread は masstree 構築の最大並行スレッド数。 + // 初期値はハードウェア最大値。 + // FLAGS_tuple_num を均等に分割できる最大スレッド数を求める。 + size_t maxthread = decideParallelBuildNumber(FLAGS_tuple_num); + + std::vector thv; + // cout << "masstree 並列構築スレッド数 " << maxthread << endl; + for (size_t i = 0; i < maxthread; ++i) { + thv.emplace_back(partTableInit, i, i * (FLAGS_tuple_num / maxthread), + (i + 1) * (FLAGS_tuple_num / maxthread) - 1); + } + for (auto &th : thv) th.join(); +} + +void +ShowOptParameters() { + cout << "#ShowOptParameters()" + << ": ADD_ANALYSIS " << ADD_ANALYSIS + << ": BACK_OFF " << BACK_OFF + #ifdef DLR0 + << ": DLR0 " + #elif defined DLR1 + << ": DLR1 " + #endif + << ": MASSTREE_USE " << MASSTREE_USE + << ": KEY_SIZE " << KEY_SIZE + << ": KEY_SORT " << KEY_SORT + << ": VAL_SIZE " << VAL_SIZE + << endl; +} From f5744a545825f4c94a765ae6531919cd8e151767 Mon Sep 17 00:00:00 2001 From: tngngn Date: Fri, 6 Jan 2023 13:06:24 +0900 Subject: [PATCH 03/14] plor base --- plor/include/tuple.hh | 12 +- plor/transaction.cc | 144 +- ww/CMakeLists.txt | 80 + ww/README.md | 63 + ww/build/.ninja_deps | Bin 0 -> 34528 bytes ww/build/.ninja_log | 8 + ww/build/CMakeCache.txt | 473 ++++ ww/build/CMakeDoxyfile.in | 280 +++ ww/build/CMakeDoxygenDefaults.cmake | 672 ++++++ .../CMakeFiles/3.17.0/CMakeCXXCompiler.cmake | 88 + .../3.17.0/CMakeDetermineCompilerABI_CXX.bin | Bin 0 -> 16560 bytes ww/build/CMakeFiles/3.17.0/CMakeSystem.cmake | 15 + .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 660 ++++++ ww/build/CMakeFiles/CMakeError.log | 50 + ww/build/CMakeFiles/CMakeOutput.log | 235 ++ .../CheckFunctionExists.cxx | 28 + ww/build/CMakeFiles/TargetDirectories.txt | 3 + ww/build/CMakeFiles/cmake.check_cache | 1 + ww/build/build.ninja | 186 ++ ww/build/cmake_install.cmake | 49 + ww/build/rules.ninja | 64 + ww/include/common.hh | 57 + ww/include/result.hh | 9 + ww/include/ss2pl_op_element.hh | 18 + ww/include/transaction.hh | 65 + ww/include/tuple.hh | 25 + ww/include/util.hh | 13 + ww/result.cc | 11 + ww/script/test_cache_ana.sh | 227 ++ ww/script/test_t1k.sh | 382 ++++ ww/script/test_t1m.sh | 382 ++++ ww/script/test_t200.sh | 382 ++++ ww/script/tst200-1k-1m.sh | 1991 +++++++++++++++++ ww/script/ycsb-xope.sh | 106 + ww/script/ycsb-xrratio.sh | 102 + ww/script/ycsb-xrs.sh | 118 + ww/script/ycsb-xskew.sh | 131 ++ ww/script/ycsb-xth.sh | 124 + ww/script/ycsb-xval.sh | 122 + ww/script/ycsbA-xrs-cache.sh | 52 + ww/script/ycsbA.sh | 510 +++++ ww/script/ycsbB.sh | 510 +++++ ww/script/ycsbC.sh | 187 ++ ww/ss2pl.cc | 129 ++ ww/test/CMakeLists.txt | 76 + ww/test/make_db_test.cpp | 40 + ww/transaction.cc | 364 +++ ww/util.cc | 117 + 48 files changed, 9326 insertions(+), 35 deletions(-) create mode 100644 ww/CMakeLists.txt create mode 100644 ww/README.md create mode 100644 ww/build/.ninja_deps create mode 100644 ww/build/.ninja_log create mode 100644 ww/build/CMakeCache.txt create mode 100644 ww/build/CMakeDoxyfile.in create mode 100644 ww/build/CMakeDoxygenDefaults.cmake create mode 100644 ww/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake create mode 100755 ww/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin create mode 100644 ww/build/CMakeFiles/3.17.0/CMakeSystem.cmake create mode 100644 ww/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp create mode 100644 ww/build/CMakeFiles/CMakeError.log create mode 100644 ww/build/CMakeFiles/CMakeOutput.log create mode 100644 ww/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx create mode 100644 ww/build/CMakeFiles/TargetDirectories.txt create mode 100644 ww/build/CMakeFiles/cmake.check_cache create mode 100644 ww/build/build.ninja create mode 100644 ww/build/cmake_install.cmake create mode 100644 ww/build/rules.ninja create mode 100644 ww/include/common.hh create mode 100644 ww/include/result.hh create mode 100644 ww/include/ss2pl_op_element.hh create mode 100644 ww/include/transaction.hh create mode 100644 ww/include/tuple.hh create mode 100644 ww/include/util.hh create mode 100644 ww/result.cc create mode 100755 ww/script/test_cache_ana.sh create mode 100755 ww/script/test_t1k.sh create mode 100755 ww/script/test_t1m.sh create mode 100755 ww/script/test_t200.sh create mode 100755 ww/script/tst200-1k-1m.sh create mode 100755 ww/script/ycsb-xope.sh create mode 100755 ww/script/ycsb-xrratio.sh create mode 100755 ww/script/ycsb-xrs.sh create mode 100755 ww/script/ycsb-xskew.sh create mode 100755 ww/script/ycsb-xth.sh create mode 100755 ww/script/ycsb-xval.sh create mode 100755 ww/script/ycsbA-xrs-cache.sh create mode 100755 ww/script/ycsbA.sh create mode 100755 ww/script/ycsbB.sh create mode 100755 ww/script/ycsbC.sh create mode 100644 ww/ss2pl.cc create mode 100644 ww/test/CMakeLists.txt create mode 100644 ww/test/make_db_test.cpp create mode 100644 ww/transaction.cc create mode 100644 ww/util.cc diff --git a/plor/include/tuple.hh b/plor/include/tuple.hh index de240080..22c951b3 100644 --- a/plor/include/tuple.hh +++ b/plor/include/tuple.hh @@ -13,7 +13,13 @@ class Tuple { public: alignas(CACHE_LINE_SIZE) RWLock lock_; char val_[VAL_SIZE]; - int writer = 0; - int readers[224] = {0}; - int writers[224] = {0}; + int curr_writer = 0; + //int readers[224] = {0}; + //int writers[224] = {0}; + std::vector> waitRd; + std::vector> waitWr; + Tuple() { + waitRd.reserve(224); + waitWr.reserve(224); + } }; diff --git a/plor/transaction.cc b/plor/transaction.cc index ce850fe5..7de0b5d2 100644 --- a/plor/transaction.cc +++ b/plor/transaction.cc @@ -1,6 +1,8 @@ #include #include +#include +#include #include @@ -86,16 +88,33 @@ void TxExecutor::abort() { * @return void */ void TxExecutor::commit() { + + Tuple *tuple; + /** + * Phase 1: detect read-write conflicts + */ + + /** + * Phase 2: release read locks + */ + for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) { + tuple = (*itr).rcdptr_; + unlockRead(this->thid_, tuple); + //(*itr).rcdptr_->readers[this->thid_] = -1; + } + + /** + * Phase 3: commit and release write locks + */ + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { - /** - * update payload. - */ + // update payload. memcpy((*itr).rcdptr_->val_, write_val_, VAL_SIZE); + unlockWrite(this->thid_, tuple); + //(*itr).rcdptr_->writers[this->thid_] = -1; } - /** - * Release locks. - */ + //Release locks. unlockList(); /** @@ -200,6 +219,7 @@ void TxExecutor::write(uint64_t key) { #else tuple = get_tuple(Table, key); #endif + for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { if ((*rItr).key_ == key) { // hit while (1) { @@ -234,13 +254,15 @@ void TxExecutor::write(uint64_t key) { } } + /** PLOR */ + lockWrite(); + + /** Wound-Wait + * while (1) { if (!tuple->lock_.w_trylock()) { - /** - * wound-wait - ** Write-Write (WW) conflict - ** Read-Write (RW) conflict - */ + // wound-wait + for (int i = 0; i < FLAGS_thread_num; i++) { if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { thread_stats[i] = 1; @@ -251,13 +273,15 @@ void TxExecutor::write(uint64_t key) { break; } } + */ + memcpy(tuple->val_, write_val_, VAL_SIZE); /** * Register the contents to write lock list and write set. */ - tuple->writers[thid_] = 1; - w_lock_list_.emplace_back(&tuple->lock_); + //tuple->writers[thid_] = 1; + //w_lock_list_.emplace_back(&tuple->lock_); write_set_.emplace_back(key, tuple); FINISH_WRITE: @@ -319,11 +343,15 @@ void TxExecutor::readWrite(uint64_t key) { } } + /** PLOR */ + lockWrite(); + + /** Wound-Wait + * while (1) { if (!tuple->lock_.w_trylock()) { - /** - * wound-wait. - */ + // wound-wait. + for (int i = 0; i < FLAGS_thread_num; i++) { if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { thread_stats[i] = 1; @@ -334,15 +362,17 @@ void TxExecutor::readWrite(uint64_t key) { break; } } + */ // read payload memcpy(this->return_val_, tuple->val_, VAL_SIZE); // finish read. + memcpy(tuple->val_, write_val_, VAL_SIZE); /** * Register the contents to write lock list and write set. */ - w_lock_list_.emplace_back(&tuple->lock_); + //w_lock_list_.emplace_back(&tuple->lock_); write_set_.emplace_back(key, tuple); FINISH_WRITE: @@ -353,34 +383,82 @@ void TxExecutor::lockRead() { /** PLOR */ // @task: need to add exclusive signifier for commiting writer read_set_.emplace_back(key, tuple, tuple->val_); + tuple->waitRd.emplace_back(thid_, thread_timestamp[this->thid_]); + + // pure wound-wait, no commit priority yet + + + /** Wound-Wait + * tuple->readers[thid_] = 1; for (int i = 0; i < FLAGS_thread_num; i++) { if (tuple->writers[i] > 0 && thread_timestamp[i] > thread_timestamp[this->thid_]) { thread_stats[i] = 1; } } + */ + if (thread_stats[thid_] == 1) goto FINISH_READ; } void TxExecutor::lockWrite() { write_set_.emplace_back(key, tuple); - tuple->writers[thid_] = 1; + tuple->waitWr.emplace_back(thid_, thread_timestamp[this->thid_]); + sort(tuple->waitWr.begin(), tuple->waitWr.end(),[](const pair &x, const pair &y) { + if (x.second != y.second) { + return x.second < y.second; + } + }); // sort by ts + // @task: CAS for curr_writer @then: wound-wait + // trying to be the owner + int owner, expected, desired; + owner = tuple->curr_writer; + desired = this->thid_; + for (;;) { + expected = 0; + if (!owner.compare_exchange_strong(expected, desired, memory_order_acq_rel, memory_order_acquire)) { + while (curr_writer != this->thid_) { + if (thread_timestamp[curr_writer] > thread_timestamp[this->thid_]) { + thread_stats[curr_writer] = 1; + } + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } + } + } } -void TxExecutor::unlockRead() { - tuple->readers[thid_] = 0; - for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) - (*itr).rcdptr_->readers[this->thid_] = -1; +void TxExecutor::unlockRead(int thid, Tuple *tuple) { + int j; + for ( int i=0; iwaitRd.size(); i++) { + if (tuple->waitRd[i].first == thid) { + j = i; + break; + } + } + tuple->waitRd.erase(tuple->waitRd.begin()+j); } -void TxExecutor::unlockWrite() { - tuple->writers[thid_] = 0; - for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) - (*itr).rcdptr_->writers[this->thid_] = -1; - /* @task: turn the lock to the oldest waiter(writer) - * curr_writer = smallestTimestamp(for (int i = 0; i < FLAGS_thread_num; i++) {writers[i]>0}) - */ +void TxExecutor::unlockWrite(int thid, Tuple *tuple) { + + /* @task: + * tuple->waitWr.pop_front(); + * remove exclusive signifier in read set + * turn the lock to the oldest waiter(writer) + */ + int j; + for ( int i=0; iwaitWr.size(); i++) { + if (tuple->waitWr[i].first == thid_) { + j = i; + break; + } + } + tuple->waitWr.erase(tuple->waitWr.begin()+j); + + if (curr_writer == thid_) { + // remove exclusive signifier in read set + tuple->curr_writer = tuple->waitWr[0].first; + } } /** @@ -392,14 +470,16 @@ void TxExecutor::unlockList() { for (auto itr = r_lock_list_.begin(); itr != r_lock_list_.end(); ++itr) (*itr)->r_unlock(); - for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) - (*itr).rcdptr_->readers[this->thid_] = -1; - for (auto itr = w_lock_list_.begin(); itr != w_lock_list_.end(); ++itr) (*itr)->w_unlock(); + /* + for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) + (*itr).rcdptr_->readers[this->thid_] = -1; + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) (*itr).rcdptr_->writers[this->thid_] = -1; + */ /** * Clean-up local lock set. diff --git a/ww/CMakeLists.txt b/ww/CMakeLists.txt new file mode 100644 index 00000000..61817a38 --- /dev/null +++ b/ww/CMakeLists.txt @@ -0,0 +1,80 @@ +cmake_minimum_required(VERSION 3.10) + +project(ccbench_ss2pl + VERSION 0.0.1 + DESCRIPTION "ss2pl of ccbench" + LANGUAGES CXX) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake") + +option(ENABLE_SANITIZER "enable sanitizer on debug build" ON) +option(ENABLE_UB_SANITIZER "enable undefined behavior sanitizer on debug build" OFF) +option(ENABLE_COVERAGE "enable coverage on debug build" OFF) + +find_package(Doxygen) +find_package(Threads REQUIRED) +find_package(gflags REQUIRED) +find_package(glog REQUIRED) +find_package(Boost + COMPONENTS filesystem) + +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) +include(CompileOptions) + +file(GLOB ERMIA_SOURCES + "../common/result.cc" + "../common/util.cc" + "ss2pl.cc" + "result.cc" + "transaction.cc" + "util.cc" + ) + +add_executable(ss2pl.exe ${ERMIA_SOURCES}) + +target_link_libraries(ss2pl.exe + Boost::filesystem + gflags::gflags + ${PROJECT_SOURCE_DIR}/../third_party/mimalloc/out/release/libmimalloc.a + ${PROJECT_SOURCE_DIR}/../third_party/masstree/libkohler_masstree_json.a + Threads::Threads + ) + +if (DEFINED ADD_ANALYSIS) + add_definitions(-DADD_ANALYSIS=${ADD_ANALYSIS}) +else () + add_definitions(-DADD_ANALYSIS=0) +endif () + +if (DEFINED BACK_OFF) + add_definitions(-DBACK_OFF=${BACK_OFF}) +else () + add_definitions(-DBACK_OFF=0) +endif () + +add_definitions(-DDLR1) + +if (DEFINED KEY_SIZE) + add_definitions(-DKEY_SIZE=${KEY_SIZE}) +else () + add_definitions(-DKEY_SIZE=8) +endif () + +if (DEFINED KEY_SORT) + add_definitions(-DKEY_SORT=${KEY_SORT}) +else () + add_definitions(-DKEY_SORT=0) +endif () + +if (DEFINED MASSTREE_USE) + add_definitions(-DMASSTREE_USE=${MASSTREE_USE}) +else () + add_definitions(-DMASSTREE_USE=1) +endif () + +if (DEFINED VAL_SIZE) + add_definitions(-DVAL_SIZE=${VAL_SIZE}) +else () + add_definitions(-DVAL_SIZE=4) +endif () diff --git a/ww/README.md b/ww/README.md new file mode 100644 index 00000000..665d8888 --- /dev/null +++ b/ww/README.md @@ -0,0 +1,63 @@ +# 2PL + +## How to use +<<<<<<< HEAD +- Build masstree in ccbench directory +``` +$ ./build_tools/bootstrap.sh +``` +This makes ccbench/third_party/masstree/libkohler_masstree_json.a used by building ss2pl. +- Build mimalloc in ccbench directory +``` +$ ./build_tools/bootstrap_mimalloc.sh +======= +- Build masstree +``` +$ cd ../ +$ ./bootstrap.sh +``` +This makes ../third_party/masstree/libkohler_masstree_json.a used by building ss2pl. +- Build mimalloc +``` +$ cd ../ +$ ./bootstrap_mimalloc.sh +>>>>>>> 47c8a934ca05586ad6839e3ea55d09d64545afb4 +``` +This makes ../third_party/mimalloc/out/release/libmimalloc.a used by building ss2pl. +- Build +``` +$ mkdir build +$ cd build +$ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release .. +$ ninja +``` +- Confirm usage +``` +$ ./ss2pl.exe -help +``` +- Execution example +``` +$ numactl --interleave=all ./ss2pl.exe -clocks_per_us=2100 -extime=3 -max_ope=10 -rmw=0 -rratio=100 -thread_num=224 -tuple_num=1000000 -ycsb=1 -zipf_skew=0 +``` + +## How to customize options in CMakeLists.txt +- `ADD_ANALYSIS` : If this is 1, it is deeper analysis than setting 0.
+default : `0` +- `BACK_OFF` : If this is 1, it use Cicada's backoff.
+default : `0` +- `KEY_SORT` : If this is 1, its transaction accesses records in ascending key order.
+default : `0` +- `MASSTREE_USE` : If this is 1, it use masstree as data structure. If not, it use simple array αs data structure. +default : `1` +- `VAL_SIZE` : Value of key-value size. In other words, payload size.
+default : `4` +- `DLR0` : Dead lock resolution is timeout. +- `DLR1` : Dead lock resolution is no-wait. + +## Optimizations +- Backoff. +- Timeout of dead lock resolution. +- No-wait of dead lock resolution. + +## Implementation +- Lock : reader/writer lock diff --git a/ww/build/.ninja_deps b/ww/build/.ninja_deps new file mode 100644 index 0000000000000000000000000000000000000000..8c03fbf07ff9ffe087ec5245da06c34e5cc96407 GIT binary patch literal 34528 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 U3V!AsBXr?!U7_dtC$4q>1B|K^$^ZZW literal 0 HcmV?d00001 diff --git a/ww/build/.ninja_log b/ww/build/.ninja_log new file mode 100644 index 00000000..dfde69ef --- /dev/null +++ b/ww/build/.ninja_log @@ -0,0 +1,8 @@ +# ninja log v5 +0 436 1672880526586703017 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o cb094bc7f3f6c775 +0 707 1672880526858699663 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o f95633baccc8a3ed +1 850 1672880595533852827 CMakeFiles/ss2pl.exe.dir/result.cc.o 851e6c2fa850bcf5 +2 1328 1672880596009846958 CMakeFiles/ss2pl.exe.dir/transaction.cc.o 57b8653ac41a1255 +2 1382 1672880596065846267 CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o 788a57bce6d40cdd +3 1294 1672880651065168069 CMakeFiles/ss2pl.exe.dir/util.cc.o c9c2e62e88d9d2c6 +1294 1364 1672880651133167230 ss2pl.exe eee19cd8572392e1 diff --git a/ww/build/CMakeCache.txt b/ww/build/CMakeCache.txt new file mode 100644 index 00000000..b44a7b47 --- /dev/null +++ b/ww/build/CMakeCache.txt @@ -0,0 +1,473 @@ +# This is the CMakeCache file. +# For build in directory: /home/tngngn/ccbench/ww/build +# It was generated by CMake: /usr/local/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//The directory containing a CMake configuration file for Boost. +Boost_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0 + +Boost_FILESYSTEM_LIBRARY_RELEASE:STRING=/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 + +//Path to a file. +Boost_INCLUDE_DIR:PATH=/usr/include + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING=Release + +//CXX compiler +CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-9 + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-9 + +//Flags used by the CXX compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the CXX compiler during DEBUG builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the CXX compiler during RELEASE builds. +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//User executables (bin) +CMAKE_INSTALL_BINDIR:PATH=bin + +//Read-only architecture-independent data (DATAROOTDIR) +CMAKE_INSTALL_DATADIR:PATH= + +//Read-only architecture-independent data root (share) +CMAKE_INSTALL_DATAROOTDIR:PATH=share + +//Documentation root (DATAROOTDIR/doc/PROJECT_NAME) +CMAKE_INSTALL_DOCDIR:PATH= + +//C header files (include) +CMAKE_INSTALL_INCLUDEDIR:PATH=include + +//Info documentation (DATAROOTDIR/info) +CMAKE_INSTALL_INFODIR:PATH= + +//Object code libraries (lib) +CMAKE_INSTALL_LIBDIR:PATH=lib + +//Program executables (libexec) +CMAKE_INSTALL_LIBEXECDIR:PATH=libexec + +//Locale-dependent data (DATAROOTDIR/locale) +CMAKE_INSTALL_LOCALEDIR:PATH= + +//Modifiable single-machine data (var) +CMAKE_INSTALL_LOCALSTATEDIR:PATH=var + +//Man documentation (DATAROOTDIR/man) +CMAKE_INSTALL_MANDIR:PATH= + +//C header files for non-gcc (/usr/include) +CMAKE_INSTALL_OLDINCLUDEDIR:PATH=/usr/include + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Run-time variable data (LOCALSTATEDIR/run) +CMAKE_INSTALL_RUNSTATEDIR:PATH= + +//System admin executables (sbin) +CMAKE_INSTALL_SBINDIR:PATH=sbin + +//Modifiable architecture-independent data (com) +CMAKE_INSTALL_SHAREDSTATEDIR:PATH=com + +//Read-only single-machine data (etc) +CMAKE_INSTALL_SYSCONFDIR:PATH=etc + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Program used to build from build.ninja files. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/local/bin/ninja + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC=ss2pl of ccbench + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=ccbench_ss2pl + +//Value Computed by CMake +CMAKE_PROJECT_VERSION:STATIC=0.0.1 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MAJOR:STATIC=0 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MINOR:STATIC=0 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_PATCH:STATIC=1 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_TWEAK:STATIC= + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/usr/bin/readelf + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Dot tool for use with Doxygen +DOXYGEN_DOT_EXECUTABLE:FILEPATH=/usr/bin/dot + +//Doxygen documentation generation tool (http://www.doxygen.org) +DOXYGEN_EXECUTABLE:FILEPATH=/usr/bin/doxygen + +//enable coverage on debug build +ENABLE_COVERAGE:BOOL=OFF + +//enable sanitizer on debug build +ENABLE_SANITIZER:BOOL=ON + +//enable undefined behavior sanitizer on debug build +ENABLE_UB_SANITIZER:BOOL=OFF + +//The directory containing a CMake configuration file for boost_filesystem. +boost_filesystem_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0 + +//The directory containing a CMake configuration file for boost_headers. +boost_headers_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0 + +//Value Computed by CMake +ccbench_ss2pl_BINARY_DIR:STATIC=/home/tngngn/ccbench/ww/build + +//Value Computed by CMake +ccbench_ss2pl_SOURCE_DIR:STATIC=/home/tngngn/ccbench/ww + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: Boost_DIR +Boost_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/tngngn/ccbench/ww/build +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=17 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=0 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/local/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/local/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/local/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Ninja +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Test CMAKE_HAVE_LIBC_PTHREAD +CMAKE_HAVE_LIBC_PTHREAD:INTERNAL= +//Have library pthreads +CMAKE_HAVE_PTHREADS_CREATE:INTERNAL= +//Have library pthread +CMAKE_HAVE_PTHREAD_CREATE:INTERNAL=1 +//Have include pthread.h +CMAKE_HAVE_PTHREAD_H:INTERNAL=1 +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/tngngn/ccbench/ww +//ADVANCED property for variable: CMAKE_INSTALL_BINDIR +CMAKE_INSTALL_BINDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DATADIR +CMAKE_INSTALL_DATADIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DATAROOTDIR +CMAKE_INSTALL_DATAROOTDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DOCDIR +CMAKE_INSTALL_DOCDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_INCLUDEDIR +CMAKE_INSTALL_INCLUDEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_INFODIR +CMAKE_INSTALL_INFODIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LIBDIR +CMAKE_INSTALL_LIBDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LIBEXECDIR +CMAKE_INSTALL_LIBEXECDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LOCALEDIR +CMAKE_INSTALL_LOCALEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LOCALSTATEDIR +CMAKE_INSTALL_LOCALSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_MANDIR +CMAKE_INSTALL_MANDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_OLDINCLUDEDIR +CMAKE_INSTALL_OLDINCLUDEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_RUNSTATEDIR +CMAKE_INSTALL_RUNSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SBINDIR +CMAKE_INSTALL_SBINDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SHAREDSTATEDIR +CMAKE_INSTALL_SHAREDSTATEDIR-ADVANCED:INTERNAL=1 +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SYSCONFDIR +CMAKE_INSTALL_SYSCONFDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/local/share/cmake-3.17 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: DOXYGEN_DOT_EXECUTABLE +DOXYGEN_DOT_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: DOXYGEN_EXECUTABLE +DOXYGEN_EXECUTABLE-ADVANCED:INTERNAL=1 +//Details about finding Boost +FIND_PACKAGE_MESSAGE_DETAILS_Boost:INTERNAL=[/usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake][cfound components: filesystem ][v1.71.0()] +//Details about finding Doxygen +FIND_PACKAGE_MESSAGE_DETAILS_Doxygen:INTERNAL=[/usr/bin/doxygen][cfound components: doxygen dot ][v1.8.17()] +//Details about finding Threads +FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()] +//Details about finding gflags +FIND_PACKAGE_MESSAGE_DETAILS_gflags:INTERNAL=[/usr/lib/x86_64-linux-gnu/libgflags.so][/usr/include][v()] +//Details about finding glog +FIND_PACKAGE_MESSAGE_DETAILS_glog:INTERNAL=[/usr/lib/x86_64-linux-gnu/libglog.so][/usr/include][v()] +//CMAKE_INSTALL_PREFIX during last run +_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX:INTERNAL=/usr/local +//ADVANCED property for variable: boost_filesystem_DIR +boost_filesystem_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: boost_headers_DIR +boost_headers_DIR-ADVANCED:INTERNAL=1 + diff --git a/ww/build/CMakeDoxyfile.in b/ww/build/CMakeDoxyfile.in new file mode 100644 index 00000000..848a3c81 --- /dev/null +++ b/ww/build/CMakeDoxyfile.in @@ -0,0 +1,280 @@ +# +# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! +# + +DOXYFILE_ENCODING = @DOXYGEN_DOXYFILE_ENCODING@ +PROJECT_NAME = @DOXYGEN_PROJECT_NAME@ +PROJECT_NUMBER = @DOXYGEN_PROJECT_NUMBER@ +PROJECT_BRIEF = @DOXYGEN_PROJECT_BRIEF@ +PROJECT_LOGO = @DOXYGEN_PROJECT_LOGO@ +OUTPUT_DIRECTORY = @DOXYGEN_OUTPUT_DIRECTORY@ +CREATE_SUBDIRS = @DOXYGEN_CREATE_SUBDIRS@ +ALLOW_UNICODE_NAMES = @DOXYGEN_ALLOW_UNICODE_NAMES@ +OUTPUT_LANGUAGE = @DOXYGEN_OUTPUT_LANGUAGE@ +OUTPUT_TEXT_DIRECTION = @DOXYGEN_OUTPUT_TEXT_DIRECTION@ +BRIEF_MEMBER_DESC = @DOXYGEN_BRIEF_MEMBER_DESC@ +REPEAT_BRIEF = @DOXYGEN_REPEAT_BRIEF@ +ABBREVIATE_BRIEF = @DOXYGEN_ABBREVIATE_BRIEF@ +ALWAYS_DETAILED_SEC = @DOXYGEN_ALWAYS_DETAILED_SEC@ +INLINE_INHERITED_MEMB = @DOXYGEN_INLINE_INHERITED_MEMB@ +FULL_PATH_NAMES = @DOXYGEN_FULL_PATH_NAMES@ +STRIP_FROM_PATH = @DOXYGEN_STRIP_FROM_PATH@ +STRIP_FROM_INC_PATH = @DOXYGEN_STRIP_FROM_INC_PATH@ +SHORT_NAMES = @DOXYGEN_SHORT_NAMES@ +JAVADOC_AUTOBRIEF = @DOXYGEN_JAVADOC_AUTOBRIEF@ +JAVADOC_BANNER = @DOXYGEN_JAVADOC_BANNER@ +QT_AUTOBRIEF = @DOXYGEN_QT_AUTOBRIEF@ +MULTILINE_CPP_IS_BRIEF = @DOXYGEN_MULTILINE_CPP_IS_BRIEF@ +INHERIT_DOCS = @DOXYGEN_INHERIT_DOCS@ +SEPARATE_MEMBER_PAGES = @DOXYGEN_SEPARATE_MEMBER_PAGES@ +TAB_SIZE = @DOXYGEN_TAB_SIZE@ +ALIASES = @DOXYGEN_ALIASES@ +TCL_SUBST = @DOXYGEN_TCL_SUBST@ +OPTIMIZE_OUTPUT_FOR_C = @DOXYGEN_OPTIMIZE_OUTPUT_FOR_C@ +OPTIMIZE_OUTPUT_JAVA = @DOXYGEN_OPTIMIZE_OUTPUT_JAVA@ +OPTIMIZE_FOR_FORTRAN = @DOXYGEN_OPTIMIZE_FOR_FORTRAN@ +OPTIMIZE_OUTPUT_VHDL = @DOXYGEN_OPTIMIZE_OUTPUT_VHDL@ +OPTIMIZE_OUTPUT_SLICE = @DOXYGEN_OPTIMIZE_OUTPUT_SLICE@ +EXTENSION_MAPPING = @DOXYGEN_EXTENSION_MAPPING@ +MARKDOWN_SUPPORT = @DOXYGEN_MARKDOWN_SUPPORT@ +TOC_INCLUDE_HEADINGS = @DOXYGEN_TOC_INCLUDE_HEADINGS@ +AUTOLINK_SUPPORT = @DOXYGEN_AUTOLINK_SUPPORT@ +BUILTIN_STL_SUPPORT = @DOXYGEN_BUILTIN_STL_SUPPORT@ +CPP_CLI_SUPPORT = @DOXYGEN_CPP_CLI_SUPPORT@ +SIP_SUPPORT = @DOXYGEN_SIP_SUPPORT@ +IDL_PROPERTY_SUPPORT = @DOXYGEN_IDL_PROPERTY_SUPPORT@ +DISTRIBUTE_GROUP_DOC = @DOXYGEN_DISTRIBUTE_GROUP_DOC@ +GROUP_NESTED_COMPOUNDS = @DOXYGEN_GROUP_NESTED_COMPOUNDS@ +SUBGROUPING = @DOXYGEN_SUBGROUPING@ +INLINE_GROUPED_CLASSES = @DOXYGEN_INLINE_GROUPED_CLASSES@ +INLINE_SIMPLE_STRUCTS = @DOXYGEN_INLINE_SIMPLE_STRUCTS@ +TYPEDEF_HIDES_STRUCT = @DOXYGEN_TYPEDEF_HIDES_STRUCT@ +LOOKUP_CACHE_SIZE = @DOXYGEN_LOOKUP_CACHE_SIZE@ +EXTRACT_ALL = @DOXYGEN_EXTRACT_ALL@ +EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@ +EXTRACT_PRIV_VIRTUAL = @DOXYGEN_EXTRACT_PRIV_VIRTUAL@ +EXTRACT_PACKAGE = @DOXYGEN_EXTRACT_PACKAGE@ +EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@ +EXTRACT_LOCAL_CLASSES = @DOXYGEN_EXTRACT_LOCAL_CLASSES@ +EXTRACT_LOCAL_METHODS = @DOXYGEN_EXTRACT_LOCAL_METHODS@ +EXTRACT_ANON_NSPACES = @DOXYGEN_EXTRACT_ANON_NSPACES@ +HIDE_UNDOC_MEMBERS = @DOXYGEN_HIDE_UNDOC_MEMBERS@ +HIDE_UNDOC_CLASSES = @DOXYGEN_HIDE_UNDOC_CLASSES@ +HIDE_FRIEND_COMPOUNDS = @DOXYGEN_HIDE_FRIEND_COMPOUNDS@ +HIDE_IN_BODY_DOCS = @DOXYGEN_HIDE_IN_BODY_DOCS@ +INTERNAL_DOCS = @DOXYGEN_INTERNAL_DOCS@ +CASE_SENSE_NAMES = @DOXYGEN_CASE_SENSE_NAMES@ +HIDE_SCOPE_NAMES = @DOXYGEN_HIDE_SCOPE_NAMES@ +HIDE_COMPOUND_REFERENCE= @DOXYGEN_HIDE_COMPOUND_REFERENCE@ +SHOW_INCLUDE_FILES = @DOXYGEN_SHOW_INCLUDE_FILES@ +SHOW_GROUPED_MEMB_INC = @DOXYGEN_SHOW_GROUPED_MEMB_INC@ +FORCE_LOCAL_INCLUDES = @DOXYGEN_FORCE_LOCAL_INCLUDES@ +INLINE_INFO = @DOXYGEN_INLINE_INFO@ +SORT_MEMBER_DOCS = @DOXYGEN_SORT_MEMBER_DOCS@ +SORT_BRIEF_DOCS = @DOXYGEN_SORT_BRIEF_DOCS@ +SORT_MEMBERS_CTORS_1ST = @DOXYGEN_SORT_MEMBERS_CTORS_1ST@ +SORT_GROUP_NAMES = @DOXYGEN_SORT_GROUP_NAMES@ +SORT_BY_SCOPE_NAME = @DOXYGEN_SORT_BY_SCOPE_NAME@ +STRICT_PROTO_MATCHING = @DOXYGEN_STRICT_PROTO_MATCHING@ +GENERATE_TODOLIST = @DOXYGEN_GENERATE_TODOLIST@ +GENERATE_TESTLIST = @DOXYGEN_GENERATE_TESTLIST@ +GENERATE_BUGLIST = @DOXYGEN_GENERATE_BUGLIST@ +GENERATE_DEPRECATEDLIST= @DOXYGEN_GENERATE_DEPRECATEDLIST@ +ENABLED_SECTIONS = @DOXYGEN_ENABLED_SECTIONS@ +MAX_INITIALIZER_LINES = @DOXYGEN_MAX_INITIALIZER_LINES@ +SHOW_USED_FILES = @DOXYGEN_SHOW_USED_FILES@ +SHOW_FILES = @DOXYGEN_SHOW_FILES@ +SHOW_NAMESPACES = @DOXYGEN_SHOW_NAMESPACES@ +FILE_VERSION_FILTER = @DOXYGEN_FILE_VERSION_FILTER@ +LAYOUT_FILE = @DOXYGEN_LAYOUT_FILE@ +CITE_BIB_FILES = @DOXYGEN_CITE_BIB_FILES@ +QUIET = @DOXYGEN_QUIET@ +WARNINGS = @DOXYGEN_WARNINGS@ +WARN_IF_UNDOCUMENTED = @DOXYGEN_WARN_IF_UNDOCUMENTED@ +WARN_IF_DOC_ERROR = @DOXYGEN_WARN_IF_DOC_ERROR@ +WARN_NO_PARAMDOC = @DOXYGEN_WARN_NO_PARAMDOC@ +WARN_AS_ERROR = @DOXYGEN_WARN_AS_ERROR@ +WARN_FORMAT = @DOXYGEN_WARN_FORMAT@ +WARN_LOGFILE = @DOXYGEN_WARN_LOGFILE@ +INPUT = @DOXYGEN_INPUT@ +INPUT_ENCODING = @DOXYGEN_INPUT_ENCODING@ +FILE_PATTERNS = @DOXYGEN_FILE_PATTERNS@ +RECURSIVE = @DOXYGEN_RECURSIVE@ +EXCLUDE = @DOXYGEN_EXCLUDE@ +EXCLUDE_SYMLINKS = @DOXYGEN_EXCLUDE_SYMLINKS@ +EXCLUDE_PATTERNS = @DOXYGEN_EXCLUDE_PATTERNS@ +EXCLUDE_SYMBOLS = @DOXYGEN_EXCLUDE_SYMBOLS@ +EXAMPLE_PATH = @DOXYGEN_EXAMPLE_PATH@ +EXAMPLE_PATTERNS = @DOXYGEN_EXAMPLE_PATTERNS@ +EXAMPLE_RECURSIVE = @DOXYGEN_EXAMPLE_RECURSIVE@ +IMAGE_PATH = @DOXYGEN_IMAGE_PATH@ +INPUT_FILTER = @DOXYGEN_INPUT_FILTER@ +FILTER_PATTERNS = @DOXYGEN_FILTER_PATTERNS@ +FILTER_SOURCE_FILES = @DOXYGEN_FILTER_SOURCE_FILES@ +FILTER_SOURCE_PATTERNS = @DOXYGEN_FILTER_SOURCE_PATTERNS@ +USE_MDFILE_AS_MAINPAGE = @DOXYGEN_USE_MDFILE_AS_MAINPAGE@ +SOURCE_BROWSER = @DOXYGEN_SOURCE_BROWSER@ +INLINE_SOURCES = @DOXYGEN_INLINE_SOURCES@ +STRIP_CODE_COMMENTS = @DOXYGEN_STRIP_CODE_COMMENTS@ +REFERENCED_BY_RELATION = @DOXYGEN_REFERENCED_BY_RELATION@ +REFERENCES_RELATION = @DOXYGEN_REFERENCES_RELATION@ +REFERENCES_LINK_SOURCE = @DOXYGEN_REFERENCES_LINK_SOURCE@ +SOURCE_TOOLTIPS = @DOXYGEN_SOURCE_TOOLTIPS@ +USE_HTAGS = @DOXYGEN_USE_HTAGS@ +VERBATIM_HEADERS = @DOXYGEN_VERBATIM_HEADERS@ +CLANG_ASSISTED_PARSING = @DOXYGEN_CLANG_ASSISTED_PARSING@ +CLANG_OPTIONS = @DOXYGEN_CLANG_OPTIONS@ +CLANG_DATABASE_PATH = @DOXYGEN_CLANG_DATABASE_PATH@ +ALPHABETICAL_INDEX = @DOXYGEN_ALPHABETICAL_INDEX@ +COLS_IN_ALPHA_INDEX = @DOXYGEN_COLS_IN_ALPHA_INDEX@ +IGNORE_PREFIX = @DOXYGEN_IGNORE_PREFIX@ +GENERATE_HTML = @DOXYGEN_GENERATE_HTML@ +HTML_OUTPUT = @DOXYGEN_HTML_OUTPUT@ +HTML_FILE_EXTENSION = @DOXYGEN_HTML_FILE_EXTENSION@ +HTML_HEADER = @DOXYGEN_HTML_HEADER@ +HTML_FOOTER = @DOXYGEN_HTML_FOOTER@ +HTML_STYLESHEET = @DOXYGEN_HTML_STYLESHEET@ +HTML_EXTRA_STYLESHEET = @DOXYGEN_HTML_EXTRA_STYLESHEET@ +HTML_EXTRA_FILES = @DOXYGEN_HTML_EXTRA_FILES@ +HTML_COLORSTYLE_HUE = @DOXYGEN_HTML_COLORSTYLE_HUE@ +HTML_COLORSTYLE_SAT = @DOXYGEN_HTML_COLORSTYLE_SAT@ +HTML_COLORSTYLE_GAMMA = @DOXYGEN_HTML_COLORSTYLE_GAMMA@ +HTML_TIMESTAMP = @DOXYGEN_HTML_TIMESTAMP@ +HTML_DYNAMIC_MENUS = @DOXYGEN_HTML_DYNAMIC_MENUS@ +HTML_DYNAMIC_SECTIONS = @DOXYGEN_HTML_DYNAMIC_SECTIONS@ +HTML_INDEX_NUM_ENTRIES = @DOXYGEN_HTML_INDEX_NUM_ENTRIES@ +GENERATE_DOCSET = @DOXYGEN_GENERATE_DOCSET@ +DOCSET_FEEDNAME = @DOXYGEN_DOCSET_FEEDNAME@ +DOCSET_BUNDLE_ID = @DOXYGEN_DOCSET_BUNDLE_ID@ +DOCSET_PUBLISHER_ID = @DOXYGEN_DOCSET_PUBLISHER_ID@ +DOCSET_PUBLISHER_NAME = @DOXYGEN_DOCSET_PUBLISHER_NAME@ +GENERATE_HTMLHELP = @DOXYGEN_GENERATE_HTMLHELP@ +CHM_FILE = @DOXYGEN_CHM_FILE@ +HHC_LOCATION = @DOXYGEN_HHC_LOCATION@ +GENERATE_CHI = @DOXYGEN_GENERATE_CHI@ +CHM_INDEX_ENCODING = @DOXYGEN_CHM_INDEX_ENCODING@ +BINARY_TOC = @DOXYGEN_BINARY_TOC@ +TOC_EXPAND = @DOXYGEN_TOC_EXPAND@ +GENERATE_QHP = @DOXYGEN_GENERATE_QHP@ +QCH_FILE = @DOXYGEN_QCH_FILE@ +QHP_NAMESPACE = @DOXYGEN_QHP_NAMESPACE@ +QHP_VIRTUAL_FOLDER = @DOXYGEN_QHP_VIRTUAL_FOLDER@ +QHP_CUST_FILTER_NAME = @DOXYGEN_QHP_CUST_FILTER_NAME@ +QHP_CUST_FILTER_ATTRS = @DOXYGEN_QHP_CUST_FILTER_ATTRS@ +QHP_SECT_FILTER_ATTRS = @DOXYGEN_QHP_SECT_FILTER_ATTRS@ +QHG_LOCATION = @DOXYGEN_QHG_LOCATION@ +GENERATE_ECLIPSEHELP = @DOXYGEN_GENERATE_ECLIPSEHELP@ +ECLIPSE_DOC_ID = @DOXYGEN_ECLIPSE_DOC_ID@ +DISABLE_INDEX = @DOXYGEN_DISABLE_INDEX@ +GENERATE_TREEVIEW = @DOXYGEN_GENERATE_TREEVIEW@ +ENUM_VALUES_PER_LINE = @DOXYGEN_ENUM_VALUES_PER_LINE@ +TREEVIEW_WIDTH = @DOXYGEN_TREEVIEW_WIDTH@ +EXT_LINKS_IN_WINDOW = @DOXYGEN_EXT_LINKS_IN_WINDOW@ +FORMULA_FONTSIZE = @DOXYGEN_FORMULA_FONTSIZE@ +FORMULA_TRANSPARENT = @DOXYGEN_FORMULA_TRANSPARENT@ +FORMULA_MACROFILE = @DOXYGEN_FORMULA_MACROFILE@ +USE_MATHJAX = @DOXYGEN_USE_MATHJAX@ +MATHJAX_FORMAT = @DOXYGEN_MATHJAX_FORMAT@ +MATHJAX_RELPATH = @DOXYGEN_MATHJAX_RELPATH@ +MATHJAX_EXTENSIONS = @DOXYGEN_MATHJAX_EXTENSIONS@ +MATHJAX_CODEFILE = @DOXYGEN_MATHJAX_CODEFILE@ +SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ +SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ +EXTERNAL_SEARCH = @DOXYGEN_EXTERNAL_SEARCH@ +SEARCHENGINE_URL = @DOXYGEN_SEARCHENGINE_URL@ +SEARCHDATA_FILE = @DOXYGEN_SEARCHDATA_FILE@ +EXTERNAL_SEARCH_ID = @DOXYGEN_EXTERNAL_SEARCH_ID@ +EXTRA_SEARCH_MAPPINGS = @DOXYGEN_EXTRA_SEARCH_MAPPINGS@ +GENERATE_LATEX = @DOXYGEN_GENERATE_LATEX@ +LATEX_OUTPUT = @DOXYGEN_LATEX_OUTPUT@ +LATEX_CMD_NAME = @DOXYGEN_LATEX_CMD_NAME@ +MAKEINDEX_CMD_NAME = @DOXYGEN_MAKEINDEX_CMD_NAME@ +LATEX_MAKEINDEX_CMD = @DOXYGEN_LATEX_MAKEINDEX_CMD@ +COMPACT_LATEX = @DOXYGEN_COMPACT_LATEX@ +PAPER_TYPE = @DOXYGEN_PAPER_TYPE@ +EXTRA_PACKAGES = @DOXYGEN_EXTRA_PACKAGES@ +LATEX_HEADER = @DOXYGEN_LATEX_HEADER@ +LATEX_FOOTER = @DOXYGEN_LATEX_FOOTER@ +LATEX_EXTRA_STYLESHEET = @DOXYGEN_LATEX_EXTRA_STYLESHEET@ +LATEX_EXTRA_FILES = @DOXYGEN_LATEX_EXTRA_FILES@ +PDF_HYPERLINKS = @DOXYGEN_PDF_HYPERLINKS@ +USE_PDFLATEX = @DOXYGEN_USE_PDFLATEX@ +LATEX_BATCHMODE = @DOXYGEN_LATEX_BATCHMODE@ +LATEX_HIDE_INDICES = @DOXYGEN_LATEX_HIDE_INDICES@ +LATEX_SOURCE_CODE = @DOXYGEN_LATEX_SOURCE_CODE@ +LATEX_BIB_STYLE = @DOXYGEN_LATEX_BIB_STYLE@ +LATEX_TIMESTAMP = @DOXYGEN_LATEX_TIMESTAMP@ +LATEX_EMOJI_DIRECTORY = @DOXYGEN_LATEX_EMOJI_DIRECTORY@ +GENERATE_RTF = @DOXYGEN_GENERATE_RTF@ +RTF_OUTPUT = @DOXYGEN_RTF_OUTPUT@ +COMPACT_RTF = @DOXYGEN_COMPACT_RTF@ +RTF_HYPERLINKS = @DOXYGEN_RTF_HYPERLINKS@ +RTF_STYLESHEET_FILE = @DOXYGEN_RTF_STYLESHEET_FILE@ +RTF_EXTENSIONS_FILE = @DOXYGEN_RTF_EXTENSIONS_FILE@ +RTF_SOURCE_CODE = @DOXYGEN_RTF_SOURCE_CODE@ +GENERATE_MAN = @DOXYGEN_GENERATE_MAN@ +MAN_OUTPUT = @DOXYGEN_MAN_OUTPUT@ +MAN_EXTENSION = @DOXYGEN_MAN_EXTENSION@ +MAN_SUBDIR = @DOXYGEN_MAN_SUBDIR@ +MAN_LINKS = @DOXYGEN_MAN_LINKS@ +GENERATE_XML = @DOXYGEN_GENERATE_XML@ +XML_OUTPUT = @DOXYGEN_XML_OUTPUT@ +XML_PROGRAMLISTING = @DOXYGEN_XML_PROGRAMLISTING@ +XML_NS_MEMB_FILE_SCOPE = @DOXYGEN_XML_NS_MEMB_FILE_SCOPE@ +GENERATE_DOCBOOK = @DOXYGEN_GENERATE_DOCBOOK@ +DOCBOOK_OUTPUT = @DOXYGEN_DOCBOOK_OUTPUT@ +DOCBOOK_PROGRAMLISTING = @DOXYGEN_DOCBOOK_PROGRAMLISTING@ +GENERATE_AUTOGEN_DEF = @DOXYGEN_GENERATE_AUTOGEN_DEF@ +GENERATE_PERLMOD = @DOXYGEN_GENERATE_PERLMOD@ +PERLMOD_LATEX = @DOXYGEN_PERLMOD_LATEX@ +PERLMOD_PRETTY = @DOXYGEN_PERLMOD_PRETTY@ +PERLMOD_MAKEVAR_PREFIX = @DOXYGEN_PERLMOD_MAKEVAR_PREFIX@ +ENABLE_PREPROCESSING = @DOXYGEN_ENABLE_PREPROCESSING@ +MACRO_EXPANSION = @DOXYGEN_MACRO_EXPANSION@ +EXPAND_ONLY_PREDEF = @DOXYGEN_EXPAND_ONLY_PREDEF@ +SEARCH_INCLUDES = @DOXYGEN_SEARCH_INCLUDES@ +INCLUDE_PATH = @DOXYGEN_INCLUDE_PATH@ +INCLUDE_FILE_PATTERNS = @DOXYGEN_INCLUDE_FILE_PATTERNS@ +PREDEFINED = @DOXYGEN_PREDEFINED@ +EXPAND_AS_DEFINED = @DOXYGEN_EXPAND_AS_DEFINED@ +SKIP_FUNCTION_MACROS = @DOXYGEN_SKIP_FUNCTION_MACROS@ +TAGFILES = @DOXYGEN_TAGFILES@ +GENERATE_TAGFILE = @DOXYGEN_GENERATE_TAGFILE@ +ALLEXTERNALS = @DOXYGEN_ALLEXTERNALS@ +EXTERNAL_GROUPS = @DOXYGEN_EXTERNAL_GROUPS@ +EXTERNAL_PAGES = @DOXYGEN_EXTERNAL_PAGES@ +CLASS_DIAGRAMS = @DOXYGEN_CLASS_DIAGRAMS@ +DIA_PATH = @DOXYGEN_DIA_PATH@ +HIDE_UNDOC_RELATIONS = @DOXYGEN_HIDE_UNDOC_RELATIONS@ +HAVE_DOT = @DOXYGEN_HAVE_DOT@ +DOT_NUM_THREADS = @DOXYGEN_DOT_NUM_THREADS@ +DOT_FONTNAME = @DOXYGEN_DOT_FONTNAME@ +DOT_FONTSIZE = @DOXYGEN_DOT_FONTSIZE@ +DOT_FONTPATH = @DOXYGEN_DOT_FONTPATH@ +CLASS_GRAPH = @DOXYGEN_CLASS_GRAPH@ +COLLABORATION_GRAPH = @DOXYGEN_COLLABORATION_GRAPH@ +GROUP_GRAPHS = @DOXYGEN_GROUP_GRAPHS@ +UML_LOOK = @DOXYGEN_UML_LOOK@ +UML_LIMIT_NUM_FIELDS = @DOXYGEN_UML_LIMIT_NUM_FIELDS@ +TEMPLATE_RELATIONS = @DOXYGEN_TEMPLATE_RELATIONS@ +INCLUDE_GRAPH = @DOXYGEN_INCLUDE_GRAPH@ +INCLUDED_BY_GRAPH = @DOXYGEN_INCLUDED_BY_GRAPH@ +CALL_GRAPH = @DOXYGEN_CALL_GRAPH@ +CALLER_GRAPH = @DOXYGEN_CALLER_GRAPH@ +GRAPHICAL_HIERARCHY = @DOXYGEN_GRAPHICAL_HIERARCHY@ +DIRECTORY_GRAPH = @DOXYGEN_DIRECTORY_GRAPH@ +DOT_IMAGE_FORMAT = @DOXYGEN_DOT_IMAGE_FORMAT@ +INTERACTIVE_SVG = @DOXYGEN_INTERACTIVE_SVG@ +DOT_PATH = @DOXYGEN_DOT_PATH@ +DOTFILE_DIRS = @DOXYGEN_DOTFILE_DIRS@ +MSCFILE_DIRS = @DOXYGEN_MSCFILE_DIRS@ +DIAFILE_DIRS = @DOXYGEN_DIAFILE_DIRS@ +PLANTUML_JAR_PATH = @DOXYGEN_PLANTUML_JAR_PATH@ +PLANTUML_CFG_FILE = @DOXYGEN_PLANTUML_CFG_FILE@ +PLANTUML_INCLUDE_PATH = @DOXYGEN_PLANTUML_INCLUDE_PATH@ +DOT_GRAPH_MAX_NODES = @DOXYGEN_DOT_GRAPH_MAX_NODES@ +MAX_DOT_GRAPH_DEPTH = @DOXYGEN_MAX_DOT_GRAPH_DEPTH@ +DOT_TRANSPARENT = @DOXYGEN_DOT_TRANSPARENT@ +DOT_MULTI_TARGETS = @DOXYGEN_DOT_MULTI_TARGETS@ +GENERATE_LEGEND = @DOXYGEN_GENERATE_LEGEND@ +DOT_CLEANUP = @DOXYGEN_DOT_CLEANUP@ diff --git a/ww/build/CMakeDoxygenDefaults.cmake b/ww/build/CMakeDoxygenDefaults.cmake new file mode 100644 index 00000000..db28798f --- /dev/null +++ b/ww/build/CMakeDoxygenDefaults.cmake @@ -0,0 +1,672 @@ +# +# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! +# + +if(NOT DEFINED DOXYGEN_DOXYFILE_ENCODING) + set(DOXYGEN_DOXYFILE_ENCODING UTF-8) +endif() +if(NOT DEFINED DOXYGEN_PROJECT_NAME) + set(DOXYGEN_PROJECT_NAME "My Project") +endif() +if(NOT DEFINED DOXYGEN_CREATE_SUBDIRS) + set(DOXYGEN_CREATE_SUBDIRS NO) +endif() +if(NOT DEFINED DOXYGEN_ALLOW_UNICODE_NAMES) + set(DOXYGEN_ALLOW_UNICODE_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_OUTPUT_LANGUAGE) + set(DOXYGEN_OUTPUT_LANGUAGE English) +endif() +if(NOT DEFINED DOXYGEN_OUTPUT_TEXT_DIRECTION) + set(DOXYGEN_OUTPUT_TEXT_DIRECTION None) +endif() +if(NOT DEFINED DOXYGEN_BRIEF_MEMBER_DESC) + set(DOXYGEN_BRIEF_MEMBER_DESC YES) +endif() +if(NOT DEFINED DOXYGEN_REPEAT_BRIEF) + set(DOXYGEN_REPEAT_BRIEF YES) +endif() +if(NOT DEFINED DOXYGEN_ABBREVIATE_BRIEF) + set(DOXYGEN_ABBREVIATE_BRIEF "The $name class" + "The $name widget" + "The $name file" + is + provides + specifies + contains + represents + a + an + the) +endif() +if(NOT DEFINED DOXYGEN_ALWAYS_DETAILED_SEC) + set(DOXYGEN_ALWAYS_DETAILED_SEC NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_INHERITED_MEMB) + set(DOXYGEN_INLINE_INHERITED_MEMB NO) +endif() +if(NOT DEFINED DOXYGEN_FULL_PATH_NAMES) + set(DOXYGEN_FULL_PATH_NAMES YES) +endif() +if(NOT DEFINED DOXYGEN_SHORT_NAMES) + set(DOXYGEN_SHORT_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_JAVADOC_AUTOBRIEF) + set(DOXYGEN_JAVADOC_AUTOBRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_JAVADOC_BANNER) + set(DOXYGEN_JAVADOC_BANNER NO) +endif() +if(NOT DEFINED DOXYGEN_QT_AUTOBRIEF) + set(DOXYGEN_QT_AUTOBRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_MULTILINE_CPP_IS_BRIEF) + set(DOXYGEN_MULTILINE_CPP_IS_BRIEF NO) +endif() +if(NOT DEFINED DOXYGEN_INHERIT_DOCS) + set(DOXYGEN_INHERIT_DOCS YES) +endif() +if(NOT DEFINED DOXYGEN_SEPARATE_MEMBER_PAGES) + set(DOXYGEN_SEPARATE_MEMBER_PAGES NO) +endif() +if(NOT DEFINED DOXYGEN_TAB_SIZE) + set(DOXYGEN_TAB_SIZE 4) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_FOR_C) + set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_JAVA) + set(DOXYGEN_OPTIMIZE_OUTPUT_JAVA NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_FOR_FORTRAN) + set(DOXYGEN_OPTIMIZE_FOR_FORTRAN NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_VHDL) + set(DOXYGEN_OPTIMIZE_OUTPUT_VHDL NO) +endif() +if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_SLICE) + set(DOXYGEN_OPTIMIZE_OUTPUT_SLICE NO) +endif() +if(NOT DEFINED DOXYGEN_MARKDOWN_SUPPORT) + set(DOXYGEN_MARKDOWN_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_TOC_INCLUDE_HEADINGS) + set(DOXYGEN_TOC_INCLUDE_HEADINGS 5) +endif() +if(NOT DEFINED DOXYGEN_AUTOLINK_SUPPORT) + set(DOXYGEN_AUTOLINK_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_BUILTIN_STL_SUPPORT) + set(DOXYGEN_BUILTIN_STL_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_CPP_CLI_SUPPORT) + set(DOXYGEN_CPP_CLI_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_SIP_SUPPORT) + set(DOXYGEN_SIP_SUPPORT NO) +endif() +if(NOT DEFINED DOXYGEN_IDL_PROPERTY_SUPPORT) + set(DOXYGEN_IDL_PROPERTY_SUPPORT YES) +endif() +if(NOT DEFINED DOXYGEN_DISTRIBUTE_GROUP_DOC) + set(DOXYGEN_DISTRIBUTE_GROUP_DOC NO) +endif() +if(NOT DEFINED DOXYGEN_GROUP_NESTED_COMPOUNDS) + set(DOXYGEN_GROUP_NESTED_COMPOUNDS NO) +endif() +if(NOT DEFINED DOXYGEN_SUBGROUPING) + set(DOXYGEN_SUBGROUPING YES) +endif() +if(NOT DEFINED DOXYGEN_INLINE_GROUPED_CLASSES) + set(DOXYGEN_INLINE_GROUPED_CLASSES NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_SIMPLE_STRUCTS) + set(DOXYGEN_INLINE_SIMPLE_STRUCTS NO) +endif() +if(NOT DEFINED DOXYGEN_TYPEDEF_HIDES_STRUCT) + set(DOXYGEN_TYPEDEF_HIDES_STRUCT NO) +endif() +if(NOT DEFINED DOXYGEN_LOOKUP_CACHE_SIZE) + set(DOXYGEN_LOOKUP_CACHE_SIZE 0) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_ALL) + set(DOXYGEN_EXTRACT_ALL NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PRIVATE) + set(DOXYGEN_EXTRACT_PRIVATE NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PRIV_VIRTUAL) + set(DOXYGEN_EXTRACT_PRIV_VIRTUAL NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_PACKAGE) + set(DOXYGEN_EXTRACT_PACKAGE NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_STATIC) + set(DOXYGEN_EXTRACT_STATIC NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_CLASSES) + set(DOXYGEN_EXTRACT_LOCAL_CLASSES YES) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_METHODS) + set(DOXYGEN_EXTRACT_LOCAL_METHODS NO) +endif() +if(NOT DEFINED DOXYGEN_EXTRACT_ANON_NSPACES) + set(DOXYGEN_EXTRACT_ANON_NSPACES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_MEMBERS) + set(DOXYGEN_HIDE_UNDOC_MEMBERS NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_CLASSES) + set(DOXYGEN_HIDE_UNDOC_CLASSES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_FRIEND_COMPOUNDS) + set(DOXYGEN_HIDE_FRIEND_COMPOUNDS NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_IN_BODY_DOCS) + set(DOXYGEN_HIDE_IN_BODY_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_INTERNAL_DOCS) + set(DOXYGEN_INTERNAL_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_CASE_SENSE_NAMES) + set(DOXYGEN_CASE_SENSE_NAMES YES) +endif() +if(NOT DEFINED DOXYGEN_HIDE_SCOPE_NAMES) + set(DOXYGEN_HIDE_SCOPE_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_HIDE_COMPOUND_REFERENCE) + set(DOXYGEN_HIDE_COMPOUND_REFERENCE NO) +endif() +if(NOT DEFINED DOXYGEN_SHOW_INCLUDE_FILES) + set(DOXYGEN_SHOW_INCLUDE_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_GROUPED_MEMB_INC) + set(DOXYGEN_SHOW_GROUPED_MEMB_INC NO) +endif() +if(NOT DEFINED DOXYGEN_FORCE_LOCAL_INCLUDES) + set(DOXYGEN_FORCE_LOCAL_INCLUDES NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_INFO) + set(DOXYGEN_INLINE_INFO YES) +endif() +if(NOT DEFINED DOXYGEN_SORT_MEMBER_DOCS) + set(DOXYGEN_SORT_MEMBER_DOCS YES) +endif() +if(NOT DEFINED DOXYGEN_SORT_BRIEF_DOCS) + set(DOXYGEN_SORT_BRIEF_DOCS NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_MEMBERS_CTORS_1ST) + set(DOXYGEN_SORT_MEMBERS_CTORS_1ST NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_GROUP_NAMES) + set(DOXYGEN_SORT_GROUP_NAMES NO) +endif() +if(NOT DEFINED DOXYGEN_SORT_BY_SCOPE_NAME) + set(DOXYGEN_SORT_BY_SCOPE_NAME NO) +endif() +if(NOT DEFINED DOXYGEN_STRICT_PROTO_MATCHING) + set(DOXYGEN_STRICT_PROTO_MATCHING NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TODOLIST) + set(DOXYGEN_GENERATE_TODOLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TESTLIST) + set(DOXYGEN_GENERATE_TESTLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_BUGLIST) + set(DOXYGEN_GENERATE_BUGLIST YES) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DEPRECATEDLIST) + set(DOXYGEN_GENERATE_DEPRECATEDLIST YES) +endif() +if(NOT DEFINED DOXYGEN_MAX_INITIALIZER_LINES) + set(DOXYGEN_MAX_INITIALIZER_LINES 30) +endif() +if(NOT DEFINED DOXYGEN_SHOW_USED_FILES) + set(DOXYGEN_SHOW_USED_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_FILES) + set(DOXYGEN_SHOW_FILES YES) +endif() +if(NOT DEFINED DOXYGEN_SHOW_NAMESPACES) + set(DOXYGEN_SHOW_NAMESPACES YES) +endif() +if(NOT DEFINED DOXYGEN_QUIET) + set(DOXYGEN_QUIET NO) +endif() +if(NOT DEFINED DOXYGEN_WARNINGS) + set(DOXYGEN_WARNINGS YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_IF_UNDOCUMENTED) + set(DOXYGEN_WARN_IF_UNDOCUMENTED YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_IF_DOC_ERROR) + set(DOXYGEN_WARN_IF_DOC_ERROR YES) +endif() +if(NOT DEFINED DOXYGEN_WARN_NO_PARAMDOC) + set(DOXYGEN_WARN_NO_PARAMDOC NO) +endif() +if(NOT DEFINED DOXYGEN_WARN_AS_ERROR) + set(DOXYGEN_WARN_AS_ERROR NO) +endif() +if(NOT DEFINED DOXYGEN_WARN_FORMAT) + set(DOXYGEN_WARN_FORMAT "$file:$line: $text") +endif() +if(NOT DEFINED DOXYGEN_INPUT_ENCODING) + set(DOXYGEN_INPUT_ENCODING UTF-8) +endif() +if(NOT DEFINED DOXYGEN_FILE_PATTERNS) + set(DOXYGEN_FILE_PATTERNS *.c + *.cc + *.cxx + *.cpp + *.c++ + *.java + *.ii + *.ixx + *.ipp + *.i++ + *.inl + *.idl + *.ddl + *.odl + *.h + *.hh + *.hxx + *.hpp + *.h++ + *.cs + *.d + *.php + *.php4 + *.php5 + *.phtml + *.inc + *.m + *.markdown + *.md + *.mm + *.dox + *.doc + *.txt + *.py + *.pyw + *.f90 + *.f95 + *.f03 + *.f08 + *.f + *.for + *.tcl + *.vhd + *.vhdl + *.ucf + *.qsf + *.ice) +endif() +if(NOT DEFINED DOXYGEN_RECURSIVE) + set(DOXYGEN_RECURSIVE NO) +endif() +if(NOT DEFINED DOXYGEN_EXCLUDE_SYMLINKS) + set(DOXYGEN_EXCLUDE_SYMLINKS NO) +endif() +if(NOT DEFINED DOXYGEN_EXAMPLE_PATTERNS) + set(DOXYGEN_EXAMPLE_PATTERNS *) +endif() +if(NOT DEFINED DOXYGEN_EXAMPLE_RECURSIVE) + set(DOXYGEN_EXAMPLE_RECURSIVE NO) +endif() +if(NOT DEFINED DOXYGEN_FILTER_SOURCE_FILES) + set(DOXYGEN_FILTER_SOURCE_FILES NO) +endif() +if(NOT DEFINED DOXYGEN_SOURCE_BROWSER) + set(DOXYGEN_SOURCE_BROWSER NO) +endif() +if(NOT DEFINED DOXYGEN_INLINE_SOURCES) + set(DOXYGEN_INLINE_SOURCES NO) +endif() +if(NOT DEFINED DOXYGEN_STRIP_CODE_COMMENTS) + set(DOXYGEN_STRIP_CODE_COMMENTS YES) +endif() +if(NOT DEFINED DOXYGEN_REFERENCED_BY_RELATION) + set(DOXYGEN_REFERENCED_BY_RELATION NO) +endif() +if(NOT DEFINED DOXYGEN_REFERENCES_RELATION) + set(DOXYGEN_REFERENCES_RELATION NO) +endif() +if(NOT DEFINED DOXYGEN_REFERENCES_LINK_SOURCE) + set(DOXYGEN_REFERENCES_LINK_SOURCE YES) +endif() +if(NOT DEFINED DOXYGEN_SOURCE_TOOLTIPS) + set(DOXYGEN_SOURCE_TOOLTIPS YES) +endif() +if(NOT DEFINED DOXYGEN_USE_HTAGS) + set(DOXYGEN_USE_HTAGS NO) +endif() +if(NOT DEFINED DOXYGEN_VERBATIM_HEADERS) + set(DOXYGEN_VERBATIM_HEADERS YES) +endif() +if(NOT DEFINED DOXYGEN_CLANG_ASSISTED_PARSING) + set(DOXYGEN_CLANG_ASSISTED_PARSING NO) +endif() +if(NOT DEFINED DOXYGEN_ALPHABETICAL_INDEX) + set(DOXYGEN_ALPHABETICAL_INDEX YES) +endif() +if(NOT DEFINED DOXYGEN_COLS_IN_ALPHA_INDEX) + set(DOXYGEN_COLS_IN_ALPHA_INDEX 5) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_HTML) + set(DOXYGEN_GENERATE_HTML YES) +endif() +if(NOT DEFINED DOXYGEN_HTML_OUTPUT) + set(DOXYGEN_HTML_OUTPUT html) +endif() +if(NOT DEFINED DOXYGEN_HTML_FILE_EXTENSION) + set(DOXYGEN_HTML_FILE_EXTENSION .html) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_HUE) + set(DOXYGEN_HTML_COLORSTYLE_HUE 220) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_SAT) + set(DOXYGEN_HTML_COLORSTYLE_SAT 100) +endif() +if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_GAMMA) + set(DOXYGEN_HTML_COLORSTYLE_GAMMA 80) +endif() +if(NOT DEFINED DOXYGEN_HTML_TIMESTAMP) + set(DOXYGEN_HTML_TIMESTAMP NO) +endif() +if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_MENUS) + set(DOXYGEN_HTML_DYNAMIC_MENUS YES) +endif() +if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_SECTIONS) + set(DOXYGEN_HTML_DYNAMIC_SECTIONS NO) +endif() +if(NOT DEFINED DOXYGEN_HTML_INDEX_NUM_ENTRIES) + set(DOXYGEN_HTML_INDEX_NUM_ENTRIES 100) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DOCSET) + set(DOXYGEN_GENERATE_DOCSET NO) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_FEEDNAME) + set(DOXYGEN_DOCSET_FEEDNAME "Doxygen generated docs") +endif() +if(NOT DEFINED DOXYGEN_DOCSET_BUNDLE_ID) + set(DOXYGEN_DOCSET_BUNDLE_ID org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_ID) + set(DOXYGEN_DOCSET_PUBLISHER_ID org.doxygen.Publisher) +endif() +if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_NAME) + set(DOXYGEN_DOCSET_PUBLISHER_NAME Publisher) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_HTMLHELP) + set(DOXYGEN_GENERATE_HTMLHELP NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_CHI) + set(DOXYGEN_GENERATE_CHI NO) +endif() +if(NOT DEFINED DOXYGEN_BINARY_TOC) + set(DOXYGEN_BINARY_TOC NO) +endif() +if(NOT DEFINED DOXYGEN_TOC_EXPAND) + set(DOXYGEN_TOC_EXPAND NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_QHP) + set(DOXYGEN_GENERATE_QHP NO) +endif() +if(NOT DEFINED DOXYGEN_QHP_NAMESPACE) + set(DOXYGEN_QHP_NAMESPACE org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_QHP_VIRTUAL_FOLDER) + set(DOXYGEN_QHP_VIRTUAL_FOLDER doc) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_ECLIPSEHELP) + set(DOXYGEN_GENERATE_ECLIPSEHELP NO) +endif() +if(NOT DEFINED DOXYGEN_ECLIPSE_DOC_ID) + set(DOXYGEN_ECLIPSE_DOC_ID org.doxygen.Project) +endif() +if(NOT DEFINED DOXYGEN_DISABLE_INDEX) + set(DOXYGEN_DISABLE_INDEX NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_TREEVIEW) + set(DOXYGEN_GENERATE_TREEVIEW NO) +endif() +if(NOT DEFINED DOXYGEN_ENUM_VALUES_PER_LINE) + set(DOXYGEN_ENUM_VALUES_PER_LINE 4) +endif() +if(NOT DEFINED DOXYGEN_TREEVIEW_WIDTH) + set(DOXYGEN_TREEVIEW_WIDTH 250) +endif() +if(NOT DEFINED DOXYGEN_EXT_LINKS_IN_WINDOW) + set(DOXYGEN_EXT_LINKS_IN_WINDOW NO) +endif() +if(NOT DEFINED DOXYGEN_FORMULA_FONTSIZE) + set(DOXYGEN_FORMULA_FONTSIZE 10) +endif() +if(NOT DEFINED DOXYGEN_FORMULA_TRANSPARENT) + set(DOXYGEN_FORMULA_TRANSPARENT YES) +endif() +if(NOT DEFINED DOXYGEN_USE_MATHJAX) + set(DOXYGEN_USE_MATHJAX NO) +endif() +if(NOT DEFINED DOXYGEN_MATHJAX_FORMAT) + set(DOXYGEN_MATHJAX_FORMAT HTML-CSS) +endif() +if(NOT DEFINED DOXYGEN_MATHJAX_RELPATH) + set(DOXYGEN_MATHJAX_RELPATH https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/) +endif() +if(NOT DEFINED DOXYGEN_SEARCHENGINE) + set(DOXYGEN_SEARCHENGINE YES) +endif() +if(NOT DEFINED DOXYGEN_SERVER_BASED_SEARCH) + set(DOXYGEN_SERVER_BASED_SEARCH NO) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_SEARCH) + set(DOXYGEN_EXTERNAL_SEARCH NO) +endif() +if(NOT DEFINED DOXYGEN_SEARCHDATA_FILE) + set(DOXYGEN_SEARCHDATA_FILE searchdata.xml) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_LATEX) + set(DOXYGEN_GENERATE_LATEX YES) +endif() +if(NOT DEFINED DOXYGEN_LATEX_OUTPUT) + set(DOXYGEN_LATEX_OUTPUT latex) +endif() +if(NOT DEFINED DOXYGEN_MAKEINDEX_CMD_NAME) + set(DOXYGEN_MAKEINDEX_CMD_NAME makeindex) +endif() +if(NOT DEFINED DOXYGEN_LATEX_MAKEINDEX_CMD) + set(DOXYGEN_LATEX_MAKEINDEX_CMD makeindex) +endif() +if(NOT DEFINED DOXYGEN_COMPACT_LATEX) + set(DOXYGEN_COMPACT_LATEX NO) +endif() +if(NOT DEFINED DOXYGEN_PAPER_TYPE) + set(DOXYGEN_PAPER_TYPE a4) +endif() +if(NOT DEFINED DOXYGEN_PDF_HYPERLINKS) + set(DOXYGEN_PDF_HYPERLINKS YES) +endif() +if(NOT DEFINED DOXYGEN_USE_PDFLATEX) + set(DOXYGEN_USE_PDFLATEX YES) +endif() +if(NOT DEFINED DOXYGEN_LATEX_BATCHMODE) + set(DOXYGEN_LATEX_BATCHMODE NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_HIDE_INDICES) + set(DOXYGEN_LATEX_HIDE_INDICES NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_SOURCE_CODE) + set(DOXYGEN_LATEX_SOURCE_CODE NO) +endif() +if(NOT DEFINED DOXYGEN_LATEX_BIB_STYLE) + set(DOXYGEN_LATEX_BIB_STYLE plain) +endif() +if(NOT DEFINED DOXYGEN_LATEX_TIMESTAMP) + set(DOXYGEN_LATEX_TIMESTAMP NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_RTF) + set(DOXYGEN_GENERATE_RTF NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_OUTPUT) + set(DOXYGEN_RTF_OUTPUT rtf) +endif() +if(NOT DEFINED DOXYGEN_COMPACT_RTF) + set(DOXYGEN_COMPACT_RTF NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_HYPERLINKS) + set(DOXYGEN_RTF_HYPERLINKS NO) +endif() +if(NOT DEFINED DOXYGEN_RTF_SOURCE_CODE) + set(DOXYGEN_RTF_SOURCE_CODE NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_MAN) + set(DOXYGEN_GENERATE_MAN NO) +endif() +if(NOT DEFINED DOXYGEN_MAN_OUTPUT) + set(DOXYGEN_MAN_OUTPUT man) +endif() +if(NOT DEFINED DOXYGEN_MAN_EXTENSION) + set(DOXYGEN_MAN_EXTENSION .3) +endif() +if(NOT DEFINED DOXYGEN_MAN_LINKS) + set(DOXYGEN_MAN_LINKS NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_XML) + set(DOXYGEN_GENERATE_XML NO) +endif() +if(NOT DEFINED DOXYGEN_XML_OUTPUT) + set(DOXYGEN_XML_OUTPUT xml) +endif() +if(NOT DEFINED DOXYGEN_XML_PROGRAMLISTING) + set(DOXYGEN_XML_PROGRAMLISTING YES) +endif() +if(NOT DEFINED DOXYGEN_XML_NS_MEMB_FILE_SCOPE) + set(DOXYGEN_XML_NS_MEMB_FILE_SCOPE NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_DOCBOOK) + set(DOXYGEN_GENERATE_DOCBOOK NO) +endif() +if(NOT DEFINED DOXYGEN_DOCBOOK_OUTPUT) + set(DOXYGEN_DOCBOOK_OUTPUT docbook) +endif() +if(NOT DEFINED DOXYGEN_DOCBOOK_PROGRAMLISTING) + set(DOXYGEN_DOCBOOK_PROGRAMLISTING NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_AUTOGEN_DEF) + set(DOXYGEN_GENERATE_AUTOGEN_DEF NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_PERLMOD) + set(DOXYGEN_GENERATE_PERLMOD NO) +endif() +if(NOT DEFINED DOXYGEN_PERLMOD_LATEX) + set(DOXYGEN_PERLMOD_LATEX NO) +endif() +if(NOT DEFINED DOXYGEN_PERLMOD_PRETTY) + set(DOXYGEN_PERLMOD_PRETTY YES) +endif() +if(NOT DEFINED DOXYGEN_ENABLE_PREPROCESSING) + set(DOXYGEN_ENABLE_PREPROCESSING YES) +endif() +if(NOT DEFINED DOXYGEN_MACRO_EXPANSION) + set(DOXYGEN_MACRO_EXPANSION NO) +endif() +if(NOT DEFINED DOXYGEN_EXPAND_ONLY_PREDEF) + set(DOXYGEN_EXPAND_ONLY_PREDEF NO) +endif() +if(NOT DEFINED DOXYGEN_SEARCH_INCLUDES) + set(DOXYGEN_SEARCH_INCLUDES YES) +endif() +if(NOT DEFINED DOXYGEN_SKIP_FUNCTION_MACROS) + set(DOXYGEN_SKIP_FUNCTION_MACROS YES) +endif() +if(NOT DEFINED DOXYGEN_ALLEXTERNALS) + set(DOXYGEN_ALLEXTERNALS NO) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_GROUPS) + set(DOXYGEN_EXTERNAL_GROUPS YES) +endif() +if(NOT DEFINED DOXYGEN_EXTERNAL_PAGES) + set(DOXYGEN_EXTERNAL_PAGES YES) +endif() +if(NOT DEFINED DOXYGEN_CLASS_DIAGRAMS) + set(DOXYGEN_CLASS_DIAGRAMS YES) +endif() +if(NOT DEFINED DOXYGEN_HIDE_UNDOC_RELATIONS) + set(DOXYGEN_HIDE_UNDOC_RELATIONS YES) +endif() +if(NOT DEFINED DOXYGEN_HAVE_DOT) + set(DOXYGEN_HAVE_DOT YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_NUM_THREADS) + set(DOXYGEN_DOT_NUM_THREADS 0) +endif() +if(NOT DEFINED DOXYGEN_DOT_FONTNAME) + set(DOXYGEN_DOT_FONTNAME Helvetica) +endif() +if(NOT DEFINED DOXYGEN_DOT_FONTSIZE) + set(DOXYGEN_DOT_FONTSIZE 10) +endif() +if(NOT DEFINED DOXYGEN_CLASS_GRAPH) + set(DOXYGEN_CLASS_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_COLLABORATION_GRAPH) + set(DOXYGEN_COLLABORATION_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_GROUP_GRAPHS) + set(DOXYGEN_GROUP_GRAPHS YES) +endif() +if(NOT DEFINED DOXYGEN_UML_LOOK) + set(DOXYGEN_UML_LOOK NO) +endif() +if(NOT DEFINED DOXYGEN_UML_LIMIT_NUM_FIELDS) + set(DOXYGEN_UML_LIMIT_NUM_FIELDS 10) +endif() +if(NOT DEFINED DOXYGEN_TEMPLATE_RELATIONS) + set(DOXYGEN_TEMPLATE_RELATIONS NO) +endif() +if(NOT DEFINED DOXYGEN_INCLUDE_GRAPH) + set(DOXYGEN_INCLUDE_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_INCLUDED_BY_GRAPH) + set(DOXYGEN_INCLUDED_BY_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_CALL_GRAPH) + set(DOXYGEN_CALL_GRAPH NO) +endif() +if(NOT DEFINED DOXYGEN_CALLER_GRAPH) + set(DOXYGEN_CALLER_GRAPH NO) +endif() +if(NOT DEFINED DOXYGEN_GRAPHICAL_HIERARCHY) + set(DOXYGEN_GRAPHICAL_HIERARCHY YES) +endif() +if(NOT DEFINED DOXYGEN_DIRECTORY_GRAPH) + set(DOXYGEN_DIRECTORY_GRAPH YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_IMAGE_FORMAT) + set(DOXYGEN_DOT_IMAGE_FORMAT png) +endif() +if(NOT DEFINED DOXYGEN_INTERACTIVE_SVG) + set(DOXYGEN_INTERACTIVE_SVG NO) +endif() +if(NOT DEFINED DOXYGEN_DOT_GRAPH_MAX_NODES) + set(DOXYGEN_DOT_GRAPH_MAX_NODES 50) +endif() +if(NOT DEFINED DOXYGEN_MAX_DOT_GRAPH_DEPTH) + set(DOXYGEN_MAX_DOT_GRAPH_DEPTH 0) +endif() +if(NOT DEFINED DOXYGEN_DOT_TRANSPARENT) + set(DOXYGEN_DOT_TRANSPARENT NO) +endif() +if(NOT DEFINED DOXYGEN_DOT_MULTI_TARGETS) + set(DOXYGEN_DOT_MULTI_TARGETS NO) +endif() +if(NOT DEFINED DOXYGEN_GENERATE_LEGEND) + set(DOXYGEN_GENERATE_LEGEND YES) +endif() +if(NOT DEFINED DOXYGEN_DOT_CLEANUP) + set(DOXYGEN_DOT_CLEANUP YES) +endif() diff --git a/ww/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake b/ww/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake new file mode 100644 index 00000000..278ef39e --- /dev/null +++ b/ww/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake @@ -0,0 +1,88 @@ +set(CMAKE_CXX_COMPILER "/usr/bin/c++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "GNU") +set(CMAKE_CXX_COMPILER_VERSION "9.4.0") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_CXX_COMPILER_AR "/usr/bin/gcc-ar-9") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/gcc-ranlib-9") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCXX 1) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW ) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/ww/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin b/ww/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin new file mode 100755 index 0000000000000000000000000000000000000000..156cfcfc782ba2dc2f291ca842e4a4516fe2c356 GIT binary patch literal 16560 zcmeHOZ)_Y#6`%9j$)!!smoyvn%vnwdyOtmo7lvVrpwuPwvXOF z?)Io%(NJWFI0cgkRnUGwDn+15d};Xrp8!W`(@F?vgj9;4ULUuER;5=OoERY94~Tj#n5l!?6b&9!;ua#J-b(4kCRM{I=sHkOR#BOG z#%tt&k@=cGjXb(=g7g^edKjC9R;9Pl=|qjSMtyuDiO|-KSqux#soiM zil-YjWkoQ$^@d5$jXk8th(0hKecej_JO1uvJx!VsVHe(`Xu-(-?gKp;7pi|d;BG!b z{#NRT5XGO7!Yg)X(jy&vcW08VnRKo^**Y2SXzkdmm-6}^=^ERGK5$I+4Gak|Gm9LB zQTD|~Dr5cgv-h1U#vXj`#^jmevtRqwV*@`q_5|BNpD2R~^?68O8T04^Wz_Y5268l( z0WYS0oR!21Ut!?2I(1us+faue1Wv2NkFLPq3jDk4$P0+yD2A&;nC9qY!W>KI5}EYF zDJWu(H*e#4>>$5j<9QAszi8v>R)@5gya;#^@FL(vz>9zv0WShx1iT3R zQxW)6^X-2#rY{AI(@j6$Erjv8S*xM?k}>^U;JnnY?t2R8tJOQd4$!<^pgfemCrdp- zmfPRxuUve@LfF4( zZ35Q=m9zv0WShx1iT1%5%415MZk-I7lHqi2>2Xt8-?f}=skR(1n=qcV`j2o6_2-t zPhcn{pBPCWhy4Ob__q2#fbVGWJ=gr3)oKB75%6)qz(Tb;40r|b8Nl$BYV{?+rvY2& zr5L^&#pHYVi11B@d|TJ94xEKLY``0eB-tQvU}lE0A3QoP;ap1L(R87 z6nIn|+;ZT(@82O`L!$ou@EK+~$YVmA7JT+YoBEK51w*GAy4S5b367x%e;J6!;PWx4 zPXUVFVCYOkf3W3?{#a0(X^aJTexa!+*mi1_5e!eS?h8h8!EiL#77gy~3Tj=!mabr^ zD;SXP7k>%rp9eeM`#B7xm%Ipg5%415MZk-I7XdE3dANt22vBVv`=z1RRqWpw_}!g*aRvQ+q<30EcaGbwHM+f zDR?6*+doh3g*U^p%yERrK3RU5>i&+m9F2;lV;iQGHAnH_ zMhOmWB=hEYCO?wMm`N*NESZV&q!`U-3z?LaO6uXZj`sROcw{7PCW^(xl$pv|#VIjX zOk`7LvYgFMfr_nUf~4gT?LL%vFx5Rg+zpP>nN%^_)vu2h3c~zoyuBlx8_S!vKe>?& zOA`L!2FtxiqK9H;Y@o-4QzlN^Nn!SUWFUH|zuQ?OkFx*;=XlJRK^BajBf{*9AMT3A z&BMLDM`MHLV6-b9L#y%-%xI}Buks%sdr2h|R)STQ&do$3j)OBMN~yy!AnQCSV(vVxOW>D2o`;N;nuKp0c_5jWf!9+L zG}b1PpwA_xuLhmc;5-;lWYeS29PBq8;wf|(@L3qd?%DG%mvOxfQxxuWX%KE&HWt=5J_V2#_ zuRuLs6W8NUnoNZJJV>nc#d*Z9!pE+!ksc$PV;wFtKIPKq^)n;Ot)%}gmwtp481eVp zp4|4Hb?NhZoROcG*@k=kewXw){z4;3LY!arVBP=xjQe}Y+BNJXH|o>-r85i0HaB0|z_3fT{_HUC_` z2^qA-{(1csB7OG5@^m>|6n-F(Bk>x~`gheBm0^85^4PJ9M%W-tY@Ej!Qf?35|M343 eZo5OD2JQ}*arVoyxD2hQpA0LBwJrr$QT!cqBtQ)S literal 0 HcmV?d00001 diff --git a/ww/build/CMakeFiles/3.17.0/CMakeSystem.cmake b/ww/build/CMakeFiles/3.17.0/CMakeSystem.cmake new file mode 100644 index 00000000..0fd1f759 --- /dev/null +++ b/ww/build/CMakeFiles/3.17.0/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-5.4.0-113-generic") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "5.4.0-113-generic") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Linux-5.4.0-113-generic") +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_VERSION "5.4.0-113-generic") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/ww/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp b/ww/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 00000000..69cfdba6 --- /dev/null +++ b/ww/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,660 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_dialect_default = "INFO" ":" "dialect_default[" +#if CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} diff --git a/ww/build/CMakeFiles/CMakeError.log b/ww/build/CMakeFiles/CMakeError.log new file mode 100644 index 00000000..ff45938b --- /dev/null +++ b/ww/build/CMakeFiles/CMakeError.log @@ -0,0 +1,50 @@ +Performing C++ SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output: +Change Dir: /home/tngngn/ccbench/ww/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_0d976 && [1/2] Building CXX object CMakeFiles/cmTC_0d976.dir/src.cxx.o +[2/2] Linking CXX executable cmTC_0d976 +FAILED: cmTC_0d976 +: && /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD CMakeFiles/cmTC_0d976.dir/src.cxx.o -o cmTC_0d976 && : +/usr/bin/ld: CMakeFiles/cmTC_0d976.dir/src.cxx.o: in function `main': +src.cxx:(.text+0x46): undefined reference to `pthread_create' +/usr/bin/ld: src.cxx:(.text+0x52): undefined reference to `pthread_detach' +/usr/bin/ld: src.cxx:(.text+0x5e): undefined reference to `pthread_cancel' +/usr/bin/ld: src.cxx:(.text+0x6f): undefined reference to `pthread_join' +collect2: error: ld returned 1 exit status +ninja: build stopped: subcommand failed. + + +Source file was: +#include + +void* test_func(void* data) +{ + return data; +} + +int main(void) +{ + pthread_t thread; + pthread_create(&thread, NULL, test_func, NULL); + pthread_detach(thread); + pthread_cancel(thread); + pthread_join(thread, NULL); + pthread_atfork(NULL, NULL, NULL); + pthread_exit(NULL); + + return 0; +} + +Determining if the function pthread_create exists in the pthreads failed with the following output: +Change Dir: /home/tngngn/ccbench/ww/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_0bca2 && [1/2] Building CXX object CMakeFiles/cmTC_0bca2.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_0bca2 +FAILED: cmTC_0bca2 +: && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_0bca2.dir/CheckFunctionExists.cxx.o -o cmTC_0bca2 -lpthreads && : +/usr/bin/ld: -lpthreads が見つかりません +collect2: error: ld returned 1 exit status +ninja: build stopped: subcommand failed. + + + diff --git a/ww/build/CMakeFiles/CMakeOutput.log b/ww/build/CMakeFiles/CMakeOutput.log new file mode 100644 index 00000000..b62bb65c --- /dev/null +++ b/ww/build/CMakeFiles/CMakeOutput.log @@ -0,0 +1,235 @@ +The system is: Linux - 5.4.0-113-generic - x86_64 +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: /usr/bin/c++ +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" + +The CXX compiler identification is GNU, found in "/home/tngngn/ccbench/ww/build/CMakeFiles/3.17.0/CompilerIdCXX/a.out" + +Determining if the CXX compiler works passed with the following output: +Change Dir: /home/tngngn/ccbench/ww/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_1c619 && [1/2] Building CXX object CMakeFiles/cmTC_1c619.dir/testCXXCompiler.cxx.o +[2/2] Linking CXX executable cmTC_1c619 + + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: /home/tngngn/ccbench/ww/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_26564 && [1/2] Building CXX object CMakeFiles/cmTC_26564.dir/CMakeCXXCompilerABI.cpp.o +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_26564.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_26564.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccm16btU.s +GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9" +ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include" +#include "..." search starts here: +#include <...> search starts here: + /usr/include/c++/9 + /usr/include/x86_64-linux-gnu/c++/9 + /usr/include/c++/9/backward + /usr/lib/gcc/x86_64-linux-gnu/9/include + /usr/local/include + /usr/include/x86_64-linux-gnu + /usr/include +End of search list. +GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_26564.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + as -v --64 -o CMakeFiles/cmTC_26564.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccm16btU.s +GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34 +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_26564.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +[2/2] Linking CXX executable cmTC_26564 +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_26564' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccDzeSBd.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_26564 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_26564.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_26564' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/usr/include/c++/9] + add: [/usr/include/x86_64-linux-gnu/c++/9] + add: [/usr/include/c++/9/backward] + add: [/usr/lib/gcc/x86_64-linux-gnu/9/include] + add: [/usr/local/include] + add: [/usr/include/x86_64-linux-gnu] + add: [/usr/include] + end of search list found + collapse include dir [/usr/include/c++/9] ==> [/usr/include/c++/9] + collapse include dir [/usr/include/x86_64-linux-gnu/c++/9] ==> [/usr/include/x86_64-linux-gnu/c++/9] + collapse include dir [/usr/include/c++/9/backward] ==> [/usr/include/c++/9/backward] + collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/9/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/9/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/tngngn/ccbench/ww/build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/local/bin/ninja cmTC_26564 && [1/2] Building CXX object CMakeFiles/cmTC_26564.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_26564.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_26564.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccm16btU.s] + ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9"] + ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/include/c++/9] + ignore line: [ /usr/include/x86_64-linux-gnu/c++/9] + ignore line: [ /usr/include/c++/9/backward] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/include/x86_64-linux-gnu] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_26564.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_26564.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccm16btU.s] + ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_26564.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [[2/2] Linking CXX executable cmTC_26564] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_26564' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccDzeSBd.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_26564 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_26564.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccDzeSBd.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--as-needed] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-o] ==> ignore + arg [cmTC_26564] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] + arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] + arg [CMakeFiles/cmTC_26564.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] ==> ignore + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9] ==> [/usr/lib/gcc/x86_64-linux-gnu/9] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> [/usr/lib] + implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc] + implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] + implicit fwks: [] + + +Determining if the include file pthread.h exists passed with the following output: +Change Dir: /home/tngngn/ccbench/ww/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_5a22b && [1/2] Building CXX object CMakeFiles/cmTC_5a22b.dir/CheckIncludeFile.cxx.o +[2/2] Linking CXX executable cmTC_5a22b + + + +Determining if the function pthread_create exists in the pthread passed with the following output: +Change Dir: /home/tngngn/ccbench/ww/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_98d43 && [1/2] Building CXX object CMakeFiles/cmTC_98d43.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_98d43 + + + diff --git a/ww/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx b/ww/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx new file mode 100644 index 00000000..13435e07 --- /dev/null +++ b/ww/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx @@ -0,0 +1,28 @@ +#ifdef CHECK_FUNCTION_EXISTS + +# ifdef __cplusplus +extern "C" +# endif + char + CHECK_FUNCTION_EXISTS(void); +# ifdef __CLASSIC_C__ +int main() +{ + int ac; + char* av[]; +# else +int main(int ac, char* av[]) +{ +# endif + CHECK_FUNCTION_EXISTS(); + if (ac > 1000) { + return *av[0]; + } + return 0; +} + +#else /* CHECK_FUNCTION_EXISTS */ + +# error "CHECK_FUNCTION_EXISTS has to specify the function" + +#endif /* CHECK_FUNCTION_EXISTS */ diff --git a/ww/build/CMakeFiles/TargetDirectories.txt b/ww/build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 00000000..ebbd7525 --- /dev/null +++ b/ww/build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +/home/tngngn/ccbench/ww/build/CMakeFiles/rebuild_cache.dir +/home/tngngn/ccbench/ww/build/CMakeFiles/edit_cache.dir +/home/tngngn/ccbench/ww/build/CMakeFiles/ss2pl.exe.dir diff --git a/ww/build/CMakeFiles/cmake.check_cache b/ww/build/CMakeFiles/cmake.check_cache new file mode 100644 index 00000000..3dccd731 --- /dev/null +++ b/ww/build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/ww/build/build.ninja b/ww/build/build.ninja new file mode 100644 index 00000000..93f677aa --- /dev/null +++ b/ww/build/build.ninja @@ -0,0 +1,186 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.17 + +# This file contains all the build statements describing the +# compilation DAG. + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# +# Which is the root file. +# ============================================================================= + +# ============================================================================= +# Project: ccbench_ss2pl +# Configurations: Release +# ============================================================================= + +############################################# +# Minimal version of Ninja required by this file + +ninja_required_version = 1.5 + + +############################################# +# Set configuration variable for custom commands. + +CONFIGURATION = Release +# ============================================================================= +# Include auxiliary files. + + +############################################# +# Include rules file. + +include rules.ninja + + +############################################# +# Utility command for rebuild_cache + +build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/ww/build && /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/ww -B/home/tngngn/ccbench/ww/build + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build rebuild_cache: phony CMakeFiles/rebuild_cache.util + + +############################################# +# Utility command for edit_cache + +build CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/ww/build && /usr/local/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. + DESC = No interactive CMake dialog available... + restat = 1 + +build edit_cache: phony CMakeFiles/edit_cache.util + +# ============================================================================= +# Object build statements for EXECUTABLE target ss2pl.exe + + +############################################# +# Order-only phony target for ss2pl.exe + +build cmake_object_order_depends_target_ss2pl.exe_Release: phony || CMakeFiles/ss2pl.exe.dir + +build CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Release /home/tngngn/ccbench/common/result.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Release /home/tngngn/ccbench/common/util.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../result.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/result.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../ss2pl.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/transaction.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../transaction.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/transaction.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../util.cc || cmake_object_order_depends_target_ss2pl.exe_Release + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/util.cc.o.d + FLAGS = -O3 -DNDEBUG -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + + +# ============================================================================= +# Link build statements for EXECUTABLE target ss2pl.exe + + +############################################# +# Link the executable ss2pl.exe + +build ss2pl.exe: CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Release CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o CMakeFiles/ss2pl.exe.dir/result.cc.o CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o CMakeFiles/ss2pl.exe.dir/transaction.cc.o CMakeFiles/ss2pl.exe.dir/util.cc.o | /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a + FLAGS = -O3 -DNDEBUG + LINK_LIBRARIES = /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a -lpthread + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + POST_BUILD = : + PRE_LINK = : + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_FILE = ss2pl.exe + TARGET_PDB = ss2pl.exe.pdb + +# ============================================================================= +# Target aliases. + +# ============================================================================= +# Folder targets. + +# ============================================================================= + +############################################# +# Folder: /home/tngngn/ccbench/ww/build + +build all: phony ss2pl.exe + +# ============================================================================= +# Built-in targets + + +############################################# +# Re-run CMake if any of its inputs changed. + +build build.ninja: RERUN_CMAKE | ../CMakeLists.txt /home/tngngn/ccbench/cmake/CompileOptions.cmake /home/tngngn/ccbench/cmake/Findgflags.cmake /home/tngngn/ccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx + pool = console + + +############################################# +# A missing CMake input file is not an error. + +build ../CMakeLists.txt /home/tngngn/ccbench/cmake/CompileOptions.cmake /home/tngngn/ccbench/cmake/Findgflags.cmake /home/tngngn/ccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx: phony + + +############################################# +# Clean all the built files. + +build clean: CLEAN + + +############################################# +# Print all primary targets available. + +build help: HELP + + +############################################# +# Make the all target the default. + +default all diff --git a/ww/build/cmake_install.cmake b/ww/build/cmake_install.cmake new file mode 100644 index 00000000..10d85246 --- /dev/null +++ b/ww/build/cmake_install.cmake @@ -0,0 +1,49 @@ +# Install script for directory: /home/tngngn/ccbench/ww + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "/home/tngngn/ccbench/ww/build/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/ww/build/rules.ninja b/ww/build/rules.ninja new file mode 100644 index 00000000..a466f877 --- /dev/null +++ b/ww/build/rules.ninja @@ -0,0 +1,64 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.17 + +# This file contains all the rules used to get the outputs files +# built from the input files. +# It is included in the main 'build.ninja'. + +# ============================================================================= +# Project: ccbench_ss2pl +# Configurations: Release +# ============================================================================= +# ============================================================================= + +############################################# +# Rule for running custom commands. + +rule CUSTOM_COMMAND + command = $COMMAND + description = $DESC + + +############################################# +# Rule for compiling CXX files. + +rule CXX_COMPILER__ss2pl.2eexe_Release + depfile = $DEP_FILE + deps = gcc + command = /usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building CXX object $out + + +############################################# +# Rule for linking CXX executable. + +rule CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Release + command = $PRE_LINK && /usr/bin/c++ $FLAGS $LINK_FLAGS $in -o $TARGET_FILE $LINK_PATH $LINK_LIBRARIES && $POST_BUILD + description = Linking CXX executable $TARGET_FILE + restat = $RESTAT + + +############################################# +# Rule for re-running cmake. + +rule RERUN_CMAKE + command = /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/ww -B/home/tngngn/ccbench/ww/build + description = Re-running CMake... + generator = 1 + + +############################################# +# Rule for cleaning all built files. + +rule CLEAN + command = /usr/local/bin/ninja $FILE_ARG -t clean $TARGETS + description = Cleaning all built files... + + +############################################# +# Rule for printing all primary targets available. + +rule HELP + command = /usr/local/bin/ninja -t targets + description = All primary targets available: + diff --git a/ww/include/common.hh b/ww/include/common.hh new file mode 100644 index 00000000..579055ef --- /dev/null +++ b/ww/include/common.hh @@ -0,0 +1,57 @@ +#pragma once + +#include + +#include "../../include/cache_line_size.hh" +#include "../../include/int64byte.hh" +#include "../../include/masstree_wrapper.hh" +#include "tuple.hh" + +#include "gflags/gflags.h" +#include "glog/logging.h" + +#ifdef GLOBAL_VALUE_DEFINE +#define GLOBAL + +#if MASSTREE_USE +alignas(CACHE_LINE_SIZE) GLOBAL MasstreeWrapper MT; +#endif + +#else +#define GLOBAL extern + +#if MASSTREE_USE +alignas(CACHE_LINE_SIZE) GLOBAL MasstreeWrapper MT; +#endif + +#endif + +#ifdef GLOBAL_VALUE_DEFINE +DEFINE_uint64(clocks_per_us, 2100, + "CPU_MHz. Use this info for measuring time."); +DEFINE_uint64(extime, 3, "Execution time[sec]."); +DEFINE_uint64(max_ope, 10, + "Total number of operations per single transaction."); +DEFINE_bool(rmw, false, + "True means read modify write, false means blind write."); +DEFINE_uint64(rratio, 50, "read ratio of single transaction."); +DEFINE_uint64(thread_num, 10, "Total number of worker threads."); +DEFINE_uint64(tuple_num, 1000000, "Total number of records."); +DEFINE_bool(ycsb, true, + "True uses zipf_skew, false uses faster random generator."); +DEFINE_double(zipf_skew, 0, "zipf skew. 0 ~ 0.999..."); +#else +DECLARE_uint64(clocks_per_us); +DECLARE_uint64(extime); +DECLARE_uint64(max_ope); +DECLARE_bool(rmw); +DECLARE_uint64(rratio); +DECLARE_uint64(thread_num); +DECLARE_uint64(tuple_num); +DECLARE_bool(ycsb); +DECLARE_double(zipf_skew); +#endif + +alignas(CACHE_LINE_SIZE) GLOBAL Tuple *Table; +alignas(CACHE_LINE_SIZE) GLOBAL int thread_stats[224]; +alignas(CACHE_LINE_SIZE) GLOBAL int thread_timestamp[224]; diff --git a/ww/include/result.hh b/ww/include/result.hh new file mode 100644 index 00000000..26dd8285 --- /dev/null +++ b/ww/include/result.hh @@ -0,0 +1,9 @@ +#pragma once + +#include + +#include "../../include/result.hh" + +extern std::vector SS2PLResult; + +extern void initResult(); diff --git a/ww/include/ss2pl_op_element.hh b/ww/include/ss2pl_op_element.hh new file mode 100644 index 00000000..6162c229 --- /dev/null +++ b/ww/include/ss2pl_op_element.hh @@ -0,0 +1,18 @@ +#pragma once + +#include "../../include/op_element.hh" + +template +class SetElement : public OpElement { +public: + using OpElement::OpElement; + + char val_[VAL_SIZE]; + + SetElement(uint64_t key, T *rcdptr) : OpElement::OpElement(key, rcdptr) {} + + SetElement(uint64_t key, T *rcdptr, char *val) + : OpElement::OpElement(key, rcdptr) { + memcpy(this->val_, val, VAL_SIZE); + } +}; diff --git a/ww/include/transaction.hh b/ww/include/transaction.hh new file mode 100644 index 00000000..5431f352 --- /dev/null +++ b/ww/include/transaction.hh @@ -0,0 +1,65 @@ +#pragma once + +#include + +#include "../../include/procedure.hh" +#include "../../include/result.hh" +#include "../../include/rwlock.hh" +#include "../../include/string.hh" +#include "../../include/util.hh" +#include "ss2pl_op_element.hh" +#include "tuple.hh" + +enum class TransactionStatus : uint8_t { + inFlight, + committed, + aborted, +}; + +extern void writeValGenerator(char *writeVal, size_t val_size, size_t thid); + +class TxExecutor { +public: + alignas(CACHE_LINE_SIZE) int thid_; + std::vector r_lock_list_; + std::vector w_lock_list_; + TransactionStatus status_ = TransactionStatus::inFlight; + Result *sres_; + vector > read_set_; + vector > write_set_; + vector pro_set_; + + char write_val_[VAL_SIZE]; + char return_val_[VAL_SIZE]; + + TxExecutor(int thid, Result *sres) : thid_(thid), sres_(sres) { + read_set_.reserve(FLAGS_max_ope); + write_set_.reserve(FLAGS_max_ope); + pro_set_.reserve(FLAGS_max_ope); + r_lock_list_.reserve(FLAGS_max_ope); + w_lock_list_.reserve(FLAGS_max_ope); + + genStringRepeatedNumber(write_val_, VAL_SIZE, thid); + } + + SetElement *searchReadSet(uint64_t key); + + SetElement *searchWriteSet(uint64_t key); + + void begin(); + + void read(uint64_t key); + + void write(uint64_t key); + + void readWrite(uint64_t key); + + void commit(); + + void abort(); + + void unlockList(); + + // inline + Tuple *get_tuple(Tuple *table, uint64_t key) { return &table[key]; } +}; diff --git a/ww/include/tuple.hh b/ww/include/tuple.hh new file mode 100644 index 00000000..ffd2d45e --- /dev/null +++ b/ww/include/tuple.hh @@ -0,0 +1,25 @@ +#pragma once + +#include +#include + +#include "../../include/cache_line_size.hh" +#include "../../include/inline.hh" +#include "../../include/rwlock.hh" + +using namespace std; + +class Tuple { +public: + alignas(CACHE_LINE_SIZE) RWLock lock_; + char val_[VAL_SIZE]; + int writer = 0; + int readers[224] = {0}; + int writers[224] = {0}; + std::vector waitRd; + std::vector waitWR; + Tuple() { + waitRd.reserve(224); + waitWR.reserve(224); + } +}; diff --git a/ww/include/util.hh b/ww/include/util.hh new file mode 100644 index 00000000..547508fa --- /dev/null +++ b/ww/include/util.hh @@ -0,0 +1,13 @@ +#pragma once + +extern void chkArg(); + +extern void displayDB(); + +extern void displayParameter(); + +extern void makeDB(); + +extern void partTableInit([[maybe_unused]] size_t thid, uint64_t start, uint64_t end); + +extern void ShowOptParameters(); diff --git a/ww/result.cc b/ww/result.cc new file mode 100644 index 00000000..ff17dd8d --- /dev/null +++ b/ww/result.cc @@ -0,0 +1,11 @@ +#include "include/result.hh" +#include "include/common.hh" + +#include "../include/cache_line_size.hh" +#include "../include/result.hh" + +using namespace std; + +alignas(CACHE_LINE_SIZE) std::vector SS2PLResult; + +void initResult() { SS2PLResult.resize(FLAGS_thread_num); } diff --git a/ww/script/test_cache_ana.sh b/ww/script/test_cache_ana.sh new file mode 100755 index 00000000..df6753dd --- /dev/null +++ b/ww/script/test_cache_ana.sh @@ -0,0 +1,227 @@ +#test_cache_ana.sh(ss2pl) +maxope=10 +thread=24 +cpu_mhz=2400 +extime=3 +epoch=5 + +tuple=100 +workload=0 +result=result_ss2pl_r10_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=1 +result=result_ss2pl_r8_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=2 +result=result_ss2pl_r5_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=3 +result=result_ss2pl_r2_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + +tuple=100 +workload=4 +result=result_ss2pl_r0_cache.dat +rm $result +echo "#tuple, cache-miss-ratio, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) +do + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + sum=0 + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + diff --git a/ww/script/test_t1k.sh b/ww/script/test_t1k.sh new file mode 100755 index 00000000..73dbfec1 --- /dev/null +++ b/ww/script/test_t1k.sh @@ -0,0 +1,382 @@ +#test_t1k.sh(ss2pl) +tuple=1000 +maxope=10 +cpu_mhz=2400 +extime=3 +epoch=5 + +workload=0 +result=result_ss2pl_r10_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=1 +result=result_ss2pl_r8_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=2 +result=result_ss2pl_r5_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=3 +result=result_ss2pl_r2_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=4 +result=result_ss2pl_r0_tuple1k_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + diff --git a/ww/script/test_t1m.sh b/ww/script/test_t1m.sh new file mode 100755 index 00000000..9b30a188 --- /dev/null +++ b/ww/script/test_t1m.sh @@ -0,0 +1,382 @@ +#test_t1m.sh(ss2pl) +tuple=1000000 +maxope=10 +cpu_mhz=2400 +extime=3 +epoch=5 + +workload=0 +result=result_ss2pl_r10_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=1 +result=result_ss2pl_r8_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=2 +result=result_ss2pl_r5_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=3 +result=result_ss2pl_r2_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=4 +result=result_ss2pl_r0_tuple1m_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + diff --git a/ww/script/test_t200.sh b/ww/script/test_t200.sh new file mode 100755 index 00000000..ed333bb7 --- /dev/null +++ b/ww/script/test_t200.sh @@ -0,0 +1,382 @@ +#test_t200.sh(ss2pl) +tuple=200 +maxope=10 +cpu_mhz=2400 +extime=3 +epoch=5 + +workload=0 +result=result_ss2pl_r10_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=1 +result=result_ss2pl_r8_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=2 +result=result_ss2pl_r5_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=3 +result=result_ss2pl_r2_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + +workload=4 +result=result_ss2pl_r0_tuple200_ar.dat +rm $result +echo "#Worker threads, throughput, min, max" >> $result + +thread=1 +sum=0 +echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" +echo "$thread $epoch" + +max=0 +min=0 +for ((i=1; i <= epoch; i++)) +do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi +done +avg=`echo "$sum / $epoch" | bc -l` +echo "sum: $sum, epoch: $epoch" +echo "avg $avg" +echo "max: $max" +echo "min: $min" +echo "$thread $avg $min $max" >> $result + +for ((thread=4; thread<=24; thread+=4)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" + echo "$thread $epoch" + + max=0 + min=0 + for ((i=1; i <= epoch; i++)) + do + tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$thread $avg $min $max" >> $result +done + diff --git a/ww/script/tst200-1k-1m.sh b/ww/script/tst200-1k-1m.sh new file mode 100755 index 00000000..c347fa88 --- /dev/null +++ b/ww/script/tst200-1k-1m.sh @@ -0,0 +1,1991 @@ +#tst200-1k-1m.sh(ss2pl) +maxope=10 +rmw=off +skew=0 +ycsb=off +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +#kugiri +rratio=0 +tuple=200 +result=result_ss2pl_r0_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=20 +tuple=200 +result=result_ss2pl_r2_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=80 +tuple=200 +result=result_ss2pl_r8_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=100 +tuple=200 +result=result_ss2pl_r10_tuple200.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=0 +tuple=1000 +result=result_ss2pl_r0_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=20 +tuple=1000 +result=result_ss2pl_r2_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=80 +tuple=1000 +result=result_ss2pl_r8_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=100 +tuple=1000 +result=result_ss2pl_r10_tuple1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=0 +tuple=1000000 +result=result_ss2pl_r0_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=20 +tuple=1000000 +result=result_ss2pl_r2_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=80 +tuple=1000000 +result=result_ss2pl_r8_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +#kugiri +rratio=100 +tuple=1000000 +result=result_ss2pl_r10_tuple1m.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/ww/script/ycsb-xope.sh b/ww/script/ycsb-xope.sh new file mode 100755 index 00000000..7398b793 --- /dev/null +++ b/ww/script/ycsb-xope.sh @@ -0,0 +1,106 @@ +#ycsb-xope.sh(ss2pl) +tuple=100000000 +maxope=10 +rratio=95 +rmw=off +skew=0.8 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j KEY_SIZE=8 VAL_SIZE=4 +cd script/ + +result=result_ss2pl-dlr1_ycsbB_tuple100m_skew08_ope10-100.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + +for ((maxope=10; maxope<=100; maxope+=10)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$maxope $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done diff --git a/ww/script/ycsb-xrratio.sh b/ww/script/ycsb-xrratio.sh new file mode 100755 index 00000000..e4e74263 --- /dev/null +++ b/ww/script/ycsb-xrratio.sh @@ -0,0 +1,102 @@ +#ycsb-xrratio.sh(ss2pl) +tuple=1000000 +maxope=10 +rratio=0 +rmw=off +skew=0.9 +ycsb=on +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +result=result_ss2pl-dlr1_tuple1m_val1k_skew09_rratio0-100.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + +for ((rratio=0; rratio<=100; rratio+=10)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$rratio $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done diff --git a/ww/script/ycsb-xrs.sh b/ww/script/ycsb-xrs.sh new file mode 100755 index 00000000..fb18cb42 --- /dev/null +++ b/ww/script/ycsb-xrs.sh @@ -0,0 +1,118 @@ +#ycsb-xrs.sh(ss2pl) +maxope=10 +rratioary=(50 95 100) +rmw=off +skew=0.9 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j KEY_SIZE=8 VAL_SIZE=1000 +cd script/ + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50 ; then + result=result_ss2pl_ycsbA_tuple1k-100m_val1k_skew09.dat + elif test $rratio = 95 ; then + result=result_ss2pl_ycsbB_tuple1k-100m_val1k_skew09.dat + elif test $rratio = 100 ; then + result=result_ss2pl_ycsbC_tuple1k-100m_val1k_skew09.dat + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + + for ((tuple=1000; tuple<=100000000; tuple*=10)) + do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$tuple $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/ww/script/ycsb-xskew.sh b/ww/script/ycsb-xskew.sh new file mode 100755 index 00000000..314e6020 --- /dev/null +++ b/ww/script/ycsb-xskew.sh @@ -0,0 +1,131 @@ +#ycsb-xrs.sh(ss2pl) +tuple=10000000 +maxope=16 +rratioary=(50 95) +rmw=on +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j VAL_SIZE=100 +cd script/ + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50; then + thread=28 + result=result_2pl_ycsbA_tuple10m_ope16_rmw_skew0-099_th28.dat + elif test $rratio = 95; then + thread=28 + result=result_2pl_ycsbB_tuple10m_ope16_rmw_skew0-099_th28.dat + elif test $rratio = 100; then + result=result_ss2pl_ycsbC_tuple1k_skew0-099.dat + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw skew $ycsb $cpu_mhz $extime" >> $result + ../ss2pl.exe > exp.txt + tmpStr=`grep ShowOptParameters ./exp.txt` + echo "#$tmpStr" >> $result + + for ((tmpskew = 0; tmpskew <= 105; tmpskew += 10)) + do + if test $tmpskew = 100 ; then + tmpskew=95 + fi + if test $tmpskew = 105 ; then + tmpskew=99 + fi + skew=`echo "scale=3; $tmpskew / 100.0" | bc -l | xargs printf %.2f` + + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$skew $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/ww/script/ycsb-xth.sh b/ww/script/ycsb-xth.sh new file mode 100755 index 00000000..1ff00ecf --- /dev/null +++ b/ww/script/ycsb-xth.sh @@ -0,0 +1,124 @@ +#ycsb-xrs.sh(ss2pl) +tuple=10000000 +maxope=1 +#rratioary=(50 95 100) +rratioary=(95) +rmw=on +skew=0.99 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +cd ../ +make clean; make -j VAL_SIZE=100 +cd script/ + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50 ; then + result=result_2pl_ycsbA_tuple10m_ope16_rmw_skew099.dat + elif test $rratio = 95 ; then + result=result_2pl_ycsbB_tuple10m_ope1_rmw_skew099.dat + elif test $rratio = 100 ; then + result=result_ss2pl_ycsbC_tuple10m_ope1_skew099.dat + maxope=1 + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + + for ((thread=1; thread<=25; thread+=5)) + do + if test $thread = 6 ; then + thread=5 + fi + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$thread $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/ww/script/ycsb-xval.sh b/ww/script/ycsb-xval.sh new file mode 100755 index 00000000..e5c64aea --- /dev/null +++ b/ww/script/ycsb-xval.sh @@ -0,0 +1,122 @@ +#ycsb-xrs.sh(ss2pl) +tuple=1000000 +maxope=10 +rratioary=(95) +rmw=off +skew=0 +ycsb=on +cpu_mhz=2100 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +thread=24 +if test $host = $dbs11 ; then +thread=224 +fi + +for rratio in "${rratioary[@]}" +do + if test $rratio = 50; then + result=result_ss2pl_ycsbA_tuple100m_skew09_val4-1k.dat + elif test $rratio = 95; then + result=result_ss2pl_ycsbB_tuple1m_val10-100k.dat + elif test $rratio = 100; then + result=result_ss2pl_ycsbC_tuple100m_skew09_val4-1k.dat + else + echo "BUG" + exit 1 + fi + rm $result + + echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result + echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result + + for ((val = 10; val <= 100000; val *= 10)) + do + if test $val = 104 ; then + val=100 + fi + cd ../ + make clean; make -j VAL_SIZE=$val + cd script + + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + echo "$val $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + done +done diff --git a/ww/script/ycsbA-xrs-cache.sh b/ww/script/ycsbA-xrs-cache.sh new file mode 100755 index 00000000..61dbd5f4 --- /dev/null +++ b/ww/script/ycsbA-xrs-cache.sh @@ -0,0 +1,52 @@ +#ycsbA-xrs-cache.sh(ss2pl) +maxope=10 +thread=24 +rratio=50 +skew=0 +ycsb=ON +cpu_mhz=2400 +extime=3 +epoch=5 + +result=result_ss2pl_ycsbA_tuple100-10m_cachemiss.dat +rm $result +echo "#tuple num, cache-misses, min, max" >> $result +echo "#./ss2pl.exe tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime" >> $result + +for ((tuple=100; tuple<=10000000; tuple*=10)) +do + sum=0 + echo "./ss2pl.exe $tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime" + echo "$tuple $epoch" + + max=0 + min=0 + for ((i = 1; i <= epoch; ++i)) + do + perf stat -e cache-misses,cache-references -o ss2pl-cache-ana.txt ./ss2pl.exe $tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime + tmp=`grep cache-misses ./ss2pl-cache-ana.txt | awk '{print $4}'` + sum=`echo "$sum + $tmp" | bc -l` + echo "sum: $sum, tmp: $tmp" + + if test $i -eq 1 ; then + max=$tmp + min=$tmp + fi + + flag=`echo "$tmp > $max" | bc -l` + if test $flag -eq 1 ; then + max=$tmp + fi + flag=`echo "$tmp < $min" | bc -l` + if test $flag -eq 1 ; then + min=$tmp + fi + done + avg=`echo "$sum / $epoch" | bc -l` + echo "sum: $sum, epoch: $epoch" + echo "avg $avg" + echo "max: $max" + echo "min: $min" + echo "$tuple $avg $min $max" >> $result +done + diff --git a/ww/script/ycsbA.sh b/ww/script/ycsbA.sh new file mode 100755 index 00000000..c83e85f6 --- /dev/null +++ b/ww/script/ycsbA.sh @@ -0,0 +1,510 @@ +#ycsbA.sh(ss2pl) +maxope=10 +rratio=50 +rmw=off +skew=0 +ycsb=on +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +tuple=500 +result=result_ss2pl_ycsbA_tuple500_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=500000 +result=result_ss2pl_ycsbA_tuple500k_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=5000000 +result=result_ss2pl_ycsbA_tuple5m_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/ww/script/ycsbB.sh b/ww/script/ycsbB.sh new file mode 100755 index 00000000..2a5966d9 --- /dev/null +++ b/ww/script/ycsbB.sh @@ -0,0 +1,510 @@ +#ycsbB.sh(ss2pl) +maxope=10 +rratio=95 +rmw=off +skew=0 +ycsb=on +cpu_mhz=2400 +extime=3 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +tuple=500 +result=result_ss2pl_ycsbB_tuple500_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=500000 +result=result_ss2pl_ycsbB_tuple500k_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + +tuple=5000000 +result=result_ss2pl_ycsbB_tuple5m_masstree.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/ww/script/ycsbC.sh b/ww/script/ycsbC.sh new file mode 100755 index 00000000..4894481b --- /dev/null +++ b/ww/script/ycsbC.sh @@ -0,0 +1,187 @@ +#ycsbC.sh(ss2pl) +#tuple=1000000000 +tuple=1000 +maxope=10 +rratio=100 +rmw=off +skew=0.9 +ycsb=on +cpu_mhz=2100 +extime=1 +epoch=3 + +host=`hostname` +chris41="chris41.omni.hpcc.jp" +dbs11="dbs11" + +#basically +inith=4 +enth=24 +inc=4 +if test $host = $dbs11 ; then +inith=28 +enth=224 +inc=28 +fi + +result=result_ss2pl_ycsbC_tuple1g_skew09_val1k.dat +rm $result +echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result +echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result +thread=1 + +echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" +echo "Thread number $thread" + +sumTH=0 +sumAR=0 +sumCA=0 +maxTH=0 +maxAR=0 +maxCA=0 +minTH=0 +minAR=0 +minCA=0 +for ((i=1; i <= epoch; i++)) +do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + +done +avgTH=`echo "$sumTH / $epoch" | bc` +avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` +avgCA=`echo "$sumCA / $epoch" | bc` +echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" +echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" +echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" +echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" +echo "" +thout=`echo "$thread - 1" | bc` +echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result + +for ((thread=$inith; thread<=$enth; thread+=$inc)) +do + echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" + echo "Thread number $thread" + + sumTH=0 + sumAR=0 + sumCA=0 + maxTH=0 + maxAR=0 + maxCA=0 + minTH=0 + minAR=0 + minCA=0 + for ((i=1; i <= epoch; i++)) + do + if test $host = $dbs11 ; then + sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + if test $host = $chris41 ; then + perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt + fi + + tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` + tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` + tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` + sumTH=`echo "$sumTH + $tmpTH" | bc` + sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` + sumCA=`echo "$sumCA + $tmpCA" | bc` + echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" + + if test $i -eq 1 ; then + maxTH=$tmpTH + maxAR=$tmpAR + maxCA=$tmpCA + minTH=$tmpTH + minAR=$tmpAR + minCA=$tmpCA + fi + + flag=`echo "$tmpTH > $maxTH" | bc` + if test $flag -eq 1 ; then + maxTH=$tmpTH + fi + flag=`echo "$tmpAR > $maxAR" | bc` + if test $flag -eq 1 ; then + maxAR=$tmpAR + fi + flag=`echo "$tmpCA > $maxCA" | bc` + if test $flag -eq 1 ; then + maxCA=$tmpCA + fi + + flag=`echo "$tmpTH < $minTH" | bc` + if test $flag -eq 1 ; then + minTH=$tmpTH + fi + flag=`echo "$tmpAR < $minAR" | bc` + if test $flag -eq 1 ; then + minAR=$tmpAR + fi + flag=`echo "$tmpCA < $minCA" | bc` + if test $flag -eq 1 ; then + minCA=$tmpCA + fi + + done + avgTH=`echo "$sumTH / $epoch" | bc` + avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` + avgCA=`echo "$sumCA / $epoch" | bc` + echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" + echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" + echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" + echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" + echo "" + thout=`echo "$thread - 1" | bc` + echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result +done + diff --git a/ww/ss2pl.cc b/ww/ss2pl.cc new file mode 100644 index 00000000..50a514c4 --- /dev/null +++ b/ww/ss2pl.cc @@ -0,0 +1,129 @@ + +#include //isdigit, +#include +#include //strlen, +#include //syscall(SYS_gettid), +#include //syscall(SYS_gettid), +#include //syscall(SYS_gettid), +#include + +#include +#include //string +#include + +#define GLOBAL_VALUE_DEFINE + +#include "../include/atomic_wrapper.hh" +#include "../include/backoff.hh" +#include "../include/cpu.hh" +#include "../include/debug.hh" +#include "../include/fence.hh" +#include "../include/int64byte.hh" +#include "../include/masstree_wrapper.hh" +#include "../include/procedure.hh" +#include "../include/random.hh" +#include "../include/result.hh" +#include "../include/tsc.hh" +#include "../include/util.hh" +#include "../include/zipf.hh" +#include "include/common.hh" +#include "include/result.hh" +#include "include/transaction.hh" +#include "include/util.hh" + +long long int central_timestamp = 0; + +void worker(size_t thid, char &ready, const bool &start, const bool &quit) { + Result &myres = std::ref(SS2PLResult[thid]); + Xoroshiro128Plus rnd; + rnd.init(); + TxExecutor trans(thid, (Result *) &myres); + FastZipf zipf(&rnd, FLAGS_zipf_skew, FLAGS_tuple_num); + Backoff backoff(FLAGS_clocks_per_us); + +#if MASSTREE_USE + MasstreeWrapper::thread_init(int(thid)); +#endif + +#ifdef Linux + setThreadAffinity(thid); + // printf("Thread #%d: on CPU %d\n", *myid, sched_getcpu()); + // printf("sysconf(_SC_NPROCESSORS_CONF) %ld\n", + // sysconf(_SC_NPROCESSORS_CONF)); +#endif // Linux + + storeRelease(ready, 1); + while (!loadAcquire(start)) _mm_pause(); + while (!loadAcquire(quit)) { + makeProcedure(trans.pro_set_, rnd, zipf, FLAGS_tuple_num, FLAGS_max_ope, FLAGS_thread_num, + FLAGS_rratio, FLAGS_rmw, FLAGS_ycsb, false, thid, myres); + thread_timestamp[thid] = __atomic_add_fetch(¢ral_timestamp, 1, __ATOMIC_SEQ_CST); +RETRY: + thread_stats[thid] = 0; + if (loadAcquire(quit)) break; + if (thid == 0) leaderBackoffWork(backoff, SS2PLResult); + + trans.begin(); + for (auto itr = trans.pro_set_.begin(); itr != trans.pro_set_.end(); + ++itr) { + if ((*itr).ope_ == Ope::READ) { + trans.read((*itr).key_); + } else if ((*itr).ope_ == Ope::WRITE) { + trans.write((*itr).key_); + } else if ((*itr).ope_ == Ope::READ_MODIFY_WRITE) { + trans.readWrite((*itr).key_); + } else { + ERR; + } + + if (thread_stats[thid] == 1) { + trans.status_ = TransactionStatus::aborted; + trans.abort(); + goto RETRY; + } + } + + trans.commit(); + /** + * local_commit_counts is used at ../include/backoff.hh to calcurate about + * backoff. + */ + storeRelease(myres.local_commit_counts_, + loadAcquire(myres.local_commit_counts_) + 1); + } + + return; +} + +int main(int argc, char *argv[]) try { + gflags::SetUsageMessage("2PL benchmark."); + gflags::ParseCommandLineFlags(&argc, &argv, true); + chkArg(); + makeDB(); + + alignas(CACHE_LINE_SIZE) bool start = false; + alignas(CACHE_LINE_SIZE) bool quit = false; + initResult(); + std::vector readys(FLAGS_thread_num); + std::vector thv; + for (size_t i = 0; i < FLAGS_thread_num; ++i) + thv.emplace_back(worker, i, std::ref(readys[i]), std::ref(start), + std::ref(quit)); + waitForReady(readys); + storeRelease(start, true); + for (size_t i = 0; i < FLAGS_extime; ++i) { + sleepMs(1000); + } + storeRelease(quit, true); + for (auto &th : thv) th.join(); + + for (unsigned int i = 0; i < FLAGS_thread_num; ++i) { + SS2PLResult[0].addLocalAllResult(SS2PLResult[i]); + } + ShowOptParameters(); + SS2PLResult[0].displayAllResult(FLAGS_clocks_per_us, FLAGS_extime, FLAGS_thread_num); + + return 0; +} catch (bad_alloc) { + ERR; +} diff --git a/ww/test/CMakeLists.txt b/ww/test/CMakeLists.txt new file mode 100644 index 00000000..9b5dd16f --- /dev/null +++ b/ww/test/CMakeLists.txt @@ -0,0 +1,76 @@ +file(GLOB SS2PL_SOURCES + "${PROJECT_SOURCE_DIR}/../common/result.cc" + "${PROJECT_SOURCE_DIR}/../common/util.cc" + "${PROJECT_SOURCE_DIR}/result.cc" + "${PROJECT_SOURCE_DIR}/transaction.cc" + "${PROJECT_SOURCE_DIR}/util.cc" + ) + +file (GLOB TEST_SOURCES +"make_db_test.cpp" +) + +if (DEFINED ADD_ANALYSIS) + add_definitions(-DADD_ANALYSIS=${ADD_ANALYSIS}) +else () + add_definitions(-DADD_ANALYSIS=0) +endif () + +if (DEFINED BACK_OFF) + add_definitions(-DBACK_OFF=${BACK_OFF}) +else () + add_definitions(-DBACK_OFF=0) +endif () + +add_definitions(-DDLR1) + +if (DEFINED KEY_SIZE) + add_definitions(-DKEY_SIZE=${KEY_SIZE}) +else () + add_definitions(-DKEY_SIZE=8) +endif () + +if (DEFINED KEY_SORT) + add_definitions(-DKEY_SORT=${KEY_SORT}) +else () + add_definitions(-DKEY_SORT=0) +endif () + +if (DEFINED MASSTREE_USE) + add_definitions(-DMASSTREE_USE=${MASSTREE_USE}) +else () + add_definitions(-DMASSTREE_USE=1) +endif () + +if (DEFINED VAL_SIZE) + add_definitions(-DVAL_SIZE=${VAL_SIZE}) +else () + add_definitions(-DVAL_SIZE=4) +endif () + +foreach(src IN LISTS TEST_SOURCES) + get_filename_component(fname "${src}" NAME_WE) + set(test_name "${fname}") + + add_executable(${test_name} ${src} ${SS2PL_SOURCES}) + + target_include_directories(${test_name} + PRIVATE ${PROJECT_SOURCE_DIR}/../third_party/googletest/googletest/include + ) + + target_link_libraries(${test_name} + Boost::filesystem + gflags::gflags + glog::glog + ${PROJECT_SOURCE_DIR}/../third_party/mimalloc/out/release/libmimalloc.a + ${PROJECT_SOURCE_DIR}/../third_party/masstree/libkohler_masstree_json.a + Threads::Threads + ${PROJECT_SOURCE_DIR}/../third_party/googletest/build/lib/libgtest.a + ${PROJECT_SOURCE_DIR}/../third_party/googletest/build/lib/libgtest_main.a + ) + set_compile_options(${test_name}) + add_test( + NAME ${test_name} + COMMAND ${test_name} --gtest_output=xml:${test_name}_gtest_result.xml + ) +endforeach() \ No newline at end of file diff --git a/ww/test/make_db_test.cpp b/ww/test/make_db_test.cpp new file mode 100644 index 00000000..260dd3a3 --- /dev/null +++ b/ww/test/make_db_test.cpp @@ -0,0 +1,40 @@ + +#include + +#define GLOBAL_VALUE_DEFINE + +#include "../../include/backoff.hh" +#include "../include/common.hh" +#include "../include/util.hh" + +#include "glog/logging.h" +#include "gtest/gtest.h" + +namespace ccbench::testing { + +class make_db_test : public ::testing::Test { +public: + static void call_once_f() { + google::InitGoogleLogging("make_db_test_log"); + FLAGS_stderrthreshold = 0; + } + + void SetUp() override { std::call_once(init_, call_once_f); } + + void TearDown() override {} + +private: + static inline std::once_flag init_; // NOLINT +}; + +TEST_F(make_db_test, simple) { // NOLINT + makeDB(); + // verify effect makeDb + for (std::uint64_t i = 0; i < FLAGS_tuple_num; ++i) { + ASSERT_EQ(Table[i].val_[0], 'a'); + ASSERT_EQ(Table[i].val_[1], '\0'); + ASSERT_EQ(Table[i].lock_.counter.load(std::memory_order_acquire), 0); + } +} + +} // namespace ccbench::testing \ No newline at end of file diff --git a/ww/transaction.cc b/ww/transaction.cc new file mode 100644 index 00000000..0b16beb4 --- /dev/null +++ b/ww/transaction.cc @@ -0,0 +1,364 @@ + +#include +#include + +#include + +#include "../include/backoff.hh" +#include "../include/debug.hh" +#include "../include/procedure.hh" +#include "../include/result.hh" +#include "include/common.hh" +#include "include/transaction.hh" + +using namespace std; + +extern void display_procedure_vector(std::vector &pro); + +/** + * @brief Search xxx set + * @detail Search element of local set corresponding to given key. + * In this prototype system, the value to be updated for each worker thread + * is fixed for high performance, so it is only necessary to check the key match. + * @param Key [in] the key of key-value + * @return Corresponding element of local set + */ +inline SetElement *TxExecutor::searchReadSet(uint64_t key) { + for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) { + if ((*itr).key_ == key) return &(*itr); + } + + return nullptr; +} + +/** + * @brief Search xxx set + * @detail Search element of local set corresponding to given key. + * In this prototype system, the value to be updated for each worker thread + * is fixed for high performance, so it is only necessary to check the key match. + * @param Key [in] the key of key-value + * @return Corresponding element of local set + */ +inline SetElement *TxExecutor::searchWriteSet(uint64_t key) { + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { + if ((*itr).key_ == key) return &(*itr); + } + + return nullptr; +} + +/** + * @brief function about abort. + * Clean-up local read/write set. + * Release locks. + * @return void + */ +void TxExecutor::abort() { + /** + * Release locks + */ + unlockList(); + + /** + * Clean-up local read/write set. + */ + read_set_.clear(); + write_set_.clear(); + + ++sres_->local_abort_counts_; + +#if BACK_OFF +#if ADD_ANALYSIS + uint64_t start(rdtscp()); +#endif + + Backoff::backoff(FLAGS_clocks_per_us); + +#if ADD_ANALYSIS + sres_->local_backoff_latency_ += rdtscp() - start; +#endif + +#endif +} + +/** + * @brief success termination of transaction. + * @return void + */ +void TxExecutor::commit() { + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { + /** + * update payload. + */ + memcpy((*itr).rcdptr_->val_, write_val_, VAL_SIZE); + } + + /** + * Release locks. + */ + unlockList(); + + /** + * Clean-up local read/write set. + */ + read_set_.clear(); + write_set_.clear(); +} + +/** + * @brief Initialize function of transaction. + * Allocate timestamp. + * @return void + */ +void TxExecutor::begin() { this->status_ = TransactionStatus::inFlight; } + +/** + * @brief Transaction read function. + * @param [in] key The key of key-value + */ +void TxExecutor::read(uint64_t key) { +#if ADD_ANALYSIS + uint64_t start = rdtscp(); +#endif // ADD_ANALYSIS + + /** + * read-own-writes or re-read from local read set. + */ + if (searchWriteSet(key) || searchReadSet(key)) goto FINISH_READ; + + /** + * Search tuple from data structure. + */ + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#if ADD_ANALYSIS + ++sres_->local_tree_traversal_; +#endif +#else + tuple = get_tuple(Table, key); +#endif + + while (1) { + if (tuple->lock_.r_trylock()) { + r_lock_list_.emplace_back(&tuple->lock_); + read_set_.emplace_back(key, tuple, tuple->val_); + //tuple->readers[thid_] = 1; + tuple->waitRd.emplace_back(thid_); + break; + } + else { + /** + * wound wait + */ + for (int i = 0; i < FLAGS_thread_num; i++) { + if (tuple->writers[i] > 0 && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_READ; + } + } + +FINISH_READ: + +#if ADD_ANALYSIS + sres_->local_read_latency_ += rdtscp() - start; +#endif + return; +} + +/** + * @brief transaction write operation + * @param [in] key The key of key-value + * @return void + */ +void TxExecutor::write(uint64_t key) { +#if ADD_ANALYSIS + uint64_t start = rdtscp(); +#endif + + // if it already wrote the key object once. + if (searchWriteSet(key)) goto FINISH_WRITE; + /** + * Search tuple from data structure. + */ + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#if ADD_ANALYSIS + ++sres_->local_tree_traversal_; +#endif +#else + tuple = get_tuple(Table, key); +#endif + for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { + if ((*rItr).key_ == key) { // hit + while (1) { + if (!(*rItr).rcdptr_->lock_.tryupgrade()) { + for (int i = 0; i < FLAGS_thread_num; i++) { + if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } else { + break; + } + } + + // upgrade success + // remove old element of read lock list. + tuple->readers[this->thid_] = 0; + tuple->writers[this->thid_] = 1; + for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); + ++lItr) { + if (*lItr == &((*rItr).rcdptr_->lock_)) { + write_set_.emplace_back(key, (*rItr).rcdptr_); + w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); + r_lock_list_.erase(lItr); + break; + } + } + + read_set_.erase(rItr); + goto FINISH_WRITE; + } + } + + while (1) { + if (!tuple->lock_.w_trylock()) { + /** + * wound-wait. + */ + for (int i = 0; i < FLAGS_thread_num; i++) { + if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } else { + break; + } + } + + + /** + * Register the contents to write lock list and write set. + */ + tuple->writers[thid_] = 1; + w_lock_list_.emplace_back(&tuple->lock_); + write_set_.emplace_back(key, tuple); + +FINISH_WRITE: +#if ADD_ANALYSIS + sres_->local_write_latency_ += rdtscp() - start; +#endif // ADD_ANALYSIS + return; +} + +/** + * @brief transaction readWrite (RMW) operation + */ +void TxExecutor::readWrite(uint64_t key) { + // if it already wrote the key object once. + if (searchWriteSet(key)) goto FINISH_WRITE; + /** + * Search tuple from data structure. + */ + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#if ADD_ANALYSIS + ++sres_->local_tree_traversal_; +#endif +#else + tuple = get_tuple(Table, key); +#endif + for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { + if ((*rItr).key_ == key) { // hit + while (1) { + if (!(*rItr).rcdptr_->lock_.tryupgrade()) { + for (int i = 0; i < FLAGS_thread_num; i++) { + if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } else { + break; + } + } + + // upgrade success + // remove old element of read set. + tuple->readers[this->thid_] = 0; + tuple->writers[this->thid_] = 1; + for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); + ++lItr) { + if (*lItr == &((*rItr).rcdptr_->lock_)) { + write_set_.emplace_back(key, (*rItr).rcdptr_); + w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); + r_lock_list_.erase(lItr); + break; + } + } + + read_set_.erase(rItr); + goto FINISH_WRITE; + } + } + + while (1) { + if (!tuple->lock_.w_trylock()) { + /** + * wound-wait. + */ + for (int i = 0; i < FLAGS_thread_num; i++) { + if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { + thread_stats[i] = 1; + } + } + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } else { + break; + } + } + + // read payload + memcpy(this->return_val_, tuple->val_, VAL_SIZE); + // finish read. + + /** + * Register the contents to write lock list and write set. + */ + w_lock_list_.emplace_back(&tuple->lock_); + write_set_.emplace_back(key, tuple); + +FINISH_WRITE: + return; +} + +/** + * @brief unlock and clean-up local lock set. + * @return void + */ +void TxExecutor::unlockList() { + for (auto itr = r_lock_list_.begin(); itr != r_lock_list_.end(); ++itr) + (*itr)->r_unlock(); + + for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) + (*itr).rcdptr_->readers[this->thid_] = -1; + + for (auto itr = w_lock_list_.begin(); itr != w_lock_list_.end(); ++itr) + (*itr)->w_unlock(); + + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) + (*itr).rcdptr_->writers[this->thid_] = -1; + + /** + * Clean-up local lock set. + */ + r_lock_list_.clear(); + w_lock_list_.clear(); +} diff --git a/ww/util.cc b/ww/util.cc new file mode 100644 index 00000000..8c156318 --- /dev/null +++ b/ww/util.cc @@ -0,0 +1,117 @@ + +#include +#include // syscall(SYS_gettid), +#include // syscall(SSY_gettid), +#include // syscall(SSY_gettid), + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../include/config.hh" +#include "../include/debug.hh" +#include "../include/masstree_wrapper.hh" +#include "../include/procedure.hh" +#include "../include/random.hh" +#include "../include/result.hh" +#include "../include/zipf.hh" +#include "include/common.hh" +#include "include/tuple.hh" +#include "include/util.hh" + +void chkArg() { + displayParameter(); + + if (FLAGS_rratio > 100) { + ERR; + } + + if (FLAGS_clocks_per_us < 100) { + cout << "CPU_MHZ is less than 100. are your really?" << endl; + ERR; + } +} + +void displayDB() { + Tuple *tuple; + + for (unsigned int i = 0; i < FLAGS_tuple_num; i++) { + tuple = &Table[i]; + cout << "------------------------------" << endl; // - 30 + cout << "key: " << i << endl; + cout << "val: " << tuple->val_ << endl; + } +} + +void displayParameter() { + cout << "#FLAGS_clocks_per_us:\t" << FLAGS_clocks_per_us << endl; + cout << "#FLAGS_extime:\t\t" << FLAGS_extime << endl; + cout << "#FLAGS_max_ope:\t\t" << FLAGS_max_ope << endl; + cout << "#FLAGS_rmw:\t\t" << FLAGS_rmw << endl; + cout << "#FLAGS_rratio:\t\t" << FLAGS_rratio << endl; + cout << "#FLAGS_thread_num:\t" << FLAGS_thread_num << endl; + cout << "#FLAGS_tuple_num:\t" << FLAGS_tuple_num << endl; + cout << "#FLAGS_ycsb:\t\t" << FLAGS_ycsb << endl; + cout << "#FLAGS_zipf_skew:\t" << FLAGS_zipf_skew << endl; +} + +void partTableInit([[maybe_unused]] size_t thid, uint64_t start, uint64_t end) { + // printf("partTableInit(...): thid %zu : %lu : %lu\n", thid, start, end); +#if MASSTREE_USE + MasstreeWrapper::thread_init(thid); +#endif + + for (auto i = start; i <= end; ++i) { + Table[i].val_[0] = 'a'; + Table[i].val_[1] = '\0'; +#if MASSTREE_USE + MT.insert_value(i, &Table[i]); +#endif + } +} + +void makeDB() { + if (posix_memalign((void **) &Table, PAGE_SIZE, FLAGS_tuple_num * sizeof(Tuple)) != + 0) + ERR; +#if dbs11 + if (madvise((void *)Table, (FLAGS_tuple_num) * sizeof(Tuple), MADV_HUGEPAGE) != 0) + ERR; +#endif + + // maxthread は masstree 構築の最大並行スレッド数。 + // 初期値はハードウェア最大値。 + // FLAGS_tuple_num を均等に分割できる最大スレッド数を求める。 + size_t maxthread = decideParallelBuildNumber(FLAGS_tuple_num); + + std::vector thv; + // cout << "masstree 並列構築スレッド数 " << maxthread << endl; + for (size_t i = 0; i < maxthread; ++i) { + thv.emplace_back(partTableInit, i, i * (FLAGS_tuple_num / maxthread), + (i + 1) * (FLAGS_tuple_num / maxthread) - 1); + } + for (auto &th : thv) th.join(); +} + +void +ShowOptParameters() { + cout << "#ShowOptParameters()" + << ": ADD_ANALYSIS " << ADD_ANALYSIS + << ": BACK_OFF " << BACK_OFF + #ifdef DLR0 + << ": DLR0 " + #elif defined DLR1 + << ": DLR1 " + #endif + << ": MASSTREE_USE " << MASSTREE_USE + << ": KEY_SIZE " << KEY_SIZE + << ": KEY_SORT " << KEY_SORT + << ": VAL_SIZE " << VAL_SIZE + << endl; +} From c2c5b0862c33f161417380d4f123ddabbef23ced Mon Sep 17 00:00:00 2001 From: tngngn Date: Fri, 6 Jan 2023 13:51:28 +0900 Subject: [PATCH 04/14] need to fix phase 1 of commit and debug --- plor/transaction.cc | 92 +++++++++++++++++++++++++++------------------ 1 file changed, 55 insertions(+), 37 deletions(-) diff --git a/plor/transaction.cc b/plor/transaction.cc index 7de0b5d2..77e0635f 100644 --- a/plor/transaction.cc +++ b/plor/transaction.cc @@ -94,6 +94,22 @@ void TxExecutor::commit() { * Phase 1: detect read-write conflicts */ + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { + tuple = (*itr).rcdptr_; + //tuple->waitRd.emplace_back(excl_sig); + for (int i=0; iwaitRd.size(); i++) { + if (thread_timestamp[this-thid_] < thread_timestamp[tuple->waitRd[i].first]) { + thread_stats[tuple->waitRd[i].first] = 1; + } else { + /* + while (1) { + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } + */ + } + } + } + /** * Phase 2: release read locks */ @@ -108,6 +124,7 @@ void TxExecutor::commit() { */ for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { + tuple = (*itr).rcdptr_; // update payload. memcpy((*itr).rcdptr_->val_, write_val_, VAL_SIZE); unlockWrite(this->thid_, tuple); @@ -115,7 +132,7 @@ void TxExecutor::commit() { } //Release locks. - unlockList(); + //unlockList(); /** * Clean-up local read/write set. @@ -219,26 +236,24 @@ void TxExecutor::write(uint64_t key) { #else tuple = get_tuple(Table, key); #endif - + /* for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { if ((*rItr).key_ == key) { // hit while (1) { - if (!(*rItr).rcdptr_->lock_.tryupgrade()) { - for (int i = 0; i < FLAGS_thread_num; i++) { - if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { - thread_stats[i] = 1; - } - } - if (thread_stats[thid_] == 1) goto FINISH_WRITE; - } else { - break; - } + if (!(*rItr).rcdptr_->lock_.tryupgrade()) { + if (tuple->curr_writer > 0 && thread_timestamp[this-thid_] < thread_timestamp[tuple->curr_writer]) { + thread_stats[tuple->curr_writer] = 1; + } + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } else { + break; + } } // upgrade success // remove old element of read lock list. - tuple->readers[this->thid_] = 0; - tuple->writers[this->thid_] = 1; + //tuple->readers[this->thid_] = 0; + //tuple->writers[this->thid_] = 1; for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); ++lItr) { if (*lItr == &((*rItr).rcdptr_->lock_)) { @@ -253,6 +268,7 @@ void TxExecutor::write(uint64_t key) { goto FINISH_WRITE; } } + */ /** PLOR */ lockWrite(); @@ -309,25 +325,26 @@ void TxExecutor::readWrite(uint64_t key) { #else tuple = get_tuple(Table, key); #endif +/* for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { if ((*rItr).key_ == key) { // hit + while (1) { if (!(*rItr).rcdptr_->lock_.tryupgrade()) { - for (int i = 0; i < FLAGS_thread_num; i++) { - if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { - thread_stats[i] = 1; - } + if (tuple->curr_writer > 0 && thread_timestamp[this-thid_] < thread_timestamp[tuple->curr_writer]) { + thread_stats[tuple->curr_writer] = 1; } if (thread_stats[thid_] == 1) goto FINISH_WRITE; } else { break; } } + // upgrade success // remove old element of read set. - tuple->readers[this->thid_] = 0; - tuple->writers[this->thid_] = 1; + //tuple->readers[this->thid_] = 0; + //tuple->writers[this->thid_] = 1; for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); ++lItr) { if (*lItr == &((*rItr).rcdptr_->lock_)) { @@ -342,6 +359,7 @@ void TxExecutor::readWrite(uint64_t key) { goto FINISH_WRITE; } } + */ /** PLOR */ lockWrite(); @@ -385,8 +403,13 @@ void TxExecutor::lockRead() { read_set_.emplace_back(key, tuple, tuple->val_); tuple->waitRd.emplace_back(thid_, thread_timestamp[this->thid_]); - // pure wound-wait, no commit priority yet - + // pure, no commit priority yet + while (1) { + if (tuple->curr_writer > 0 && thread_timestamp[this-thid_] < thread_timestamp[tuple->curr_writer]) { + thread_stats[tuple->curr_writer] = 1; + } + if (thread_stats[thid_] == 1) goto FINISH_READ; + } /** Wound-Wait * @@ -397,8 +420,6 @@ void TxExecutor::lockRead() { } } */ - - if (thread_stats[thid_] == 1) goto FINISH_READ; } void TxExecutor::lockWrite() { @@ -410,17 +431,14 @@ void TxExecutor::lockWrite() { } }); // sort by ts - // @task: CAS for curr_writer @then: wound-wait - // trying to be the owner - int owner, expected, desired; - owner = tuple->curr_writer; - desired = this->thid_; - for (;;) { - expected = 0; - if (!owner.compare_exchange_strong(expected, desired, memory_order_acq_rel, memory_order_acquire)) { - while (curr_writer != this->thid_) { - if (thread_timestamp[curr_writer] > thread_timestamp[this->thid_]) { - thread_stats[curr_writer] = 1; + // @task: need to use CAS for this + while (1) { + if (tuple->curr_writer == 0) { + tuple->curr_writer == this->thid_; + } else { + while (tuple->writer != this->thid_) { + if (thread_timestamp[this-thid_] < thread_timestamp[tuple->curr_writer]) { + thread_stats[tuple->curr_writer] = 1; } if (thread_stats[thid_] == 1) goto FINISH_WRITE; } @@ -430,7 +448,7 @@ void TxExecutor::lockWrite() { void TxExecutor::unlockRead(int thid, Tuple *tuple) { int j; - for ( int i=0; iwaitRd.size(); i++) { + for (int i=0; iwaitRd.size(); i++) { if (tuple->waitRd[i].first == thid) { j = i; break; @@ -447,7 +465,7 @@ void TxExecutor::unlockWrite(int thid, Tuple *tuple) { * turn the lock to the oldest waiter(writer) */ int j; - for ( int i=0; iwaitWr.size(); i++) { + for (int i=0; iwaitWr.size(); i++) { if (tuple->waitWr[i].first == thid_) { j = i; break; From b87a7515b654cbfc04a100214f05faf77b83aa72 Mon Sep 17 00:00:00 2001 From: tngngn Date: Fri, 6 Jan 2023 15:07:47 +0900 Subject: [PATCH 05/14] wound-wait --- {wound-wait => wound-w}/CMakeLists.txt | 0 {ww => wound-w}/README.md | 0 {ww => wound-w}/build/.ninja_deps | Bin {ww => wound-w}/build/.ninja_log | 0 {ww => wound-w}/build/CMakeCache.txt | 0 .../build/CMakeDoxyfile.in | 0 .../build/CMakeDoxygenDefaults.cmake | 0 .../CMakeFiles/3.17.0/CMakeCXXCompiler.cmake | 0 .../3.17.0/CMakeDetermineCompilerABI_CXX.bin | Bin .../build/CMakeFiles/3.17.0/CMakeSystem.cmake | 0 .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 0 .../build/CMakeFiles/CMakeError.log | 0 .../build/CMakeFiles/CMakeOutput.log | 0 .../CheckFunctionExists.cxx | 0 .../build/CMakeFiles/TargetDirectories.txt | 0 .../build/CMakeFiles/cmake.check_cache | 0 {ww => wound-w}/build/build.ninja | 0 {ww => wound-w}/build/cmake_install.cmake | 0 {ww => wound-w}/build/rules.ninja | 0 {ww => wound-w}/include/common.hh | 0 {wound-wait => wound-w}/include/result.hh | 0 .../include/ss2pl_op_element.hh | 0 .../include/transaction.hh | 0 {ww => wound-w}/include/tuple.hh | 0 {wound-wait => wound-w}/include/util.hh | 0 {wound-wait => wound-w}/result.cc | 0 .../script/test_cache_ana.sh | 0 {wound-wait => wound-w}/script/test_t1k.sh | 0 {wound-wait => wound-w}/script/test_t1m.sh | 0 {wound-wait => wound-w}/script/test_t200.sh | 0 .../script/tst200-1k-1m.sh | 0 {wound-wait => wound-w}/script/ycsb-xope.sh | 0 .../script/ycsb-xrratio.sh | 0 {wound-wait => wound-w}/script/ycsb-xrs.sh | 0 {wound-wait => wound-w}/script/ycsb-xskew.sh | 0 {wound-wait => wound-w}/script/ycsb-xth.sh | 0 {wound-wait => wound-w}/script/ycsb-xval.sh | 0 .../script/ycsbA-xrs-cache.sh | 0 {wound-wait => wound-w}/script/ycsbA.sh | 0 {wound-wait => wound-w}/script/ycsbB.sh | 0 {wound-wait => wound-w}/script/ycsbC.sh | 0 {ww => wound-w}/ss2pl.cc | 0 {wound-wait => wound-w}/test/CMakeLists.txt | 0 {wound-wait => wound-w}/test/make_db_test.cpp | 0 {ww => wound-w}/transaction.cc | 0 {ww => wound-w}/util.cc | 0 wound-wait/README.md | 50 - wound-wait/build/.ninja_deps | Bin 34536 -> 0 bytes wound-wait/build/.ninja_log | 8 - wound-wait/build/CMakeCache.txt | 473 ---- wound-wait/build/CMakeFiles/CMakeError.log | 50 - wound-wait/build/CMakeFiles/CMakeOutput.log | 235 -- .../build/CMakeFiles/TargetDirectories.txt | 3 - wound-wait/build/build.ninja | 186 -- wound-wait/build/cmake_install.cmake | 49 - wound-wait/build/rules.ninja | 64 - wound-wait/include/common.hh | 4 - wound-wait/include/tuple.hh | 19 - wound-wait/ss2pl.cc | 0 wound-wait/transaction.cc | 363 --- wound-wait/util.cc | 0 ww/CMakeLists.txt | 80 - ww/build/CMakeDoxyfile.in | 280 --- ww/build/CMakeDoxygenDefaults.cmake | 672 ------ .../CMakeFiles/3.17.0/CMakeCXXCompiler.cmake | 88 - .../3.17.0/CMakeDetermineCompilerABI_CXX.bin | Bin 16560 -> 0 bytes ww/build/CMakeFiles/3.17.0/CMakeSystem.cmake | 15 - .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 660 ------ .../CheckFunctionExists.cxx | 28 - ww/build/CMakeFiles/cmake.check_cache | 1 - ww/include/result.hh | 9 - ww/include/ss2pl_op_element.hh | 18 - ww/include/transaction.hh | 65 - ww/include/util.hh | 13 - ww/result.cc | 11 - ww/script/test_cache_ana.sh | 227 -- ww/script/test_t1k.sh | 382 ---- ww/script/test_t1m.sh | 382 ---- ww/script/test_t200.sh | 382 ---- ww/script/tst200-1k-1m.sh | 1991 ----------------- ww/script/ycsb-xope.sh | 106 - ww/script/ycsb-xrratio.sh | 102 - ww/script/ycsb-xrs.sh | 118 - ww/script/ycsb-xskew.sh | 131 -- ww/script/ycsb-xth.sh | 124 - ww/script/ycsb-xval.sh | 122 - ww/script/ycsbA-xrs-cache.sh | 52 - ww/script/ycsbA.sh | 510 ----- ww/script/ycsbB.sh | 510 ----- ww/script/ycsbC.sh | 187 -- ww/test/CMakeLists.txt | 76 - ww/test/make_db_test.cpp | 40 - 92 files changed, 8886 deletions(-) rename {wound-wait => wound-w}/CMakeLists.txt (100%) rename {ww => wound-w}/README.md (100%) rename {ww => wound-w}/build/.ninja_deps (100%) rename {ww => wound-w}/build/.ninja_log (100%) rename {ww => wound-w}/build/CMakeCache.txt (100%) rename {wound-wait => wound-w}/build/CMakeDoxyfile.in (100%) rename {wound-wait => wound-w}/build/CMakeDoxygenDefaults.cmake (100%) rename {wound-wait => wound-w}/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake (100%) rename {wound-wait => wound-w}/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin (100%) rename {wound-wait => wound-w}/build/CMakeFiles/3.17.0/CMakeSystem.cmake (100%) rename {wound-wait => wound-w}/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp (100%) rename {ww => wound-w}/build/CMakeFiles/CMakeError.log (100%) rename {ww => wound-w}/build/CMakeFiles/CMakeOutput.log (100%) rename {wound-wait => wound-w}/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx (100%) rename {ww => wound-w}/build/CMakeFiles/TargetDirectories.txt (100%) rename {wound-wait => wound-w}/build/CMakeFiles/cmake.check_cache (100%) rename {ww => wound-w}/build/build.ninja (100%) rename {ww => wound-w}/build/cmake_install.cmake (100%) rename {ww => wound-w}/build/rules.ninja (100%) rename {ww => wound-w}/include/common.hh (100%) rename {wound-wait => wound-w}/include/result.hh (100%) rename {wound-wait => wound-w}/include/ss2pl_op_element.hh (100%) rename {wound-wait => wound-w}/include/transaction.hh (100%) rename {ww => wound-w}/include/tuple.hh (100%) rename {wound-wait => wound-w}/include/util.hh (100%) rename {wound-wait => wound-w}/result.cc (100%) rename {wound-wait => wound-w}/script/test_cache_ana.sh (100%) rename {wound-wait => wound-w}/script/test_t1k.sh (100%) rename {wound-wait => wound-w}/script/test_t1m.sh (100%) rename {wound-wait => wound-w}/script/test_t200.sh (100%) rename {wound-wait => wound-w}/script/tst200-1k-1m.sh (100%) rename {wound-wait => wound-w}/script/ycsb-xope.sh (100%) rename {wound-wait => wound-w}/script/ycsb-xrratio.sh (100%) rename {wound-wait => wound-w}/script/ycsb-xrs.sh (100%) rename {wound-wait => wound-w}/script/ycsb-xskew.sh (100%) rename {wound-wait => wound-w}/script/ycsb-xth.sh (100%) rename {wound-wait => wound-w}/script/ycsb-xval.sh (100%) rename {wound-wait => wound-w}/script/ycsbA-xrs-cache.sh (100%) rename {wound-wait => wound-w}/script/ycsbA.sh (100%) rename {wound-wait => wound-w}/script/ycsbB.sh (100%) rename {wound-wait => wound-w}/script/ycsbC.sh (100%) rename {ww => wound-w}/ss2pl.cc (100%) rename {wound-wait => wound-w}/test/CMakeLists.txt (100%) rename {wound-wait => wound-w}/test/make_db_test.cpp (100%) rename {ww => wound-w}/transaction.cc (100%) rename {ww => wound-w}/util.cc (100%) delete mode 100644 wound-wait/README.md delete mode 100644 wound-wait/build/.ninja_deps delete mode 100644 wound-wait/build/.ninja_log delete mode 100644 wound-wait/build/CMakeCache.txt delete mode 100644 wound-wait/build/CMakeFiles/CMakeError.log delete mode 100644 wound-wait/build/CMakeFiles/CMakeOutput.log delete mode 100644 wound-wait/build/CMakeFiles/TargetDirectories.txt delete mode 100644 wound-wait/build/build.ninja delete mode 100644 wound-wait/build/cmake_install.cmake delete mode 100644 wound-wait/build/rules.ninja delete mode 100644 wound-wait/include/common.hh delete mode 100644 wound-wait/include/tuple.hh delete mode 100644 wound-wait/ss2pl.cc delete mode 100644 wound-wait/transaction.cc delete mode 100644 wound-wait/util.cc delete mode 100644 ww/CMakeLists.txt delete mode 100644 ww/build/CMakeDoxyfile.in delete mode 100644 ww/build/CMakeDoxygenDefaults.cmake delete mode 100644 ww/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake delete mode 100755 ww/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin delete mode 100644 ww/build/CMakeFiles/3.17.0/CMakeSystem.cmake delete mode 100644 ww/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp delete mode 100644 ww/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx delete mode 100644 ww/build/CMakeFiles/cmake.check_cache delete mode 100644 ww/include/result.hh delete mode 100644 ww/include/ss2pl_op_element.hh delete mode 100644 ww/include/transaction.hh delete mode 100644 ww/include/util.hh delete mode 100644 ww/result.cc delete mode 100755 ww/script/test_cache_ana.sh delete mode 100755 ww/script/test_t1k.sh delete mode 100755 ww/script/test_t1m.sh delete mode 100755 ww/script/test_t200.sh delete mode 100755 ww/script/tst200-1k-1m.sh delete mode 100755 ww/script/ycsb-xope.sh delete mode 100755 ww/script/ycsb-xrratio.sh delete mode 100755 ww/script/ycsb-xrs.sh delete mode 100755 ww/script/ycsb-xskew.sh delete mode 100755 ww/script/ycsb-xth.sh delete mode 100755 ww/script/ycsb-xval.sh delete mode 100755 ww/script/ycsbA-xrs-cache.sh delete mode 100755 ww/script/ycsbA.sh delete mode 100755 ww/script/ycsbB.sh delete mode 100755 ww/script/ycsbC.sh delete mode 100644 ww/test/CMakeLists.txt delete mode 100644 ww/test/make_db_test.cpp diff --git a/wound-wait/CMakeLists.txt b/wound-w/CMakeLists.txt similarity index 100% rename from wound-wait/CMakeLists.txt rename to wound-w/CMakeLists.txt diff --git a/ww/README.md b/wound-w/README.md similarity index 100% rename from ww/README.md rename to wound-w/README.md diff --git a/ww/build/.ninja_deps b/wound-w/build/.ninja_deps similarity index 100% rename from ww/build/.ninja_deps rename to wound-w/build/.ninja_deps diff --git a/ww/build/.ninja_log b/wound-w/build/.ninja_log similarity index 100% rename from ww/build/.ninja_log rename to wound-w/build/.ninja_log diff --git a/ww/build/CMakeCache.txt b/wound-w/build/CMakeCache.txt similarity index 100% rename from ww/build/CMakeCache.txt rename to wound-w/build/CMakeCache.txt diff --git a/wound-wait/build/CMakeDoxyfile.in b/wound-w/build/CMakeDoxyfile.in similarity index 100% rename from wound-wait/build/CMakeDoxyfile.in rename to wound-w/build/CMakeDoxyfile.in diff --git a/wound-wait/build/CMakeDoxygenDefaults.cmake b/wound-w/build/CMakeDoxygenDefaults.cmake similarity index 100% rename from wound-wait/build/CMakeDoxygenDefaults.cmake rename to wound-w/build/CMakeDoxygenDefaults.cmake diff --git a/wound-wait/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake b/wound-w/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake similarity index 100% rename from wound-wait/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake rename to wound-w/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake diff --git a/wound-wait/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin b/wound-w/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin similarity index 100% rename from wound-wait/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin rename to wound-w/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin diff --git a/wound-wait/build/CMakeFiles/3.17.0/CMakeSystem.cmake b/wound-w/build/CMakeFiles/3.17.0/CMakeSystem.cmake similarity index 100% rename from wound-wait/build/CMakeFiles/3.17.0/CMakeSystem.cmake rename to wound-w/build/CMakeFiles/3.17.0/CMakeSystem.cmake diff --git a/wound-wait/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp b/wound-w/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp similarity index 100% rename from wound-wait/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp rename to wound-w/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp diff --git a/ww/build/CMakeFiles/CMakeError.log b/wound-w/build/CMakeFiles/CMakeError.log similarity index 100% rename from ww/build/CMakeFiles/CMakeError.log rename to wound-w/build/CMakeFiles/CMakeError.log diff --git a/ww/build/CMakeFiles/CMakeOutput.log b/wound-w/build/CMakeFiles/CMakeOutput.log similarity index 100% rename from ww/build/CMakeFiles/CMakeOutput.log rename to wound-w/build/CMakeFiles/CMakeOutput.log diff --git a/wound-wait/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx b/wound-w/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx similarity index 100% rename from wound-wait/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx rename to wound-w/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx diff --git a/ww/build/CMakeFiles/TargetDirectories.txt b/wound-w/build/CMakeFiles/TargetDirectories.txt similarity index 100% rename from ww/build/CMakeFiles/TargetDirectories.txt rename to wound-w/build/CMakeFiles/TargetDirectories.txt diff --git a/wound-wait/build/CMakeFiles/cmake.check_cache b/wound-w/build/CMakeFiles/cmake.check_cache similarity index 100% rename from wound-wait/build/CMakeFiles/cmake.check_cache rename to wound-w/build/CMakeFiles/cmake.check_cache diff --git a/ww/build/build.ninja b/wound-w/build/build.ninja similarity index 100% rename from ww/build/build.ninja rename to wound-w/build/build.ninja diff --git a/ww/build/cmake_install.cmake b/wound-w/build/cmake_install.cmake similarity index 100% rename from ww/build/cmake_install.cmake rename to wound-w/build/cmake_install.cmake diff --git a/ww/build/rules.ninja b/wound-w/build/rules.ninja similarity index 100% rename from ww/build/rules.ninja rename to wound-w/build/rules.ninja diff --git a/ww/include/common.hh b/wound-w/include/common.hh similarity index 100% rename from ww/include/common.hh rename to wound-w/include/common.hh diff --git a/wound-wait/include/result.hh b/wound-w/include/result.hh similarity index 100% rename from wound-wait/include/result.hh rename to wound-w/include/result.hh diff --git a/wound-wait/include/ss2pl_op_element.hh b/wound-w/include/ss2pl_op_element.hh similarity index 100% rename from wound-wait/include/ss2pl_op_element.hh rename to wound-w/include/ss2pl_op_element.hh diff --git a/wound-wait/include/transaction.hh b/wound-w/include/transaction.hh similarity index 100% rename from wound-wait/include/transaction.hh rename to wound-w/include/transaction.hh diff --git a/ww/include/tuple.hh b/wound-w/include/tuple.hh similarity index 100% rename from ww/include/tuple.hh rename to wound-w/include/tuple.hh diff --git a/wound-wait/include/util.hh b/wound-w/include/util.hh similarity index 100% rename from wound-wait/include/util.hh rename to wound-w/include/util.hh diff --git a/wound-wait/result.cc b/wound-w/result.cc similarity index 100% rename from wound-wait/result.cc rename to wound-w/result.cc diff --git a/wound-wait/script/test_cache_ana.sh b/wound-w/script/test_cache_ana.sh similarity index 100% rename from wound-wait/script/test_cache_ana.sh rename to wound-w/script/test_cache_ana.sh diff --git a/wound-wait/script/test_t1k.sh b/wound-w/script/test_t1k.sh similarity index 100% rename from wound-wait/script/test_t1k.sh rename to wound-w/script/test_t1k.sh diff --git a/wound-wait/script/test_t1m.sh b/wound-w/script/test_t1m.sh similarity index 100% rename from wound-wait/script/test_t1m.sh rename to wound-w/script/test_t1m.sh diff --git a/wound-wait/script/test_t200.sh b/wound-w/script/test_t200.sh similarity index 100% rename from wound-wait/script/test_t200.sh rename to wound-w/script/test_t200.sh diff --git a/wound-wait/script/tst200-1k-1m.sh b/wound-w/script/tst200-1k-1m.sh similarity index 100% rename from wound-wait/script/tst200-1k-1m.sh rename to wound-w/script/tst200-1k-1m.sh diff --git a/wound-wait/script/ycsb-xope.sh b/wound-w/script/ycsb-xope.sh similarity index 100% rename from wound-wait/script/ycsb-xope.sh rename to wound-w/script/ycsb-xope.sh diff --git a/wound-wait/script/ycsb-xrratio.sh b/wound-w/script/ycsb-xrratio.sh similarity index 100% rename from wound-wait/script/ycsb-xrratio.sh rename to wound-w/script/ycsb-xrratio.sh diff --git a/wound-wait/script/ycsb-xrs.sh b/wound-w/script/ycsb-xrs.sh similarity index 100% rename from wound-wait/script/ycsb-xrs.sh rename to wound-w/script/ycsb-xrs.sh diff --git a/wound-wait/script/ycsb-xskew.sh b/wound-w/script/ycsb-xskew.sh similarity index 100% rename from wound-wait/script/ycsb-xskew.sh rename to wound-w/script/ycsb-xskew.sh diff --git a/wound-wait/script/ycsb-xth.sh b/wound-w/script/ycsb-xth.sh similarity index 100% rename from wound-wait/script/ycsb-xth.sh rename to wound-w/script/ycsb-xth.sh diff --git a/wound-wait/script/ycsb-xval.sh b/wound-w/script/ycsb-xval.sh similarity index 100% rename from wound-wait/script/ycsb-xval.sh rename to wound-w/script/ycsb-xval.sh diff --git a/wound-wait/script/ycsbA-xrs-cache.sh b/wound-w/script/ycsbA-xrs-cache.sh similarity index 100% rename from wound-wait/script/ycsbA-xrs-cache.sh rename to wound-w/script/ycsbA-xrs-cache.sh diff --git a/wound-wait/script/ycsbA.sh b/wound-w/script/ycsbA.sh similarity index 100% rename from wound-wait/script/ycsbA.sh rename to wound-w/script/ycsbA.sh diff --git a/wound-wait/script/ycsbB.sh b/wound-w/script/ycsbB.sh similarity index 100% rename from wound-wait/script/ycsbB.sh rename to wound-w/script/ycsbB.sh diff --git a/wound-wait/script/ycsbC.sh b/wound-w/script/ycsbC.sh similarity index 100% rename from wound-wait/script/ycsbC.sh rename to wound-w/script/ycsbC.sh diff --git a/ww/ss2pl.cc b/wound-w/ss2pl.cc similarity index 100% rename from ww/ss2pl.cc rename to wound-w/ss2pl.cc diff --git a/wound-wait/test/CMakeLists.txt b/wound-w/test/CMakeLists.txt similarity index 100% rename from wound-wait/test/CMakeLists.txt rename to wound-w/test/CMakeLists.txt diff --git a/wound-wait/test/make_db_test.cpp b/wound-w/test/make_db_test.cpp similarity index 100% rename from wound-wait/test/make_db_test.cpp rename to wound-w/test/make_db_test.cpp diff --git a/ww/transaction.cc b/wound-w/transaction.cc similarity index 100% rename from ww/transaction.cc rename to wound-w/transaction.cc diff --git a/ww/util.cc b/wound-w/util.cc similarity index 100% rename from ww/util.cc rename to wound-w/util.cc diff --git a/wound-wait/README.md b/wound-wait/README.md deleted file mode 100644 index fdbe3c4b..00000000 --- a/wound-wait/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# 2PL - -## How to use -- Build masstree in ccbench directory -``` -$ ./build_tools/bootstrap.sh -``` -This makes ccbench/third_party/masstree/libkohler_masstree_json.a used by building ss2pl. -- Build mimalloc in ccbench directory -``` -$ ./build_tools/bootstrap_mimalloc.sh -``` -This makes ../third_party/mimalloc/out/release/libmimalloc.a used by building ss2pl. -- Build -``` -$ mkdir build -$ cd build -$ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release .. -$ ninja -``` -- Confirm usage -``` -$ ./ss2pl.exe -help -``` -- Execution example -``` -$ numactl --interleave=all ./ss2pl.exe -clocks_per_us=2100 -extime=3 -max_ope=10 -rmw=0 -rratio=100 -thread_num=224 -tuple_num=1000000 -ycsb=1 -zipf_skew=0 -``` - -## How to customize options in CMakeLists.txt -- `ADD_ANALYSIS` : If this is 1, it is deeper analysis than setting 0.
-default : `0` -- `BACK_OFF` : If this is 1, it use Cicada's backoff.
-default : `0` -- `KEY_SORT` : If this is 1, its transaction accesses records in ascending key order.
-default : `0` -- `MASSTREE_USE` : If this is 1, it use masstree as data structure. If not, it use simple array αs data structure. -default : `1` -- `VAL_SIZE` : Value of key-value size. In other words, payload size.
-default : `4` -- `DLR0` : Dead lock resolution is timeout. -- `DLR1` : Dead lock resolution is no-wait. - -## Optimizations -- Backoff. -- Timeout of dead lock resolution. -- No-wait of dead lock resolution. - -## Implementation -- Lock : reader/writer lock diff --git a/wound-wait/build/.ninja_deps b/wound-wait/build/.ninja_deps deleted file mode 100644 index 6caee4661c860d8ff64d0e35287e82cf496d369c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34536 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 M9zWnG{EW5uKSm57qW}N^ diff --git a/wound-wait/build/.ninja_log b/wound-wait/build/.ninja_log deleted file mode 100644 index 6ca5c779..00000000 --- a/wound-wait/build/.ninja_log +++ /dev/null @@ -1,8 +0,0 @@ -# ninja log v5 -1 437 1669911522423246670 CMakeFiles/ss2pl.exe.dir/home/tngngn/tccbench/common/result.cc.o 1fc0f6a712375650 -1 705 1669911522691243343 CMakeFiles/ss2pl.exe.dir/home/tngngn/tccbench/common/util.cc.o ed8ffe74aa2f4052 -1 915 1669911522899240762 CMakeFiles/ss2pl.exe.dir/result.cc.o 851e6c2fa850bcf5 -3 1363 1669911523347235201 CMakeFiles/ss2pl.exe.dir/util.cc.o c9c2e62e88d9d2c6 -2 1379 1669911523363235002 CMakeFiles/ss2pl.exe.dir/transaction.cc.o 57b8653ac41a1255 -2 1391 1669911523379234804 CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o 788a57bce6d40cdd -1391 1465 1669911523451233910 ss2pl.exe 1fa7cafaa908adf6 diff --git a/wound-wait/build/CMakeCache.txt b/wound-wait/build/CMakeCache.txt deleted file mode 100644 index 592221a0..00000000 --- a/wound-wait/build/CMakeCache.txt +++ /dev/null @@ -1,473 +0,0 @@ -# This is the CMakeCache file. -# For build in directory: /home/tngngn/tccbench/w-w/build -# It was generated by CMake: /usr/local/bin/cmake -# You can edit this file to change values found and used by cmake. -# If you do not want to change any of the values, simply exit the editor. -# If you do want to change a value, simply edit, save, and exit the editor. -# The syntax for the file is as follows: -# KEY:TYPE=VALUE -# KEY is the name of a variable in the cache. -# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. -# VALUE is the current value for the KEY. - -######################## -# EXTERNAL cache entries -######################## - -//The directory containing a CMake configuration file for Boost. -Boost_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0 - -Boost_FILESYSTEM_LIBRARY_RELEASE:STRING=/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 - -//Path to a file. -Boost_INCLUDE_DIR:PATH=/usr/include - -//Path to a program. -CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line - -//Path to a program. -CMAKE_AR:FILEPATH=/usr/bin/ar - -//Choose the type of build, options are: None Debug Release RelWithDebInfo -// MinSizeRel ... -CMAKE_BUILD_TYPE:STRING=Release - -//CXX compiler -CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ - -//A wrapper around 'ar' adding the appropriate '--plugin' option -// for the GCC compiler -CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-9 - -//A wrapper around 'ranlib' adding the appropriate '--plugin' option -// for the GCC compiler -CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-9 - -//Flags used by the CXX compiler during all build types. -CMAKE_CXX_FLAGS:STRING= - -//Flags used by the CXX compiler during DEBUG builds. -CMAKE_CXX_FLAGS_DEBUG:STRING=-g - -//Flags used by the CXX compiler during MINSIZEREL builds. -CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG - -//Flags used by the CXX compiler during RELEASE builds. -CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG - -//Flags used by the CXX compiler during RELWITHDEBINFO builds. -CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG - -//Path to a program. -CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND - -//Flags used by the linker during all build types. -CMAKE_EXE_LINKER_FLAGS:STRING= - -//Flags used by the linker during DEBUG builds. -CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during MINSIZEREL builds. -CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during RELEASE builds. -CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during RELWITHDEBINFO builds. -CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//Enable/Disable output of compile commands during generation. -CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= - -//User executables (bin) -CMAKE_INSTALL_BINDIR:PATH=bin - -//Read-only architecture-independent data (DATAROOTDIR) -CMAKE_INSTALL_DATADIR:PATH= - -//Read-only architecture-independent data root (share) -CMAKE_INSTALL_DATAROOTDIR:PATH=share - -//Documentation root (DATAROOTDIR/doc/PROJECT_NAME) -CMAKE_INSTALL_DOCDIR:PATH= - -//C header files (include) -CMAKE_INSTALL_INCLUDEDIR:PATH=include - -//Info documentation (DATAROOTDIR/info) -CMAKE_INSTALL_INFODIR:PATH= - -//Object code libraries (lib) -CMAKE_INSTALL_LIBDIR:PATH=lib - -//Program executables (libexec) -CMAKE_INSTALL_LIBEXECDIR:PATH=libexec - -//Locale-dependent data (DATAROOTDIR/locale) -CMAKE_INSTALL_LOCALEDIR:PATH= - -//Modifiable single-machine data (var) -CMAKE_INSTALL_LOCALSTATEDIR:PATH=var - -//Man documentation (DATAROOTDIR/man) -CMAKE_INSTALL_MANDIR:PATH= - -//C header files for non-gcc (/usr/include) -CMAKE_INSTALL_OLDINCLUDEDIR:PATH=/usr/include - -//Install path prefix, prepended onto install directories. -CMAKE_INSTALL_PREFIX:PATH=/usr/local - -//Run-time variable data (LOCALSTATEDIR/run) -CMAKE_INSTALL_RUNSTATEDIR:PATH= - -//System admin executables (sbin) -CMAKE_INSTALL_SBINDIR:PATH=sbin - -//Modifiable architecture-independent data (com) -CMAKE_INSTALL_SHAREDSTATEDIR:PATH=com - -//Read-only single-machine data (etc) -CMAKE_INSTALL_SYSCONFDIR:PATH=etc - -//Path to a program. -CMAKE_LINKER:FILEPATH=/usr/bin/ld - -//Program used to build from build.ninja files. -CMAKE_MAKE_PROGRAM:FILEPATH=/usr/local/bin/ninja - -//Flags used by the linker during the creation of modules during -// all build types. -CMAKE_MODULE_LINKER_FLAGS:STRING= - -//Flags used by the linker during the creation of modules during -// DEBUG builds. -CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during the creation of modules during -// MINSIZEREL builds. -CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during the creation of modules during -// RELEASE builds. -CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during the creation of modules during -// RELWITHDEBINFO builds. -CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//Path to a program. -CMAKE_NM:FILEPATH=/usr/bin/nm - -//Path to a program. -CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy - -//Path to a program. -CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump - -//Value Computed by CMake -CMAKE_PROJECT_DESCRIPTION:STATIC=ss2pl of ccbench - -//Value Computed by CMake -CMAKE_PROJECT_HOMEPAGE_URL:STATIC= - -//Value Computed by CMake -CMAKE_PROJECT_NAME:STATIC=ccbench_ss2pl - -//Value Computed by CMake -CMAKE_PROJECT_VERSION:STATIC=0.0.1 - -//Value Computed by CMake -CMAKE_PROJECT_VERSION_MAJOR:STATIC=0 - -//Value Computed by CMake -CMAKE_PROJECT_VERSION_MINOR:STATIC=0 - -//Value Computed by CMake -CMAKE_PROJECT_VERSION_PATCH:STATIC=1 - -//Value Computed by CMake -CMAKE_PROJECT_VERSION_TWEAK:STATIC= - -//Path to a program. -CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib - -//Path to a program. -CMAKE_READELF:FILEPATH=/usr/bin/readelf - -//Flags used by the linker during the creation of shared libraries -// during all build types. -CMAKE_SHARED_LINKER_FLAGS:STRING= - -//Flags used by the linker during the creation of shared libraries -// during DEBUG builds. -CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during the creation of shared libraries -// during MINSIZEREL builds. -CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during the creation of shared libraries -// during RELEASE builds. -CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during the creation of shared libraries -// during RELWITHDEBINFO builds. -CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//If set, runtime paths are not added when installing shared libraries, -// but are added when building. -CMAKE_SKIP_INSTALL_RPATH:BOOL=NO - -//If set, runtime paths are not added when using shared libraries. -CMAKE_SKIP_RPATH:BOOL=NO - -//Flags used by the linker during the creation of static libraries -// during all build types. -CMAKE_STATIC_LINKER_FLAGS:STRING= - -//Flags used by the linker during the creation of static libraries -// during DEBUG builds. -CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during the creation of static libraries -// during MINSIZEREL builds. -CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during the creation of static libraries -// during RELEASE builds. -CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during the creation of static libraries -// during RELWITHDEBINFO builds. -CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//Path to a program. -CMAKE_STRIP:FILEPATH=/usr/bin/strip - -//If this value is on, makefiles will be generated without the -// .SILENT directive, and all commands will be echoed to the console -// during the make. This is useful for debugging only. With Visual -// Studio IDE projects all commands are done without /nologo. -CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE - -//Dot tool for use with Doxygen -DOXYGEN_DOT_EXECUTABLE:FILEPATH=/usr/bin/dot - -//Doxygen documentation generation tool (http://www.doxygen.org) -DOXYGEN_EXECUTABLE:FILEPATH=/usr/bin/doxygen - -//enable coverage on debug build -ENABLE_COVERAGE:BOOL=OFF - -//enable sanitizer on debug build -ENABLE_SANITIZER:BOOL=ON - -//enable undefined behavior sanitizer on debug build -ENABLE_UB_SANITIZER:BOOL=OFF - -//The directory containing a CMake configuration file for boost_filesystem. -boost_filesystem_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0 - -//The directory containing a CMake configuration file for boost_headers. -boost_headers_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0 - -//Value Computed by CMake -ccbench_ss2pl_BINARY_DIR:STATIC=/home/tngngn/tccbench/w-w/build - -//Value Computed by CMake -ccbench_ss2pl_SOURCE_DIR:STATIC=/home/tngngn/tccbench/w-w - - -######################## -# INTERNAL cache entries -######################## - -//ADVANCED property for variable: Boost_DIR -Boost_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_ADDR2LINE -CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_AR -CMAKE_AR-ADVANCED:INTERNAL=1 -//This is the directory where this CMakeCache.txt was created -CMAKE_CACHEFILE_DIR:INTERNAL=/home/tngngn/tccbench/w-w/build -//Major version of cmake used to create the current loaded cache -CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 -//Minor version of cmake used to create the current loaded cache -CMAKE_CACHE_MINOR_VERSION:INTERNAL=17 -//Patch version of cmake used to create the current loaded cache -CMAKE_CACHE_PATCH_VERSION:INTERNAL=0 -//Path to CMake executable. -CMAKE_COMMAND:INTERNAL=/usr/local/bin/cmake -//Path to cpack program executable. -CMAKE_CPACK_COMMAND:INTERNAL=/usr/local/bin/cpack -//Path to ctest program executable. -CMAKE_CTEST_COMMAND:INTERNAL=/usr/local/bin/ctest -//ADVANCED property for variable: CMAKE_CXX_COMPILER -CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR -CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB -CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS -CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG -CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL -CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE -CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO -CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_DLLTOOL -CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 -//Executable file format -CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS -CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG -CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL -CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE -CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS -CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 -//Name of external makefile project generator. -CMAKE_EXTRA_GENERATOR:INTERNAL= -//Name of generator. -CMAKE_GENERATOR:INTERNAL=Ninja -//Generator instance identifier. -CMAKE_GENERATOR_INSTANCE:INTERNAL= -//Name of generator platform. -CMAKE_GENERATOR_PLATFORM:INTERNAL= -//Name of generator toolset. -CMAKE_GENERATOR_TOOLSET:INTERNAL= -//Test CMAKE_HAVE_LIBC_PTHREAD -CMAKE_HAVE_LIBC_PTHREAD:INTERNAL= -//Have library pthreads -CMAKE_HAVE_PTHREADS_CREATE:INTERNAL= -//Have library pthread -CMAKE_HAVE_PTHREAD_CREATE:INTERNAL=1 -//Have include pthread.h -CMAKE_HAVE_PTHREAD_H:INTERNAL=1 -//Source directory with the top level CMakeLists.txt file for this -// project -CMAKE_HOME_DIRECTORY:INTERNAL=/home/tngngn/tccbench/w-w -//ADVANCED property for variable: CMAKE_INSTALL_BINDIR -CMAKE_INSTALL_BINDIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_INSTALL_DATADIR -CMAKE_INSTALL_DATADIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_INSTALL_DATAROOTDIR -CMAKE_INSTALL_DATAROOTDIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_INSTALL_DOCDIR -CMAKE_INSTALL_DOCDIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_INSTALL_INCLUDEDIR -CMAKE_INSTALL_INCLUDEDIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_INSTALL_INFODIR -CMAKE_INSTALL_INFODIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_INSTALL_LIBDIR -CMAKE_INSTALL_LIBDIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_INSTALL_LIBEXECDIR -CMAKE_INSTALL_LIBEXECDIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_INSTALL_LOCALEDIR -CMAKE_INSTALL_LOCALEDIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_INSTALL_LOCALSTATEDIR -CMAKE_INSTALL_LOCALSTATEDIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_INSTALL_MANDIR -CMAKE_INSTALL_MANDIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_INSTALL_OLDINCLUDEDIR -CMAKE_INSTALL_OLDINCLUDEDIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_INSTALL_RUNSTATEDIR -CMAKE_INSTALL_RUNSTATEDIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_INSTALL_SBINDIR -CMAKE_INSTALL_SBINDIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_INSTALL_SHAREDSTATEDIR -CMAKE_INSTALL_SHAREDSTATEDIR-ADVANCED:INTERNAL=1 -//Install .so files without execute permission. -CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 -//ADVANCED property for variable: CMAKE_INSTALL_SYSCONFDIR -CMAKE_INSTALL_SYSCONFDIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_LINKER -CMAKE_LINKER-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MAKE_PROGRAM -CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS -CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG -CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL -CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE -CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_NM -CMAKE_NM-ADVANCED:INTERNAL=1 -//number of local generators -CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 -//ADVANCED property for variable: CMAKE_OBJCOPY -CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_OBJDUMP -CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 -//Platform information initialized -CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_RANLIB -CMAKE_RANLIB-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_READELF -CMAKE_READELF-ADVANCED:INTERNAL=1 -//Path to CMake installation. -CMAKE_ROOT:INTERNAL=/usr/local/share/cmake-3.17 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS -CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG -CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL -CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE -CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH -CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SKIP_RPATH -CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS -CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG -CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL -CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE -CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STRIP -CMAKE_STRIP-ADVANCED:INTERNAL=1 -//uname command -CMAKE_UNAME:INTERNAL=/bin/uname -//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE -CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: DOXYGEN_DOT_EXECUTABLE -DOXYGEN_DOT_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: DOXYGEN_EXECUTABLE -DOXYGEN_EXECUTABLE-ADVANCED:INTERNAL=1 -//Details about finding Boost -FIND_PACKAGE_MESSAGE_DETAILS_Boost:INTERNAL=[/usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake][cfound components: filesystem ][v1.71.0()] -//Details about finding Doxygen -FIND_PACKAGE_MESSAGE_DETAILS_Doxygen:INTERNAL=[/usr/bin/doxygen][cfound components: doxygen dot ][v1.8.17()] -//Details about finding Threads -FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()] -//Details about finding gflags -FIND_PACKAGE_MESSAGE_DETAILS_gflags:INTERNAL=[/usr/lib/x86_64-linux-gnu/libgflags.so][/usr/include][v()] -//Details about finding glog -FIND_PACKAGE_MESSAGE_DETAILS_glog:INTERNAL=[/usr/lib/x86_64-linux-gnu/libglog.so][/usr/include][v()] -//CMAKE_INSTALL_PREFIX during last run -_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX:INTERNAL=/usr/local -//ADVANCED property for variable: boost_filesystem_DIR -boost_filesystem_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: boost_headers_DIR -boost_headers_DIR-ADVANCED:INTERNAL=1 - diff --git a/wound-wait/build/CMakeFiles/CMakeError.log b/wound-wait/build/CMakeFiles/CMakeError.log deleted file mode 100644 index 6ff9b6ee..00000000 --- a/wound-wait/build/CMakeFiles/CMakeError.log +++ /dev/null @@ -1,50 +0,0 @@ -Performing C++ SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output: -Change Dir: /home/tngngn/tccbench/w-w/build/CMakeFiles/CMakeTmp - -Run Build Command(s):/usr/local/bin/ninja cmTC_3bac9 && [1/2] Building CXX object CMakeFiles/cmTC_3bac9.dir/src.cxx.o -[2/2] Linking CXX executable cmTC_3bac9 -FAILED: cmTC_3bac9 -: && /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD CMakeFiles/cmTC_3bac9.dir/src.cxx.o -o cmTC_3bac9 && : -/usr/bin/ld: CMakeFiles/cmTC_3bac9.dir/src.cxx.o: in function `main': -src.cxx:(.text+0x46): undefined reference to `pthread_create' -/usr/bin/ld: src.cxx:(.text+0x52): undefined reference to `pthread_detach' -/usr/bin/ld: src.cxx:(.text+0x5e): undefined reference to `pthread_cancel' -/usr/bin/ld: src.cxx:(.text+0x6f): undefined reference to `pthread_join' -collect2: error: ld returned 1 exit status -ninja: build stopped: subcommand failed. - - -Source file was: -#include - -void* test_func(void* data) -{ - return data; -} - -int main(void) -{ - pthread_t thread; - pthread_create(&thread, NULL, test_func, NULL); - pthread_detach(thread); - pthread_cancel(thread); - pthread_join(thread, NULL); - pthread_atfork(NULL, NULL, NULL); - pthread_exit(NULL); - - return 0; -} - -Determining if the function pthread_create exists in the pthreads failed with the following output: -Change Dir: /home/tngngn/tccbench/w-w/build/CMakeFiles/CMakeTmp - -Run Build Command(s):/usr/local/bin/ninja cmTC_dc0cf && [1/2] Building CXX object CMakeFiles/cmTC_dc0cf.dir/CheckFunctionExists.cxx.o -[2/2] Linking CXX executable cmTC_dc0cf -FAILED: cmTC_dc0cf -: && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_dc0cf.dir/CheckFunctionExists.cxx.o -o cmTC_dc0cf -lpthreads && : -/usr/bin/ld: -lpthreads が見つかりません -collect2: error: ld returned 1 exit status -ninja: build stopped: subcommand failed. - - - diff --git a/wound-wait/build/CMakeFiles/CMakeOutput.log b/wound-wait/build/CMakeFiles/CMakeOutput.log deleted file mode 100644 index 76791b93..00000000 --- a/wound-wait/build/CMakeFiles/CMakeOutput.log +++ /dev/null @@ -1,235 +0,0 @@ -The system is: Linux - 5.4.0-113-generic - x86_64 -Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. -Compiler: /usr/bin/c++ -Build flags: -Id flags: - -The output was: -0 - - -Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" - -The CXX compiler identification is GNU, found in "/home/tngngn/tccbench/w-w/build/CMakeFiles/3.17.0/CompilerIdCXX/a.out" - -Determining if the CXX compiler works passed with the following output: -Change Dir: /home/tngngn/tccbench/w-w/build/CMakeFiles/CMakeTmp - -Run Build Command(s):/usr/local/bin/ninja cmTC_52806 && [1/2] Building CXX object CMakeFiles/cmTC_52806.dir/testCXXCompiler.cxx.o -[2/2] Linking CXX executable cmTC_52806 - - - -Detecting CXX compiler ABI info compiled with the following output: -Change Dir: /home/tngngn/tccbench/w-w/build/CMakeFiles/CMakeTmp - -Run Build Command(s):/usr/local/bin/ninja cmTC_5ce5b && [1/2] Building CXX object CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o -Using built-in specs. -COLLECT_GCC=/usr/bin/c++ -OFFLOAD_TARGET_NAMES=nvptx-none:hsa -OFFLOAD_TARGET_DEFAULT=1 -Target: x86_64-linux-gnu -Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu -Thread model: posix -gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cci25DEe.s -GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) - compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP - -GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 -ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9" -ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" -ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed" -ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include" -#include "..." search starts here: -#include <...> search starts here: - /usr/include/c++/9 - /usr/include/x86_64-linux-gnu/c++/9 - /usr/include/c++/9/backward - /usr/lib/gcc/x86_64-linux-gnu/9/include - /usr/local/include - /usr/include/x86_64-linux-gnu - /usr/include -End of search list. -GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) - compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP - -GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 -Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0 -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - as -v --64 -o CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o /tmp/cci25DEe.s -GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34 -COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ -LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' -[2/2] Linking CXX executable cmTC_5ce5b -Using built-in specs. -COLLECT_GCC=/usr/bin/c++ -COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -OFFLOAD_TARGET_NAMES=nvptx-none:hsa -OFFLOAD_TARGET_DEFAULT=1 -Target: x86_64-linux-gnu -Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu -Thread model: posix -gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) -COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ -LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_5ce5b' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccQ2ZfRx.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_5ce5b /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_5ce5b' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - - - -Parsed CXX implicit include dir info from above output: rv=done - found start of include info - found start of implicit include info - add: [/usr/include/c++/9] - add: [/usr/include/x86_64-linux-gnu/c++/9] - add: [/usr/include/c++/9/backward] - add: [/usr/lib/gcc/x86_64-linux-gnu/9/include] - add: [/usr/local/include] - add: [/usr/include/x86_64-linux-gnu] - add: [/usr/include] - end of search list found - collapse include dir [/usr/include/c++/9] ==> [/usr/include/c++/9] - collapse include dir [/usr/include/x86_64-linux-gnu/c++/9] ==> [/usr/include/x86_64-linux-gnu/c++/9] - collapse include dir [/usr/include/c++/9/backward] ==> [/usr/include/c++/9/backward] - collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/9/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/9/include] - collapse include dir [/usr/local/include] ==> [/usr/local/include] - collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu] - collapse include dir [/usr/include] ==> [/usr/include] - implicit include dirs: [/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include] - - -Parsed CXX implicit link information from above output: - link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] - ignore line: [Change Dir: /home/tngngn/tccbench/w-w/build/CMakeFiles/CMakeTmp] - ignore line: [] - ignore line: [Run Build Command(s):/usr/local/bin/ninja cmTC_5ce5b && [1/2] Building CXX object CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o] - ignore line: [Using built-in specs.] - ignore line: [COLLECT_GCC=/usr/bin/c++] - ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] - ignore line: [OFFLOAD_TARGET_DEFAULT=1] - ignore line: [Target: x86_64-linux-gnu] - ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] - ignore line: [Thread model: posix] - ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cci25DEe.s] - ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] - ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] - ignore line: [] - ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] - ignore line: [ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9"] - ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"] - ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed"] - ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include"] - ignore line: [#include "..." search starts here:] - ignore line: [#include <...> search starts here:] - ignore line: [ /usr/include/c++/9] - ignore line: [ /usr/include/x86_64-linux-gnu/c++/9] - ignore line: [ /usr/include/c++/9/backward] - ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/include] - ignore line: [ /usr/local/include] - ignore line: [ /usr/include/x86_64-linux-gnu] - ignore line: [ /usr/include] - ignore line: [End of search list.] - ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] - ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] - ignore line: [] - ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] - ignore line: [Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o /tmp/cci25DEe.s] - ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34] - ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] - ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [[2/2] Linking CXX executable cmTC_5ce5b] - ignore line: [Using built-in specs.] - ignore line: [COLLECT_GCC=/usr/bin/c++] - ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] - ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] - ignore line: [OFFLOAD_TARGET_DEFAULT=1] - ignore line: [Target: x86_64-linux-gnu] - ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] - ignore line: [Thread model: posix] - ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] - ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] - ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_5ce5b' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccQ2ZfRx.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_5ce5b /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] - arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore - arg [-plugin] ==> ignore - arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore - arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/ccQ2ZfRx.res] ==> ignore - arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore - arg [-plugin-opt=-pass-through=-lgcc] ==> ignore - arg [-plugin-opt=-pass-through=-lc] ==> ignore - arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore - arg [-plugin-opt=-pass-through=-lgcc] ==> ignore - arg [--build-id] ==> ignore - arg [--eh-frame-hdr] ==> ignore - arg [-m] ==> ignore - arg [elf_x86_64] ==> ignore - arg [--hash-style=gnu] ==> ignore - arg [--as-needed] ==> ignore - arg [-dynamic-linker] ==> ignore - arg [/lib64/ld-linux-x86-64.so.2] ==> ignore - arg [-pie] ==> ignore - arg [-znow] ==> ignore - arg [-zrelro] ==> ignore - arg [-o] ==> ignore - arg [cmTC_5ce5b] ==> ignore - arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore - arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore - arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore - arg [-L/usr/lib/gcc/x86_64-linux-gnu/9] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9] - arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] - arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] - arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] - arg [-L/lib/../lib] ==> dir [/lib/../lib] - arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] - arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] - arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] - arg [CMakeFiles/cmTC_5ce5b.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore - arg [-lstdc++] ==> lib [stdc++] - arg [-lm] ==> lib [m] - arg [-lgcc_s] ==> lib [gcc_s] - arg [-lgcc] ==> lib [gcc] - arg [-lc] ==> lib [c] - arg [-lgcc_s] ==> lib [gcc_s] - arg [-lgcc] ==> lib [gcc] - arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o] ==> ignore - arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] ==> ignore - collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9] ==> [/usr/lib/gcc/x86_64-linux-gnu/9] - collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] - collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> [/usr/lib] - collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] - collapse library dir [/lib/../lib] ==> [/lib] - collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] - collapse library dir [/usr/lib/../lib] ==> [/usr/lib] - collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> [/usr/lib] - implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc] - implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] - implicit fwks: [] - - -Determining if the include file pthread.h exists passed with the following output: -Change Dir: /home/tngngn/tccbench/w-w/build/CMakeFiles/CMakeTmp - -Run Build Command(s):/usr/local/bin/ninja cmTC_23fa3 && [1/2] Building CXX object CMakeFiles/cmTC_23fa3.dir/CheckIncludeFile.cxx.o -[2/2] Linking CXX executable cmTC_23fa3 - - - -Determining if the function pthread_create exists in the pthread passed with the following output: -Change Dir: /home/tngngn/tccbench/w-w/build/CMakeFiles/CMakeTmp - -Run Build Command(s):/usr/local/bin/ninja cmTC_011f0 && [1/2] Building CXX object CMakeFiles/cmTC_011f0.dir/CheckFunctionExists.cxx.o -[2/2] Linking CXX executable cmTC_011f0 - - - diff --git a/wound-wait/build/CMakeFiles/TargetDirectories.txt b/wound-wait/build/CMakeFiles/TargetDirectories.txt deleted file mode 100644 index 9f92b9b4..00000000 --- a/wound-wait/build/CMakeFiles/TargetDirectories.txt +++ /dev/null @@ -1,3 +0,0 @@ -/home/tngngn/tccbench/w-w/build/CMakeFiles/rebuild_cache.dir -/home/tngngn/tccbench/w-w/build/CMakeFiles/edit_cache.dir -/home/tngngn/tccbench/w-w/build/CMakeFiles/ss2pl.exe.dir diff --git a/wound-wait/build/build.ninja b/wound-wait/build/build.ninja deleted file mode 100644 index 35fca374..00000000 --- a/wound-wait/build/build.ninja +++ /dev/null @@ -1,186 +0,0 @@ -# CMAKE generated file: DO NOT EDIT! -# Generated by "Ninja" Generator, CMake Version 3.17 - -# This file contains all the build statements describing the -# compilation DAG. - -# ============================================================================= -# Write statements declared in CMakeLists.txt: -# -# Which is the root file. -# ============================================================================= - -# ============================================================================= -# Project: ccbench_ss2pl -# Configurations: Release -# ============================================================================= - -############################################# -# Minimal version of Ninja required by this file - -ninja_required_version = 1.5 - - -############################################# -# Set configuration variable for custom commands. - -CONFIGURATION = Release -# ============================================================================= -# Include auxiliary files. - - -############################################# -# Include rules file. - -include rules.ninja - - -############################################# -# Utility command for rebuild_cache - -build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND - COMMAND = cd /home/tngngn/tccbench/w-w/build && /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/tccbench/w-w -B/home/tngngn/tccbench/w-w/build - DESC = Running CMake to regenerate build system... - pool = console - restat = 1 - -build rebuild_cache: phony CMakeFiles/rebuild_cache.util - - -############################################# -# Utility command for edit_cache - -build CMakeFiles/edit_cache.util: CUSTOM_COMMAND - COMMAND = cd /home/tngngn/tccbench/w-w/build && /usr/local/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. - DESC = No interactive CMake dialog available... - restat = 1 - -build edit_cache: phony CMakeFiles/edit_cache.util - -# ============================================================================= -# Object build statements for EXECUTABLE target ss2pl.exe - - -############################################# -# Order-only phony target for ss2pl.exe - -build cmake_object_order_depends_target_ss2pl.exe_Release: phony || CMakeFiles/ss2pl.exe.dir - -build CMakeFiles/ss2pl.exe.dir/home/tngngn/tccbench/common/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Release /home/tngngn/tccbench/common/result.cc || cmake_object_order_depends_target_ss2pl.exe_Release - DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 - DEP_FILE = CMakeFiles/ss2pl.exe.dir/home/tngngn/tccbench/common/result.cc.o.d - FLAGS = -O3 -DNDEBUG -std=c++17 - OBJECT_DIR = CMakeFiles/ss2pl.exe.dir - OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir/home/tngngn/tccbench/common - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ - TARGET_PDB = ss2pl.exe.pdb - -build CMakeFiles/ss2pl.exe.dir/home/tngngn/tccbench/common/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Release /home/tngngn/tccbench/common/util.cc || cmake_object_order_depends_target_ss2pl.exe_Release - DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 - DEP_FILE = CMakeFiles/ss2pl.exe.dir/home/tngngn/tccbench/common/util.cc.o.d - FLAGS = -O3 -DNDEBUG -std=c++17 - OBJECT_DIR = CMakeFiles/ss2pl.exe.dir - OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir/home/tngngn/tccbench/common - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ - TARGET_PDB = ss2pl.exe.pdb - -build CMakeFiles/ss2pl.exe.dir/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../result.cc || cmake_object_order_depends_target_ss2pl.exe_Release - DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 - DEP_FILE = CMakeFiles/ss2pl.exe.dir/result.cc.o.d - FLAGS = -O3 -DNDEBUG -std=c++17 - OBJECT_DIR = CMakeFiles/ss2pl.exe.dir - OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ - TARGET_PDB = ss2pl.exe.pdb - -build CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../ss2pl.cc || cmake_object_order_depends_target_ss2pl.exe_Release - DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 - DEP_FILE = CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o.d - FLAGS = -O3 -DNDEBUG -std=c++17 - OBJECT_DIR = CMakeFiles/ss2pl.exe.dir - OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ - TARGET_PDB = ss2pl.exe.pdb - -build CMakeFiles/ss2pl.exe.dir/transaction.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../transaction.cc || cmake_object_order_depends_target_ss2pl.exe_Release - DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 - DEP_FILE = CMakeFiles/ss2pl.exe.dir/transaction.cc.o.d - FLAGS = -O3 -DNDEBUG -std=c++17 - OBJECT_DIR = CMakeFiles/ss2pl.exe.dir - OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ - TARGET_PDB = ss2pl.exe.pdb - -build CMakeFiles/ss2pl.exe.dir/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../util.cc || cmake_object_order_depends_target_ss2pl.exe_Release - DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 - DEP_FILE = CMakeFiles/ss2pl.exe.dir/util.cc.o.d - FLAGS = -O3 -DNDEBUG -std=c++17 - OBJECT_DIR = CMakeFiles/ss2pl.exe.dir - OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ - TARGET_PDB = ss2pl.exe.pdb - - -# ============================================================================= -# Link build statements for EXECUTABLE target ss2pl.exe - - -############################################# -# Link the executable ss2pl.exe - -build ss2pl.exe: CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Release CMakeFiles/ss2pl.exe.dir/home/tngngn/tccbench/common/result.cc.o CMakeFiles/ss2pl.exe.dir/home/tngngn/tccbench/common/util.cc.o CMakeFiles/ss2pl.exe.dir/result.cc.o CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o CMakeFiles/ss2pl.exe.dir/transaction.cc.o CMakeFiles/ss2pl.exe.dir/util.cc.o | /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a - FLAGS = -O3 -DNDEBUG - LINK_LIBRARIES = /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a -lpthread - OBJECT_DIR = CMakeFiles/ss2pl.exe.dir - POST_BUILD = : - PRE_LINK = : - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ - TARGET_FILE = ss2pl.exe - TARGET_PDB = ss2pl.exe.pdb - -# ============================================================================= -# Target aliases. - -# ============================================================================= -# Folder targets. - -# ============================================================================= - -############################################# -# Folder: /home/tngngn/tccbench/w-w/build - -build all: phony ss2pl.exe - -# ============================================================================= -# Built-in targets - - -############################################# -# Re-run CMake if any of its inputs changed. - -build build.ninja: RERUN_CMAKE | ../CMakeLists.txt /home/tngngn/tccbench/cmake/CompileOptions.cmake /home/tngngn/tccbench/cmake/Findgflags.cmake /home/tngngn/tccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx - pool = console - - -############################################# -# A missing CMake input file is not an error. - -build ../CMakeLists.txt /home/tngngn/tccbench/cmake/CompileOptions.cmake /home/tngngn/tccbench/cmake/Findgflags.cmake /home/tngngn/tccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx: phony - - -############################################# -# Clean all the built files. - -build clean: CLEAN - - -############################################# -# Print all primary targets available. - -build help: HELP - - -############################################# -# Make the all target the default. - -default all diff --git a/wound-wait/build/cmake_install.cmake b/wound-wait/build/cmake_install.cmake deleted file mode 100644 index cf48223a..00000000 --- a/wound-wait/build/cmake_install.cmake +++ /dev/null @@ -1,49 +0,0 @@ -# Install script for directory: /home/tngngn/tccbench/w-w - -# Set the install prefix -if(NOT DEFINED CMAKE_INSTALL_PREFIX) - set(CMAKE_INSTALL_PREFIX "/usr/local") -endif() -string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") - -# Set the install configuration name. -if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) - if(BUILD_TYPE) - string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" - CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") - else() - set(CMAKE_INSTALL_CONFIG_NAME "Release") - endif() - message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") -endif() - -# Set the component getting installed. -if(NOT CMAKE_INSTALL_COMPONENT) - if(COMPONENT) - message(STATUS "Install component: \"${COMPONENT}\"") - set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") - else() - set(CMAKE_INSTALL_COMPONENT) - endif() -endif() - -# Install shared libraries without execute permission? -if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) - set(CMAKE_INSTALL_SO_NO_EXE "1") -endif() - -# Is this installation the result of a crosscompile? -if(NOT DEFINED CMAKE_CROSSCOMPILING) - set(CMAKE_CROSSCOMPILING "FALSE") -endif() - -if(CMAKE_INSTALL_COMPONENT) - set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") -else() - set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") -endif() - -string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT - "${CMAKE_INSTALL_MANIFEST_FILES}") -file(WRITE "/home/tngngn/tccbench/w-w/build/${CMAKE_INSTALL_MANIFEST}" - "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/wound-wait/build/rules.ninja b/wound-wait/build/rules.ninja deleted file mode 100644 index 8867ea69..00000000 --- a/wound-wait/build/rules.ninja +++ /dev/null @@ -1,64 +0,0 @@ -# CMAKE generated file: DO NOT EDIT! -# Generated by "Ninja" Generator, CMake Version 3.17 - -# This file contains all the rules used to get the outputs files -# built from the input files. -# It is included in the main 'build.ninja'. - -# ============================================================================= -# Project: ccbench_ss2pl -# Configurations: Release -# ============================================================================= -# ============================================================================= - -############################################# -# Rule for running custom commands. - -rule CUSTOM_COMMAND - command = $COMMAND - description = $DESC - - -############################################# -# Rule for compiling CXX files. - -rule CXX_COMPILER__ss2pl.2eexe_Release - depfile = $DEP_FILE - deps = gcc - command = /usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in - description = Building CXX object $out - - -############################################# -# Rule for linking CXX executable. - -rule CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Release - command = $PRE_LINK && /usr/bin/c++ $FLAGS $LINK_FLAGS $in -o $TARGET_FILE $LINK_PATH $LINK_LIBRARIES && $POST_BUILD - description = Linking CXX executable $TARGET_FILE - restat = $RESTAT - - -############################################# -# Rule for re-running cmake. - -rule RERUN_CMAKE - command = /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/tccbench/w-w -B/home/tngngn/tccbench/w-w/build - description = Re-running CMake... - generator = 1 - - -############################################# -# Rule for cleaning all built files. - -rule CLEAN - command = /usr/local/bin/ninja $FILE_ARG -t clean $TARGETS - description = Cleaning all built files... - - -############################################# -# Rule for printing all primary targets available. - -rule HELP - command = /usr/local/bin/ninja -t targets - description = All primary targets available: - diff --git a/wound-wait/include/common.hh b/wound-wait/include/common.hh deleted file mode 100644 index 06babf09..00000000 --- a/wound-wait/include/common.hh +++ /dev/null @@ -1,4 +0,0 @@ - -alignas(CACHE_LINE_SIZE) GLOBAL Tuple *Table; -alignas(CACHE_LINE_SIZE) GLOBAL int thread_stats[224]; -alignas(CACHE_LINE_SIZE) GLOBAL int thread_timestamp[224]; \ No newline at end of file diff --git a/wound-wait/include/tuple.hh b/wound-wait/include/tuple.hh deleted file mode 100644 index de240080..00000000 --- a/wound-wait/include/tuple.hh +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -#include -#include - -#include "../../include/cache_line_size.hh" -#include "../../include/inline.hh" -#include "../../include/rwlock.hh" - -using namespace std; - -class Tuple { -public: - alignas(CACHE_LINE_SIZE) RWLock lock_; - char val_[VAL_SIZE]; - int writer = 0; - int readers[224] = {0}; - int writers[224] = {0}; -}; diff --git a/wound-wait/ss2pl.cc b/wound-wait/ss2pl.cc deleted file mode 100644 index e69de29b..00000000 diff --git a/wound-wait/transaction.cc b/wound-wait/transaction.cc deleted file mode 100644 index 1af4d9b2..00000000 --- a/wound-wait/transaction.cc +++ /dev/null @@ -1,363 +0,0 @@ - -#include -#include - -#include - -#include "../include/backoff.hh" -#include "../include/debug.hh" -#include "../include/procedure.hh" -#include "../include/result.hh" -#include "include/common.hh" -#include "include/transaction.hh" - -using namespace std; - -extern void display_procedure_vector(std::vector &pro); - -/** - * @brief Search xxx set - * @detail Search element of local set corresponding to given key. - * In this prototype system, the value to be updated for each worker thread - * is fixed for high performance, so it is only necessary to check the key match. - * @param Key [in] the key of key-value - * @return Corresponding element of local set - */ -inline SetElement *TxExecutor::searchReadSet(uint64_t key) { - for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) { - if ((*itr).key_ == key) return &(*itr); - } - - return nullptr; -} - -/** - * @brief Search xxx set - * @detail Search element of local set corresponding to given key. - * In this prototype system, the value to be updated for each worker thread - * is fixed for high performance, so it is only necessary to check the key match. - * @param Key [in] the key of key-value - * @return Corresponding element of local set - */ -inline SetElement *TxExecutor::searchWriteSet(uint64_t key) { - for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { - if ((*itr).key_ == key) return &(*itr); - } - - return nullptr; -} - -/** - * @brief function about abort. - * Clean-up local read/write set. - * Release locks. - * @return void - */ -void TxExecutor::abort() { - /** - * Release locks - */ - unlockList(); - - /** - * Clean-up local read/write set. - */ - read_set_.clear(); - write_set_.clear(); - - ++sres_->local_abort_counts_; - -#if BACK_OFF -#if ADD_ANALYSIS - uint64_t start(rdtscp()); -#endif - - Backoff::backoff(FLAGS_clocks_per_us); - -#if ADD_ANALYSIS - sres_->local_backoff_latency_ += rdtscp() - start; -#endif - -#endif -} - -/** - * @brief success termination of transaction. - * @return void - */ -void TxExecutor::commit() { - for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { - /** - * update payload. - */ - memcpy((*itr).rcdptr_->val_, write_val_, VAL_SIZE); - } - - /** - * Release locks. - */ - unlockList(); - - /** - * Clean-up local read/write set. - */ - read_set_.clear(); - write_set_.clear(); -} - -/** - * @brief Initialize function of transaction. - * Allocate timestamp. - * @return void - */ -void TxExecutor::begin() { this->status_ = TransactionStatus::inFlight; } - -/** - * @brief Transaction read function. - * @param [in] key The key of key-value - */ -void TxExecutor::read(uint64_t key) { -#if ADD_ANALYSIS - uint64_t start = rdtscp(); -#endif // ADD_ANALYSIS - - /** - * read-own-writes or re-read from local read set. - */ - if (searchWriteSet(key) || searchReadSet(key)) goto FINISH_READ; - - /** - * Search tuple from data structure. - */ - Tuple *tuple; -#if MASSTREE_USE - tuple = MT.get_value(key); -#if ADD_ANALYSIS - ++sres_->local_tree_traversal_; -#endif -#else - tuple = get_tuple(Table, key); -#endif - - while (1) { - if (tuple->lock_.r_trylock()) { - r_lock_list_.emplace_back(&tuple->lock_); - read_set_.emplace_back(key, tuple, tuple->val_); - tuple->readers[thid_] = 1; - break; - } - else { - /** - * wound wait - */ - for (int i = 0; i < FLAGS_thread_num; i++) { - if (tuple->writers[i] > 0 && thread_timestamp[i] > thread_timestamp[this->thid_]) { - thread_stats[i] = 1; - } - } - if (thread_stats[thid_] == 1) goto FINISH_READ; - } - } - -FINISH_READ: - -#if ADD_ANALYSIS - sres_->local_read_latency_ += rdtscp() - start; -#endif - return; -} - -/** - * @brief transaction write operation - * @param [in] key The key of key-value - * @return void - */ -void TxExecutor::write(uint64_t key) { -#if ADD_ANALYSIS - uint64_t start = rdtscp(); -#endif - - // if it already wrote the key object once. - if (searchWriteSet(key)) goto FINISH_WRITE; - /** - * Search tuple from data structure. - */ - Tuple *tuple; -#if MASSTREE_USE - tuple = MT.get_value(key); -#if ADD_ANALYSIS - ++sres_->local_tree_traversal_; -#endif -#else - tuple = get_tuple(Table, key); -#endif - for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { - if ((*rItr).key_ == key) { // hit - while (1) { - if (!(*rItr).rcdptr_->lock_.tryupgrade()) { - for (int i = 0; i < FLAGS_thread_num; i++) { - if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { - thread_stats[i] = 1; - } - } - if (thread_stats[thid_] == 1) goto FINISH_WRITE; - } else { - break; - } - } - - // upgrade success - // remove old element of read lock list. - tuple->readers[this->thid_] = 0; - tuple->writers[this->thid_] = 1; - for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); - ++lItr) { - if (*lItr == &((*rItr).rcdptr_->lock_)) { - write_set_.emplace_back(key, (*rItr).rcdptr_); - w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); - r_lock_list_.erase(lItr); - break; - } - } - - read_set_.erase(rItr); - goto FINISH_WRITE; - } - } - - while (1) { - if (!tuple->lock_.w_trylock()) { - /** - * wound-wait. - */ - for (int i = 0; i < FLAGS_thread_num; i++) { - if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { - thread_stats[i] = 1; - } - } - if (thread_stats[thid_] == 1) goto FINISH_WRITE; - } else { - break; - } - } - - - /** - * Register the contents to write lock list and write set. - */ - tuple->writers[thid_] = 1; - w_lock_list_.emplace_back(&tuple->lock_); - write_set_.emplace_back(key, tuple); - -FINISH_WRITE: -#if ADD_ANALYSIS - sres_->local_write_latency_ += rdtscp() - start; -#endif // ADD_ANALYSIS - return; -} - -/** - * @brief transaction readWrite (RMW) operation - */ -void TxExecutor::readWrite(uint64_t key) { - // if it already wrote the key object once. - if (searchWriteSet(key)) goto FINISH_WRITE; - /** - * Search tuple from data structure. - */ - Tuple *tuple; -#if MASSTREE_USE - tuple = MT.get_value(key); -#if ADD_ANALYSIS - ++sres_->local_tree_traversal_; -#endif -#else - tuple = get_tuple(Table, key); -#endif - for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { - if ((*rItr).key_ == key) { // hit - while (1) { - if (!(*rItr).rcdptr_->lock_.tryupgrade()) { - for (int i = 0; i < FLAGS_thread_num; i++) { - if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { - thread_stats[i] = 1; - } - } - if (thread_stats[thid_] == 1) goto FINISH_WRITE; - } else { - break; - } - } - - // upgrade success - // remove old element of read set. - tuple->readers[this->thid_] = 0; - tuple->writers[this->thid_] = 1; - for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); - ++lItr) { - if (*lItr == &((*rItr).rcdptr_->lock_)) { - write_set_.emplace_back(key, (*rItr).rcdptr_); - w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); - r_lock_list_.erase(lItr); - break; - } - } - - read_set_.erase(rItr); - goto FINISH_WRITE; - } - } - - while (1) { - if (!tuple->lock_.w_trylock()) { - /** - * wound-wait. - */ - for (int i = 0; i < FLAGS_thread_num; i++) { - if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { - thread_stats[i] = 1; - } - } - if (thread_stats[thid_] == 1) goto FINISH_WRITE; - } else { - break; - } - } - - // read payload - memcpy(this->return_val_, tuple->val_, VAL_SIZE); - // finish read. - - /** - * Register the contents to write lock list and write set. - */ - w_lock_list_.emplace_back(&tuple->lock_); - write_set_.emplace_back(key, tuple); - -FINISH_WRITE: - return; -} - -/** - * @brief unlock and clean-up local lock set. - * @return void - */ -void TxExecutor::unlockList() { - for (auto itr = r_lock_list_.begin(); itr != r_lock_list_.end(); ++itr) - (*itr)->r_unlock(); - - for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) - (*itr).rcdptr_->readers[this->thid_] = -1; - - for (auto itr = w_lock_list_.begin(); itr != w_lock_list_.end(); ++itr) - (*itr)->w_unlock(); - - for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) - (*itr).rcdptr_->writers[this->thid_] = -1; - - /** - * Clean-up local lock set. - */ - r_lock_list_.clear(); - w_lock_list_.clear(); -} diff --git a/wound-wait/util.cc b/wound-wait/util.cc deleted file mode 100644 index e69de29b..00000000 diff --git a/ww/CMakeLists.txt b/ww/CMakeLists.txt deleted file mode 100644 index 61817a38..00000000 --- a/ww/CMakeLists.txt +++ /dev/null @@ -1,80 +0,0 @@ -cmake_minimum_required(VERSION 3.10) - -project(ccbench_ss2pl - VERSION 0.0.1 - DESCRIPTION "ss2pl of ccbench" - LANGUAGES CXX) - -list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake") - -option(ENABLE_SANITIZER "enable sanitizer on debug build" ON) -option(ENABLE_UB_SANITIZER "enable undefined behavior sanitizer on debug build" OFF) -option(ENABLE_COVERAGE "enable coverage on debug build" OFF) - -find_package(Doxygen) -find_package(Threads REQUIRED) -find_package(gflags REQUIRED) -find_package(glog REQUIRED) -find_package(Boost - COMPONENTS filesystem) - -include(GNUInstallDirs) -include(CMakePackageConfigHelpers) -include(CompileOptions) - -file(GLOB ERMIA_SOURCES - "../common/result.cc" - "../common/util.cc" - "ss2pl.cc" - "result.cc" - "transaction.cc" - "util.cc" - ) - -add_executable(ss2pl.exe ${ERMIA_SOURCES}) - -target_link_libraries(ss2pl.exe - Boost::filesystem - gflags::gflags - ${PROJECT_SOURCE_DIR}/../third_party/mimalloc/out/release/libmimalloc.a - ${PROJECT_SOURCE_DIR}/../third_party/masstree/libkohler_masstree_json.a - Threads::Threads - ) - -if (DEFINED ADD_ANALYSIS) - add_definitions(-DADD_ANALYSIS=${ADD_ANALYSIS}) -else () - add_definitions(-DADD_ANALYSIS=0) -endif () - -if (DEFINED BACK_OFF) - add_definitions(-DBACK_OFF=${BACK_OFF}) -else () - add_definitions(-DBACK_OFF=0) -endif () - -add_definitions(-DDLR1) - -if (DEFINED KEY_SIZE) - add_definitions(-DKEY_SIZE=${KEY_SIZE}) -else () - add_definitions(-DKEY_SIZE=8) -endif () - -if (DEFINED KEY_SORT) - add_definitions(-DKEY_SORT=${KEY_SORT}) -else () - add_definitions(-DKEY_SORT=0) -endif () - -if (DEFINED MASSTREE_USE) - add_definitions(-DMASSTREE_USE=${MASSTREE_USE}) -else () - add_definitions(-DMASSTREE_USE=1) -endif () - -if (DEFINED VAL_SIZE) - add_definitions(-DVAL_SIZE=${VAL_SIZE}) -else () - add_definitions(-DVAL_SIZE=4) -endif () diff --git a/ww/build/CMakeDoxyfile.in b/ww/build/CMakeDoxyfile.in deleted file mode 100644 index 848a3c81..00000000 --- a/ww/build/CMakeDoxyfile.in +++ /dev/null @@ -1,280 +0,0 @@ -# -# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! -# - -DOXYFILE_ENCODING = @DOXYGEN_DOXYFILE_ENCODING@ -PROJECT_NAME = @DOXYGEN_PROJECT_NAME@ -PROJECT_NUMBER = @DOXYGEN_PROJECT_NUMBER@ -PROJECT_BRIEF = @DOXYGEN_PROJECT_BRIEF@ -PROJECT_LOGO = @DOXYGEN_PROJECT_LOGO@ -OUTPUT_DIRECTORY = @DOXYGEN_OUTPUT_DIRECTORY@ -CREATE_SUBDIRS = @DOXYGEN_CREATE_SUBDIRS@ -ALLOW_UNICODE_NAMES = @DOXYGEN_ALLOW_UNICODE_NAMES@ -OUTPUT_LANGUAGE = @DOXYGEN_OUTPUT_LANGUAGE@ -OUTPUT_TEXT_DIRECTION = @DOXYGEN_OUTPUT_TEXT_DIRECTION@ -BRIEF_MEMBER_DESC = @DOXYGEN_BRIEF_MEMBER_DESC@ -REPEAT_BRIEF = @DOXYGEN_REPEAT_BRIEF@ -ABBREVIATE_BRIEF = @DOXYGEN_ABBREVIATE_BRIEF@ -ALWAYS_DETAILED_SEC = @DOXYGEN_ALWAYS_DETAILED_SEC@ -INLINE_INHERITED_MEMB = @DOXYGEN_INLINE_INHERITED_MEMB@ -FULL_PATH_NAMES = @DOXYGEN_FULL_PATH_NAMES@ -STRIP_FROM_PATH = @DOXYGEN_STRIP_FROM_PATH@ -STRIP_FROM_INC_PATH = @DOXYGEN_STRIP_FROM_INC_PATH@ -SHORT_NAMES = @DOXYGEN_SHORT_NAMES@ -JAVADOC_AUTOBRIEF = @DOXYGEN_JAVADOC_AUTOBRIEF@ -JAVADOC_BANNER = @DOXYGEN_JAVADOC_BANNER@ -QT_AUTOBRIEF = @DOXYGEN_QT_AUTOBRIEF@ -MULTILINE_CPP_IS_BRIEF = @DOXYGEN_MULTILINE_CPP_IS_BRIEF@ -INHERIT_DOCS = @DOXYGEN_INHERIT_DOCS@ -SEPARATE_MEMBER_PAGES = @DOXYGEN_SEPARATE_MEMBER_PAGES@ -TAB_SIZE = @DOXYGEN_TAB_SIZE@ -ALIASES = @DOXYGEN_ALIASES@ -TCL_SUBST = @DOXYGEN_TCL_SUBST@ -OPTIMIZE_OUTPUT_FOR_C = @DOXYGEN_OPTIMIZE_OUTPUT_FOR_C@ -OPTIMIZE_OUTPUT_JAVA = @DOXYGEN_OPTIMIZE_OUTPUT_JAVA@ -OPTIMIZE_FOR_FORTRAN = @DOXYGEN_OPTIMIZE_FOR_FORTRAN@ -OPTIMIZE_OUTPUT_VHDL = @DOXYGEN_OPTIMIZE_OUTPUT_VHDL@ -OPTIMIZE_OUTPUT_SLICE = @DOXYGEN_OPTIMIZE_OUTPUT_SLICE@ -EXTENSION_MAPPING = @DOXYGEN_EXTENSION_MAPPING@ -MARKDOWN_SUPPORT = @DOXYGEN_MARKDOWN_SUPPORT@ -TOC_INCLUDE_HEADINGS = @DOXYGEN_TOC_INCLUDE_HEADINGS@ -AUTOLINK_SUPPORT = @DOXYGEN_AUTOLINK_SUPPORT@ -BUILTIN_STL_SUPPORT = @DOXYGEN_BUILTIN_STL_SUPPORT@ -CPP_CLI_SUPPORT = @DOXYGEN_CPP_CLI_SUPPORT@ -SIP_SUPPORT = @DOXYGEN_SIP_SUPPORT@ -IDL_PROPERTY_SUPPORT = @DOXYGEN_IDL_PROPERTY_SUPPORT@ -DISTRIBUTE_GROUP_DOC = @DOXYGEN_DISTRIBUTE_GROUP_DOC@ -GROUP_NESTED_COMPOUNDS = @DOXYGEN_GROUP_NESTED_COMPOUNDS@ -SUBGROUPING = @DOXYGEN_SUBGROUPING@ -INLINE_GROUPED_CLASSES = @DOXYGEN_INLINE_GROUPED_CLASSES@ -INLINE_SIMPLE_STRUCTS = @DOXYGEN_INLINE_SIMPLE_STRUCTS@ -TYPEDEF_HIDES_STRUCT = @DOXYGEN_TYPEDEF_HIDES_STRUCT@ -LOOKUP_CACHE_SIZE = @DOXYGEN_LOOKUP_CACHE_SIZE@ -EXTRACT_ALL = @DOXYGEN_EXTRACT_ALL@ -EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@ -EXTRACT_PRIV_VIRTUAL = @DOXYGEN_EXTRACT_PRIV_VIRTUAL@ -EXTRACT_PACKAGE = @DOXYGEN_EXTRACT_PACKAGE@ -EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@ -EXTRACT_LOCAL_CLASSES = @DOXYGEN_EXTRACT_LOCAL_CLASSES@ -EXTRACT_LOCAL_METHODS = @DOXYGEN_EXTRACT_LOCAL_METHODS@ -EXTRACT_ANON_NSPACES = @DOXYGEN_EXTRACT_ANON_NSPACES@ -HIDE_UNDOC_MEMBERS = @DOXYGEN_HIDE_UNDOC_MEMBERS@ -HIDE_UNDOC_CLASSES = @DOXYGEN_HIDE_UNDOC_CLASSES@ -HIDE_FRIEND_COMPOUNDS = @DOXYGEN_HIDE_FRIEND_COMPOUNDS@ -HIDE_IN_BODY_DOCS = @DOXYGEN_HIDE_IN_BODY_DOCS@ -INTERNAL_DOCS = @DOXYGEN_INTERNAL_DOCS@ -CASE_SENSE_NAMES = @DOXYGEN_CASE_SENSE_NAMES@ -HIDE_SCOPE_NAMES = @DOXYGEN_HIDE_SCOPE_NAMES@ -HIDE_COMPOUND_REFERENCE= @DOXYGEN_HIDE_COMPOUND_REFERENCE@ -SHOW_INCLUDE_FILES = @DOXYGEN_SHOW_INCLUDE_FILES@ -SHOW_GROUPED_MEMB_INC = @DOXYGEN_SHOW_GROUPED_MEMB_INC@ -FORCE_LOCAL_INCLUDES = @DOXYGEN_FORCE_LOCAL_INCLUDES@ -INLINE_INFO = @DOXYGEN_INLINE_INFO@ -SORT_MEMBER_DOCS = @DOXYGEN_SORT_MEMBER_DOCS@ -SORT_BRIEF_DOCS = @DOXYGEN_SORT_BRIEF_DOCS@ -SORT_MEMBERS_CTORS_1ST = @DOXYGEN_SORT_MEMBERS_CTORS_1ST@ -SORT_GROUP_NAMES = @DOXYGEN_SORT_GROUP_NAMES@ -SORT_BY_SCOPE_NAME = @DOXYGEN_SORT_BY_SCOPE_NAME@ -STRICT_PROTO_MATCHING = @DOXYGEN_STRICT_PROTO_MATCHING@ -GENERATE_TODOLIST = @DOXYGEN_GENERATE_TODOLIST@ -GENERATE_TESTLIST = @DOXYGEN_GENERATE_TESTLIST@ -GENERATE_BUGLIST = @DOXYGEN_GENERATE_BUGLIST@ -GENERATE_DEPRECATEDLIST= @DOXYGEN_GENERATE_DEPRECATEDLIST@ -ENABLED_SECTIONS = @DOXYGEN_ENABLED_SECTIONS@ -MAX_INITIALIZER_LINES = @DOXYGEN_MAX_INITIALIZER_LINES@ -SHOW_USED_FILES = @DOXYGEN_SHOW_USED_FILES@ -SHOW_FILES = @DOXYGEN_SHOW_FILES@ -SHOW_NAMESPACES = @DOXYGEN_SHOW_NAMESPACES@ -FILE_VERSION_FILTER = @DOXYGEN_FILE_VERSION_FILTER@ -LAYOUT_FILE = @DOXYGEN_LAYOUT_FILE@ -CITE_BIB_FILES = @DOXYGEN_CITE_BIB_FILES@ -QUIET = @DOXYGEN_QUIET@ -WARNINGS = @DOXYGEN_WARNINGS@ -WARN_IF_UNDOCUMENTED = @DOXYGEN_WARN_IF_UNDOCUMENTED@ -WARN_IF_DOC_ERROR = @DOXYGEN_WARN_IF_DOC_ERROR@ -WARN_NO_PARAMDOC = @DOXYGEN_WARN_NO_PARAMDOC@ -WARN_AS_ERROR = @DOXYGEN_WARN_AS_ERROR@ -WARN_FORMAT = @DOXYGEN_WARN_FORMAT@ -WARN_LOGFILE = @DOXYGEN_WARN_LOGFILE@ -INPUT = @DOXYGEN_INPUT@ -INPUT_ENCODING = @DOXYGEN_INPUT_ENCODING@ -FILE_PATTERNS = @DOXYGEN_FILE_PATTERNS@ -RECURSIVE = @DOXYGEN_RECURSIVE@ -EXCLUDE = @DOXYGEN_EXCLUDE@ -EXCLUDE_SYMLINKS = @DOXYGEN_EXCLUDE_SYMLINKS@ -EXCLUDE_PATTERNS = @DOXYGEN_EXCLUDE_PATTERNS@ -EXCLUDE_SYMBOLS = @DOXYGEN_EXCLUDE_SYMBOLS@ -EXAMPLE_PATH = @DOXYGEN_EXAMPLE_PATH@ -EXAMPLE_PATTERNS = @DOXYGEN_EXAMPLE_PATTERNS@ -EXAMPLE_RECURSIVE = @DOXYGEN_EXAMPLE_RECURSIVE@ -IMAGE_PATH = @DOXYGEN_IMAGE_PATH@ -INPUT_FILTER = @DOXYGEN_INPUT_FILTER@ -FILTER_PATTERNS = @DOXYGEN_FILTER_PATTERNS@ -FILTER_SOURCE_FILES = @DOXYGEN_FILTER_SOURCE_FILES@ -FILTER_SOURCE_PATTERNS = @DOXYGEN_FILTER_SOURCE_PATTERNS@ -USE_MDFILE_AS_MAINPAGE = @DOXYGEN_USE_MDFILE_AS_MAINPAGE@ -SOURCE_BROWSER = @DOXYGEN_SOURCE_BROWSER@ -INLINE_SOURCES = @DOXYGEN_INLINE_SOURCES@ -STRIP_CODE_COMMENTS = @DOXYGEN_STRIP_CODE_COMMENTS@ -REFERENCED_BY_RELATION = @DOXYGEN_REFERENCED_BY_RELATION@ -REFERENCES_RELATION = @DOXYGEN_REFERENCES_RELATION@ -REFERENCES_LINK_SOURCE = @DOXYGEN_REFERENCES_LINK_SOURCE@ -SOURCE_TOOLTIPS = @DOXYGEN_SOURCE_TOOLTIPS@ -USE_HTAGS = @DOXYGEN_USE_HTAGS@ -VERBATIM_HEADERS = @DOXYGEN_VERBATIM_HEADERS@ -CLANG_ASSISTED_PARSING = @DOXYGEN_CLANG_ASSISTED_PARSING@ -CLANG_OPTIONS = @DOXYGEN_CLANG_OPTIONS@ -CLANG_DATABASE_PATH = @DOXYGEN_CLANG_DATABASE_PATH@ -ALPHABETICAL_INDEX = @DOXYGEN_ALPHABETICAL_INDEX@ -COLS_IN_ALPHA_INDEX = @DOXYGEN_COLS_IN_ALPHA_INDEX@ -IGNORE_PREFIX = @DOXYGEN_IGNORE_PREFIX@ -GENERATE_HTML = @DOXYGEN_GENERATE_HTML@ -HTML_OUTPUT = @DOXYGEN_HTML_OUTPUT@ -HTML_FILE_EXTENSION = @DOXYGEN_HTML_FILE_EXTENSION@ -HTML_HEADER = @DOXYGEN_HTML_HEADER@ -HTML_FOOTER = @DOXYGEN_HTML_FOOTER@ -HTML_STYLESHEET = @DOXYGEN_HTML_STYLESHEET@ -HTML_EXTRA_STYLESHEET = @DOXYGEN_HTML_EXTRA_STYLESHEET@ -HTML_EXTRA_FILES = @DOXYGEN_HTML_EXTRA_FILES@ -HTML_COLORSTYLE_HUE = @DOXYGEN_HTML_COLORSTYLE_HUE@ -HTML_COLORSTYLE_SAT = @DOXYGEN_HTML_COLORSTYLE_SAT@ -HTML_COLORSTYLE_GAMMA = @DOXYGEN_HTML_COLORSTYLE_GAMMA@ -HTML_TIMESTAMP = @DOXYGEN_HTML_TIMESTAMP@ -HTML_DYNAMIC_MENUS = @DOXYGEN_HTML_DYNAMIC_MENUS@ -HTML_DYNAMIC_SECTIONS = @DOXYGEN_HTML_DYNAMIC_SECTIONS@ -HTML_INDEX_NUM_ENTRIES = @DOXYGEN_HTML_INDEX_NUM_ENTRIES@ -GENERATE_DOCSET = @DOXYGEN_GENERATE_DOCSET@ -DOCSET_FEEDNAME = @DOXYGEN_DOCSET_FEEDNAME@ -DOCSET_BUNDLE_ID = @DOXYGEN_DOCSET_BUNDLE_ID@ -DOCSET_PUBLISHER_ID = @DOXYGEN_DOCSET_PUBLISHER_ID@ -DOCSET_PUBLISHER_NAME = @DOXYGEN_DOCSET_PUBLISHER_NAME@ -GENERATE_HTMLHELP = @DOXYGEN_GENERATE_HTMLHELP@ -CHM_FILE = @DOXYGEN_CHM_FILE@ -HHC_LOCATION = @DOXYGEN_HHC_LOCATION@ -GENERATE_CHI = @DOXYGEN_GENERATE_CHI@ -CHM_INDEX_ENCODING = @DOXYGEN_CHM_INDEX_ENCODING@ -BINARY_TOC = @DOXYGEN_BINARY_TOC@ -TOC_EXPAND = @DOXYGEN_TOC_EXPAND@ -GENERATE_QHP = @DOXYGEN_GENERATE_QHP@ -QCH_FILE = @DOXYGEN_QCH_FILE@ -QHP_NAMESPACE = @DOXYGEN_QHP_NAMESPACE@ -QHP_VIRTUAL_FOLDER = @DOXYGEN_QHP_VIRTUAL_FOLDER@ -QHP_CUST_FILTER_NAME = @DOXYGEN_QHP_CUST_FILTER_NAME@ -QHP_CUST_FILTER_ATTRS = @DOXYGEN_QHP_CUST_FILTER_ATTRS@ -QHP_SECT_FILTER_ATTRS = @DOXYGEN_QHP_SECT_FILTER_ATTRS@ -QHG_LOCATION = @DOXYGEN_QHG_LOCATION@ -GENERATE_ECLIPSEHELP = @DOXYGEN_GENERATE_ECLIPSEHELP@ -ECLIPSE_DOC_ID = @DOXYGEN_ECLIPSE_DOC_ID@ -DISABLE_INDEX = @DOXYGEN_DISABLE_INDEX@ -GENERATE_TREEVIEW = @DOXYGEN_GENERATE_TREEVIEW@ -ENUM_VALUES_PER_LINE = @DOXYGEN_ENUM_VALUES_PER_LINE@ -TREEVIEW_WIDTH = @DOXYGEN_TREEVIEW_WIDTH@ -EXT_LINKS_IN_WINDOW = @DOXYGEN_EXT_LINKS_IN_WINDOW@ -FORMULA_FONTSIZE = @DOXYGEN_FORMULA_FONTSIZE@ -FORMULA_TRANSPARENT = @DOXYGEN_FORMULA_TRANSPARENT@ -FORMULA_MACROFILE = @DOXYGEN_FORMULA_MACROFILE@ -USE_MATHJAX = @DOXYGEN_USE_MATHJAX@ -MATHJAX_FORMAT = @DOXYGEN_MATHJAX_FORMAT@ -MATHJAX_RELPATH = @DOXYGEN_MATHJAX_RELPATH@ -MATHJAX_EXTENSIONS = @DOXYGEN_MATHJAX_EXTENSIONS@ -MATHJAX_CODEFILE = @DOXYGEN_MATHJAX_CODEFILE@ -SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ -SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ -EXTERNAL_SEARCH = @DOXYGEN_EXTERNAL_SEARCH@ -SEARCHENGINE_URL = @DOXYGEN_SEARCHENGINE_URL@ -SEARCHDATA_FILE = @DOXYGEN_SEARCHDATA_FILE@ -EXTERNAL_SEARCH_ID = @DOXYGEN_EXTERNAL_SEARCH_ID@ -EXTRA_SEARCH_MAPPINGS = @DOXYGEN_EXTRA_SEARCH_MAPPINGS@ -GENERATE_LATEX = @DOXYGEN_GENERATE_LATEX@ -LATEX_OUTPUT = @DOXYGEN_LATEX_OUTPUT@ -LATEX_CMD_NAME = @DOXYGEN_LATEX_CMD_NAME@ -MAKEINDEX_CMD_NAME = @DOXYGEN_MAKEINDEX_CMD_NAME@ -LATEX_MAKEINDEX_CMD = @DOXYGEN_LATEX_MAKEINDEX_CMD@ -COMPACT_LATEX = @DOXYGEN_COMPACT_LATEX@ -PAPER_TYPE = @DOXYGEN_PAPER_TYPE@ -EXTRA_PACKAGES = @DOXYGEN_EXTRA_PACKAGES@ -LATEX_HEADER = @DOXYGEN_LATEX_HEADER@ -LATEX_FOOTER = @DOXYGEN_LATEX_FOOTER@ -LATEX_EXTRA_STYLESHEET = @DOXYGEN_LATEX_EXTRA_STYLESHEET@ -LATEX_EXTRA_FILES = @DOXYGEN_LATEX_EXTRA_FILES@ -PDF_HYPERLINKS = @DOXYGEN_PDF_HYPERLINKS@ -USE_PDFLATEX = @DOXYGEN_USE_PDFLATEX@ -LATEX_BATCHMODE = @DOXYGEN_LATEX_BATCHMODE@ -LATEX_HIDE_INDICES = @DOXYGEN_LATEX_HIDE_INDICES@ -LATEX_SOURCE_CODE = @DOXYGEN_LATEX_SOURCE_CODE@ -LATEX_BIB_STYLE = @DOXYGEN_LATEX_BIB_STYLE@ -LATEX_TIMESTAMP = @DOXYGEN_LATEX_TIMESTAMP@ -LATEX_EMOJI_DIRECTORY = @DOXYGEN_LATEX_EMOJI_DIRECTORY@ -GENERATE_RTF = @DOXYGEN_GENERATE_RTF@ -RTF_OUTPUT = @DOXYGEN_RTF_OUTPUT@ -COMPACT_RTF = @DOXYGEN_COMPACT_RTF@ -RTF_HYPERLINKS = @DOXYGEN_RTF_HYPERLINKS@ -RTF_STYLESHEET_FILE = @DOXYGEN_RTF_STYLESHEET_FILE@ -RTF_EXTENSIONS_FILE = @DOXYGEN_RTF_EXTENSIONS_FILE@ -RTF_SOURCE_CODE = @DOXYGEN_RTF_SOURCE_CODE@ -GENERATE_MAN = @DOXYGEN_GENERATE_MAN@ -MAN_OUTPUT = @DOXYGEN_MAN_OUTPUT@ -MAN_EXTENSION = @DOXYGEN_MAN_EXTENSION@ -MAN_SUBDIR = @DOXYGEN_MAN_SUBDIR@ -MAN_LINKS = @DOXYGEN_MAN_LINKS@ -GENERATE_XML = @DOXYGEN_GENERATE_XML@ -XML_OUTPUT = @DOXYGEN_XML_OUTPUT@ -XML_PROGRAMLISTING = @DOXYGEN_XML_PROGRAMLISTING@ -XML_NS_MEMB_FILE_SCOPE = @DOXYGEN_XML_NS_MEMB_FILE_SCOPE@ -GENERATE_DOCBOOK = @DOXYGEN_GENERATE_DOCBOOK@ -DOCBOOK_OUTPUT = @DOXYGEN_DOCBOOK_OUTPUT@ -DOCBOOK_PROGRAMLISTING = @DOXYGEN_DOCBOOK_PROGRAMLISTING@ -GENERATE_AUTOGEN_DEF = @DOXYGEN_GENERATE_AUTOGEN_DEF@ -GENERATE_PERLMOD = @DOXYGEN_GENERATE_PERLMOD@ -PERLMOD_LATEX = @DOXYGEN_PERLMOD_LATEX@ -PERLMOD_PRETTY = @DOXYGEN_PERLMOD_PRETTY@ -PERLMOD_MAKEVAR_PREFIX = @DOXYGEN_PERLMOD_MAKEVAR_PREFIX@ -ENABLE_PREPROCESSING = @DOXYGEN_ENABLE_PREPROCESSING@ -MACRO_EXPANSION = @DOXYGEN_MACRO_EXPANSION@ -EXPAND_ONLY_PREDEF = @DOXYGEN_EXPAND_ONLY_PREDEF@ -SEARCH_INCLUDES = @DOXYGEN_SEARCH_INCLUDES@ -INCLUDE_PATH = @DOXYGEN_INCLUDE_PATH@ -INCLUDE_FILE_PATTERNS = @DOXYGEN_INCLUDE_FILE_PATTERNS@ -PREDEFINED = @DOXYGEN_PREDEFINED@ -EXPAND_AS_DEFINED = @DOXYGEN_EXPAND_AS_DEFINED@ -SKIP_FUNCTION_MACROS = @DOXYGEN_SKIP_FUNCTION_MACROS@ -TAGFILES = @DOXYGEN_TAGFILES@ -GENERATE_TAGFILE = @DOXYGEN_GENERATE_TAGFILE@ -ALLEXTERNALS = @DOXYGEN_ALLEXTERNALS@ -EXTERNAL_GROUPS = @DOXYGEN_EXTERNAL_GROUPS@ -EXTERNAL_PAGES = @DOXYGEN_EXTERNAL_PAGES@ -CLASS_DIAGRAMS = @DOXYGEN_CLASS_DIAGRAMS@ -DIA_PATH = @DOXYGEN_DIA_PATH@ -HIDE_UNDOC_RELATIONS = @DOXYGEN_HIDE_UNDOC_RELATIONS@ -HAVE_DOT = @DOXYGEN_HAVE_DOT@ -DOT_NUM_THREADS = @DOXYGEN_DOT_NUM_THREADS@ -DOT_FONTNAME = @DOXYGEN_DOT_FONTNAME@ -DOT_FONTSIZE = @DOXYGEN_DOT_FONTSIZE@ -DOT_FONTPATH = @DOXYGEN_DOT_FONTPATH@ -CLASS_GRAPH = @DOXYGEN_CLASS_GRAPH@ -COLLABORATION_GRAPH = @DOXYGEN_COLLABORATION_GRAPH@ -GROUP_GRAPHS = @DOXYGEN_GROUP_GRAPHS@ -UML_LOOK = @DOXYGEN_UML_LOOK@ -UML_LIMIT_NUM_FIELDS = @DOXYGEN_UML_LIMIT_NUM_FIELDS@ -TEMPLATE_RELATIONS = @DOXYGEN_TEMPLATE_RELATIONS@ -INCLUDE_GRAPH = @DOXYGEN_INCLUDE_GRAPH@ -INCLUDED_BY_GRAPH = @DOXYGEN_INCLUDED_BY_GRAPH@ -CALL_GRAPH = @DOXYGEN_CALL_GRAPH@ -CALLER_GRAPH = @DOXYGEN_CALLER_GRAPH@ -GRAPHICAL_HIERARCHY = @DOXYGEN_GRAPHICAL_HIERARCHY@ -DIRECTORY_GRAPH = @DOXYGEN_DIRECTORY_GRAPH@ -DOT_IMAGE_FORMAT = @DOXYGEN_DOT_IMAGE_FORMAT@ -INTERACTIVE_SVG = @DOXYGEN_INTERACTIVE_SVG@ -DOT_PATH = @DOXYGEN_DOT_PATH@ -DOTFILE_DIRS = @DOXYGEN_DOTFILE_DIRS@ -MSCFILE_DIRS = @DOXYGEN_MSCFILE_DIRS@ -DIAFILE_DIRS = @DOXYGEN_DIAFILE_DIRS@ -PLANTUML_JAR_PATH = @DOXYGEN_PLANTUML_JAR_PATH@ -PLANTUML_CFG_FILE = @DOXYGEN_PLANTUML_CFG_FILE@ -PLANTUML_INCLUDE_PATH = @DOXYGEN_PLANTUML_INCLUDE_PATH@ -DOT_GRAPH_MAX_NODES = @DOXYGEN_DOT_GRAPH_MAX_NODES@ -MAX_DOT_GRAPH_DEPTH = @DOXYGEN_MAX_DOT_GRAPH_DEPTH@ -DOT_TRANSPARENT = @DOXYGEN_DOT_TRANSPARENT@ -DOT_MULTI_TARGETS = @DOXYGEN_DOT_MULTI_TARGETS@ -GENERATE_LEGEND = @DOXYGEN_GENERATE_LEGEND@ -DOT_CLEANUP = @DOXYGEN_DOT_CLEANUP@ diff --git a/ww/build/CMakeDoxygenDefaults.cmake b/ww/build/CMakeDoxygenDefaults.cmake deleted file mode 100644 index db28798f..00000000 --- a/ww/build/CMakeDoxygenDefaults.cmake +++ /dev/null @@ -1,672 +0,0 @@ -# -# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! -# - -if(NOT DEFINED DOXYGEN_DOXYFILE_ENCODING) - set(DOXYGEN_DOXYFILE_ENCODING UTF-8) -endif() -if(NOT DEFINED DOXYGEN_PROJECT_NAME) - set(DOXYGEN_PROJECT_NAME "My Project") -endif() -if(NOT DEFINED DOXYGEN_CREATE_SUBDIRS) - set(DOXYGEN_CREATE_SUBDIRS NO) -endif() -if(NOT DEFINED DOXYGEN_ALLOW_UNICODE_NAMES) - set(DOXYGEN_ALLOW_UNICODE_NAMES NO) -endif() -if(NOT DEFINED DOXYGEN_OUTPUT_LANGUAGE) - set(DOXYGEN_OUTPUT_LANGUAGE English) -endif() -if(NOT DEFINED DOXYGEN_OUTPUT_TEXT_DIRECTION) - set(DOXYGEN_OUTPUT_TEXT_DIRECTION None) -endif() -if(NOT DEFINED DOXYGEN_BRIEF_MEMBER_DESC) - set(DOXYGEN_BRIEF_MEMBER_DESC YES) -endif() -if(NOT DEFINED DOXYGEN_REPEAT_BRIEF) - set(DOXYGEN_REPEAT_BRIEF YES) -endif() -if(NOT DEFINED DOXYGEN_ABBREVIATE_BRIEF) - set(DOXYGEN_ABBREVIATE_BRIEF "The $name class" - "The $name widget" - "The $name file" - is - provides - specifies - contains - represents - a - an - the) -endif() -if(NOT DEFINED DOXYGEN_ALWAYS_DETAILED_SEC) - set(DOXYGEN_ALWAYS_DETAILED_SEC NO) -endif() -if(NOT DEFINED DOXYGEN_INLINE_INHERITED_MEMB) - set(DOXYGEN_INLINE_INHERITED_MEMB NO) -endif() -if(NOT DEFINED DOXYGEN_FULL_PATH_NAMES) - set(DOXYGEN_FULL_PATH_NAMES YES) -endif() -if(NOT DEFINED DOXYGEN_SHORT_NAMES) - set(DOXYGEN_SHORT_NAMES NO) -endif() -if(NOT DEFINED DOXYGEN_JAVADOC_AUTOBRIEF) - set(DOXYGEN_JAVADOC_AUTOBRIEF NO) -endif() -if(NOT DEFINED DOXYGEN_JAVADOC_BANNER) - set(DOXYGEN_JAVADOC_BANNER NO) -endif() -if(NOT DEFINED DOXYGEN_QT_AUTOBRIEF) - set(DOXYGEN_QT_AUTOBRIEF NO) -endif() -if(NOT DEFINED DOXYGEN_MULTILINE_CPP_IS_BRIEF) - set(DOXYGEN_MULTILINE_CPP_IS_BRIEF NO) -endif() -if(NOT DEFINED DOXYGEN_INHERIT_DOCS) - set(DOXYGEN_INHERIT_DOCS YES) -endif() -if(NOT DEFINED DOXYGEN_SEPARATE_MEMBER_PAGES) - set(DOXYGEN_SEPARATE_MEMBER_PAGES NO) -endif() -if(NOT DEFINED DOXYGEN_TAB_SIZE) - set(DOXYGEN_TAB_SIZE 4) -endif() -if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_FOR_C) - set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C NO) -endif() -if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_JAVA) - set(DOXYGEN_OPTIMIZE_OUTPUT_JAVA NO) -endif() -if(NOT DEFINED DOXYGEN_OPTIMIZE_FOR_FORTRAN) - set(DOXYGEN_OPTIMIZE_FOR_FORTRAN NO) -endif() -if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_VHDL) - set(DOXYGEN_OPTIMIZE_OUTPUT_VHDL NO) -endif() -if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_SLICE) - set(DOXYGEN_OPTIMIZE_OUTPUT_SLICE NO) -endif() -if(NOT DEFINED DOXYGEN_MARKDOWN_SUPPORT) - set(DOXYGEN_MARKDOWN_SUPPORT YES) -endif() -if(NOT DEFINED DOXYGEN_TOC_INCLUDE_HEADINGS) - set(DOXYGEN_TOC_INCLUDE_HEADINGS 5) -endif() -if(NOT DEFINED DOXYGEN_AUTOLINK_SUPPORT) - set(DOXYGEN_AUTOLINK_SUPPORT YES) -endif() -if(NOT DEFINED DOXYGEN_BUILTIN_STL_SUPPORT) - set(DOXYGEN_BUILTIN_STL_SUPPORT NO) -endif() -if(NOT DEFINED DOXYGEN_CPP_CLI_SUPPORT) - set(DOXYGEN_CPP_CLI_SUPPORT NO) -endif() -if(NOT DEFINED DOXYGEN_SIP_SUPPORT) - set(DOXYGEN_SIP_SUPPORT NO) -endif() -if(NOT DEFINED DOXYGEN_IDL_PROPERTY_SUPPORT) - set(DOXYGEN_IDL_PROPERTY_SUPPORT YES) -endif() -if(NOT DEFINED DOXYGEN_DISTRIBUTE_GROUP_DOC) - set(DOXYGEN_DISTRIBUTE_GROUP_DOC NO) -endif() -if(NOT DEFINED DOXYGEN_GROUP_NESTED_COMPOUNDS) - set(DOXYGEN_GROUP_NESTED_COMPOUNDS NO) -endif() -if(NOT DEFINED DOXYGEN_SUBGROUPING) - set(DOXYGEN_SUBGROUPING YES) -endif() -if(NOT DEFINED DOXYGEN_INLINE_GROUPED_CLASSES) - set(DOXYGEN_INLINE_GROUPED_CLASSES NO) -endif() -if(NOT DEFINED DOXYGEN_INLINE_SIMPLE_STRUCTS) - set(DOXYGEN_INLINE_SIMPLE_STRUCTS NO) -endif() -if(NOT DEFINED DOXYGEN_TYPEDEF_HIDES_STRUCT) - set(DOXYGEN_TYPEDEF_HIDES_STRUCT NO) -endif() -if(NOT DEFINED DOXYGEN_LOOKUP_CACHE_SIZE) - set(DOXYGEN_LOOKUP_CACHE_SIZE 0) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_ALL) - set(DOXYGEN_EXTRACT_ALL NO) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_PRIVATE) - set(DOXYGEN_EXTRACT_PRIVATE NO) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_PRIV_VIRTUAL) - set(DOXYGEN_EXTRACT_PRIV_VIRTUAL NO) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_PACKAGE) - set(DOXYGEN_EXTRACT_PACKAGE NO) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_STATIC) - set(DOXYGEN_EXTRACT_STATIC NO) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_CLASSES) - set(DOXYGEN_EXTRACT_LOCAL_CLASSES YES) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_METHODS) - set(DOXYGEN_EXTRACT_LOCAL_METHODS NO) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_ANON_NSPACES) - set(DOXYGEN_EXTRACT_ANON_NSPACES NO) -endif() -if(NOT DEFINED DOXYGEN_HIDE_UNDOC_MEMBERS) - set(DOXYGEN_HIDE_UNDOC_MEMBERS NO) -endif() -if(NOT DEFINED DOXYGEN_HIDE_UNDOC_CLASSES) - set(DOXYGEN_HIDE_UNDOC_CLASSES NO) -endif() -if(NOT DEFINED DOXYGEN_HIDE_FRIEND_COMPOUNDS) - set(DOXYGEN_HIDE_FRIEND_COMPOUNDS NO) -endif() -if(NOT DEFINED DOXYGEN_HIDE_IN_BODY_DOCS) - set(DOXYGEN_HIDE_IN_BODY_DOCS NO) -endif() -if(NOT DEFINED DOXYGEN_INTERNAL_DOCS) - set(DOXYGEN_INTERNAL_DOCS NO) -endif() -if(NOT DEFINED DOXYGEN_CASE_SENSE_NAMES) - set(DOXYGEN_CASE_SENSE_NAMES YES) -endif() -if(NOT DEFINED DOXYGEN_HIDE_SCOPE_NAMES) - set(DOXYGEN_HIDE_SCOPE_NAMES NO) -endif() -if(NOT DEFINED DOXYGEN_HIDE_COMPOUND_REFERENCE) - set(DOXYGEN_HIDE_COMPOUND_REFERENCE NO) -endif() -if(NOT DEFINED DOXYGEN_SHOW_INCLUDE_FILES) - set(DOXYGEN_SHOW_INCLUDE_FILES YES) -endif() -if(NOT DEFINED DOXYGEN_SHOW_GROUPED_MEMB_INC) - set(DOXYGEN_SHOW_GROUPED_MEMB_INC NO) -endif() -if(NOT DEFINED DOXYGEN_FORCE_LOCAL_INCLUDES) - set(DOXYGEN_FORCE_LOCAL_INCLUDES NO) -endif() -if(NOT DEFINED DOXYGEN_INLINE_INFO) - set(DOXYGEN_INLINE_INFO YES) -endif() -if(NOT DEFINED DOXYGEN_SORT_MEMBER_DOCS) - set(DOXYGEN_SORT_MEMBER_DOCS YES) -endif() -if(NOT DEFINED DOXYGEN_SORT_BRIEF_DOCS) - set(DOXYGEN_SORT_BRIEF_DOCS NO) -endif() -if(NOT DEFINED DOXYGEN_SORT_MEMBERS_CTORS_1ST) - set(DOXYGEN_SORT_MEMBERS_CTORS_1ST NO) -endif() -if(NOT DEFINED DOXYGEN_SORT_GROUP_NAMES) - set(DOXYGEN_SORT_GROUP_NAMES NO) -endif() -if(NOT DEFINED DOXYGEN_SORT_BY_SCOPE_NAME) - set(DOXYGEN_SORT_BY_SCOPE_NAME NO) -endif() -if(NOT DEFINED DOXYGEN_STRICT_PROTO_MATCHING) - set(DOXYGEN_STRICT_PROTO_MATCHING NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_TODOLIST) - set(DOXYGEN_GENERATE_TODOLIST YES) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_TESTLIST) - set(DOXYGEN_GENERATE_TESTLIST YES) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_BUGLIST) - set(DOXYGEN_GENERATE_BUGLIST YES) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_DEPRECATEDLIST) - set(DOXYGEN_GENERATE_DEPRECATEDLIST YES) -endif() -if(NOT DEFINED DOXYGEN_MAX_INITIALIZER_LINES) - set(DOXYGEN_MAX_INITIALIZER_LINES 30) -endif() -if(NOT DEFINED DOXYGEN_SHOW_USED_FILES) - set(DOXYGEN_SHOW_USED_FILES YES) -endif() -if(NOT DEFINED DOXYGEN_SHOW_FILES) - set(DOXYGEN_SHOW_FILES YES) -endif() -if(NOT DEFINED DOXYGEN_SHOW_NAMESPACES) - set(DOXYGEN_SHOW_NAMESPACES YES) -endif() -if(NOT DEFINED DOXYGEN_QUIET) - set(DOXYGEN_QUIET NO) -endif() -if(NOT DEFINED DOXYGEN_WARNINGS) - set(DOXYGEN_WARNINGS YES) -endif() -if(NOT DEFINED DOXYGEN_WARN_IF_UNDOCUMENTED) - set(DOXYGEN_WARN_IF_UNDOCUMENTED YES) -endif() -if(NOT DEFINED DOXYGEN_WARN_IF_DOC_ERROR) - set(DOXYGEN_WARN_IF_DOC_ERROR YES) -endif() -if(NOT DEFINED DOXYGEN_WARN_NO_PARAMDOC) - set(DOXYGEN_WARN_NO_PARAMDOC NO) -endif() -if(NOT DEFINED DOXYGEN_WARN_AS_ERROR) - set(DOXYGEN_WARN_AS_ERROR NO) -endif() -if(NOT DEFINED DOXYGEN_WARN_FORMAT) - set(DOXYGEN_WARN_FORMAT "$file:$line: $text") -endif() -if(NOT DEFINED DOXYGEN_INPUT_ENCODING) - set(DOXYGEN_INPUT_ENCODING UTF-8) -endif() -if(NOT DEFINED DOXYGEN_FILE_PATTERNS) - set(DOXYGEN_FILE_PATTERNS *.c - *.cc - *.cxx - *.cpp - *.c++ - *.java - *.ii - *.ixx - *.ipp - *.i++ - *.inl - *.idl - *.ddl - *.odl - *.h - *.hh - *.hxx - *.hpp - *.h++ - *.cs - *.d - *.php - *.php4 - *.php5 - *.phtml - *.inc - *.m - *.markdown - *.md - *.mm - *.dox - *.doc - *.txt - *.py - *.pyw - *.f90 - *.f95 - *.f03 - *.f08 - *.f - *.for - *.tcl - *.vhd - *.vhdl - *.ucf - *.qsf - *.ice) -endif() -if(NOT DEFINED DOXYGEN_RECURSIVE) - set(DOXYGEN_RECURSIVE NO) -endif() -if(NOT DEFINED DOXYGEN_EXCLUDE_SYMLINKS) - set(DOXYGEN_EXCLUDE_SYMLINKS NO) -endif() -if(NOT DEFINED DOXYGEN_EXAMPLE_PATTERNS) - set(DOXYGEN_EXAMPLE_PATTERNS *) -endif() -if(NOT DEFINED DOXYGEN_EXAMPLE_RECURSIVE) - set(DOXYGEN_EXAMPLE_RECURSIVE NO) -endif() -if(NOT DEFINED DOXYGEN_FILTER_SOURCE_FILES) - set(DOXYGEN_FILTER_SOURCE_FILES NO) -endif() -if(NOT DEFINED DOXYGEN_SOURCE_BROWSER) - set(DOXYGEN_SOURCE_BROWSER NO) -endif() -if(NOT DEFINED DOXYGEN_INLINE_SOURCES) - set(DOXYGEN_INLINE_SOURCES NO) -endif() -if(NOT DEFINED DOXYGEN_STRIP_CODE_COMMENTS) - set(DOXYGEN_STRIP_CODE_COMMENTS YES) -endif() -if(NOT DEFINED DOXYGEN_REFERENCED_BY_RELATION) - set(DOXYGEN_REFERENCED_BY_RELATION NO) -endif() -if(NOT DEFINED DOXYGEN_REFERENCES_RELATION) - set(DOXYGEN_REFERENCES_RELATION NO) -endif() -if(NOT DEFINED DOXYGEN_REFERENCES_LINK_SOURCE) - set(DOXYGEN_REFERENCES_LINK_SOURCE YES) -endif() -if(NOT DEFINED DOXYGEN_SOURCE_TOOLTIPS) - set(DOXYGEN_SOURCE_TOOLTIPS YES) -endif() -if(NOT DEFINED DOXYGEN_USE_HTAGS) - set(DOXYGEN_USE_HTAGS NO) -endif() -if(NOT DEFINED DOXYGEN_VERBATIM_HEADERS) - set(DOXYGEN_VERBATIM_HEADERS YES) -endif() -if(NOT DEFINED DOXYGEN_CLANG_ASSISTED_PARSING) - set(DOXYGEN_CLANG_ASSISTED_PARSING NO) -endif() -if(NOT DEFINED DOXYGEN_ALPHABETICAL_INDEX) - set(DOXYGEN_ALPHABETICAL_INDEX YES) -endif() -if(NOT DEFINED DOXYGEN_COLS_IN_ALPHA_INDEX) - set(DOXYGEN_COLS_IN_ALPHA_INDEX 5) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_HTML) - set(DOXYGEN_GENERATE_HTML YES) -endif() -if(NOT DEFINED DOXYGEN_HTML_OUTPUT) - set(DOXYGEN_HTML_OUTPUT html) -endif() -if(NOT DEFINED DOXYGEN_HTML_FILE_EXTENSION) - set(DOXYGEN_HTML_FILE_EXTENSION .html) -endif() -if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_HUE) - set(DOXYGEN_HTML_COLORSTYLE_HUE 220) -endif() -if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_SAT) - set(DOXYGEN_HTML_COLORSTYLE_SAT 100) -endif() -if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_GAMMA) - set(DOXYGEN_HTML_COLORSTYLE_GAMMA 80) -endif() -if(NOT DEFINED DOXYGEN_HTML_TIMESTAMP) - set(DOXYGEN_HTML_TIMESTAMP NO) -endif() -if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_MENUS) - set(DOXYGEN_HTML_DYNAMIC_MENUS YES) -endif() -if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_SECTIONS) - set(DOXYGEN_HTML_DYNAMIC_SECTIONS NO) -endif() -if(NOT DEFINED DOXYGEN_HTML_INDEX_NUM_ENTRIES) - set(DOXYGEN_HTML_INDEX_NUM_ENTRIES 100) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_DOCSET) - set(DOXYGEN_GENERATE_DOCSET NO) -endif() -if(NOT DEFINED DOXYGEN_DOCSET_FEEDNAME) - set(DOXYGEN_DOCSET_FEEDNAME "Doxygen generated docs") -endif() -if(NOT DEFINED DOXYGEN_DOCSET_BUNDLE_ID) - set(DOXYGEN_DOCSET_BUNDLE_ID org.doxygen.Project) -endif() -if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_ID) - set(DOXYGEN_DOCSET_PUBLISHER_ID org.doxygen.Publisher) -endif() -if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_NAME) - set(DOXYGEN_DOCSET_PUBLISHER_NAME Publisher) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_HTMLHELP) - set(DOXYGEN_GENERATE_HTMLHELP NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_CHI) - set(DOXYGEN_GENERATE_CHI NO) -endif() -if(NOT DEFINED DOXYGEN_BINARY_TOC) - set(DOXYGEN_BINARY_TOC NO) -endif() -if(NOT DEFINED DOXYGEN_TOC_EXPAND) - set(DOXYGEN_TOC_EXPAND NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_QHP) - set(DOXYGEN_GENERATE_QHP NO) -endif() -if(NOT DEFINED DOXYGEN_QHP_NAMESPACE) - set(DOXYGEN_QHP_NAMESPACE org.doxygen.Project) -endif() -if(NOT DEFINED DOXYGEN_QHP_VIRTUAL_FOLDER) - set(DOXYGEN_QHP_VIRTUAL_FOLDER doc) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_ECLIPSEHELP) - set(DOXYGEN_GENERATE_ECLIPSEHELP NO) -endif() -if(NOT DEFINED DOXYGEN_ECLIPSE_DOC_ID) - set(DOXYGEN_ECLIPSE_DOC_ID org.doxygen.Project) -endif() -if(NOT DEFINED DOXYGEN_DISABLE_INDEX) - set(DOXYGEN_DISABLE_INDEX NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_TREEVIEW) - set(DOXYGEN_GENERATE_TREEVIEW NO) -endif() -if(NOT DEFINED DOXYGEN_ENUM_VALUES_PER_LINE) - set(DOXYGEN_ENUM_VALUES_PER_LINE 4) -endif() -if(NOT DEFINED DOXYGEN_TREEVIEW_WIDTH) - set(DOXYGEN_TREEVIEW_WIDTH 250) -endif() -if(NOT DEFINED DOXYGEN_EXT_LINKS_IN_WINDOW) - set(DOXYGEN_EXT_LINKS_IN_WINDOW NO) -endif() -if(NOT DEFINED DOXYGEN_FORMULA_FONTSIZE) - set(DOXYGEN_FORMULA_FONTSIZE 10) -endif() -if(NOT DEFINED DOXYGEN_FORMULA_TRANSPARENT) - set(DOXYGEN_FORMULA_TRANSPARENT YES) -endif() -if(NOT DEFINED DOXYGEN_USE_MATHJAX) - set(DOXYGEN_USE_MATHJAX NO) -endif() -if(NOT DEFINED DOXYGEN_MATHJAX_FORMAT) - set(DOXYGEN_MATHJAX_FORMAT HTML-CSS) -endif() -if(NOT DEFINED DOXYGEN_MATHJAX_RELPATH) - set(DOXYGEN_MATHJAX_RELPATH https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/) -endif() -if(NOT DEFINED DOXYGEN_SEARCHENGINE) - set(DOXYGEN_SEARCHENGINE YES) -endif() -if(NOT DEFINED DOXYGEN_SERVER_BASED_SEARCH) - set(DOXYGEN_SERVER_BASED_SEARCH NO) -endif() -if(NOT DEFINED DOXYGEN_EXTERNAL_SEARCH) - set(DOXYGEN_EXTERNAL_SEARCH NO) -endif() -if(NOT DEFINED DOXYGEN_SEARCHDATA_FILE) - set(DOXYGEN_SEARCHDATA_FILE searchdata.xml) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_LATEX) - set(DOXYGEN_GENERATE_LATEX YES) -endif() -if(NOT DEFINED DOXYGEN_LATEX_OUTPUT) - set(DOXYGEN_LATEX_OUTPUT latex) -endif() -if(NOT DEFINED DOXYGEN_MAKEINDEX_CMD_NAME) - set(DOXYGEN_MAKEINDEX_CMD_NAME makeindex) -endif() -if(NOT DEFINED DOXYGEN_LATEX_MAKEINDEX_CMD) - set(DOXYGEN_LATEX_MAKEINDEX_CMD makeindex) -endif() -if(NOT DEFINED DOXYGEN_COMPACT_LATEX) - set(DOXYGEN_COMPACT_LATEX NO) -endif() -if(NOT DEFINED DOXYGEN_PAPER_TYPE) - set(DOXYGEN_PAPER_TYPE a4) -endif() -if(NOT DEFINED DOXYGEN_PDF_HYPERLINKS) - set(DOXYGEN_PDF_HYPERLINKS YES) -endif() -if(NOT DEFINED DOXYGEN_USE_PDFLATEX) - set(DOXYGEN_USE_PDFLATEX YES) -endif() -if(NOT DEFINED DOXYGEN_LATEX_BATCHMODE) - set(DOXYGEN_LATEX_BATCHMODE NO) -endif() -if(NOT DEFINED DOXYGEN_LATEX_HIDE_INDICES) - set(DOXYGEN_LATEX_HIDE_INDICES NO) -endif() -if(NOT DEFINED DOXYGEN_LATEX_SOURCE_CODE) - set(DOXYGEN_LATEX_SOURCE_CODE NO) -endif() -if(NOT DEFINED DOXYGEN_LATEX_BIB_STYLE) - set(DOXYGEN_LATEX_BIB_STYLE plain) -endif() -if(NOT DEFINED DOXYGEN_LATEX_TIMESTAMP) - set(DOXYGEN_LATEX_TIMESTAMP NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_RTF) - set(DOXYGEN_GENERATE_RTF NO) -endif() -if(NOT DEFINED DOXYGEN_RTF_OUTPUT) - set(DOXYGEN_RTF_OUTPUT rtf) -endif() -if(NOT DEFINED DOXYGEN_COMPACT_RTF) - set(DOXYGEN_COMPACT_RTF NO) -endif() -if(NOT DEFINED DOXYGEN_RTF_HYPERLINKS) - set(DOXYGEN_RTF_HYPERLINKS NO) -endif() -if(NOT DEFINED DOXYGEN_RTF_SOURCE_CODE) - set(DOXYGEN_RTF_SOURCE_CODE NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_MAN) - set(DOXYGEN_GENERATE_MAN NO) -endif() -if(NOT DEFINED DOXYGEN_MAN_OUTPUT) - set(DOXYGEN_MAN_OUTPUT man) -endif() -if(NOT DEFINED DOXYGEN_MAN_EXTENSION) - set(DOXYGEN_MAN_EXTENSION .3) -endif() -if(NOT DEFINED DOXYGEN_MAN_LINKS) - set(DOXYGEN_MAN_LINKS NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_XML) - set(DOXYGEN_GENERATE_XML NO) -endif() -if(NOT DEFINED DOXYGEN_XML_OUTPUT) - set(DOXYGEN_XML_OUTPUT xml) -endif() -if(NOT DEFINED DOXYGEN_XML_PROGRAMLISTING) - set(DOXYGEN_XML_PROGRAMLISTING YES) -endif() -if(NOT DEFINED DOXYGEN_XML_NS_MEMB_FILE_SCOPE) - set(DOXYGEN_XML_NS_MEMB_FILE_SCOPE NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_DOCBOOK) - set(DOXYGEN_GENERATE_DOCBOOK NO) -endif() -if(NOT DEFINED DOXYGEN_DOCBOOK_OUTPUT) - set(DOXYGEN_DOCBOOK_OUTPUT docbook) -endif() -if(NOT DEFINED DOXYGEN_DOCBOOK_PROGRAMLISTING) - set(DOXYGEN_DOCBOOK_PROGRAMLISTING NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_AUTOGEN_DEF) - set(DOXYGEN_GENERATE_AUTOGEN_DEF NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_PERLMOD) - set(DOXYGEN_GENERATE_PERLMOD NO) -endif() -if(NOT DEFINED DOXYGEN_PERLMOD_LATEX) - set(DOXYGEN_PERLMOD_LATEX NO) -endif() -if(NOT DEFINED DOXYGEN_PERLMOD_PRETTY) - set(DOXYGEN_PERLMOD_PRETTY YES) -endif() -if(NOT DEFINED DOXYGEN_ENABLE_PREPROCESSING) - set(DOXYGEN_ENABLE_PREPROCESSING YES) -endif() -if(NOT DEFINED DOXYGEN_MACRO_EXPANSION) - set(DOXYGEN_MACRO_EXPANSION NO) -endif() -if(NOT DEFINED DOXYGEN_EXPAND_ONLY_PREDEF) - set(DOXYGEN_EXPAND_ONLY_PREDEF NO) -endif() -if(NOT DEFINED DOXYGEN_SEARCH_INCLUDES) - set(DOXYGEN_SEARCH_INCLUDES YES) -endif() -if(NOT DEFINED DOXYGEN_SKIP_FUNCTION_MACROS) - set(DOXYGEN_SKIP_FUNCTION_MACROS YES) -endif() -if(NOT DEFINED DOXYGEN_ALLEXTERNALS) - set(DOXYGEN_ALLEXTERNALS NO) -endif() -if(NOT DEFINED DOXYGEN_EXTERNAL_GROUPS) - set(DOXYGEN_EXTERNAL_GROUPS YES) -endif() -if(NOT DEFINED DOXYGEN_EXTERNAL_PAGES) - set(DOXYGEN_EXTERNAL_PAGES YES) -endif() -if(NOT DEFINED DOXYGEN_CLASS_DIAGRAMS) - set(DOXYGEN_CLASS_DIAGRAMS YES) -endif() -if(NOT DEFINED DOXYGEN_HIDE_UNDOC_RELATIONS) - set(DOXYGEN_HIDE_UNDOC_RELATIONS YES) -endif() -if(NOT DEFINED DOXYGEN_HAVE_DOT) - set(DOXYGEN_HAVE_DOT YES) -endif() -if(NOT DEFINED DOXYGEN_DOT_NUM_THREADS) - set(DOXYGEN_DOT_NUM_THREADS 0) -endif() -if(NOT DEFINED DOXYGEN_DOT_FONTNAME) - set(DOXYGEN_DOT_FONTNAME Helvetica) -endif() -if(NOT DEFINED DOXYGEN_DOT_FONTSIZE) - set(DOXYGEN_DOT_FONTSIZE 10) -endif() -if(NOT DEFINED DOXYGEN_CLASS_GRAPH) - set(DOXYGEN_CLASS_GRAPH YES) -endif() -if(NOT DEFINED DOXYGEN_COLLABORATION_GRAPH) - set(DOXYGEN_COLLABORATION_GRAPH YES) -endif() -if(NOT DEFINED DOXYGEN_GROUP_GRAPHS) - set(DOXYGEN_GROUP_GRAPHS YES) -endif() -if(NOT DEFINED DOXYGEN_UML_LOOK) - set(DOXYGEN_UML_LOOK NO) -endif() -if(NOT DEFINED DOXYGEN_UML_LIMIT_NUM_FIELDS) - set(DOXYGEN_UML_LIMIT_NUM_FIELDS 10) -endif() -if(NOT DEFINED DOXYGEN_TEMPLATE_RELATIONS) - set(DOXYGEN_TEMPLATE_RELATIONS NO) -endif() -if(NOT DEFINED DOXYGEN_INCLUDE_GRAPH) - set(DOXYGEN_INCLUDE_GRAPH YES) -endif() -if(NOT DEFINED DOXYGEN_INCLUDED_BY_GRAPH) - set(DOXYGEN_INCLUDED_BY_GRAPH YES) -endif() -if(NOT DEFINED DOXYGEN_CALL_GRAPH) - set(DOXYGEN_CALL_GRAPH NO) -endif() -if(NOT DEFINED DOXYGEN_CALLER_GRAPH) - set(DOXYGEN_CALLER_GRAPH NO) -endif() -if(NOT DEFINED DOXYGEN_GRAPHICAL_HIERARCHY) - set(DOXYGEN_GRAPHICAL_HIERARCHY YES) -endif() -if(NOT DEFINED DOXYGEN_DIRECTORY_GRAPH) - set(DOXYGEN_DIRECTORY_GRAPH YES) -endif() -if(NOT DEFINED DOXYGEN_DOT_IMAGE_FORMAT) - set(DOXYGEN_DOT_IMAGE_FORMAT png) -endif() -if(NOT DEFINED DOXYGEN_INTERACTIVE_SVG) - set(DOXYGEN_INTERACTIVE_SVG NO) -endif() -if(NOT DEFINED DOXYGEN_DOT_GRAPH_MAX_NODES) - set(DOXYGEN_DOT_GRAPH_MAX_NODES 50) -endif() -if(NOT DEFINED DOXYGEN_MAX_DOT_GRAPH_DEPTH) - set(DOXYGEN_MAX_DOT_GRAPH_DEPTH 0) -endif() -if(NOT DEFINED DOXYGEN_DOT_TRANSPARENT) - set(DOXYGEN_DOT_TRANSPARENT NO) -endif() -if(NOT DEFINED DOXYGEN_DOT_MULTI_TARGETS) - set(DOXYGEN_DOT_MULTI_TARGETS NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_LEGEND) - set(DOXYGEN_GENERATE_LEGEND YES) -endif() -if(NOT DEFINED DOXYGEN_DOT_CLEANUP) - set(DOXYGEN_DOT_CLEANUP YES) -endif() diff --git a/ww/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake b/ww/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake deleted file mode 100644 index 278ef39e..00000000 --- a/ww/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake +++ /dev/null @@ -1,88 +0,0 @@ -set(CMAKE_CXX_COMPILER "/usr/bin/c++") -set(CMAKE_CXX_COMPILER_ARG1 "") -set(CMAKE_CXX_COMPILER_ID "GNU") -set(CMAKE_CXX_COMPILER_VERSION "9.4.0") -set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") -set(CMAKE_CXX_COMPILER_WRAPPER "") -set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14") -set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20") -set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") -set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") -set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") -set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") -set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") - -set(CMAKE_CXX_PLATFORM_ID "Linux") -set(CMAKE_CXX_SIMULATE_ID "") -set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "") -set(CMAKE_CXX_SIMULATE_VERSION "") - - - -set(CMAKE_AR "/usr/bin/ar") -set(CMAKE_CXX_COMPILER_AR "/usr/bin/gcc-ar-9") -set(CMAKE_RANLIB "/usr/bin/ranlib") -set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/gcc-ranlib-9") -set(CMAKE_LINKER "/usr/bin/ld") -set(CMAKE_MT "") -set(CMAKE_COMPILER_IS_GNUCXX 1) -set(CMAKE_CXX_COMPILER_LOADED 1) -set(CMAKE_CXX_COMPILER_WORKS TRUE) -set(CMAKE_CXX_ABI_COMPILED TRUE) -set(CMAKE_COMPILER_IS_MINGW ) -set(CMAKE_COMPILER_IS_CYGWIN ) -if(CMAKE_COMPILER_IS_CYGWIN) - set(CYGWIN 1) - set(UNIX 1) -endif() - -set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") - -if(CMAKE_COMPILER_IS_MINGW) - set(MINGW 1) -endif() -set(CMAKE_CXX_COMPILER_ID_RUN 1) -set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP) -set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) - -foreach (lang C OBJC OBJCXX) - if (CMAKE_${lang}_COMPILER_ID_RUN) - foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) - list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) - endforeach() - endif() -endforeach() - -set(CMAKE_CXX_LINKER_PREFERENCE 30) -set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) - -# Save compiler ABI information. -set(CMAKE_CXX_SIZEOF_DATA_PTR "8") -set(CMAKE_CXX_COMPILER_ABI "ELF") -set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") - -if(CMAKE_CXX_SIZEOF_DATA_PTR) - set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") -endif() - -if(CMAKE_CXX_COMPILER_ABI) - set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") -endif() - -if(CMAKE_CXX_LIBRARY_ARCHITECTURE) - set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") -endif() - -set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") -if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) - set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") -endif() - - - - - -set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include") -set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc") -set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib") -set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/ww/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin b/ww/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin deleted file mode 100755 index 156cfcfc782ba2dc2f291ca842e4a4516fe2c356..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16560 zcmeHOZ)_Y#6`%9j$)!!smoyvn%vnwdyOtmo7lvVrpwuPwvXOF z?)Io%(NJWFI0cgkRnUGwDn+15d};Xrp8!W`(@F?vgj9;4ULUuER;5=OoERY94~Tj#n5l!?6b&9!;ua#J-b(4kCRM{I=sHkOR#BOG z#%tt&k@=cGjXb(=g7g^edKjC9R;9Pl=|qjSMtyuDiO|-KSqux#soiM zil-YjWkoQ$^@d5$jXk8th(0hKecej_JO1uvJx!VsVHe(`Xu-(-?gKp;7pi|d;BG!b z{#NRT5XGO7!Yg)X(jy&vcW08VnRKo^**Y2SXzkdmm-6}^=^ERGK5$I+4Gak|Gm9LB zQTD|~Dr5cgv-h1U#vXj`#^jmevtRqwV*@`q_5|BNpD2R~^?68O8T04^Wz_Y5268l( z0WYS0oR!21Ut!?2I(1us+faue1Wv2NkFLPq3jDk4$P0+yD2A&;nC9qY!W>KI5}EYF zDJWu(H*e#4>>$5j<9QAszi8v>R)@5gya;#^@FL(vz>9zv0WShx1iT3R zQxW)6^X-2#rY{AI(@j6$Erjv8S*xM?k}>^U;JnnY?t2R8tJOQd4$!<^pgfemCrdp- zmfPRxuUve@LfF4( zZ35Q=m9zv0WShx1iT1%5%415MZk-I7lHqi2>2Xt8-?f}=skR(1n=qcV`j2o6_2-t zPhcn{pBPCWhy4Ob__q2#fbVGWJ=gr3)oKB75%6)qz(Tb;40r|b8Nl$BYV{?+rvY2& zr5L^&#pHYVi11B@d|TJ94xEKLY``0eB-tQvU}lE0A3QoP;ap1L(R87 z6nIn|+;ZT(@82O`L!$ou@EK+~$YVmA7JT+YoBEK51w*GAy4S5b367x%e;J6!;PWx4 zPXUVFVCYOkf3W3?{#a0(X^aJTexa!+*mi1_5e!eS?h8h8!EiL#77gy~3Tj=!mabr^ zD;SXP7k>%rp9eeM`#B7xm%Ipg5%415MZk-I7XdE3dANt22vBVv`=z1RRqWpw_}!g*aRvQ+q<30EcaGbwHM+f zDR?6*+doh3g*U^p%yERrK3RU5>i&+m9F2;lV;iQGHAnH_ zMhOmWB=hEYCO?wMm`N*NESZV&q!`U-3z?LaO6uXZj`sROcw{7PCW^(xl$pv|#VIjX zOk`7LvYgFMfr_nUf~4gT?LL%vFx5Rg+zpP>nN%^_)vu2h3c~zoyuBlx8_S!vKe>?& zOA`L!2FtxiqK9H;Y@o-4QzlN^Nn!SUWFUH|zuQ?OkFx*;=XlJRK^BajBf{*9AMT3A z&BMLDM`MHLV6-b9L#y%-%xI}Buks%sdr2h|R)STQ&do$3j)OBMN~yy!AnQCSV(vVxOW>D2o`;N;nuKp0c_5jWf!9+L zG}b1PpwA_xuLhmc;5-;lWYeS29PBq8;wf|(@L3qd?%DG%mvOxfQxxuWX%KE&HWt=5J_V2#_ zuRuLs6W8NUnoNZJJV>nc#d*Z9!pE+!ksc$PV;wFtKIPKq^)n;Ot)%}gmwtp481eVp zp4|4Hb?NhZoROcG*@k=kewXw){z4;3LY!arVBP=xjQe}Y+BNJXH|o>-r85i0HaB0|z_3fT{_HUC_` z2^qA-{(1csB7OG5@^m>|6n-F(Bk>x~`gheBm0^85^4PJ9M%W-tY@Ej!Qf?35|M343 eZo5OD2JQ}*arVoyxD2hQpA0LBwJrr$QT!cqBtQ)S diff --git a/ww/build/CMakeFiles/3.17.0/CMakeSystem.cmake b/ww/build/CMakeFiles/3.17.0/CMakeSystem.cmake deleted file mode 100644 index 0fd1f759..00000000 --- a/ww/build/CMakeFiles/3.17.0/CMakeSystem.cmake +++ /dev/null @@ -1,15 +0,0 @@ -set(CMAKE_HOST_SYSTEM "Linux-5.4.0-113-generic") -set(CMAKE_HOST_SYSTEM_NAME "Linux") -set(CMAKE_HOST_SYSTEM_VERSION "5.4.0-113-generic") -set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") - - - -set(CMAKE_SYSTEM "Linux-5.4.0-113-generic") -set(CMAKE_SYSTEM_NAME "Linux") -set(CMAKE_SYSTEM_VERSION "5.4.0-113-generic") -set(CMAKE_SYSTEM_PROCESSOR "x86_64") - -set(CMAKE_CROSSCOMPILING "FALSE") - -set(CMAKE_SYSTEM_LOADED 1) diff --git a/ww/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp b/ww/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp deleted file mode 100644 index 69cfdba6..00000000 --- a/ww/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp +++ /dev/null @@ -1,660 +0,0 @@ -/* This source file must have a .cpp extension so that all C++ compilers - recognize the extension without flags. Borland does not know .cxx for - example. */ -#ifndef __cplusplus -# error "A C compiler has been selected for C++." -#endif - - -/* Version number components: V=Version, R=Revision, P=Patch - Version date components: YYYY=Year, MM=Month, DD=Day */ - -#if defined(__COMO__) -# define COMPILER_ID "Comeau" - /* __COMO_VERSION__ = VRR */ -# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) -# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) - -#elif defined(__INTEL_COMPILER) || defined(__ICC) -# define COMPILER_ID "Intel" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# if defined(__GNUC__) -# define SIMULATE_ID "GNU" -# endif - /* __INTEL_COMPILER = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) -# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) -# if defined(__INTEL_COMPILER_UPDATE) -# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) -# else -# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) -# endif -# if defined(__INTEL_COMPILER_BUILD_DATE) - /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ -# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) -# endif -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif -# if defined(__GNUC__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) -# elif defined(__GNUG__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) -# endif -# if defined(__GNUC_MINOR__) -# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) -# endif -# if defined(__GNUC_PATCHLEVEL__) -# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif - -#elif defined(__PATHCC__) -# define COMPILER_ID "PathScale" -# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) -# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) -# if defined(__PATHCC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) -# endif - -#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) -# define COMPILER_ID "Embarcadero" -# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) -# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) -# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) - -#elif defined(__BORLANDC__) -# define COMPILER_ID "Borland" - /* __BORLANDC__ = 0xVRR */ -# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) -# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) - -#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 -# define COMPILER_ID "Watcom" - /* __WATCOMC__ = VVRR */ -# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) -# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) -# if (__WATCOMC__ % 10) > 0 -# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) -# endif - -#elif defined(__WATCOMC__) -# define COMPILER_ID "OpenWatcom" - /* __WATCOMC__ = VVRP + 1100 */ -# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) -# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) -# if (__WATCOMC__ % 10) > 0 -# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) -# endif - -#elif defined(__SUNPRO_CC) -# define COMPILER_ID "SunPro" -# if __SUNPRO_CC >= 0x5100 - /* __SUNPRO_CC = 0xVRRP */ -# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) -# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) -# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) -# else - /* __SUNPRO_CC = 0xVRP */ -# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) -# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) -# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) -# endif - -#elif defined(__HP_aCC) -# define COMPILER_ID "HP" - /* __HP_aCC = VVRRPP */ -# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) -# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) -# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) - -#elif defined(__DECCXX) -# define COMPILER_ID "Compaq" - /* __DECCXX_VER = VVRRTPPPP */ -# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) -# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) -# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) - -#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) -# define COMPILER_ID "zOS" - /* __IBMCPP__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) - -#elif defined(__ibmxl__) && defined(__clang__) -# define COMPILER_ID "XLClang" -# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) -# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) -# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) -# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) - - -#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 -# define COMPILER_ID "XL" - /* __IBMCPP__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) - -#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 -# define COMPILER_ID "VisualAge" - /* __IBMCPP__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) - -#elif defined(__PGI) -# define COMPILER_ID "PGI" -# define COMPILER_VERSION_MAJOR DEC(__PGIC__) -# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) -# if defined(__PGIC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) -# endif - -#elif defined(_CRAYC) -# define COMPILER_ID "Cray" -# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) -# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) - -#elif defined(__TI_COMPILER_VERSION__) -# define COMPILER_ID "TI" - /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ -# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) -# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) -# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) - -#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) -# define COMPILER_ID "Fujitsu" - -#elif defined(__ghs__) -# define COMPILER_ID "GHS" -/* __GHS_VERSION_NUMBER = VVVVRP */ -# ifdef __GHS_VERSION_NUMBER -# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) -# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) -# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) -# endif - -#elif defined(__SCO_VERSION__) -# define COMPILER_ID "SCO" - -#elif defined(__ARMCC_VERSION) && !defined(__clang__) -# define COMPILER_ID "ARMCC" -#if __ARMCC_VERSION >= 1000000 - /* __ARMCC_VERSION = VRRPPPP */ - # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) - # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) - # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) -#else - /* __ARMCC_VERSION = VRPPPP */ - # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) - # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) - # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) -#endif - - -#elif defined(__clang__) && defined(__apple_build_version__) -# define COMPILER_ID "AppleClang" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# define COMPILER_VERSION_MAJOR DEC(__clang_major__) -# define COMPILER_VERSION_MINOR DEC(__clang_minor__) -# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif -# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) - -#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) -# define COMPILER_ID "ARMClang" - # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) - # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) - # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) -# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) - -#elif defined(__clang__) -# define COMPILER_ID "Clang" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# define COMPILER_VERSION_MAJOR DEC(__clang_major__) -# define COMPILER_VERSION_MINOR DEC(__clang_minor__) -# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif - -#elif defined(__GNUC__) || defined(__GNUG__) -# define COMPILER_ID "GNU" -# if defined(__GNUC__) -# define COMPILER_VERSION_MAJOR DEC(__GNUC__) -# else -# define COMPILER_VERSION_MAJOR DEC(__GNUG__) -# endif -# if defined(__GNUC_MINOR__) -# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) -# endif -# if defined(__GNUC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif - -#elif defined(_MSC_VER) -# define COMPILER_ID "MSVC" - /* _MSC_VER = VVRR */ -# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) -# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) -# if defined(_MSC_FULL_VER) -# if _MSC_VER >= 1400 - /* _MSC_FULL_VER = VVRRPPPPP */ -# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) -# else - /* _MSC_FULL_VER = VVRRPPPP */ -# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) -# endif -# endif -# if defined(_MSC_BUILD) -# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) -# endif - -#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) -# define COMPILER_ID "ADSP" -#if defined(__VISUALDSPVERSION__) - /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ -# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) -# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) -# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) -#endif - -#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) -# define COMPILER_ID "IAR" -# if defined(__VER__) && defined(__ICCARM__) -# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) -# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) -# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) -# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) -# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) -# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) -# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) -# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) -# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) -# endif - - -/* These compilers are either not known or too old to define an - identification macro. Try to identify the platform and guess that - it is the native compiler. */ -#elif defined(__hpux) || defined(__hpua) -# define COMPILER_ID "HP" - -#else /* unknown compiler */ -# define COMPILER_ID "" -#endif - -/* Construct the string literal in pieces to prevent the source from - getting matched. Store it in a pointer rather than an array - because some compilers will just produce instructions to fill the - array rather than assigning a pointer to a static array. */ -char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; -#ifdef SIMULATE_ID -char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; -#endif - -#ifdef __QNXNTO__ -char const* qnxnto = "INFO" ":" "qnxnto[]"; -#endif - -#if defined(__CRAYXE) || defined(__CRAYXC) -char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; -#endif - -#define STRINGIFY_HELPER(X) #X -#define STRINGIFY(X) STRINGIFY_HELPER(X) - -/* Identify known platforms by name. */ -#if defined(__linux) || defined(__linux__) || defined(linux) -# define PLATFORM_ID "Linux" - -#elif defined(__CYGWIN__) -# define PLATFORM_ID "Cygwin" - -#elif defined(__MINGW32__) -# define PLATFORM_ID "MinGW" - -#elif defined(__APPLE__) -# define PLATFORM_ID "Darwin" - -#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) -# define PLATFORM_ID "Windows" - -#elif defined(__FreeBSD__) || defined(__FreeBSD) -# define PLATFORM_ID "FreeBSD" - -#elif defined(__NetBSD__) || defined(__NetBSD) -# define PLATFORM_ID "NetBSD" - -#elif defined(__OpenBSD__) || defined(__OPENBSD) -# define PLATFORM_ID "OpenBSD" - -#elif defined(__sun) || defined(sun) -# define PLATFORM_ID "SunOS" - -#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) -# define PLATFORM_ID "AIX" - -#elif defined(__hpux) || defined(__hpux__) -# define PLATFORM_ID "HP-UX" - -#elif defined(__HAIKU__) -# define PLATFORM_ID "Haiku" - -#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) -# define PLATFORM_ID "BeOS" - -#elif defined(__QNX__) || defined(__QNXNTO__) -# define PLATFORM_ID "QNX" - -#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) -# define PLATFORM_ID "Tru64" - -#elif defined(__riscos) || defined(__riscos__) -# define PLATFORM_ID "RISCos" - -#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) -# define PLATFORM_ID "SINIX" - -#elif defined(__UNIX_SV__) -# define PLATFORM_ID "UNIX_SV" - -#elif defined(__bsdos__) -# define PLATFORM_ID "BSDOS" - -#elif defined(_MPRAS) || defined(MPRAS) -# define PLATFORM_ID "MP-RAS" - -#elif defined(__osf) || defined(__osf__) -# define PLATFORM_ID "OSF1" - -#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) -# define PLATFORM_ID "SCO_SV" - -#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) -# define PLATFORM_ID "ULTRIX" - -#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) -# define PLATFORM_ID "Xenix" - -#elif defined(__WATCOMC__) -# if defined(__LINUX__) -# define PLATFORM_ID "Linux" - -# elif defined(__DOS__) -# define PLATFORM_ID "DOS" - -# elif defined(__OS2__) -# define PLATFORM_ID "OS2" - -# elif defined(__WINDOWS__) -# define PLATFORM_ID "Windows3x" - -# else /* unknown platform */ -# define PLATFORM_ID -# endif - -#elif defined(__INTEGRITY) -# if defined(INT_178B) -# define PLATFORM_ID "Integrity178" - -# else /* regular Integrity */ -# define PLATFORM_ID "Integrity" -# endif - -#else /* unknown platform */ -# define PLATFORM_ID - -#endif - -/* For windows compilers MSVC and Intel we can determine - the architecture of the compiler being used. This is because - the compilers do not have flags that can change the architecture, - but rather depend on which compiler is being used -*/ -#if defined(_WIN32) && defined(_MSC_VER) -# if defined(_M_IA64) -# define ARCHITECTURE_ID "IA64" - -# elif defined(_M_X64) || defined(_M_AMD64) -# define ARCHITECTURE_ID "x64" - -# elif defined(_M_IX86) -# define ARCHITECTURE_ID "X86" - -# elif defined(_M_ARM64) -# define ARCHITECTURE_ID "ARM64" - -# elif defined(_M_ARM) -# if _M_ARM == 4 -# define ARCHITECTURE_ID "ARMV4I" -# elif _M_ARM == 5 -# define ARCHITECTURE_ID "ARMV5I" -# else -# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) -# endif - -# elif defined(_M_MIPS) -# define ARCHITECTURE_ID "MIPS" - -# elif defined(_M_SH) -# define ARCHITECTURE_ID "SHx" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__WATCOMC__) -# if defined(_M_I86) -# define ARCHITECTURE_ID "I86" - -# elif defined(_M_IX86) -# define ARCHITECTURE_ID "X86" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) -# if defined(__ICCARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__ICCRX__) -# define ARCHITECTURE_ID "RX" - -# elif defined(__ICCRH850__) -# define ARCHITECTURE_ID "RH850" - -# elif defined(__ICCRL78__) -# define ARCHITECTURE_ID "RL78" - -# elif defined(__ICCRISCV__) -# define ARCHITECTURE_ID "RISCV" - -# elif defined(__ICCAVR__) -# define ARCHITECTURE_ID "AVR" - -# elif defined(__ICC430__) -# define ARCHITECTURE_ID "MSP430" - -# elif defined(__ICCV850__) -# define ARCHITECTURE_ID "V850" - -# elif defined(__ICC8051__) -# define ARCHITECTURE_ID "8051" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__ghs__) -# if defined(__PPC64__) -# define ARCHITECTURE_ID "PPC64" - -# elif defined(__ppc__) -# define ARCHITECTURE_ID "PPC" - -# elif defined(__ARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__x86_64__) -# define ARCHITECTURE_ID "x64" - -# elif defined(__i386__) -# define ARCHITECTURE_ID "X86" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif -#else -# define ARCHITECTURE_ID -#endif - -/* Convert integer to decimal digit literals. */ -#define DEC(n) \ - ('0' + (((n) / 10000000)%10)), \ - ('0' + (((n) / 1000000)%10)), \ - ('0' + (((n) / 100000)%10)), \ - ('0' + (((n) / 10000)%10)), \ - ('0' + (((n) / 1000)%10)), \ - ('0' + (((n) / 100)%10)), \ - ('0' + (((n) / 10)%10)), \ - ('0' + ((n) % 10)) - -/* Convert integer to hex digit literals. */ -#define HEX(n) \ - ('0' + ((n)>>28 & 0xF)), \ - ('0' + ((n)>>24 & 0xF)), \ - ('0' + ((n)>>20 & 0xF)), \ - ('0' + ((n)>>16 & 0xF)), \ - ('0' + ((n)>>12 & 0xF)), \ - ('0' + ((n)>>8 & 0xF)), \ - ('0' + ((n)>>4 & 0xF)), \ - ('0' + ((n) & 0xF)) - -/* Construct a string literal encoding the version number components. */ -#ifdef COMPILER_VERSION_MAJOR -char const info_version[] = { - 'I', 'N', 'F', 'O', ':', - 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', - COMPILER_VERSION_MAJOR, -# ifdef COMPILER_VERSION_MINOR - '.', COMPILER_VERSION_MINOR, -# ifdef COMPILER_VERSION_PATCH - '.', COMPILER_VERSION_PATCH, -# ifdef COMPILER_VERSION_TWEAK - '.', COMPILER_VERSION_TWEAK, -# endif -# endif -# endif - ']','\0'}; -#endif - -/* Construct a string literal encoding the internal version number. */ -#ifdef COMPILER_VERSION_INTERNAL -char const info_version_internal[] = { - 'I', 'N', 'F', 'O', ':', - 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', - 'i','n','t','e','r','n','a','l','[', - COMPILER_VERSION_INTERNAL,']','\0'}; -#endif - -/* Construct a string literal encoding the version number components. */ -#ifdef SIMULATE_VERSION_MAJOR -char const info_simulate_version[] = { - 'I', 'N', 'F', 'O', ':', - 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', - SIMULATE_VERSION_MAJOR, -# ifdef SIMULATE_VERSION_MINOR - '.', SIMULATE_VERSION_MINOR, -# ifdef SIMULATE_VERSION_PATCH - '.', SIMULATE_VERSION_PATCH, -# ifdef SIMULATE_VERSION_TWEAK - '.', SIMULATE_VERSION_TWEAK, -# endif -# endif -# endif - ']','\0'}; -#endif - -/* Construct the string literal in pieces to prevent the source from - getting matched. Store it in a pointer rather than an array - because some compilers will just produce instructions to fill the - array rather than assigning a pointer to a static array. */ -char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; -char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; - - - - -#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L -# if defined(__INTEL_CXX11_MODE__) -# if defined(__cpp_aggregate_nsdmi) -# define CXX_STD 201402L -# else -# define CXX_STD 201103L -# endif -# else -# define CXX_STD 199711L -# endif -#elif defined(_MSC_VER) && defined(_MSVC_LANG) -# define CXX_STD _MSVC_LANG -#else -# define CXX_STD __cplusplus -#endif - -const char* info_language_dialect_default = "INFO" ":" "dialect_default[" -#if CXX_STD > 201703L - "20" -#elif CXX_STD >= 201703L - "17" -#elif CXX_STD >= 201402L - "14" -#elif CXX_STD >= 201103L - "11" -#else - "98" -#endif -"]"; - -/*--------------------------------------------------------------------------*/ - -int main(int argc, char* argv[]) -{ - int require = 0; - require += info_compiler[argc]; - require += info_platform[argc]; -#ifdef COMPILER_VERSION_MAJOR - require += info_version[argc]; -#endif -#ifdef COMPILER_VERSION_INTERNAL - require += info_version_internal[argc]; -#endif -#ifdef SIMULATE_ID - require += info_simulate[argc]; -#endif -#ifdef SIMULATE_VERSION_MAJOR - require += info_simulate_version[argc]; -#endif -#if defined(__CRAYXE) || defined(__CRAYXC) - require += info_cray[argc]; -#endif - require += info_language_dialect_default[argc]; - (void)argv; - return require; -} diff --git a/ww/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx b/ww/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx deleted file mode 100644 index 13435e07..00000000 --- a/ww/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx +++ /dev/null @@ -1,28 +0,0 @@ -#ifdef CHECK_FUNCTION_EXISTS - -# ifdef __cplusplus -extern "C" -# endif - char - CHECK_FUNCTION_EXISTS(void); -# ifdef __CLASSIC_C__ -int main() -{ - int ac; - char* av[]; -# else -int main(int ac, char* av[]) -{ -# endif - CHECK_FUNCTION_EXISTS(); - if (ac > 1000) { - return *av[0]; - } - return 0; -} - -#else /* CHECK_FUNCTION_EXISTS */ - -# error "CHECK_FUNCTION_EXISTS has to specify the function" - -#endif /* CHECK_FUNCTION_EXISTS */ diff --git a/ww/build/CMakeFiles/cmake.check_cache b/ww/build/CMakeFiles/cmake.check_cache deleted file mode 100644 index 3dccd731..00000000 --- a/ww/build/CMakeFiles/cmake.check_cache +++ /dev/null @@ -1 +0,0 @@ -# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/ww/include/result.hh b/ww/include/result.hh deleted file mode 100644 index 26dd8285..00000000 --- a/ww/include/result.hh +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -#include - -#include "../../include/result.hh" - -extern std::vector SS2PLResult; - -extern void initResult(); diff --git a/ww/include/ss2pl_op_element.hh b/ww/include/ss2pl_op_element.hh deleted file mode 100644 index 6162c229..00000000 --- a/ww/include/ss2pl_op_element.hh +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -#include "../../include/op_element.hh" - -template -class SetElement : public OpElement { -public: - using OpElement::OpElement; - - char val_[VAL_SIZE]; - - SetElement(uint64_t key, T *rcdptr) : OpElement::OpElement(key, rcdptr) {} - - SetElement(uint64_t key, T *rcdptr, char *val) - : OpElement::OpElement(key, rcdptr) { - memcpy(this->val_, val, VAL_SIZE); - } -}; diff --git a/ww/include/transaction.hh b/ww/include/transaction.hh deleted file mode 100644 index 5431f352..00000000 --- a/ww/include/transaction.hh +++ /dev/null @@ -1,65 +0,0 @@ -#pragma once - -#include - -#include "../../include/procedure.hh" -#include "../../include/result.hh" -#include "../../include/rwlock.hh" -#include "../../include/string.hh" -#include "../../include/util.hh" -#include "ss2pl_op_element.hh" -#include "tuple.hh" - -enum class TransactionStatus : uint8_t { - inFlight, - committed, - aborted, -}; - -extern void writeValGenerator(char *writeVal, size_t val_size, size_t thid); - -class TxExecutor { -public: - alignas(CACHE_LINE_SIZE) int thid_; - std::vector r_lock_list_; - std::vector w_lock_list_; - TransactionStatus status_ = TransactionStatus::inFlight; - Result *sres_; - vector > read_set_; - vector > write_set_; - vector pro_set_; - - char write_val_[VAL_SIZE]; - char return_val_[VAL_SIZE]; - - TxExecutor(int thid, Result *sres) : thid_(thid), sres_(sres) { - read_set_.reserve(FLAGS_max_ope); - write_set_.reserve(FLAGS_max_ope); - pro_set_.reserve(FLAGS_max_ope); - r_lock_list_.reserve(FLAGS_max_ope); - w_lock_list_.reserve(FLAGS_max_ope); - - genStringRepeatedNumber(write_val_, VAL_SIZE, thid); - } - - SetElement *searchReadSet(uint64_t key); - - SetElement *searchWriteSet(uint64_t key); - - void begin(); - - void read(uint64_t key); - - void write(uint64_t key); - - void readWrite(uint64_t key); - - void commit(); - - void abort(); - - void unlockList(); - - // inline - Tuple *get_tuple(Tuple *table, uint64_t key) { return &table[key]; } -}; diff --git a/ww/include/util.hh b/ww/include/util.hh deleted file mode 100644 index 547508fa..00000000 --- a/ww/include/util.hh +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -extern void chkArg(); - -extern void displayDB(); - -extern void displayParameter(); - -extern void makeDB(); - -extern void partTableInit([[maybe_unused]] size_t thid, uint64_t start, uint64_t end); - -extern void ShowOptParameters(); diff --git a/ww/result.cc b/ww/result.cc deleted file mode 100644 index ff17dd8d..00000000 --- a/ww/result.cc +++ /dev/null @@ -1,11 +0,0 @@ -#include "include/result.hh" -#include "include/common.hh" - -#include "../include/cache_line_size.hh" -#include "../include/result.hh" - -using namespace std; - -alignas(CACHE_LINE_SIZE) std::vector SS2PLResult; - -void initResult() { SS2PLResult.resize(FLAGS_thread_num); } diff --git a/ww/script/test_cache_ana.sh b/ww/script/test_cache_ana.sh deleted file mode 100755 index df6753dd..00000000 --- a/ww/script/test_cache_ana.sh +++ /dev/null @@ -1,227 +0,0 @@ -#test_cache_ana.sh(ss2pl) -maxope=10 -thread=24 -cpu_mhz=2400 -extime=3 -epoch=5 - -tuple=100 -workload=0 -result=result_ss2pl_r10_cache.dat -rm $result -echo "#tuple, cache-miss-ratio, min, max" >> $result -echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result - -for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) -do - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - sum=0 - max=0 - min=0 - for ((i = 1; i <= epoch; ++i)) - do - perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime - tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$tuple $avg $min $max" >> $result -done - -tuple=100 -workload=1 -result=result_ss2pl_r8_cache.dat -rm $result -echo "#tuple, cache-miss-ratio, min, max" >> $result -echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result - -for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) -do - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - sum=0 - max=0 - min=0 - for ((i = 1; i <= epoch; ++i)) - do - perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime - tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$tuple $avg $min $max" >> $result -done - -tuple=100 -workload=2 -result=result_ss2pl_r5_cache.dat -rm $result -echo "#tuple, cache-miss-ratio, min, max" >> $result -echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result - -for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) -do - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - sum=0 - max=0 - min=0 - for ((i = 1; i <= epoch; ++i)) - do - perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime - tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$tuple $avg $min $max" >> $result -done - -tuple=100 -workload=3 -result=result_ss2pl_r2_cache.dat -rm $result -echo "#tuple, cache-miss-ratio, min, max" >> $result -echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result - -for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) -do - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - sum=0 - max=0 - min=0 - for ((i = 1; i <= epoch; ++i)) - do - perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime - tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$tuple $avg $min $max" >> $result -done - -tuple=100 -workload=4 -result=result_ss2pl_r0_cache.dat -rm $result -echo "#tuple, cache-miss-ratio, min, max" >> $result -echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result - -for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) -do - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - sum=0 - max=0 - min=0 - for ((i = 1; i <= epoch; ++i)) - do - perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime - tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$tuple $avg $min $max" >> $result -done - diff --git a/ww/script/test_t1k.sh b/ww/script/test_t1k.sh deleted file mode 100755 index 73dbfec1..00000000 --- a/ww/script/test_t1k.sh +++ /dev/null @@ -1,382 +0,0 @@ -#test_t1k.sh(ss2pl) -tuple=1000 -maxope=10 -cpu_mhz=2400 -extime=3 -epoch=5 - -workload=0 -result=result_ss2pl_r10_tuple1k_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=1 -result=result_ss2pl_r8_tuple1k_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=2 -result=result_ss2pl_r5_tuple1k_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=3 -result=result_ss2pl_r2_tuple1k_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=4 -result=result_ss2pl_r0_tuple1k_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - diff --git a/ww/script/test_t1m.sh b/ww/script/test_t1m.sh deleted file mode 100755 index 9b30a188..00000000 --- a/ww/script/test_t1m.sh +++ /dev/null @@ -1,382 +0,0 @@ -#test_t1m.sh(ss2pl) -tuple=1000000 -maxope=10 -cpu_mhz=2400 -extime=3 -epoch=5 - -workload=0 -result=result_ss2pl_r10_tuple1m_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=1 -result=result_ss2pl_r8_tuple1m_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=2 -result=result_ss2pl_r5_tuple1m_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=3 -result=result_ss2pl_r2_tuple1m_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=4 -result=result_ss2pl_r0_tuple1m_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - diff --git a/ww/script/test_t200.sh b/ww/script/test_t200.sh deleted file mode 100755 index ed333bb7..00000000 --- a/ww/script/test_t200.sh +++ /dev/null @@ -1,382 +0,0 @@ -#test_t200.sh(ss2pl) -tuple=200 -maxope=10 -cpu_mhz=2400 -extime=3 -epoch=5 - -workload=0 -result=result_ss2pl_r10_tuple200_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=1 -result=result_ss2pl_r8_tuple200_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=2 -result=result_ss2pl_r5_tuple200_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=3 -result=result_ss2pl_r2_tuple200_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=4 -result=result_ss2pl_r0_tuple200_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - diff --git a/ww/script/tst200-1k-1m.sh b/ww/script/tst200-1k-1m.sh deleted file mode 100755 index c347fa88..00000000 --- a/ww/script/tst200-1k-1m.sh +++ /dev/null @@ -1,1991 +0,0 @@ -#tst200-1k-1m.sh(ss2pl) -maxope=10 -rmw=off -skew=0 -ycsb=off -cpu_mhz=2400 -extime=3 -epoch=3 - -host=`hostname` -chris41="chris41.omni.hpcc.jp" -dbs11="dbs11" - -#basically -inith=4 -enth=24 -inc=4 -if test $host = $dbs11 ; then -inith=28 -enth=224 -inc=28 -fi - -#kugiri -rratio=0 -tuple=200 -result=result_ss2pl_r0_tuple200.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=20 -tuple=200 -result=result_ss2pl_r2_tuple200.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=80 -tuple=200 -result=result_ss2pl_r8_tuple200.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=100 -tuple=200 -result=result_ss2pl_r10_tuple200.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=0 -tuple=1000 -result=result_ss2pl_r0_tuple1k.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=20 -tuple=1000 -result=result_ss2pl_r2_tuple1k.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=80 -tuple=1000 -result=result_ss2pl_r8_tuple1k.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=100 -tuple=1000 -result=result_ss2pl_r10_tuple1k.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=0 -tuple=1000000 -result=result_ss2pl_r0_tuple1m.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=20 -tuple=1000000 -result=result_ss2pl_r2_tuple1m.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=80 -tuple=1000000 -result=result_ss2pl_r8_tuple1m.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=100 -tuple=1000000 -result=result_ss2pl_r10_tuple1m.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - diff --git a/ww/script/ycsb-xope.sh b/ww/script/ycsb-xope.sh deleted file mode 100755 index 7398b793..00000000 --- a/ww/script/ycsb-xope.sh +++ /dev/null @@ -1,106 +0,0 @@ -#ycsb-xope.sh(ss2pl) -tuple=100000000 -maxope=10 -rratio=95 -rmw=off -skew=0.8 -ycsb=on -cpu_mhz=2100 -extime=3 -epoch=3 - -host=`hostname` -chris41="chris41.omni.hpcc.jp" -dbs11="dbs11" - -#basically -thread=24 -if test $host = $dbs11 ; then -thread=224 -fi - -cd ../ -make clean; make -j KEY_SIZE=8 VAL_SIZE=4 -cd script/ - -result=result_ss2pl-dlr1_ycsbB_tuple100m_skew08_ope10-100.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result - -for ((maxope=10; maxope<=100; maxope+=10)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - echo "$maxope $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done diff --git a/ww/script/ycsb-xrratio.sh b/ww/script/ycsb-xrratio.sh deleted file mode 100755 index e4e74263..00000000 --- a/ww/script/ycsb-xrratio.sh +++ /dev/null @@ -1,102 +0,0 @@ -#ycsb-xrratio.sh(ss2pl) -tuple=1000000 -maxope=10 -rratio=0 -rmw=off -skew=0.9 -ycsb=on -cpu_mhz=2400 -extime=3 -epoch=3 - -host=`hostname` -chris41="chris41.omni.hpcc.jp" -dbs11="dbs11" - -#basically -thread=24 -if test $host = $dbs11 ; then -thread=224 -fi - -result=result_ss2pl-dlr1_tuple1m_val1k_skew09_rratio0-100.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result - -for ((rratio=0; rratio<=100; rratio+=10)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - echo "$rratio $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done diff --git a/ww/script/ycsb-xrs.sh b/ww/script/ycsb-xrs.sh deleted file mode 100755 index fb18cb42..00000000 --- a/ww/script/ycsb-xrs.sh +++ /dev/null @@ -1,118 +0,0 @@ -#ycsb-xrs.sh(ss2pl) -maxope=10 -rratioary=(50 95 100) -rmw=off -skew=0.9 -ycsb=on -cpu_mhz=2100 -extime=3 -epoch=3 - -host=`hostname` -chris41="chris41.omni.hpcc.jp" -dbs11="dbs11" - -#basically -thread=24 -if test $host = $dbs11 ; then -thread=224 -fi - -cd ../ -make clean; make -j KEY_SIZE=8 VAL_SIZE=1000 -cd script/ - -for rratio in "${rratioary[@]}" -do - if test $rratio = 50 ; then - result=result_ss2pl_ycsbA_tuple1k-100m_val1k_skew09.dat - elif test $rratio = 95 ; then - result=result_ss2pl_ycsbB_tuple1k-100m_val1k_skew09.dat - elif test $rratio = 100 ; then - result=result_ss2pl_ycsbC_tuple1k-100m_val1k_skew09.dat - else - echo "BUG" - exit 1 - fi - rm $result - - echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result - echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result - - for ((tuple=1000; tuple<=100000000; tuple*=10)) - do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - echo "$tuple $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - done -done diff --git a/ww/script/ycsb-xskew.sh b/ww/script/ycsb-xskew.sh deleted file mode 100755 index 314e6020..00000000 --- a/ww/script/ycsb-xskew.sh +++ /dev/null @@ -1,131 +0,0 @@ -#ycsb-xrs.sh(ss2pl) -tuple=10000000 -maxope=16 -rratioary=(50 95) -rmw=on -ycsb=on -cpu_mhz=2100 -extime=3 -epoch=3 - -host=`hostname` -chris41="chris41.omni.hpcc.jp" -dbs11="dbs11" - -#basically -thread=24 -if test $host = $dbs11 ; then -thread=224 -fi - -cd ../ -make clean; make -j VAL_SIZE=100 -cd script/ - -for rratio in "${rratioary[@]}" -do - if test $rratio = 50; then - thread=28 - result=result_2pl_ycsbA_tuple10m_ope16_rmw_skew0-099_th28.dat - elif test $rratio = 95; then - thread=28 - result=result_2pl_ycsbB_tuple10m_ope16_rmw_skew0-099_th28.dat - elif test $rratio = 100; then - result=result_ss2pl_ycsbC_tuple1k_skew0-099.dat - else - echo "BUG" - exit 1 - fi - rm $result - - echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result - echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw skew $ycsb $cpu_mhz $extime" >> $result - ../ss2pl.exe > exp.txt - tmpStr=`grep ShowOptParameters ./exp.txt` - echo "#$tmpStr" >> $result - - for ((tmpskew = 0; tmpskew <= 105; tmpskew += 10)) - do - if test $tmpskew = 100 ; then - tmpskew=95 - fi - if test $tmpskew = 105 ; then - tmpskew=99 - fi - skew=`echo "scale=3; $tmpskew / 100.0" | bc -l | xargs printf %.2f` - - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - echo "$skew $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - done -done diff --git a/ww/script/ycsb-xth.sh b/ww/script/ycsb-xth.sh deleted file mode 100755 index 1ff00ecf..00000000 --- a/ww/script/ycsb-xth.sh +++ /dev/null @@ -1,124 +0,0 @@ -#ycsb-xrs.sh(ss2pl) -tuple=10000000 -maxope=1 -#rratioary=(50 95 100) -rratioary=(95) -rmw=on -skew=0.99 -ycsb=on -cpu_mhz=2100 -extime=3 -epoch=3 - -host=`hostname` -chris41="chris41.omni.hpcc.jp" -dbs11="dbs11" - -#basically -thread=24 -if test $host = $dbs11 ; then -thread=224 -fi - -cd ../ -make clean; make -j VAL_SIZE=100 -cd script/ - -for rratio in "${rratioary[@]}" -do - if test $rratio = 50 ; then - result=result_2pl_ycsbA_tuple10m_ope16_rmw_skew099.dat - elif test $rratio = 95 ; then - result=result_2pl_ycsbB_tuple10m_ope1_rmw_skew099.dat - elif test $rratio = 100 ; then - result=result_ss2pl_ycsbC_tuple10m_ope1_skew099.dat - maxope=1 - else - echo "BUG" - exit 1 - fi - rm $result - - echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result - echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result - - for ((thread=1; thread<=25; thread+=5)) - do - if test $thread = 6 ; then - thread=5 - fi - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - echo "$thread $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - done -done diff --git a/ww/script/ycsb-xval.sh b/ww/script/ycsb-xval.sh deleted file mode 100755 index e5c64aea..00000000 --- a/ww/script/ycsb-xval.sh +++ /dev/null @@ -1,122 +0,0 @@ -#ycsb-xrs.sh(ss2pl) -tuple=1000000 -maxope=10 -rratioary=(95) -rmw=off -skew=0 -ycsb=on -cpu_mhz=2100 -extime=3 -epoch=3 - -host=`hostname` -chris41="chris41.omni.hpcc.jp" -dbs11="dbs11" - -#basically -thread=24 -if test $host = $dbs11 ; then -thread=224 -fi - -for rratio in "${rratioary[@]}" -do - if test $rratio = 50; then - result=result_ss2pl_ycsbA_tuple100m_skew09_val4-1k.dat - elif test $rratio = 95; then - result=result_ss2pl_ycsbB_tuple1m_val10-100k.dat - elif test $rratio = 100; then - result=result_ss2pl_ycsbC_tuple100m_skew09_val4-1k.dat - else - echo "BUG" - exit 1 - fi - rm $result - - echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result - echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result - - for ((val = 10; val <= 100000; val *= 10)) - do - if test $val = 104 ; then - val=100 - fi - cd ../ - make clean; make -j VAL_SIZE=$val - cd script - - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - echo "$val $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - done -done diff --git a/ww/script/ycsbA-xrs-cache.sh b/ww/script/ycsbA-xrs-cache.sh deleted file mode 100755 index 61dbd5f4..00000000 --- a/ww/script/ycsbA-xrs-cache.sh +++ /dev/null @@ -1,52 +0,0 @@ -#ycsbA-xrs-cache.sh(ss2pl) -maxope=10 -thread=24 -rratio=50 -skew=0 -ycsb=ON -cpu_mhz=2400 -extime=3 -epoch=5 - -result=result_ss2pl_ycsbA_tuple100-10m_cachemiss.dat -rm $result -echo "#tuple num, cache-misses, min, max" >> $result -echo "#./ss2pl.exe tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime" >> $result - -for ((tuple=100; tuple<=10000000; tuple*=10)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime" - echo "$tuple $epoch" - - max=0 - min=0 - for ((i = 1; i <= epoch; ++i)) - do - perf stat -e cache-misses,cache-references -o ss2pl-cache-ana.txt ./ss2pl.exe $tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime - tmp=`grep cache-misses ./ss2pl-cache-ana.txt | awk '{print $4}'` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$tuple $avg $min $max" >> $result -done - diff --git a/ww/script/ycsbA.sh b/ww/script/ycsbA.sh deleted file mode 100755 index c83e85f6..00000000 --- a/ww/script/ycsbA.sh +++ /dev/null @@ -1,510 +0,0 @@ -#ycsbA.sh(ss2pl) -maxope=10 -rratio=50 -rmw=off -skew=0 -ycsb=on -cpu_mhz=2400 -extime=3 -epoch=3 - -host=`hostname` -chris41="chris41.omni.hpcc.jp" -dbs11="dbs11" - -#basically -inith=4 -enth=24 -inc=4 -if test $host = $dbs11 ; then -inith=28 -enth=224 -inc=28 -fi - -tuple=500 -result=result_ss2pl_ycsbA_tuple500_masstree.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -tuple=500000 -result=result_ss2pl_ycsbA_tuple500k_masstree.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -tuple=5000000 -result=result_ss2pl_ycsbA_tuple5m_masstree.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - diff --git a/ww/script/ycsbB.sh b/ww/script/ycsbB.sh deleted file mode 100755 index 2a5966d9..00000000 --- a/ww/script/ycsbB.sh +++ /dev/null @@ -1,510 +0,0 @@ -#ycsbB.sh(ss2pl) -maxope=10 -rratio=95 -rmw=off -skew=0 -ycsb=on -cpu_mhz=2400 -extime=3 -epoch=3 - -host=`hostname` -chris41="chris41.omni.hpcc.jp" -dbs11="dbs11" - -#basically -inith=4 -enth=24 -inc=4 -if test $host = $dbs11 ; then -inith=28 -enth=224 -inc=28 -fi - -tuple=500 -result=result_ss2pl_ycsbB_tuple500_masstree.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -tuple=500000 -result=result_ss2pl_ycsbB_tuple500k_masstree.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -tuple=5000000 -result=result_ss2pl_ycsbB_tuple5m_masstree.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - diff --git a/ww/script/ycsbC.sh b/ww/script/ycsbC.sh deleted file mode 100755 index 4894481b..00000000 --- a/ww/script/ycsbC.sh +++ /dev/null @@ -1,187 +0,0 @@ -#ycsbC.sh(ss2pl) -#tuple=1000000000 -tuple=1000 -maxope=10 -rratio=100 -rmw=off -skew=0.9 -ycsb=on -cpu_mhz=2100 -extime=1 -epoch=3 - -host=`hostname` -chris41="chris41.omni.hpcc.jp" -dbs11="dbs11" - -#basically -inith=4 -enth=24 -inc=4 -if test $host = $dbs11 ; then -inith=28 -enth=224 -inc=28 -fi - -result=result_ss2pl_ycsbC_tuple1g_skew09_val1k.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - diff --git a/ww/test/CMakeLists.txt b/ww/test/CMakeLists.txt deleted file mode 100644 index 9b5dd16f..00000000 --- a/ww/test/CMakeLists.txt +++ /dev/null @@ -1,76 +0,0 @@ -file(GLOB SS2PL_SOURCES - "${PROJECT_SOURCE_DIR}/../common/result.cc" - "${PROJECT_SOURCE_DIR}/../common/util.cc" - "${PROJECT_SOURCE_DIR}/result.cc" - "${PROJECT_SOURCE_DIR}/transaction.cc" - "${PROJECT_SOURCE_DIR}/util.cc" - ) - -file (GLOB TEST_SOURCES -"make_db_test.cpp" -) - -if (DEFINED ADD_ANALYSIS) - add_definitions(-DADD_ANALYSIS=${ADD_ANALYSIS}) -else () - add_definitions(-DADD_ANALYSIS=0) -endif () - -if (DEFINED BACK_OFF) - add_definitions(-DBACK_OFF=${BACK_OFF}) -else () - add_definitions(-DBACK_OFF=0) -endif () - -add_definitions(-DDLR1) - -if (DEFINED KEY_SIZE) - add_definitions(-DKEY_SIZE=${KEY_SIZE}) -else () - add_definitions(-DKEY_SIZE=8) -endif () - -if (DEFINED KEY_SORT) - add_definitions(-DKEY_SORT=${KEY_SORT}) -else () - add_definitions(-DKEY_SORT=0) -endif () - -if (DEFINED MASSTREE_USE) - add_definitions(-DMASSTREE_USE=${MASSTREE_USE}) -else () - add_definitions(-DMASSTREE_USE=1) -endif () - -if (DEFINED VAL_SIZE) - add_definitions(-DVAL_SIZE=${VAL_SIZE}) -else () - add_definitions(-DVAL_SIZE=4) -endif () - -foreach(src IN LISTS TEST_SOURCES) - get_filename_component(fname "${src}" NAME_WE) - set(test_name "${fname}") - - add_executable(${test_name} ${src} ${SS2PL_SOURCES}) - - target_include_directories(${test_name} - PRIVATE ${PROJECT_SOURCE_DIR}/../third_party/googletest/googletest/include - ) - - target_link_libraries(${test_name} - Boost::filesystem - gflags::gflags - glog::glog - ${PROJECT_SOURCE_DIR}/../third_party/mimalloc/out/release/libmimalloc.a - ${PROJECT_SOURCE_DIR}/../third_party/masstree/libkohler_masstree_json.a - Threads::Threads - ${PROJECT_SOURCE_DIR}/../third_party/googletest/build/lib/libgtest.a - ${PROJECT_SOURCE_DIR}/../third_party/googletest/build/lib/libgtest_main.a - ) - set_compile_options(${test_name}) - add_test( - NAME ${test_name} - COMMAND ${test_name} --gtest_output=xml:${test_name}_gtest_result.xml - ) -endforeach() \ No newline at end of file diff --git a/ww/test/make_db_test.cpp b/ww/test/make_db_test.cpp deleted file mode 100644 index 260dd3a3..00000000 --- a/ww/test/make_db_test.cpp +++ /dev/null @@ -1,40 +0,0 @@ - -#include - -#define GLOBAL_VALUE_DEFINE - -#include "../../include/backoff.hh" -#include "../include/common.hh" -#include "../include/util.hh" - -#include "glog/logging.h" -#include "gtest/gtest.h" - -namespace ccbench::testing { - -class make_db_test : public ::testing::Test { -public: - static void call_once_f() { - google::InitGoogleLogging("make_db_test_log"); - FLAGS_stderrthreshold = 0; - } - - void SetUp() override { std::call_once(init_, call_once_f); } - - void TearDown() override {} - -private: - static inline std::once_flag init_; // NOLINT -}; - -TEST_F(make_db_test, simple) { // NOLINT - makeDB(); - // verify effect makeDb - for (std::uint64_t i = 0; i < FLAGS_tuple_num; ++i) { - ASSERT_EQ(Table[i].val_[0], 'a'); - ASSERT_EQ(Table[i].val_[1], '\0'); - ASSERT_EQ(Table[i].lock_.counter.load(std::memory_order_acquire), 0); - } -} - -} // namespace ccbench::testing \ No newline at end of file From 6383fd8ba39545503ef052f894da437e2cd3cc35 Mon Sep 17 00:00:00 2001 From: tngngn Date: Fri, 6 Jan 2023 19:18:53 +0900 Subject: [PATCH 06/14] fix wound-wait --- wait-die/build/.ninja_deps | Bin 48508 -> 48508 bytes wait-die/build/.ninja_log | 28 +- wait-die/build/CMakeFiles/CMakeError.log | 18 +- wait-die/build/CMakeFiles/CMakeOutput.log | 56 +- wait-die/build/build.ninja | 34 +- wait-die/build/test/make_db_test | Bin 1165216 -> 1165096 bytes wait-die/include/transaction.hh | 65 + wait-die/ss2pl.cc | 25 +- wait-die/transaction.cc | 342 +++ wait-die/wait-die/CMakeLists.txt | 78 - wait-die/wait-die/README.md | 48 - wait-die/wait-die/build/.ninja_deps | Bin 34552 -> 0 bytes wait-die/wait-die/build/.ninja_log | 8 - wait-die/wait-die/build/CMakeCache.txt | 473 ---- .../wait-die/build/CMakeFiles/CMakeError.log | 50 - .../wait-die/build/CMakeFiles/CMakeOutput.log | 235 -- .../build/CMakeFiles/TargetDirectories.txt | 3 - wait-die/wait-die/build/build.ninja | 186 -- wait-die/wait-die/build/cmake_install.cmake | 49 - wait-die/wait-die/build/rules.ninja | 64 - wait-die/wait-die/include/common.hh | 57 - wait-die/wait-die/include/transaction.hh | 68 - wait-die/wait-die/include/tuple.hh | 22 - wait-die/wait-die/script/comparecc.sh | 6 - wait-die/wait-die/script/high_contention.sh | 15 - wait-die/wait-die/script/high_contentionA.sh | 7 - wait-die/wait-die/script/low_contention.sh | 7 - wait-die/wait-die/transaction.cc | 435 ---- wait-die/wait-die/waitdie.cc | 167 -- wound-w/build/.ninja_log | 8 - wound-w/build/CMakeDoxyfile.in | 280 --- wound-w/build/CMakeDoxygenDefaults.cmake | 672 ------ .../CMakeFiles/3.17.0/CMakeCXXCompiler.cmake | 88 - .../3.17.0/CMakeDetermineCompilerABI_CXX.bin | Bin 16560 -> 0 bytes .../build/CMakeFiles/3.17.0/CMakeSystem.cmake | 15 - .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 660 ------ .../CheckFunctionExists.cxx | 28 - .../build/CMakeFiles/TargetDirectories.txt | 3 - wound-w/build/CMakeFiles/cmake.check_cache | 1 - wound-w/include/result.hh | 9 - wound-w/include/ss2pl_op_element.hh | 18 - wound-w/include/util.hh | 13 - wound-w/result.cc | 11 - wound-w/script/test_cache_ana.sh | 227 -- wound-w/script/test_t1k.sh | 382 ---- wound-w/script/test_t1m.sh | 382 ---- wound-w/script/test_t200.sh | 382 ---- wound-w/script/tst200-1k-1m.sh | 1991 ----------------- wound-w/script/ycsb-xope.sh | 106 - wound-w/script/ycsb-xrratio.sh | 102 - wound-w/script/ycsb-xrs.sh | 118 - wound-w/script/ycsb-xskew.sh | 131 -- wound-w/script/ycsb-xth.sh | 124 - wound-w/script/ycsb-xval.sh | 122 - wound-w/script/ycsbA-xrs-cache.sh | 52 - wound-w/script/ycsbA.sh | 510 ----- wound-w/script/ycsbB.sh | 510 ----- wound-w/script/ycsbC.sh | 187 -- wound-w/test/CMakeLists.txt | 76 - wound-w/test/make_db_test.cpp | 40 - wound-w/util.cc | 117 - {wound-w => wound-wait}/CMakeLists.txt | 0 {wound-w => wound-wait}/README.md | 13 - {wound-w => wound-wait}/build/.ninja_deps | Bin 34528 -> 34528 bytes wound-wait/build/.ninja_log | 8 + {wound-w => wound-wait}/build/CMakeCache.txt | 10 +- .../build/CMakeDoxyfile.in | 0 .../build/CMakeDoxygenDefaults.cmake | 0 .../CMakeFiles/3.17.0/CMakeCXXCompiler.cmake | 0 .../3.17.0/CMakeDetermineCompilerABI_CXX.bin | Bin .../build/CMakeFiles/3.17.0/CMakeSystem.cmake | 0 .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 0 .../build/CMakeFiles/CMakeError.log | 22 +- .../build/CMakeFiles/CMakeOutput.log | 68 +- .../CheckFunctionExists.cxx | 0 .../build/CMakeFiles/TargetDirectories.txt | 3 + .../build/CMakeFiles/cmake.check_cache | 0 {wound-w => wound-wait}/build/build.ninja | 6 +- .../build/cmake_install.cmake | 4 +- {wound-w => wound-wait}/build/rules.ninja | 2 +- {wound-w => wound-wait}/include/common.hh | 0 .../wait-die => wound-wait}/include/result.hh | 0 .../include/ss2pl_op_element.hh | 0 .../include/transaction.hh | 0 {wound-w => wound-wait}/include/tuple.hh | 6 - .../wait-die => wound-wait}/include/util.hh | 0 {wait-die/wait-die => wound-wait}/result.cc | 0 .../script/test_cache_ana.sh | 0 .../script/test_t1k.sh | 0 .../script/test_t1m.sh | 0 .../script/test_t200.sh | 0 .../script/tst200-1k-1m.sh | 0 .../script/ycsb-xope.sh | 0 .../script/ycsb-xrratio.sh | 0 .../script/ycsb-xrs.sh | 0 .../script/ycsb-xskew.sh | 0 .../script/ycsb-xth.sh | 0 .../script/ycsb-xval.sh | 0 .../script/ycsbA-xrs-cache.sh | 0 .../wait-die => wound-wait}/script/ycsbA.sh | 0 .../wait-die => wound-wait}/script/ycsbB.sh | 0 .../wait-die => wound-wait}/script/ycsbC.sh | 0 {wound-w => wound-wait}/ss2pl.cc | 0 {wound-w => wound-wait}/transaction.cc | 3 +- {wait-die/wait-die => wound-wait}/util.cc | 0 105 files changed, 531 insertions(+), 9525 deletions(-) delete mode 100644 wait-die/wait-die/CMakeLists.txt delete mode 100644 wait-die/wait-die/README.md delete mode 100644 wait-die/wait-die/build/.ninja_deps delete mode 100644 wait-die/wait-die/build/.ninja_log delete mode 100644 wait-die/wait-die/build/CMakeCache.txt delete mode 100644 wait-die/wait-die/build/CMakeFiles/CMakeError.log delete mode 100644 wait-die/wait-die/build/CMakeFiles/CMakeOutput.log delete mode 100644 wait-die/wait-die/build/CMakeFiles/TargetDirectories.txt delete mode 100644 wait-die/wait-die/build/build.ninja delete mode 100644 wait-die/wait-die/build/cmake_install.cmake delete mode 100644 wait-die/wait-die/build/rules.ninja delete mode 100644 wait-die/wait-die/include/common.hh delete mode 100644 wait-die/wait-die/include/transaction.hh delete mode 100644 wait-die/wait-die/include/tuple.hh delete mode 100755 wait-die/wait-die/script/comparecc.sh delete mode 100755 wait-die/wait-die/script/high_contention.sh delete mode 100755 wait-die/wait-die/script/high_contentionA.sh delete mode 100755 wait-die/wait-die/script/low_contention.sh delete mode 100644 wait-die/wait-die/transaction.cc delete mode 100644 wait-die/wait-die/waitdie.cc delete mode 100644 wound-w/build/.ninja_log delete mode 100644 wound-w/build/CMakeDoxyfile.in delete mode 100644 wound-w/build/CMakeDoxygenDefaults.cmake delete mode 100644 wound-w/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake delete mode 100755 wound-w/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin delete mode 100644 wound-w/build/CMakeFiles/3.17.0/CMakeSystem.cmake delete mode 100644 wound-w/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp delete mode 100644 wound-w/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx delete mode 100644 wound-w/build/CMakeFiles/TargetDirectories.txt delete mode 100644 wound-w/build/CMakeFiles/cmake.check_cache delete mode 100644 wound-w/include/result.hh delete mode 100644 wound-w/include/ss2pl_op_element.hh delete mode 100644 wound-w/include/util.hh delete mode 100644 wound-w/result.cc delete mode 100755 wound-w/script/test_cache_ana.sh delete mode 100755 wound-w/script/test_t1k.sh delete mode 100755 wound-w/script/test_t1m.sh delete mode 100755 wound-w/script/test_t200.sh delete mode 100755 wound-w/script/tst200-1k-1m.sh delete mode 100755 wound-w/script/ycsb-xope.sh delete mode 100755 wound-w/script/ycsb-xrratio.sh delete mode 100755 wound-w/script/ycsb-xrs.sh delete mode 100755 wound-w/script/ycsb-xskew.sh delete mode 100755 wound-w/script/ycsb-xth.sh delete mode 100755 wound-w/script/ycsb-xval.sh delete mode 100755 wound-w/script/ycsbA-xrs-cache.sh delete mode 100755 wound-w/script/ycsbA.sh delete mode 100755 wound-w/script/ycsbB.sh delete mode 100755 wound-w/script/ycsbC.sh delete mode 100644 wound-w/test/CMakeLists.txt delete mode 100644 wound-w/test/make_db_test.cpp delete mode 100644 wound-w/util.cc rename {wound-w => wound-wait}/CMakeLists.txt (100%) rename {wound-w => wound-wait}/README.md (84%) rename {wound-w => wound-wait}/build/.ninja_deps (97%) create mode 100644 wound-wait/build/.ninja_log rename {wound-w => wound-wait}/build/CMakeCache.txt (98%) rename {wait-die/wait-die => wound-wait}/build/CMakeDoxyfile.in (100%) rename {wait-die/wait-die => wound-wait}/build/CMakeDoxygenDefaults.cmake (100%) rename {wait-die/wait-die => wound-wait}/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake (100%) rename {wait-die/wait-die => wound-wait}/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin (100%) rename {wait-die/wait-die => wound-wait}/build/CMakeFiles/3.17.0/CMakeSystem.cmake (100%) rename {wait-die/wait-die => wound-wait}/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp (100%) rename {wound-w => wound-wait}/build/CMakeFiles/CMakeError.log (60%) rename {wound-w => wound-wait}/build/CMakeFiles/CMakeOutput.log (85%) rename {wait-die/wait-die => wound-wait}/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx (100%) create mode 100644 wound-wait/build/CMakeFiles/TargetDirectories.txt rename {wait-die/wait-die => wound-wait}/build/CMakeFiles/cmake.check_cache (100%) rename {wound-w => wound-wait}/build/build.ninja (98%) rename {wound-w => wound-wait}/build/cmake_install.cmake (90%) rename {wound-w => wound-wait}/build/rules.ninja (96%) rename {wound-w => wound-wait}/include/common.hh (100%) rename {wait-die/wait-die => wound-wait}/include/result.hh (100%) rename {wait-die/wait-die => wound-wait}/include/ss2pl_op_element.hh (100%) rename {wound-w => wound-wait}/include/transaction.hh (100%) rename {wound-w => wound-wait}/include/tuple.hh (74%) rename {wait-die/wait-die => wound-wait}/include/util.hh (100%) rename {wait-die/wait-die => wound-wait}/result.cc (100%) rename {wait-die/wait-die => wound-wait}/script/test_cache_ana.sh (100%) rename {wait-die/wait-die => wound-wait}/script/test_t1k.sh (100%) rename {wait-die/wait-die => wound-wait}/script/test_t1m.sh (100%) rename {wait-die/wait-die => wound-wait}/script/test_t200.sh (100%) rename {wait-die/wait-die => wound-wait}/script/tst200-1k-1m.sh (100%) rename {wait-die/wait-die => wound-wait}/script/ycsb-xope.sh (100%) rename {wait-die/wait-die => wound-wait}/script/ycsb-xrratio.sh (100%) rename {wait-die/wait-die => wound-wait}/script/ycsb-xrs.sh (100%) rename {wait-die/wait-die => wound-wait}/script/ycsb-xskew.sh (100%) rename {wait-die/wait-die => wound-wait}/script/ycsb-xth.sh (100%) rename {wait-die/wait-die => wound-wait}/script/ycsb-xval.sh (100%) rename {wait-die/wait-die => wound-wait}/script/ycsbA-xrs-cache.sh (100%) rename {wait-die/wait-die => wound-wait}/script/ycsbA.sh (100%) rename {wait-die/wait-die => wound-wait}/script/ycsbB.sh (100%) rename {wait-die/wait-die => wound-wait}/script/ycsbC.sh (100%) rename {wound-w => wound-wait}/ss2pl.cc (100%) rename {wound-w => wound-wait}/transaction.cc (99%) rename {wait-die/wait-die => wound-wait}/util.cc (100%) diff --git a/wait-die/build/.ninja_deps b/wait-die/build/.ninja_deps index d0878100c291d8cb87d5fa9ec025f755154af371..1293b83cdd2b0670dc5883f65626d19d149d6799 100644 GIT binary patch delta 2376 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 ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/ccMpEEPw.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/cc9RDLhy.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -182,7 +182,7 @@ Parsed CXX implicit link information from above output: arg [-znow] ==> ignore arg [-zrelro] ==> ignore arg [-o] ==> ignore - arg [cmTC_8f4de] ==> ignore + arg [cmTC_158a9] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore @@ -194,7 +194,7 @@ Parsed CXX implicit link information from above output: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] - arg [CMakeFiles/cmTC_8f4de.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [CMakeFiles/cmTC_158a9.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore arg [-lstdc++] ==> lib [stdc++] arg [-lm] ==> lib [m] arg [-lgcc_s] ==> lib [gcc_s] @@ -220,16 +220,16 @@ Parsed CXX implicit link information from above output: Determining if the include file pthread.h exists passed with the following output: Change Dir: /home/tngngn/ccbench/wait-die/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_81a88 && [1/2] Building CXX object CMakeFiles/cmTC_81a88.dir/CheckIncludeFile.cxx.o -[2/2] Linking CXX executable cmTC_81a88 +Run Build Command(s):/usr/local/bin/ninja cmTC_457bd && [1/2] Building CXX object CMakeFiles/cmTC_457bd.dir/CheckIncludeFile.cxx.o +[2/2] Linking CXX executable cmTC_457bd Determining if the function pthread_create exists in the pthread passed with the following output: Change Dir: /home/tngngn/ccbench/wait-die/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_0c277 && [1/2] Building CXX object CMakeFiles/cmTC_0c277.dir/CheckFunctionExists.cxx.o -[2/2] Linking CXX executable cmTC_0c277 +Run Build Command(s):/usr/local/bin/ninja cmTC_fe26e && [1/2] Building CXX object CMakeFiles/cmTC_fe26e.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_fe26e diff --git a/wait-die/build/build.ninja b/wait-die/build/build.ninja index 5911c46d..e881b0fe 100644 --- a/wait-die/build/build.ninja +++ b/wait-die/build/build.ninja @@ -84,8 +84,6 @@ build CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o: CXX_COMPI FLAGS = -O3 -DNDEBUG -std=c++17 OBJECT_DIR = CMakeFiles/ss2pl.exe.dir OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ - TARGET_PDB = ss2pl.exe.pdb build CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Release /home/tngngn/ccbench/common/util.cc || cmake_object_order_depends_target_ss2pl.exe_Release DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 @@ -93,8 +91,6 @@ build CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o: CXX_COMPILE FLAGS = -O3 -DNDEBUG -std=c++17 OBJECT_DIR = CMakeFiles/ss2pl.exe.dir OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ - TARGET_PDB = ss2pl.exe.pdb build CMakeFiles/ss2pl.exe.dir/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../result.cc || cmake_object_order_depends_target_ss2pl.exe_Release DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 @@ -102,8 +98,6 @@ build CMakeFiles/ss2pl.exe.dir/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Release .. FLAGS = -O3 -DNDEBUG -std=c++17 OBJECT_DIR = CMakeFiles/ss2pl.exe.dir OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ - TARGET_PDB = ss2pl.exe.pdb build CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../ss2pl.cc || cmake_object_order_depends_target_ss2pl.exe_Release DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 @@ -111,8 +105,6 @@ build CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../ FLAGS = -O3 -DNDEBUG -std=c++17 OBJECT_DIR = CMakeFiles/ss2pl.exe.dir OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ - TARGET_PDB = ss2pl.exe.pdb build CMakeFiles/ss2pl.exe.dir/transaction.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../transaction.cc || cmake_object_order_depends_target_ss2pl.exe_Release DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 @@ -120,8 +112,6 @@ build CMakeFiles/ss2pl.exe.dir/transaction.cc.o: CXX_COMPILER__ss2pl.2eexe_Relea FLAGS = -O3 -DNDEBUG -std=c++17 OBJECT_DIR = CMakeFiles/ss2pl.exe.dir OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ - TARGET_PDB = ss2pl.exe.pdb build CMakeFiles/ss2pl.exe.dir/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../util.cc || cmake_object_order_depends_target_ss2pl.exe_Release DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 @@ -129,8 +119,6 @@ build CMakeFiles/ss2pl.exe.dir/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../u FLAGS = -O3 -DNDEBUG -std=c++17 OBJECT_DIR = CMakeFiles/ss2pl.exe.dir OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ - TARGET_PDB = ss2pl.exe.pdb # ============================================================================= @@ -146,9 +134,8 @@ build ss2pl.exe: CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Release CMakeFiles/ss2pl.exe OBJECT_DIR = CMakeFiles/ss2pl.exe.dir POST_BUILD = : PRE_LINK = : - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ TARGET_FILE = ss2pl.exe - TARGET_PDB = ss2pl.exe.pdb + TARGET_PDB = ss2pl.exe.dbg # ============================================================================= # Write statements declared in CMakeLists.txt: @@ -206,8 +193,6 @@ build test/CMakeFiles/make_db_test.dir/make_db_test.cpp.o: CXX_COMPILER__make_db INCLUDES = -I../../third_party/googletest/googletest/include OBJECT_DIR = test/CMakeFiles/make_db_test.dir OBJECT_FILE_DIR = test/CMakeFiles/make_db_test.dir - TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ - TARGET_PDB = test/make_db_test.pdb build test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common/result.cc.o: CXX_COMPILER__make_db_test_Release /home/tngngn/ccbench/common/result.cc || cmake_object_order_depends_target_make_db_test_Release DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 @@ -216,8 +201,6 @@ build test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common/result.cc.o: C INCLUDES = -I../../third_party/googletest/googletest/include OBJECT_DIR = test/CMakeFiles/make_db_test.dir OBJECT_FILE_DIR = test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common - TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ - TARGET_PDB = test/make_db_test.pdb build test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common/util.cc.o: CXX_COMPILER__make_db_test_Release /home/tngngn/ccbench/common/util.cc || cmake_object_order_depends_target_make_db_test_Release DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 @@ -226,8 +209,6 @@ build test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common/util.cc.o: CXX INCLUDES = -I../../third_party/googletest/googletest/include OBJECT_DIR = test/CMakeFiles/make_db_test.dir OBJECT_FILE_DIR = test/CMakeFiles/make_db_test.dir/home/tngngn/ccbench/common - TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ - TARGET_PDB = test/make_db_test.pdb build test/CMakeFiles/make_db_test.dir/__/result.cc.o: CXX_COMPILER__make_db_test_Release ../result.cc || cmake_object_order_depends_target_make_db_test_Release DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 @@ -236,8 +217,6 @@ build test/CMakeFiles/make_db_test.dir/__/result.cc.o: CXX_COMPILER__make_db_tes INCLUDES = -I../../third_party/googletest/googletest/include OBJECT_DIR = test/CMakeFiles/make_db_test.dir OBJECT_FILE_DIR = test/CMakeFiles/make_db_test.dir/__ - TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ - TARGET_PDB = test/make_db_test.pdb build test/CMakeFiles/make_db_test.dir/__/transaction.cc.o: CXX_COMPILER__make_db_test_Release ../transaction.cc || cmake_object_order_depends_target_make_db_test_Release DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 @@ -246,8 +225,6 @@ build test/CMakeFiles/make_db_test.dir/__/transaction.cc.o: CXX_COMPILER__make_d INCLUDES = -I../../third_party/googletest/googletest/include OBJECT_DIR = test/CMakeFiles/make_db_test.dir OBJECT_FILE_DIR = test/CMakeFiles/make_db_test.dir/__ - TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ - TARGET_PDB = test/make_db_test.pdb build test/CMakeFiles/make_db_test.dir/__/util.cc.o: CXX_COMPILER__make_db_test_Release ../util.cc || cmake_object_order_depends_target_make_db_test_Release DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 @@ -256,8 +233,6 @@ build test/CMakeFiles/make_db_test.dir/__/util.cc.o: CXX_COMPILER__make_db_test_ INCLUDES = -I../../third_party/googletest/googletest/include OBJECT_DIR = test/CMakeFiles/make_db_test.dir OBJECT_FILE_DIR = test/CMakeFiles/make_db_test.dir/__ - TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ - TARGET_PDB = test/make_db_test.pdb # ============================================================================= @@ -273,9 +248,8 @@ build test/make_db_test: CXX_EXECUTABLE_LINKER__make_db_test_Release test/CMakeF OBJECT_DIR = test/CMakeFiles/make_db_test.dir POST_BUILD = : PRE_LINK = : - TARGET_COMPILE_PDB = test/CMakeFiles/make_db_test.dir/ TARGET_FILE = test/make_db_test - TARGET_PDB = test/make_db_test.pdb + TARGET_PDB = make_db_test.dbg # ============================================================================= # Target aliases. @@ -306,14 +280,14 @@ build test/all: phony test/make_db_test ############################################# # Re-run CMake if any of its inputs changed. -build build.ninja: RERUN_CMAKE | ../CMakeLists.txt ../test/CMakeLists.txt /home/tngngn/ccbench/cmake/CompileOptions.cmake /home/tngngn/ccbench/cmake/Findgflags.cmake /home/tngngn/ccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx +build build.ninja: RERUN_CMAKE | ../CMakeLists.txt ../test/CMakeLists.txt /home/tngngn/ccbench/cmake/CompileOptions.cmake /home/tngngn/ccbench/cmake/Findgflags.cmake /home/tngngn/ccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake pool = console ############################################# # A missing CMake input file is not an error. -build ../CMakeLists.txt ../test/CMakeLists.txt /home/tngngn/ccbench/cmake/CompileOptions.cmake /home/tngngn/ccbench/cmake/Findgflags.cmake /home/tngngn/ccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx: phony +build ../CMakeLists.txt ../test/CMakeLists.txt /home/tngngn/ccbench/cmake/CompileOptions.cmake /home/tngngn/ccbench/cmake/Findgflags.cmake /home/tngngn/ccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake: phony ############################################# diff --git a/wait-die/build/test/make_db_test b/wait-die/build/test/make_db_test index 934043a7fb9122fcdd8475b563f48d5b499315af..d1c85b888026a807eb8c94ecf169b22a952b9210 100755 GIT binary patch delta 278394 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%0DT6A}KBY6D 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
|}J@ku!%AEa5zBm|3NfvXE(i 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 delta 280327 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 + +#include "../../include/procedure.hh" +#include "../../include/result.hh" +#include "../../include/rwlock.hh" +#include "../../include/string.hh" +#include "../../include/util.hh" +#include "ss2pl_op_element.hh" +#include "tuple.hh" + +enum class TransactionStatus : uint8_t { + inFlight, + committed, + aborted, +}; + +extern void writeValGenerator(char *writeVal, size_t val_size, size_t thid); + +class TxExecutor { +public: + alignas(CACHE_LINE_SIZE) int thid_; + std::vector r_lock_list_; + std::vector w_lock_list_; + TransactionStatus status_ = TransactionStatus::inFlight; + Result *sres_; + vector > read_set_; + vector > write_set_; + vector pro_set_; + + char write_val_[VAL_SIZE]; + char return_val_[VAL_SIZE]; + + TxExecutor(int thid, Result *sres) : thid_(thid), sres_(sres) { + read_set_.reserve(FLAGS_max_ope); + write_set_.reserve(FLAGS_max_ope); + pro_set_.reserve(FLAGS_max_ope); + r_lock_list_.reserve(FLAGS_max_ope); + w_lock_list_.reserve(FLAGS_max_ope); + + genStringRepeatedNumber(write_val_, VAL_SIZE, thid); + } + + SetElement *searchReadSet(uint64_t key); + + SetElement *searchWriteSet(uint64_t key); + + void begin(); + + void read(uint64_t key); + + void write(uint64_t key); + + void readWrite(uint64_t key); + + void commit(); + + void abort(); + + void unlockList(); + + // inline + Tuple *get_tuple(Tuple *table, uint64_t key) { return &table[key]; } +}; diff --git a/wait-die/ss2pl.cc b/wait-die/ss2pl.cc index 069cca42..22829295 100644 --- a/wait-die/ss2pl.cc +++ b/wait-die/ss2pl.cc @@ -1,3 +1,4 @@ + #include //isdigit, #include #include //strlen, @@ -30,8 +31,6 @@ #include "include/transaction.hh" #include "include/util.hh" -long long int central_timestamp = 0; - void worker(size_t thid, char &ready, const bool &start, const bool &quit) { Result &myres = std::ref(SS2PLResult[thid]); Xoroshiro128Plus rnd; @@ -56,7 +55,6 @@ void worker(size_t thid, char &ready, const bool &start, const bool &quit) { while (!loadAcquire(quit)) { makeProcedure(trans.pro_set_, rnd, zipf, FLAGS_tuple_num, FLAGS_max_ope, FLAGS_thread_num, FLAGS_rratio, FLAGS_rmw, FLAGS_ycsb, false, thid, myres); - trans.txid_ = __atomic_add_fetch(¢ral_timestamp, 1, __ATOMIC_SEQ_CST); RETRY: if (loadAcquire(quit)) break; if (thid == 0) leaderBackoffWork(backoff, SS2PLResult); @@ -92,26 +90,6 @@ void worker(size_t thid, char &ready, const bool &start, const bool &quit) { return; } -void touchTuples([[maybe_unused]] size_t thid, uint64_t start, uint64_t end) { - Result &myres = std::ref(SS2PLResult[thid]); - TxExecutor trans(thid, (Result *)&myres); - for (auto i = start; i <= end; ++i) { - trans.warmupTuple(i); - } -} - -void warmup() { - - size_t maxthread = decideParallelBuildNumber(FLAGS_tuple_num); - std::vector thv; - for (size_t i = 0; i < maxthread; ++i) { - thv.emplace_back(touchTuples, i, i * (FLAGS_tuple_num / maxthread), - (i + 1) * (FLAGS_tuple_num / maxthread) - 1); - } - for (auto &th : thv) th.join(); - -} - int main(int argc, char *argv[]) try { gflags::SetUsageMessage("2PL benchmark."); gflags::ParseCommandLineFlags(&argc, &argv, true); @@ -121,7 +99,6 @@ int main(int argc, char *argv[]) try { alignas(CACHE_LINE_SIZE) bool start = false; alignas(CACHE_LINE_SIZE) bool quit = false; initResult(); - std::vector readys(FLAGS_thread_num); std::vector thv; for (size_t i = 0; i < FLAGS_thread_num; ++i) diff --git a/wait-die/transaction.cc b/wait-die/transaction.cc index e69de29b..8f684588 100644 --- a/wait-die/transaction.cc +++ b/wait-die/transaction.cc @@ -0,0 +1,342 @@ + +#include +#include + +#include + +#include "../include/backoff.hh" +#include "../include/debug.hh" +#include "../include/procedure.hh" +#include "../include/result.hh" +#include "include/common.hh" +#include "include/transaction.hh" + +using namespace std; + +extern void display_procedure_vector(std::vector &pro); + +/** + * @brief Search xxx set + * @detail Search element of local set corresponding to given key. + * In this prototype system, the value to be updated for each worker thread + * is fixed for high performance, so it is only necessary to check the key match. + * @param Key [in] the key of key-value + * @return Corresponding element of local set + */ +inline SetElement *TxExecutor::searchReadSet(uint64_t key) { + for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) { + if ((*itr).key_ == key) return &(*itr); + } + + return nullptr; +} + +/** + * @brief Search xxx set + * @detail Search element of local set corresponding to given key. + * In this prototype system, the value to be updated for each worker thread + * is fixed for high performance, so it is only necessary to check the key match. + * @param Key [in] the key of key-value + * @return Corresponding element of local set + */ +inline SetElement *TxExecutor::searchWriteSet(uint64_t key) { + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { + if ((*itr).key_ == key) return &(*itr); + } + + return nullptr; +} + +/** + * @brief function about abort. + * Clean-up local read/write set. + * Release locks. + * @return void + */ +void TxExecutor::abort() { + /** + * Release locks + */ + unlockList(); + + /** + * Clean-up local read/write set. + */ + read_set_.clear(); + write_set_.clear(); + + ++sres_->local_abort_counts_; + +#if BACK_OFF +#if ADD_ANALYSIS + uint64_t start(rdtscp()); +#endif + + Backoff::backoff(FLAGS_clocks_per_us); + +#if ADD_ANALYSIS + sres_->local_backoff_latency_ += rdtscp() - start; +#endif + +#endif +} + +/** + * @brief success termination of transaction. + * @return void + */ +void TxExecutor::commit() { + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { + /** + * update payload. + */ + memcpy((*itr).rcdptr_->val_, write_val_, VAL_SIZE); + } + + /** + * Release locks. + */ + unlockList(); + + /** + * Clean-up local read/write set. + */ + read_set_.clear(); + write_set_.clear(); +} + +/** + * @brief Initialize function of transaction. + * Allocate timestamp. + * @return void + */ +void TxExecutor::begin() { this->status_ = TransactionStatus::inFlight; } + +/** + * @brief Transaction read function. + * @param [in] key The key of key-value + */ +void TxExecutor::read(uint64_t key) { +#if ADD_ANALYSIS + uint64_t start = rdtscp(); +#endif // ADD_ANALYSIS + + /** + * read-own-writes or re-read from local read set. + */ + if (searchWriteSet(key) || searchReadSet(key)) goto FINISH_READ; + + /** + * Search tuple from data structure. + */ + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#if ADD_ANALYSIS + ++sres_->local_tree_traversal_; +#endif +#else + tuple = get_tuple(Table, key); +#endif + +// wait-die for read added by nguyen +if (tuple->lock_.r_trylock()) { + r_lock_list_.emplace_back(&tuple->lock_); + read_set_.emplace_back(key, tuple, tuple->val_); + } else { + if(thid_ < tuple->reader_) { + tuple->reader_ = thid_; + tuple->lock_.r_lock(); + r_lock_list_.emplace_back(&tuple->lock_); + read_set_.emplace_back(key, tuple, tuple->val_); + } else { + this->status_ = TransactionStatus::aborted; + goto FINISH_READ; + } + } +//finish wiat-die for read + +FINISH_READ: + +#if ADD_ANALYSIS + sres_->local_read_latency_ += rdtscp() - start; +#endif + return; +} + +/** + * @brief transaction write operation + * @param [in] key The key of key-value + * @return void + */ +void TxExecutor::write(uint64_t key) { +#if ADD_ANALYSIS + uint64_t start = rdtscp(); +#endif + + // if it already wrote the key object once. + if (searchWriteSet(key)) goto FINISH_WRITE; + + /** + * Search tuple from data structure. + */ + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#if ADD_ANALYSIS + ++sres_->local_tree_traversal_; +#endif +#else + tuple = get_tuple(Table, key); +#endif + + // wait-die for write added by nguyen + for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { + if ((*rItr).key_ == key) { // hit + if (!(*rItr).rcdptr_->lock_.tryupgrade()) { + if(thid_ < (*rItr).rcdptr_->writer_) { + (*rItr).rcdptr_->writer_ = thid_; + (*rItr).rcdptr_->lock_.upgrade(); + } else { + this->status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + } + + // upgrade success + // remove old element from read lock list + + for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); + ++lItr) { + if (*lItr == &((*rItr).rcdptr_->lock_)) { + write_set_.emplace_back(key, (*rItr).rcdptr_); + w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); + r_lock_list_.erase(lItr); + break; + } + } + + read_set_.erase(rItr); + goto FINISH_WRITE; + } + } + + if (!tuple->lock_.w_trylock()) { + if(thid_ < tuple->writer_) { + tuple->writer_ = thid_; + tuple->lock_.w_lock(); + } else { + this->status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + } + // finish wait-die for write + + /** + * Register the contents to write lock list and write set. + */ + w_lock_list_.emplace_back(&tuple->lock_); + write_set_.emplace_back(key, tuple); + +FINISH_WRITE: +#if ADD_ANALYSIS + sres_->local_write_latency_ += rdtscp() - start; +#endif // ADD_ANALYSIS + return; +} + +/** + * @brief transaction readWrite (RMW) operation + */ +void TxExecutor::readWrite(uint64_t key) { + // if it already wrote the key object once. + if (searchWriteSet(key)) goto FINISH_WRITE; + + /** + * Search tuple from data structure. + */ + Tuple *tuple; +#if MASSTREE_USE + tuple = MT.get_value(key); +#if ADD_ANALYSIS + ++sres_->local_tree_traversal_; +#endif +#else + tuple = get_tuple(Table, key); +#endif + + // wait-die for readWrite added by nguyen + for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { + if ((*rItr).key_ == key) { // hit + if (!(*rItr).rcdptr_->lock_.tryupgrade()) { + if(thid_ < (*rItr).rcdptr_->reader_) { + (*rItr).rcdptr_->reader_ = UNLOCKED; + (*rItr).rcdptr_->writer_ = thid_; + (*rItr).rcdptr_->lock_.upgrade(); + } else { + this->status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + } + + // upgrade success + // remove old element from read lock list + + for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); + ++lItr) { + if (*lItr == &((*rItr).rcdptr_->lock_)) { + write_set_.emplace_back(key, (*rItr).rcdptr_); + w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); + r_lock_list_.erase(lItr); + break; + } + } + + read_set_.erase(rItr); + goto FINISH_WRITE; + } + } + + if (!tuple->lock_.w_trylock()) { + if(thid_ < tuple->reader_) { + tuple->reader_ = UNLOCKED; + tuple->writer_ = thid_; + tuple->lock_.w_lock(); + } else { + this->status_ = TransactionStatus::aborted; + goto FINISH_WRITE; + } + } + // finish wait-die for readWrite + + // read payload + memcpy(this->return_val_, tuple->val_, VAL_SIZE); + // finish read. + + /** + * Register the contents to write lock list and write set. + */ + w_lock_list_.emplace_back(&tuple->lock_); + write_set_.emplace_back(key, tuple); + +FINISH_WRITE: + return; +} + +/** + * @brief unlock and clean-up local lock set. + * @return void + */ +void TxExecutor::unlockList() { + for (auto itr = r_lock_list_.begin(); itr != r_lock_list_.end(); ++itr) + (*itr)->r_unlock(); + + for (auto itr = w_lock_list_.begin(); itr != w_lock_list_.end(); ++itr) + (*itr)->w_unlock(); + + /** + * Clean-up local lock set. + */ + r_lock_list_.clear(); + w_lock_list_.clear(); +} diff --git a/wait-die/wait-die/CMakeLists.txt b/wait-die/wait-die/CMakeLists.txt deleted file mode 100644 index 1d3fb04c..00000000 --- a/wait-die/wait-die/CMakeLists.txt +++ /dev/null @@ -1,78 +0,0 @@ -cmake_minimum_required(VERSION 3.10) - -project(ccbench_waitdie - VERSION 0.0.1 - DESCRIPTION "ss2pl of ccbench" - LANGUAGES CXX) - -list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake") - -option(ENABLE_SANITIZER "enable sanitizer on debug build" ON) -option(ENABLE_UB_SANITIZER "enable undefined behavior sanitizer on debug build" OFF) -option(ENABLE_COVERAGE "enable coverage on debug build" OFF) - -find_package(Doxygen) -find_package(Threads REQUIRED) -find_package(gflags REQUIRED) -find_package(glog REQUIRED) -find_package(Boost - COMPONENTS filesystem) - -include(GNUInstallDirs) -include(CMakePackageConfigHelpers) -include(CompileOptions) - -file(GLOB ERMIA_SOURCES - "../common/result.cc" - "../common/util.cc" - "waitdie.cc" - "result.cc" - "transaction.cc" - "util.cc" - ) - -add_executable(waitdie.exe ${ERMIA_SOURCES}) - -target_link_libraries(waitdie.exe - Boost::filesystem - gflags::gflags - ${PROJECT_SOURCE_DIR}/../third_party/mimalloc/out/release/libmimalloc.a - ${PROJECT_SOURCE_DIR}/../third_party/masstree/libkohler_masstree_json.a - Threads::Threads - ) - -if (DEFINED ADD_ANALYSIS) - add_definitions(-DADD_ANALYSIS=${ADD_ANALYSIS}) -else () - add_definitions(-DADD_ANALYSIS=0) -endif () - -if (DEFINED BACK_OFF) - add_definitions(-DBACK_OFF=${BACK_OFF}) -else () - add_definitions(-DBACK_OFF=0) -endif () - -if (DEFINED KEY_SIZE) - add_definitions(-DKEY_SIZE=${KEY_SIZE}) -else () - add_definitions(-DKEY_SIZE=8) -endif () - -if (DEFINED KEY_SORT) - add_definitions(-DKEY_SORT=${KEY_SORT}) -else () - add_definitions(-DKEY_SORT=0) -endif () - -if (DEFINED MASSTREE_USE) - add_definitions(-DMASSTREE_USE=${MASSTREE_USE}) -else () - add_definitions(-DMASSTREE_USE=1) -endif () - -if (DEFINED VAL_SIZE) - add_definitions(-DVAL_SIZE=${VAL_SIZE}) -else () - add_definitions(-DVAL_SIZE=4) -endif () diff --git a/wait-die/wait-die/README.md b/wait-die/wait-die/README.md deleted file mode 100644 index cfb40298..00000000 --- a/wait-die/wait-die/README.md +++ /dev/null @@ -1,48 +0,0 @@ -# SS2PL wait-die variant - -## How to use -- Build masstree in ccbench directory -``` -$ ./build_tools/bootstrap.sh -``` -This makes ccbench/third_party/masstree/libkohler_masstree_json.a used by building ss2pl. -- Build mimalloc -``` -$ ./build_tools/bootstrap_mimalloc.sh -``` -This makes ccbench/third_party/mimalloc/out/release/libmimalloc.a used by building ss2pl. -- Build in wound-wait directory -``` -$ mkdir build -$ cd build -$ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release .. -$ ninja -``` -- Confirm usage -``` -$ ./waitdie.exe -help -``` -- Execution example -``` -$ numactl --interleave=all ./waitdie.exe -clocks_per_us=2100 -extime=3 -max_ope=10 -rmw=0 -rratio=100 -thread_num=224 -tuple_num=1000000 -ycsb=1 -zipf_skew=0 -``` - -## How to customize options in CMakeLists.txt -- `ADD_ANALYSIS` : If this is 1, it is deeper analysis than setting 0.
-default : `0` -- `BACK_OFF` : If this is 1, it use Cicada's backoff.
-default : `0` -- `KEY_SORT` : If this is 1, its transaction accesses records in ascending key order.
-default : `0` -- `MASSTREE_USE` : If this is 1, it use masstree as data structure. If not, it use simple array αs data structure. -default : `1` -- `VAL_SIZE` : Value of key-value size. In other words, payload size.
-default : `4` - -## Optimizations -- Backoff. -- Timeout of dead lock resolution. -- No-wait of dead lock resolution. - -## Implementation -- Lock : reader/writer lock diff --git a/wait-die/wait-die/build/.ninja_deps b/wait-die/wait-die/build/.ninja_deps deleted file mode 100644 index b36f8d6cb300f76b4b4e8a9de819726b699c6b18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34552 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 - -void* test_func(void* data) -{ - return data; -} - -int main(void) -{ - pthread_t thread; - pthread_create(&thread, NULL, test_func, NULL); - pthread_detach(thread); - pthread_cancel(thread); - pthread_join(thread, NULL); - pthread_atfork(NULL, NULL, NULL); - pthread_exit(NULL); - - return 0; -} - -Determining if the function pthread_create exists in the pthreads failed with the following output: -Change Dir: /home/tngngn/tccbench/wait-die/build/CMakeFiles/CMakeTmp - -Run Build Command(s):/usr/local/bin/ninja cmTC_4b97e && [1/2] Building CXX object CMakeFiles/cmTC_4b97e.dir/CheckFunctionExists.cxx.o -[2/2] Linking CXX executable cmTC_4b97e -FAILED: cmTC_4b97e -: && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_4b97e.dir/CheckFunctionExists.cxx.o -o cmTC_4b97e -lpthreads && : -/usr/bin/ld: -lpthreads が見つかりません -collect2: error: ld returned 1 exit status -ninja: build stopped: subcommand failed. - - - diff --git a/wait-die/wait-die/build/CMakeFiles/CMakeOutput.log b/wait-die/wait-die/build/CMakeFiles/CMakeOutput.log deleted file mode 100644 index 21b2926c..00000000 --- a/wait-die/wait-die/build/CMakeFiles/CMakeOutput.log +++ /dev/null @@ -1,235 +0,0 @@ -The system is: Linux - 5.4.0-113-generic - x86_64 -Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. -Compiler: /usr/bin/c++ -Build flags: -Id flags: - -The output was: -0 - - -Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" - -The CXX compiler identification is GNU, found in "/home/tngngn/tccbench/wait-die/build/CMakeFiles/3.17.0/CompilerIdCXX/a.out" - -Determining if the CXX compiler works passed with the following output: -Change Dir: /home/tngngn/tccbench/wait-die/build/CMakeFiles/CMakeTmp - -Run Build Command(s):/usr/local/bin/ninja cmTC_3f3ca && [1/2] Building CXX object CMakeFiles/cmTC_3f3ca.dir/testCXXCompiler.cxx.o -[2/2] Linking CXX executable cmTC_3f3ca - - - -Detecting CXX compiler ABI info compiled with the following output: -Change Dir: /home/tngngn/tccbench/wait-die/build/CMakeFiles/CMakeTmp - -Run Build Command(s):/usr/local/bin/ninja cmTC_ba609 && [1/2] Building CXX object CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o -Using built-in specs. -COLLECT_GCC=/usr/bin/c++ -OFFLOAD_TARGET_NAMES=nvptx-none:hsa -OFFLOAD_TARGET_DEFAULT=1 -Target: x86_64-linux-gnu -Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu -Thread model: posix -gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccgINL6R.s -GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) - compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP - -GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 -ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9" -ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" -ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed" -ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include" -#include "..." search starts here: -#include <...> search starts here: - /usr/include/c++/9 - /usr/include/x86_64-linux-gnu/c++/9 - /usr/include/c++/9/backward - /usr/lib/gcc/x86_64-linux-gnu/9/include - /usr/local/include - /usr/include/x86_64-linux-gnu - /usr/include -End of search list. -GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) - compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP - -GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 -Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0 -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - as -v --64 -o CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccgINL6R.s -GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34 -COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ -LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' -[2/2] Linking CXX executable cmTC_ba609 -Using built-in specs. -COLLECT_GCC=/usr/bin/c++ -COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -OFFLOAD_TARGET_NAMES=nvptx-none:hsa -OFFLOAD_TARGET_DEFAULT=1 -Target: x86_64-linux-gnu -Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu -Thread model: posix -gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) -COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ -LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_ba609' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/cc9ZQZya.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_ba609 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_ba609' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - - - -Parsed CXX implicit include dir info from above output: rv=done - found start of include info - found start of implicit include info - add: [/usr/include/c++/9] - add: [/usr/include/x86_64-linux-gnu/c++/9] - add: [/usr/include/c++/9/backward] - add: [/usr/lib/gcc/x86_64-linux-gnu/9/include] - add: [/usr/local/include] - add: [/usr/include/x86_64-linux-gnu] - add: [/usr/include] - end of search list found - collapse include dir [/usr/include/c++/9] ==> [/usr/include/c++/9] - collapse include dir [/usr/include/x86_64-linux-gnu/c++/9] ==> [/usr/include/x86_64-linux-gnu/c++/9] - collapse include dir [/usr/include/c++/9/backward] ==> [/usr/include/c++/9/backward] - collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/9/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/9/include] - collapse include dir [/usr/local/include] ==> [/usr/local/include] - collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu] - collapse include dir [/usr/include] ==> [/usr/include] - implicit include dirs: [/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include] - - -Parsed CXX implicit link information from above output: - link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] - ignore line: [Change Dir: /home/tngngn/tccbench/wait-die/build/CMakeFiles/CMakeTmp] - ignore line: [] - ignore line: [Run Build Command(s):/usr/local/bin/ninja cmTC_ba609 && [1/2] Building CXX object CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o] - ignore line: [Using built-in specs.] - ignore line: [COLLECT_GCC=/usr/bin/c++] - ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] - ignore line: [OFFLOAD_TARGET_DEFAULT=1] - ignore line: [Target: x86_64-linux-gnu] - ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] - ignore line: [Thread model: posix] - ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccgINL6R.s] - ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] - ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] - ignore line: [] - ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] - ignore line: [ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9"] - ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"] - ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed"] - ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include"] - ignore line: [#include "..." search starts here:] - ignore line: [#include <...> search starts here:] - ignore line: [ /usr/include/c++/9] - ignore line: [ /usr/include/x86_64-linux-gnu/c++/9] - ignore line: [ /usr/include/c++/9/backward] - ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/include] - ignore line: [ /usr/local/include] - ignore line: [ /usr/include/x86_64-linux-gnu] - ignore line: [ /usr/include] - ignore line: [End of search list.] - ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] - ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] - ignore line: [] - ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] - ignore line: [Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccgINL6R.s] - ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34] - ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] - ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [[2/2] Linking CXX executable cmTC_ba609] - ignore line: [Using built-in specs.] - ignore line: [COLLECT_GCC=/usr/bin/c++] - ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] - ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] - ignore line: [OFFLOAD_TARGET_DEFAULT=1] - ignore line: [Target: x86_64-linux-gnu] - ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] - ignore line: [Thread model: posix] - ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] - ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] - ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_ba609' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/cc9ZQZya.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_ba609 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] - arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore - arg [-plugin] ==> ignore - arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore - arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/cc9ZQZya.res] ==> ignore - arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore - arg [-plugin-opt=-pass-through=-lgcc] ==> ignore - arg [-plugin-opt=-pass-through=-lc] ==> ignore - arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore - arg [-plugin-opt=-pass-through=-lgcc] ==> ignore - arg [--build-id] ==> ignore - arg [--eh-frame-hdr] ==> ignore - arg [-m] ==> ignore - arg [elf_x86_64] ==> ignore - arg [--hash-style=gnu] ==> ignore - arg [--as-needed] ==> ignore - arg [-dynamic-linker] ==> ignore - arg [/lib64/ld-linux-x86-64.so.2] ==> ignore - arg [-pie] ==> ignore - arg [-znow] ==> ignore - arg [-zrelro] ==> ignore - arg [-o] ==> ignore - arg [cmTC_ba609] ==> ignore - arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore - arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore - arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore - arg [-L/usr/lib/gcc/x86_64-linux-gnu/9] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9] - arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] - arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] - arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] - arg [-L/lib/../lib] ==> dir [/lib/../lib] - arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] - arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] - arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] - arg [CMakeFiles/cmTC_ba609.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore - arg [-lstdc++] ==> lib [stdc++] - arg [-lm] ==> lib [m] - arg [-lgcc_s] ==> lib [gcc_s] - arg [-lgcc] ==> lib [gcc] - arg [-lc] ==> lib [c] - arg [-lgcc_s] ==> lib [gcc_s] - arg [-lgcc] ==> lib [gcc] - arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o] ==> ignore - arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] ==> ignore - collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9] ==> [/usr/lib/gcc/x86_64-linux-gnu/9] - collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] - collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> [/usr/lib] - collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] - collapse library dir [/lib/../lib] ==> [/lib] - collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] - collapse library dir [/usr/lib/../lib] ==> [/usr/lib] - collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> [/usr/lib] - implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc] - implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] - implicit fwks: [] - - -Determining if the include file pthread.h exists passed with the following output: -Change Dir: /home/tngngn/tccbench/wait-die/build/CMakeFiles/CMakeTmp - -Run Build Command(s):/usr/local/bin/ninja cmTC_80ac1 && [1/2] Building CXX object CMakeFiles/cmTC_80ac1.dir/CheckIncludeFile.cxx.o -[2/2] Linking CXX executable cmTC_80ac1 - - - -Determining if the function pthread_create exists in the pthread passed with the following output: -Change Dir: /home/tngngn/tccbench/wait-die/build/CMakeFiles/CMakeTmp - -Run Build Command(s):/usr/local/bin/ninja cmTC_76630 && [1/2] Building CXX object CMakeFiles/cmTC_76630.dir/CheckFunctionExists.cxx.o -[2/2] Linking CXX executable cmTC_76630 - - - diff --git a/wait-die/wait-die/build/CMakeFiles/TargetDirectories.txt b/wait-die/wait-die/build/CMakeFiles/TargetDirectories.txt deleted file mode 100644 index ea42ef9e..00000000 --- a/wait-die/wait-die/build/CMakeFiles/TargetDirectories.txt +++ /dev/null @@ -1,3 +0,0 @@ -/home/tngngn/tccbench/wait-die/build/CMakeFiles/rebuild_cache.dir -/home/tngngn/tccbench/wait-die/build/CMakeFiles/edit_cache.dir -/home/tngngn/tccbench/wait-die/build/CMakeFiles/waitdie.exe.dir diff --git a/wait-die/wait-die/build/build.ninja b/wait-die/wait-die/build/build.ninja deleted file mode 100644 index 7d76183a..00000000 --- a/wait-die/wait-die/build/build.ninja +++ /dev/null @@ -1,186 +0,0 @@ -# CMAKE generated file: DO NOT EDIT! -# Generated by "Ninja" Generator, CMake Version 3.17 - -# This file contains all the build statements describing the -# compilation DAG. - -# ============================================================================= -# Write statements declared in CMakeLists.txt: -# -# Which is the root file. -# ============================================================================= - -# ============================================================================= -# Project: ccbench_waitdie -# Configurations: Release -# ============================================================================= - -############################################# -# Minimal version of Ninja required by this file - -ninja_required_version = 1.5 - - -############################################# -# Set configuration variable for custom commands. - -CONFIGURATION = Release -# ============================================================================= -# Include auxiliary files. - - -############################################# -# Include rules file. - -include rules.ninja - - -############################################# -# Utility command for rebuild_cache - -build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND - COMMAND = cd /home/tngngn/tccbench/wait-die/build && /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/tccbench/wait-die -B/home/tngngn/tccbench/wait-die/build - DESC = Running CMake to regenerate build system... - pool = console - restat = 1 - -build rebuild_cache: phony CMakeFiles/rebuild_cache.util - - -############################################# -# Utility command for edit_cache - -build CMakeFiles/edit_cache.util: CUSTOM_COMMAND - COMMAND = cd /home/tngngn/tccbench/wait-die/build && /usr/local/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. - DESC = No interactive CMake dialog available... - restat = 1 - -build edit_cache: phony CMakeFiles/edit_cache.util - -# ============================================================================= -# Object build statements for EXECUTABLE target waitdie.exe - - -############################################# -# Order-only phony target for waitdie.exe - -build cmake_object_order_depends_target_waitdie.exe_Release: phony || CMakeFiles/waitdie.exe.dir - -build CMakeFiles/waitdie.exe.dir/home/tngngn/tccbench/common/result.cc.o: CXX_COMPILER__waitdie.2eexe_Release /home/tngngn/tccbench/common/result.cc || cmake_object_order_depends_target_waitdie.exe_Release - DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 - DEP_FILE = CMakeFiles/waitdie.exe.dir/home/tngngn/tccbench/common/result.cc.o.d - FLAGS = -O3 -DNDEBUG -std=c++17 - OBJECT_DIR = CMakeFiles/waitdie.exe.dir - OBJECT_FILE_DIR = CMakeFiles/waitdie.exe.dir/home/tngngn/tccbench/common - TARGET_COMPILE_PDB = CMakeFiles/waitdie.exe.dir/ - TARGET_PDB = waitdie.exe.pdb - -build CMakeFiles/waitdie.exe.dir/home/tngngn/tccbench/common/util.cc.o: CXX_COMPILER__waitdie.2eexe_Release /home/tngngn/tccbench/common/util.cc || cmake_object_order_depends_target_waitdie.exe_Release - DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 - DEP_FILE = CMakeFiles/waitdie.exe.dir/home/tngngn/tccbench/common/util.cc.o.d - FLAGS = -O3 -DNDEBUG -std=c++17 - OBJECT_DIR = CMakeFiles/waitdie.exe.dir - OBJECT_FILE_DIR = CMakeFiles/waitdie.exe.dir/home/tngngn/tccbench/common - TARGET_COMPILE_PDB = CMakeFiles/waitdie.exe.dir/ - TARGET_PDB = waitdie.exe.pdb - -build CMakeFiles/waitdie.exe.dir/result.cc.o: CXX_COMPILER__waitdie.2eexe_Release ../result.cc || cmake_object_order_depends_target_waitdie.exe_Release - DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 - DEP_FILE = CMakeFiles/waitdie.exe.dir/result.cc.o.d - FLAGS = -O3 -DNDEBUG -std=c++17 - OBJECT_DIR = CMakeFiles/waitdie.exe.dir - OBJECT_FILE_DIR = CMakeFiles/waitdie.exe.dir - TARGET_COMPILE_PDB = CMakeFiles/waitdie.exe.dir/ - TARGET_PDB = waitdie.exe.pdb - -build CMakeFiles/waitdie.exe.dir/transaction.cc.o: CXX_COMPILER__waitdie.2eexe_Release ../transaction.cc || cmake_object_order_depends_target_waitdie.exe_Release - DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 - DEP_FILE = CMakeFiles/waitdie.exe.dir/transaction.cc.o.d - FLAGS = -O3 -DNDEBUG -std=c++17 - OBJECT_DIR = CMakeFiles/waitdie.exe.dir - OBJECT_FILE_DIR = CMakeFiles/waitdie.exe.dir - TARGET_COMPILE_PDB = CMakeFiles/waitdie.exe.dir/ - TARGET_PDB = waitdie.exe.pdb - -build CMakeFiles/waitdie.exe.dir/util.cc.o: CXX_COMPILER__waitdie.2eexe_Release ../util.cc || cmake_object_order_depends_target_waitdie.exe_Release - DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 - DEP_FILE = CMakeFiles/waitdie.exe.dir/util.cc.o.d - FLAGS = -O3 -DNDEBUG -std=c++17 - OBJECT_DIR = CMakeFiles/waitdie.exe.dir - OBJECT_FILE_DIR = CMakeFiles/waitdie.exe.dir - TARGET_COMPILE_PDB = CMakeFiles/waitdie.exe.dir/ - TARGET_PDB = waitdie.exe.pdb - -build CMakeFiles/waitdie.exe.dir/waitdie.cc.o: CXX_COMPILER__waitdie.2eexe_Release ../waitdie.cc || cmake_object_order_depends_target_waitdie.exe_Release - DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 - DEP_FILE = CMakeFiles/waitdie.exe.dir/waitdie.cc.o.d - FLAGS = -O3 -DNDEBUG -std=c++17 - OBJECT_DIR = CMakeFiles/waitdie.exe.dir - OBJECT_FILE_DIR = CMakeFiles/waitdie.exe.dir - TARGET_COMPILE_PDB = CMakeFiles/waitdie.exe.dir/ - TARGET_PDB = waitdie.exe.pdb - - -# ============================================================================= -# Link build statements for EXECUTABLE target waitdie.exe - - -############################################# -# Link the executable waitdie.exe - -build waitdie.exe: CXX_EXECUTABLE_LINKER__waitdie.2eexe_Release CMakeFiles/waitdie.exe.dir/home/tngngn/tccbench/common/result.cc.o CMakeFiles/waitdie.exe.dir/home/tngngn/tccbench/common/util.cc.o CMakeFiles/waitdie.exe.dir/result.cc.o CMakeFiles/waitdie.exe.dir/transaction.cc.o CMakeFiles/waitdie.exe.dir/util.cc.o CMakeFiles/waitdie.exe.dir/waitdie.cc.o | /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a - FLAGS = -O3 -DNDEBUG - LINK_LIBRARIES = /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a -lpthread - OBJECT_DIR = CMakeFiles/waitdie.exe.dir - POST_BUILD = : - PRE_LINK = : - TARGET_COMPILE_PDB = CMakeFiles/waitdie.exe.dir/ - TARGET_FILE = waitdie.exe - TARGET_PDB = waitdie.exe.pdb - -# ============================================================================= -# Target aliases. - -# ============================================================================= -# Folder targets. - -# ============================================================================= - -############################################# -# Folder: /home/tngngn/tccbench/wait-die/build - -build all: phony waitdie.exe - -# ============================================================================= -# Built-in targets - - -############################################# -# Re-run CMake if any of its inputs changed. - -build build.ninja: RERUN_CMAKE | ../CMakeLists.txt /home/tngngn/tccbench/cmake/CompileOptions.cmake /home/tngngn/tccbench/cmake/Findgflags.cmake /home/tngngn/tccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx - pool = console - - -############################################# -# A missing CMake input file is not an error. - -build ../CMakeLists.txt /home/tngngn/tccbench/cmake/CompileOptions.cmake /home/tngngn/tccbench/cmake/Findgflags.cmake /home/tngngn/tccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx: phony - - -############################################# -# Clean all the built files. - -build clean: CLEAN - - -############################################# -# Print all primary targets available. - -build help: HELP - - -############################################# -# Make the all target the default. - -default all diff --git a/wait-die/wait-die/build/cmake_install.cmake b/wait-die/wait-die/build/cmake_install.cmake deleted file mode 100644 index 6a618fcc..00000000 --- a/wait-die/wait-die/build/cmake_install.cmake +++ /dev/null @@ -1,49 +0,0 @@ -# Install script for directory: /home/tngngn/tccbench/wait-die - -# Set the install prefix -if(NOT DEFINED CMAKE_INSTALL_PREFIX) - set(CMAKE_INSTALL_PREFIX "/usr/local") -endif() -string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") - -# Set the install configuration name. -if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) - if(BUILD_TYPE) - string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" - CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") - else() - set(CMAKE_INSTALL_CONFIG_NAME "Release") - endif() - message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") -endif() - -# Set the component getting installed. -if(NOT CMAKE_INSTALL_COMPONENT) - if(COMPONENT) - message(STATUS "Install component: \"${COMPONENT}\"") - set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") - else() - set(CMAKE_INSTALL_COMPONENT) - endif() -endif() - -# Install shared libraries without execute permission? -if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) - set(CMAKE_INSTALL_SO_NO_EXE "1") -endif() - -# Is this installation the result of a crosscompile? -if(NOT DEFINED CMAKE_CROSSCOMPILING) - set(CMAKE_CROSSCOMPILING "FALSE") -endif() - -if(CMAKE_INSTALL_COMPONENT) - set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") -else() - set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") -endif() - -string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT - "${CMAKE_INSTALL_MANIFEST_FILES}") -file(WRITE "/home/tngngn/tccbench/wait-die/build/${CMAKE_INSTALL_MANIFEST}" - "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/wait-die/wait-die/build/rules.ninja b/wait-die/wait-die/build/rules.ninja deleted file mode 100644 index 0549c50f..00000000 --- a/wait-die/wait-die/build/rules.ninja +++ /dev/null @@ -1,64 +0,0 @@ -# CMAKE generated file: DO NOT EDIT! -# Generated by "Ninja" Generator, CMake Version 3.17 - -# This file contains all the rules used to get the outputs files -# built from the input files. -# It is included in the main 'build.ninja'. - -# ============================================================================= -# Project: ccbench_waitdie -# Configurations: Release -# ============================================================================= -# ============================================================================= - -############################################# -# Rule for running custom commands. - -rule CUSTOM_COMMAND - command = $COMMAND - description = $DESC - - -############################################# -# Rule for compiling CXX files. - -rule CXX_COMPILER__waitdie.2eexe_Release - depfile = $DEP_FILE - deps = gcc - command = /usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in - description = Building CXX object $out - - -############################################# -# Rule for linking CXX executable. - -rule CXX_EXECUTABLE_LINKER__waitdie.2eexe_Release - command = $PRE_LINK && /usr/bin/c++ $FLAGS $LINK_FLAGS $in -o $TARGET_FILE $LINK_PATH $LINK_LIBRARIES && $POST_BUILD - description = Linking CXX executable $TARGET_FILE - restat = $RESTAT - - -############################################# -# Rule for re-running cmake. - -rule RERUN_CMAKE - command = /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/tccbench/wait-die -B/home/tngngn/tccbench/wait-die/build - description = Re-running CMake... - generator = 1 - - -############################################# -# Rule for cleaning all built files. - -rule CLEAN - command = /usr/local/bin/ninja $FILE_ARG -t clean $TARGETS - description = Cleaning all built files... - - -############################################# -# Rule for printing all primary targets available. - -rule HELP - command = /usr/local/bin/ninja -t targets - description = All primary targets available: - diff --git a/wait-die/wait-die/include/common.hh b/wait-die/wait-die/include/common.hh deleted file mode 100644 index 4d3e7ba5..00000000 --- a/wait-die/wait-die/include/common.hh +++ /dev/null @@ -1,57 +0,0 @@ -#pragma once - -#include - -#include "../../include/cache_line_size.hh" -#include "../../include/int64byte.hh" -#include "../../include/masstree_wrapper.hh" -#include "tuple.hh" - -#include "gflags/gflags.h" -#include "glog/logging.h" - -#ifdef GLOBAL_VALUE_DEFINE -#define GLOBAL - -#if MASSTREE_USE -alignas(CACHE_LINE_SIZE) GLOBAL MasstreeWrapper MT; -#endif - -#else -#define GLOBAL extern - -#if MASSTREE_USE -alignas(CACHE_LINE_SIZE) GLOBAL MasstreeWrapper MT; -#endif - -#endif - -#ifdef GLOBAL_VALUE_DEFINE -DEFINE_uint64(clocks_per_us, 2100, - "CPU_MHz. Use this info for measuring time."); -DEFINE_uint64(extime, 3, "Execution time[sec]."); -DEFINE_uint64(max_ope, 10, - "Total number of operations per single transaction."); -DEFINE_bool(rmw, false, - "True means read modify write, false means blind write."); -DEFINE_uint64(rratio, 50, "read ratio of single transaction."); -DEFINE_uint64(thread_num, 10, "Total number of worker threads."); -DEFINE_uint64(tuple_num, 1000000, "Total number of records."); -DEFINE_bool(ycsb, true, - "True uses zipf_skew, false uses faster random generator."); -DEFINE_double(zipf_skew, 0, "zipf skew. 0 ~ 0.999..."); -#else -DECLARE_uint64(clocks_per_us); -DECLARE_uint64(extime); -DECLARE_uint64(max_ope); -DECLARE_bool(rmw); -DECLARE_uint64(rratio); -DECLARE_uint64(thread_num); -DECLARE_uint64(tuple_num); -DECLARE_bool(ycsb); -DECLARE_double(zipf_skew); -#endif - -alignas(CACHE_LINE_SIZE) GLOBAL Tuple *Table; -alignas(CACHE_LINE_SIZE) GLOBAL int thread_stats[224]; // *** added by tatsu: thread_stats[i] = 1 means thread i needs to abort -alignas(CACHE_LINE_SIZE) GLOBAL int thread_timestamp[224]; // *** added by tatsu diff --git a/wait-die/wait-die/include/transaction.hh b/wait-die/wait-die/include/transaction.hh deleted file mode 100644 index 4ab7c0da..00000000 --- a/wait-die/wait-die/include/transaction.hh +++ /dev/null @@ -1,68 +0,0 @@ -#pragma once - -#include - -#include "../../include/procedure.hh" -#include "../../include/result.hh" -#include "../../include/rwlock.hh" -#include "../../include/string.hh" -#include "../../include/util.hh" -#include "ss2pl_op_element.hh" -#include "tuple.hh" - -enum class TransactionStatus : uint8_t { - inFlight, - committed, - aborted, -}; - -extern void writeValGenerator(char *writeVal, size_t val_size, size_t thid); - -class TxExecutor { -public: - alignas(CACHE_LINE_SIZE) int thid_; - int txid_; - std::vector r_lock_list_; - std::vector w_lock_list_; - TransactionStatus status_ = TransactionStatus::inFlight; - Result *sres_; - vector > read_set_; - vector > write_set_; - vector pro_set_; - - char write_val_[VAL_SIZE]; - char return_val_[VAL_SIZE]; - - TxExecutor(int thid, Result *sres) : thid_(thid), sres_(sres), txid_(thid) { - read_set_.reserve(FLAGS_max_ope); - write_set_.reserve(FLAGS_max_ope); - pro_set_.reserve(FLAGS_max_ope); - r_lock_list_.reserve(FLAGS_max_ope); - w_lock_list_.reserve(FLAGS_max_ope); - - genStringRepeatedNumber(write_val_, VAL_SIZE, thid); - } - - SetElement *searchReadSet(uint64_t key); - - SetElement *searchWriteSet(uint64_t key); - - void warmupTuple(uint64_t key); - - void begin(); - - void read(uint64_t key); - - void write(uint64_t key); - - void readWrite(uint64_t key); - - void commit(); - - void abort(); - - void unlockList(); - - // inline - Tuple *get_tuple(Tuple *table, uint64_t key) { return &table[key]; } -}; diff --git a/wait-die/wait-die/include/tuple.hh b/wait-die/wait-die/include/tuple.hh deleted file mode 100644 index 239dd56c..00000000 --- a/wait-die/wait-die/include/tuple.hh +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include -#include - -#include "../../include/cache_line_size.hh" -#include "../../include/inline.hh" -#include "../../include/rwlock.hh" - -using namespace std; - -#define UNLOCKED INT32_MAX - -class Tuple { -public: - alignas(CACHE_LINE_SIZE) RWLock lock_; - RWLock latch_; - char val_[VAL_SIZE]; - uint32_t writer_; - uint32_t reader_; - bool writeflag_; -}; diff --git a/wait-die/wait-die/script/comparecc.sh b/wait-die/wait-die/script/comparecc.sh deleted file mode 100755 index 300ccfdd..00000000 --- a/wait-die/wait-die/script/comparecc.sh +++ /dev/null @@ -1,6 +0,0 @@ -cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DVAL_SIZE=1000 -DMASSTREE_USE=0 -DBACK_OFF=1 .. -ninja -for i in 8 16 32 64 96 120 -do - numactl --interleave=all ./waitdie.exe -clocks_per_us=2100 -extime=3 -max_ope=16 -rmw=0 -rratio=50 -thread_num=$i -tuple_num=100000000 -ycsb=1 -zipf_skew=0.9 -done \ No newline at end of file diff --git a/wait-die/wait-die/script/high_contention.sh b/wait-die/wait-die/script/high_contention.sh deleted file mode 100755 index eedea4e9..00000000 --- a/wait-die/wait-die/script/high_contention.sh +++ /dev/null @@ -1,15 +0,0 @@ -for k in 4 -# 10000 100000 -do - cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DVAL_SIZE=$k -DMASSTREE_USE=0 -DBACK_OFF=1 .. - ninja - for j in 16 - # 32 - do - for i in 1 8 16 32 64 96 120 - do - numactl --interleave=all ./ss2pl.exe -clocks_per_us=2100 -extime=3 -max_ope=$j -rmw=0 -rratio=50 -thread_num=$i -tuple_num=1000000 -ycsb=1 -zipf_skew=0.9 - done - done -done -# numactl --interleave=all ./ss2pl.exe -clocks_per_us=2100 -extime=3 -max_ope=16 -rmw=0 -rratio=50 -thread_num=16 -tuple_num=100000000 -ycsb=1 -zipf_skew=0.8 \ No newline at end of file diff --git a/wait-die/wait-die/script/high_contentionA.sh b/wait-die/wait-die/script/high_contentionA.sh deleted file mode 100755 index 06bd9800..00000000 --- a/wait-die/wait-die/script/high_contentionA.sh +++ /dev/null @@ -1,7 +0,0 @@ -cmake -G Ninja -DCMAKE_BUILD_TYPE=RELEASE -DVAL_SIZE=4 -DMASSTREE_USE=0 -DBACK_OFF=1 .. -ninja -for i in 8 16 32 64 96 120 -do - numactl --interleave=all ./waitdie.exe -clocks_per_us=2100 -extime=3 -max_ope=16 -rmw=0 -rratio=50 -thread_num=$i -tuple_num=1000000 -ycsb=1 -zipf_skew=0.99 -done -# numactl --interleave=all ./bamboo.exe -clocks_per_us=2100 -extime=3 -max_ope=16 -rmw=0 -rratio=50 -thread_num=16 -tuple_num=100000000 -ycsb=1 -zipf_skew=0.99 diff --git a/wait-die/wait-die/script/low_contention.sh b/wait-die/wait-die/script/low_contention.sh deleted file mode 100755 index ae9d752a..00000000 --- a/wait-die/wait-die/script/low_contention.sh +++ /dev/null @@ -1,7 +0,0 @@ -cmake -G Ninja -DCMAKE_BUILD_TYPE=RELEASE -DVAL_SIZE=4 -DMASSTREE_USE=0 -DBACK_OFF=0 .. -ninja -for i in 56 112 168 224 #8 16 32 64 96 120 168 224 -do - numactl --interleave=all ./ss2pl.exe -clocks_per_us=2100 -extime=3 -max_ope=16 -rmw=0 -rratio=50 -thread_num=$i -tuple_num=1000000 -ycsb=1 -zipf_skew=0 -done -# numactl --interleave=all ./bamboo.exe -clocks_per_us=2100 -extime=3 -max_ope=16 -rmw=0 -rratio=50 -thread_num=16 -tuple_num=100000000 -ycsb=1 -zipf_skew=0 diff --git a/wait-die/wait-die/transaction.cc b/wait-die/wait-die/transaction.cc deleted file mode 100644 index 3b7ee44c..00000000 --- a/wait-die/wait-die/transaction.cc +++ /dev/null @@ -1,435 +0,0 @@ - -#include -#include - -#include - -#include "../include/backoff.hh" -#include "../include/debug.hh" -#include "../include/procedure.hh" -#include "../include/result.hh" -#include "include/common.hh" -#include "include/transaction.hh" - -// #define NONTS - -using namespace std; - -extern void display_procedure_vector(std::vector &pro); - -void TxExecutor::warmupTuple(uint64_t key) { - Tuple *tuple; -#if MASSTREE_USE - tuple = MT.get_value(key); -#else - tuple = get_tuple(Table, key); -#endif - // memcpy(tuple->val_, write_val_, VAL_SIZE); - tuple->lock_.init(); - tuple->latch_.init(); - tuple->writer_ = UNLOCKED; - tuple->reader_ = UNLOCKED; - tuple->writeflag_ = false; -} - -/** - * @brief Search xxx set - * @detail Search element of local set corresponding to given key. - * In this prototype system, the value to be updated for each worker thread - * is fixed for high performance, so it is only necessary to check the key match. - * @param Key [in] the key of key-value - * @return Corresponding element of local set - */ -inline SetElement *TxExecutor::searchReadSet(uint64_t key) { - for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) { - if ((*itr).key_ == key) return &(*itr); - } - - return nullptr; -} - -/** - * @brief Search xxx set - * @detail Search element of local set corresponding to given key. - * In this prototype system, the value to be updated for each worker thread - * is fixed for high performance, so it is only necessary to check the key match. - * @param Key [in] the key of key-value - * @return Corresponding element of local set - */ -inline SetElement *TxExecutor::searchWriteSet(uint64_t key) { - for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { - if ((*itr).key_ == key) return &(*itr); - } - - return nullptr; -} - -/** - * @brief function about abort. - * Clean-up local read/write set. - * Release locks. - * @return void - */ -void TxExecutor::abort() { - /** - * Release locks - */ - unlockList(); - - /** - * Clean-up local read/write set. - */ - read_set_.clear(); - write_set_.clear(); - - ++sres_->local_abort_counts_; - -#if BACK_OFF -#if ADD_ANALYSIS - uint64_t start(rdtscp()); -#endif - - Backoff::backoff(FLAGS_clocks_per_us); - -#if ADD_ANALYSIS - sres_->local_backoff_latency_ += rdtscp() - start; -#endif - -#endif -} - -/** - * @brief success termination of transaction. - * @return void - */ -void TxExecutor::commit() { - //printf("tx%d commit\n", thid_); - for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { - /** - * update payload. - */ - memcpy((*itr).rcdptr_->val_, write_val_, VAL_SIZE); - } - - /** - * Release locks. - */ - unlockList(); - - /** - * Clean-up local read/write set. - */ - read_set_.clear(); - write_set_.clear(); -#ifdef NONTS - txid_ += FLAGS_thread_num; -#endif -} - -/** - * @brief Initialize function of transaction. - * Allocate timestamp. - * @return void - */ -void TxExecutor::begin() { this->status_ = TransactionStatus::inFlight; } - -void setOwner(atomic &owner, int txid){ - int expected, desired; - desired = txid; - for (;;) { - expected = owner.load(memory_order_acquire); - if (owner.compare_exchange_strong( - expected, desired, memory_order_acq_rel, memory_order_acquire)) - return; - } -} - -/** - * @brief Transaction read function. - * @param [in] key The key of key-value - */ -void TxExecutor::read(uint64_t key) { -#if ADD_ANALYSIS - uint64_t start = rdtscp(); -#endif // ADD_ANALYSIS - - /** - * read-own-writes or re-read from local read set. - */ - if (searchWriteSet(key) || searchReadSet(key)) goto FINISH_READ; - - /** - * Search tuple from data structure. - */ - Tuple *tuple; -#if MASSTREE_USE - tuple = MT.get_value(key); -#if ADD_ANALYSIS - ++sres_->local_tree_traversal_; -#endif -#else - tuple = get_tuple(Table, key); -#endif - while(1) { - if(!tuple->latch_.w_trylock()) { - usleep(1); - continue; - } - if(tuple->writeflag_) { - if(txid_ > tuple->writer_) { - tuple->latch_.w_unlock(); - status_ = TransactionStatus::aborted; - goto FINISH_READ; - } - tuple->latch_.w_unlock(); - usleep(1); - continue; - } - else { - while(1) { - if(tuple->lock_.r_trylock()) { - if(txid_ < tuple->reader_) - tuple->reader_ = txid_; - tuple->latch_.w_unlock(); - read_set_.emplace_back(key, tuple, tuple->val_); - goto FINISH_READ; - } - usleep(1); - } - } - } - -FINISH_READ: - -#if ADD_ANALYSIS - sres_->local_read_latency_ += rdtscp() - start; -#endif - return; -} - -/** - * @brief transaction write operation - * @param [in] key The key of key-value - * @return void - */ -void TxExecutor::write(uint64_t key) { -#if ADD_ANALYSIS - uint64_t start = rdtscp(); -#endif - - // if it already wrote the key object once. - if (searchWriteSet(key)) goto FINISH_WRITE; - /** - * Search tuple from data structure. - */ - Tuple *tuple; -#if MASSTREE_USE - tuple = MT.get_value(key); -#if ADD_ANALYSIS - ++sres_->local_tree_traversal_; -#endif -#else - tuple = get_tuple(Table, key); -#endif - // cout << "tuple " << key << endl; - // cout << "tuple reader_ = " << tuple->reader_ << endl; - // cout << "tuple writer_ = " << tuple->writer_ << endl; - for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { - if ((*rItr).key_ == key) { // hit - while(1) { - if(!tuple->latch_.w_trylock()) { - usleep(1); - continue; - } - if(tuple->writeflag_) { - if(txid_ > tuple->writer_) { - tuple->latch_.w_unlock(); - status_ = TransactionStatus::aborted; - goto FINISH_WRITE; - } - tuple->latch_.w_unlock(); - usleep(1); - continue; - } - tuple->writeflag_ = true; // the fact that i am holding the lock suggests that there is no need to spinwait writeflag - tuple->writer_ = txid_; - if(txid_ > tuple->reader_) { - tuple->writeflag_ = false; - tuple->latch_.w_unlock(); - status_ = TransactionStatus::aborted; - goto FINISH_WRITE; - } - tuple->latch_.w_unlock(); - while(1) { - if(tuple->lock_.tryupgrade()) { - tuple->reader_ = UNLOCKED; - tuple->writer_ = txid_; - write_set_.emplace_back(key, (*rItr).rcdptr_); - read_set_.erase(rItr); - goto FINISH_WRITE; - } - if(txid_ > tuple->reader_) { - tuple->writeflag_ = false; - status_ = TransactionStatus::aborted; - goto FINISH_WRITE; - } - usleep(1); - } - } - } - } - - while (1) { - if(!tuple->latch_.w_trylock()) { - usleep(1); - continue; - } - if(tuple->writeflag_) { - if(txid_ > tuple->writer_) { - tuple->latch_.w_unlock(); - status_ = TransactionStatus::aborted; - goto FINISH_WRITE; - } - tuple->latch_.w_unlock(); - usleep(1); - continue; - } - tuple->writeflag_ = true; - tuple->writer_ = txid_; - if(txid_ > tuple->reader_) { - tuple->writeflag_ = false; - tuple->latch_.w_unlock(); - status_ = TransactionStatus::aborted; - goto FINISH_WRITE; - } - tuple->latch_.w_unlock(); - while(1){ - if(tuple->lock_.w_trylock()) { - tuple->writer_ = txid_; - write_set_.emplace_back(key, tuple); - goto FINISH_WRITE; - } - if(txid_ > tuple->reader_) { - tuple->writeflag_ = false; - status_ = TransactionStatus::aborted; - goto FINISH_WRITE; - } - usleep(1); - } - } - -FINISH_WRITE: -#if ADD_ANALYSIS - sres_->local_write_latency_ += rdtscp() - start; -#endif // ADD_ANALYSIS - return; -} - -/** - * @brief transaction readWrite (RMW) operation - */ -void TxExecutor::readWrite(uint64_t key) { - // if it already wrote the key object once. - if (searchWriteSet(key)) goto FINISH_WRITE; - Tuple *tuple; - tuple = get_tuple(Table, key); - for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { - if ((*rItr).key_ == key) { // hit - tuple->latch_.w_lock(); - if(txid_ > tuple->reader_) { - tuple->latch_.w_unlock(); - status_ = TransactionStatus::aborted; - goto FINISH_WRITE; - } - else { - tuple->writeflag_ = true; // the fact that i am holding the lock suggests that there is no need to spinwait writeflag - tuple->latch_.w_unlock(); - while(1) { - if(tuple->lock_.tryupgrade()) { - tuple->reader_ = UNLOCKED; - tuple->writer_ = txid_; - for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); - ++lItr) { - if (*lItr == &((*rItr).rcdptr_->lock_)) { - write_set_.emplace_back(key, (*rItr).rcdptr_); - w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); - r_lock_list_.erase(lItr); - break; - } - } - read_set_.erase(rItr); - goto FINISH_WRITE; - } - usleep(1); - } - } - } - } - - while (1) { - tuple->latch_.w_lock(); - if(tuple->writeflag_) { - if(txid_ > tuple->writer_) { - status_ = TransactionStatus::aborted; - tuple->latch_.w_unlock(); - goto FINISH_WRITE; - } - tuple->latch_.w_unlock(); - usleep(1); - continue; - } - tuple->writeflag_ = true; - if(txid_ > tuple->reader_) { - tuple->writeflag_ = false; - tuple->latch_.w_unlock(); - status_ = TransactionStatus::aborted; - goto FINISH_WRITE; - } - tuple->latch_.w_unlock(); - while(1){ - if(tuple->lock_.w_trylock()) { - tuple->latch_.w_unlock(); - tuple->writer_ = txid_; - memcpy(this->return_val_, tuple->val_, VAL_SIZE); - w_lock_list_.emplace_back(&tuple->lock_); - write_set_.emplace_back(key, tuple); - goto FINISH_WRITE; - } - if(txid_ > tuple->reader_) { - status_ = TransactionStatus::aborted; - goto FINISH_WRITE; - } - usleep(1); - } - } - -FINISH_WRITE: - return; -} - -/** - * @brief unlock and clean-up local lock set. - * @return void - */ -void TxExecutor::unlockList() { - - for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) { - (*itr).rcdptr_->latch_.w_lock(); - int reader = (*itr).rcdptr_->lock_.counter.load(memory_order_acquire); - if(reader == 1) (*itr).rcdptr_->reader_ = UNLOCKED; - (*itr).rcdptr_->lock_.r_unlock(); - (*itr).rcdptr_->latch_.w_unlock(); - } - - for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { - (*itr).rcdptr_->writeflag_ = false; - (*itr).rcdptr_->writer_ = UNLOCKED; - (*itr).rcdptr_->lock_.w_unlock(); - } - - /** - * Clean-up local lock set. - */ - r_lock_list_.clear(); - w_lock_list_.clear(); -} diff --git a/wait-die/wait-die/waitdie.cc b/wait-die/wait-die/waitdie.cc deleted file mode 100644 index 650b7118..00000000 --- a/wait-die/wait-die/waitdie.cc +++ /dev/null @@ -1,167 +0,0 @@ - -#include //isdigit, -#include -#include //strlen, -#include //syscall(SYS_gettid), -#include //syscall(SYS_gettid), -#include //syscall(SYS_gettid), -#include - -#include -#include //string -#include - -#define GLOBAL_VALUE_DEFINE - -#include "../include/atomic_wrapper.hh" -#include "../include/backoff.hh" -#include "../include/cpu.hh" -#include "../include/debug.hh" -#include "../include/fence.hh" -#include "../include/int64byte.hh" -#include "../include/masstree_wrapper.hh" -#include "../include/procedure.hh" -#include "../include/random.hh" -#include "../include/result.hh" -#include "../include/tsc.hh" -#include "../include/util.hh" -#include "../include/zipf.hh" -#include "include/common.hh" -#include "include/result.hh" -#include "include/transaction.hh" -#include "include/util.hh" - -// #define NONTS -// #define INTERACTIVE - -#ifndef NONTS -long long int central_timestamp = 0; //*** added by tatsu -#endif - -void worker(size_t thid, char &ready, const bool &start, const bool &quit) { - Result &myres = std::ref(SS2PLResult[thid]); - Xoroshiro128Plus rnd; - rnd.init(); - TxExecutor trans(thid, (Result *) &myres); - FastZipf zipf(&rnd, FLAGS_zipf_skew, FLAGS_tuple_num); - Backoff backoff(FLAGS_clocks_per_us); - -#if MASSTREE_USE - MasstreeWrapper::thread_init(int(thid)); -#endif - -#ifdef Linux - setThreadAffinity(thid); - // printf("Thread #%d: on CPU %d\n", *myid, sched_getcpu()); - // printf("sysconf(_SC_NPROCESSORS_CONF) %ld\n", - // sysconf(_SC_NPROCESSORS_CONF)); -#endif // Linux - - storeRelease(ready, 1); - while (!loadAcquire(start)) _mm_pause(); - while (!loadAcquire(quit)) { - makeProcedure(trans.pro_set_, rnd, zipf, FLAGS_tuple_num, FLAGS_max_ope, FLAGS_thread_num, - FLAGS_rratio, FLAGS_rmw, FLAGS_ycsb, false, thid, myres); -#ifndef NONTS - trans.txid_ = __atomic_add_fetch(¢ral_timestamp, 1, __ATOMIC_SEQ_CST); //*** added by tatsu -#endif -RETRY: - if (loadAcquire(quit)) break; - if (thid == 0) leaderBackoffWork(backoff, SS2PLResult); - - trans.begin(); - for (auto itr = trans.pro_set_.begin(); itr != trans.pro_set_.end(); - ++itr) { - if ((*itr).ope_ == Ope::READ) { -#ifdef INTERACTIVE - usleep(1); -#endif - trans.read((*itr).key_); - } else if ((*itr).ope_ == Ope::WRITE) { -#ifdef INTERACTIVE - usleep(1); -#endif - trans.write((*itr).key_); - } else if ((*itr).ope_ == Ope::READ_MODIFY_WRITE) { -#ifdef INTERACTIVE - usleep(1); -#endif - trans.readWrite((*itr).key_); - } else { - ERR; - } - - if (trans.status_ == TransactionStatus::aborted) { - trans.abort(); - goto RETRY; - } - } - - trans.commit(); - /** - * local_commit_counts is used at ../include/backoff.hh to calcurate about - * backoff. - */ - storeRelease(myres.local_commit_counts_, - loadAcquire(myres.local_commit_counts_) + 1); - } - - return; -} - -void touchTuples([[maybe_unused]] size_t thid, uint64_t start, uint64_t end) { - Result &myres = std::ref(SS2PLResult[thid]); - TxExecutor trans(thid, (Result *)&myres); - for (auto i = start; i <= end; ++i) { - trans.warmupTuple(i); - } -} - -void warmup() { - cout << "begin warm up" << endl; - size_t maxthread = decideParallelBuildNumber(FLAGS_tuple_num); - std::vector thv; - for (size_t i = 0; i < maxthread; ++i) { - thv.emplace_back(touchTuples, i, i * (FLAGS_tuple_num / maxthread), - (i + 1) * (FLAGS_tuple_num / maxthread) - 1); - } - for (auto &th : thv) th.join(); - cout << "finish warm up" << endl; -} - -int main(int argc, char *argv[]) try { - gflags::SetUsageMessage("2PL benchmark."); - gflags::ParseCommandLineFlags(&argc, &argv, true); - chkArg(); - makeDB(); - for (int i = 0; i < FLAGS_thread_num; i++){ // - thread_stats[i] = 0; // - thread_timestamp[i] = 0; // - } // - alignas(CACHE_LINE_SIZE) bool start = false; - alignas(CACHE_LINE_SIZE) bool quit = false; - initResult(); - warmup(); - std::vector readys(FLAGS_thread_num); - std::vector thv; - for (size_t i = 0; i < FLAGS_thread_num; ++i) - thv.emplace_back(worker, i, std::ref(readys[i]), std::ref(start), - std::ref(quit)); - waitForReady(readys); - storeRelease(start, true); - for (size_t i = 0; i < FLAGS_extime; ++i) { - sleepMs(1000); - } - storeRelease(quit, true); - for (auto &th : thv) th.join(); - - for (unsigned int i = 0; i < FLAGS_thread_num; ++i) { - SS2PLResult[0].addLocalAllResult(SS2PLResult[i]); - } - ShowOptParameters(); - SS2PLResult[0].displayAllResult(FLAGS_clocks_per_us, FLAGS_extime, FLAGS_thread_num); - - return 0; -} catch (bad_alloc) { - ERR; -} diff --git a/wound-w/build/.ninja_log b/wound-w/build/.ninja_log deleted file mode 100644 index dfde69ef..00000000 --- a/wound-w/build/.ninja_log +++ /dev/null @@ -1,8 +0,0 @@ -# ninja log v5 -0 436 1672880526586703017 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o cb094bc7f3f6c775 -0 707 1672880526858699663 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o f95633baccc8a3ed -1 850 1672880595533852827 CMakeFiles/ss2pl.exe.dir/result.cc.o 851e6c2fa850bcf5 -2 1328 1672880596009846958 CMakeFiles/ss2pl.exe.dir/transaction.cc.o 57b8653ac41a1255 -2 1382 1672880596065846267 CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o 788a57bce6d40cdd -3 1294 1672880651065168069 CMakeFiles/ss2pl.exe.dir/util.cc.o c9c2e62e88d9d2c6 -1294 1364 1672880651133167230 ss2pl.exe eee19cd8572392e1 diff --git a/wound-w/build/CMakeDoxyfile.in b/wound-w/build/CMakeDoxyfile.in deleted file mode 100644 index 848a3c81..00000000 --- a/wound-w/build/CMakeDoxyfile.in +++ /dev/null @@ -1,280 +0,0 @@ -# -# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! -# - -DOXYFILE_ENCODING = @DOXYGEN_DOXYFILE_ENCODING@ -PROJECT_NAME = @DOXYGEN_PROJECT_NAME@ -PROJECT_NUMBER = @DOXYGEN_PROJECT_NUMBER@ -PROJECT_BRIEF = @DOXYGEN_PROJECT_BRIEF@ -PROJECT_LOGO = @DOXYGEN_PROJECT_LOGO@ -OUTPUT_DIRECTORY = @DOXYGEN_OUTPUT_DIRECTORY@ -CREATE_SUBDIRS = @DOXYGEN_CREATE_SUBDIRS@ -ALLOW_UNICODE_NAMES = @DOXYGEN_ALLOW_UNICODE_NAMES@ -OUTPUT_LANGUAGE = @DOXYGEN_OUTPUT_LANGUAGE@ -OUTPUT_TEXT_DIRECTION = @DOXYGEN_OUTPUT_TEXT_DIRECTION@ -BRIEF_MEMBER_DESC = @DOXYGEN_BRIEF_MEMBER_DESC@ -REPEAT_BRIEF = @DOXYGEN_REPEAT_BRIEF@ -ABBREVIATE_BRIEF = @DOXYGEN_ABBREVIATE_BRIEF@ -ALWAYS_DETAILED_SEC = @DOXYGEN_ALWAYS_DETAILED_SEC@ -INLINE_INHERITED_MEMB = @DOXYGEN_INLINE_INHERITED_MEMB@ -FULL_PATH_NAMES = @DOXYGEN_FULL_PATH_NAMES@ -STRIP_FROM_PATH = @DOXYGEN_STRIP_FROM_PATH@ -STRIP_FROM_INC_PATH = @DOXYGEN_STRIP_FROM_INC_PATH@ -SHORT_NAMES = @DOXYGEN_SHORT_NAMES@ -JAVADOC_AUTOBRIEF = @DOXYGEN_JAVADOC_AUTOBRIEF@ -JAVADOC_BANNER = @DOXYGEN_JAVADOC_BANNER@ -QT_AUTOBRIEF = @DOXYGEN_QT_AUTOBRIEF@ -MULTILINE_CPP_IS_BRIEF = @DOXYGEN_MULTILINE_CPP_IS_BRIEF@ -INHERIT_DOCS = @DOXYGEN_INHERIT_DOCS@ -SEPARATE_MEMBER_PAGES = @DOXYGEN_SEPARATE_MEMBER_PAGES@ -TAB_SIZE = @DOXYGEN_TAB_SIZE@ -ALIASES = @DOXYGEN_ALIASES@ -TCL_SUBST = @DOXYGEN_TCL_SUBST@ -OPTIMIZE_OUTPUT_FOR_C = @DOXYGEN_OPTIMIZE_OUTPUT_FOR_C@ -OPTIMIZE_OUTPUT_JAVA = @DOXYGEN_OPTIMIZE_OUTPUT_JAVA@ -OPTIMIZE_FOR_FORTRAN = @DOXYGEN_OPTIMIZE_FOR_FORTRAN@ -OPTIMIZE_OUTPUT_VHDL = @DOXYGEN_OPTIMIZE_OUTPUT_VHDL@ -OPTIMIZE_OUTPUT_SLICE = @DOXYGEN_OPTIMIZE_OUTPUT_SLICE@ -EXTENSION_MAPPING = @DOXYGEN_EXTENSION_MAPPING@ -MARKDOWN_SUPPORT = @DOXYGEN_MARKDOWN_SUPPORT@ -TOC_INCLUDE_HEADINGS = @DOXYGEN_TOC_INCLUDE_HEADINGS@ -AUTOLINK_SUPPORT = @DOXYGEN_AUTOLINK_SUPPORT@ -BUILTIN_STL_SUPPORT = @DOXYGEN_BUILTIN_STL_SUPPORT@ -CPP_CLI_SUPPORT = @DOXYGEN_CPP_CLI_SUPPORT@ -SIP_SUPPORT = @DOXYGEN_SIP_SUPPORT@ -IDL_PROPERTY_SUPPORT = @DOXYGEN_IDL_PROPERTY_SUPPORT@ -DISTRIBUTE_GROUP_DOC = @DOXYGEN_DISTRIBUTE_GROUP_DOC@ -GROUP_NESTED_COMPOUNDS = @DOXYGEN_GROUP_NESTED_COMPOUNDS@ -SUBGROUPING = @DOXYGEN_SUBGROUPING@ -INLINE_GROUPED_CLASSES = @DOXYGEN_INLINE_GROUPED_CLASSES@ -INLINE_SIMPLE_STRUCTS = @DOXYGEN_INLINE_SIMPLE_STRUCTS@ -TYPEDEF_HIDES_STRUCT = @DOXYGEN_TYPEDEF_HIDES_STRUCT@ -LOOKUP_CACHE_SIZE = @DOXYGEN_LOOKUP_CACHE_SIZE@ -EXTRACT_ALL = @DOXYGEN_EXTRACT_ALL@ -EXTRACT_PRIVATE = @DOXYGEN_EXTRACT_PRIVATE@ -EXTRACT_PRIV_VIRTUAL = @DOXYGEN_EXTRACT_PRIV_VIRTUAL@ -EXTRACT_PACKAGE = @DOXYGEN_EXTRACT_PACKAGE@ -EXTRACT_STATIC = @DOXYGEN_EXTRACT_STATIC@ -EXTRACT_LOCAL_CLASSES = @DOXYGEN_EXTRACT_LOCAL_CLASSES@ -EXTRACT_LOCAL_METHODS = @DOXYGEN_EXTRACT_LOCAL_METHODS@ -EXTRACT_ANON_NSPACES = @DOXYGEN_EXTRACT_ANON_NSPACES@ -HIDE_UNDOC_MEMBERS = @DOXYGEN_HIDE_UNDOC_MEMBERS@ -HIDE_UNDOC_CLASSES = @DOXYGEN_HIDE_UNDOC_CLASSES@ -HIDE_FRIEND_COMPOUNDS = @DOXYGEN_HIDE_FRIEND_COMPOUNDS@ -HIDE_IN_BODY_DOCS = @DOXYGEN_HIDE_IN_BODY_DOCS@ -INTERNAL_DOCS = @DOXYGEN_INTERNAL_DOCS@ -CASE_SENSE_NAMES = @DOXYGEN_CASE_SENSE_NAMES@ -HIDE_SCOPE_NAMES = @DOXYGEN_HIDE_SCOPE_NAMES@ -HIDE_COMPOUND_REFERENCE= @DOXYGEN_HIDE_COMPOUND_REFERENCE@ -SHOW_INCLUDE_FILES = @DOXYGEN_SHOW_INCLUDE_FILES@ -SHOW_GROUPED_MEMB_INC = @DOXYGEN_SHOW_GROUPED_MEMB_INC@ -FORCE_LOCAL_INCLUDES = @DOXYGEN_FORCE_LOCAL_INCLUDES@ -INLINE_INFO = @DOXYGEN_INLINE_INFO@ -SORT_MEMBER_DOCS = @DOXYGEN_SORT_MEMBER_DOCS@ -SORT_BRIEF_DOCS = @DOXYGEN_SORT_BRIEF_DOCS@ -SORT_MEMBERS_CTORS_1ST = @DOXYGEN_SORT_MEMBERS_CTORS_1ST@ -SORT_GROUP_NAMES = @DOXYGEN_SORT_GROUP_NAMES@ -SORT_BY_SCOPE_NAME = @DOXYGEN_SORT_BY_SCOPE_NAME@ -STRICT_PROTO_MATCHING = @DOXYGEN_STRICT_PROTO_MATCHING@ -GENERATE_TODOLIST = @DOXYGEN_GENERATE_TODOLIST@ -GENERATE_TESTLIST = @DOXYGEN_GENERATE_TESTLIST@ -GENERATE_BUGLIST = @DOXYGEN_GENERATE_BUGLIST@ -GENERATE_DEPRECATEDLIST= @DOXYGEN_GENERATE_DEPRECATEDLIST@ -ENABLED_SECTIONS = @DOXYGEN_ENABLED_SECTIONS@ -MAX_INITIALIZER_LINES = @DOXYGEN_MAX_INITIALIZER_LINES@ -SHOW_USED_FILES = @DOXYGEN_SHOW_USED_FILES@ -SHOW_FILES = @DOXYGEN_SHOW_FILES@ -SHOW_NAMESPACES = @DOXYGEN_SHOW_NAMESPACES@ -FILE_VERSION_FILTER = @DOXYGEN_FILE_VERSION_FILTER@ -LAYOUT_FILE = @DOXYGEN_LAYOUT_FILE@ -CITE_BIB_FILES = @DOXYGEN_CITE_BIB_FILES@ -QUIET = @DOXYGEN_QUIET@ -WARNINGS = @DOXYGEN_WARNINGS@ -WARN_IF_UNDOCUMENTED = @DOXYGEN_WARN_IF_UNDOCUMENTED@ -WARN_IF_DOC_ERROR = @DOXYGEN_WARN_IF_DOC_ERROR@ -WARN_NO_PARAMDOC = @DOXYGEN_WARN_NO_PARAMDOC@ -WARN_AS_ERROR = @DOXYGEN_WARN_AS_ERROR@ -WARN_FORMAT = @DOXYGEN_WARN_FORMAT@ -WARN_LOGFILE = @DOXYGEN_WARN_LOGFILE@ -INPUT = @DOXYGEN_INPUT@ -INPUT_ENCODING = @DOXYGEN_INPUT_ENCODING@ -FILE_PATTERNS = @DOXYGEN_FILE_PATTERNS@ -RECURSIVE = @DOXYGEN_RECURSIVE@ -EXCLUDE = @DOXYGEN_EXCLUDE@ -EXCLUDE_SYMLINKS = @DOXYGEN_EXCLUDE_SYMLINKS@ -EXCLUDE_PATTERNS = @DOXYGEN_EXCLUDE_PATTERNS@ -EXCLUDE_SYMBOLS = @DOXYGEN_EXCLUDE_SYMBOLS@ -EXAMPLE_PATH = @DOXYGEN_EXAMPLE_PATH@ -EXAMPLE_PATTERNS = @DOXYGEN_EXAMPLE_PATTERNS@ -EXAMPLE_RECURSIVE = @DOXYGEN_EXAMPLE_RECURSIVE@ -IMAGE_PATH = @DOXYGEN_IMAGE_PATH@ -INPUT_FILTER = @DOXYGEN_INPUT_FILTER@ -FILTER_PATTERNS = @DOXYGEN_FILTER_PATTERNS@ -FILTER_SOURCE_FILES = @DOXYGEN_FILTER_SOURCE_FILES@ -FILTER_SOURCE_PATTERNS = @DOXYGEN_FILTER_SOURCE_PATTERNS@ -USE_MDFILE_AS_MAINPAGE = @DOXYGEN_USE_MDFILE_AS_MAINPAGE@ -SOURCE_BROWSER = @DOXYGEN_SOURCE_BROWSER@ -INLINE_SOURCES = @DOXYGEN_INLINE_SOURCES@ -STRIP_CODE_COMMENTS = @DOXYGEN_STRIP_CODE_COMMENTS@ -REFERENCED_BY_RELATION = @DOXYGEN_REFERENCED_BY_RELATION@ -REFERENCES_RELATION = @DOXYGEN_REFERENCES_RELATION@ -REFERENCES_LINK_SOURCE = @DOXYGEN_REFERENCES_LINK_SOURCE@ -SOURCE_TOOLTIPS = @DOXYGEN_SOURCE_TOOLTIPS@ -USE_HTAGS = @DOXYGEN_USE_HTAGS@ -VERBATIM_HEADERS = @DOXYGEN_VERBATIM_HEADERS@ -CLANG_ASSISTED_PARSING = @DOXYGEN_CLANG_ASSISTED_PARSING@ -CLANG_OPTIONS = @DOXYGEN_CLANG_OPTIONS@ -CLANG_DATABASE_PATH = @DOXYGEN_CLANG_DATABASE_PATH@ -ALPHABETICAL_INDEX = @DOXYGEN_ALPHABETICAL_INDEX@ -COLS_IN_ALPHA_INDEX = @DOXYGEN_COLS_IN_ALPHA_INDEX@ -IGNORE_PREFIX = @DOXYGEN_IGNORE_PREFIX@ -GENERATE_HTML = @DOXYGEN_GENERATE_HTML@ -HTML_OUTPUT = @DOXYGEN_HTML_OUTPUT@ -HTML_FILE_EXTENSION = @DOXYGEN_HTML_FILE_EXTENSION@ -HTML_HEADER = @DOXYGEN_HTML_HEADER@ -HTML_FOOTER = @DOXYGEN_HTML_FOOTER@ -HTML_STYLESHEET = @DOXYGEN_HTML_STYLESHEET@ -HTML_EXTRA_STYLESHEET = @DOXYGEN_HTML_EXTRA_STYLESHEET@ -HTML_EXTRA_FILES = @DOXYGEN_HTML_EXTRA_FILES@ -HTML_COLORSTYLE_HUE = @DOXYGEN_HTML_COLORSTYLE_HUE@ -HTML_COLORSTYLE_SAT = @DOXYGEN_HTML_COLORSTYLE_SAT@ -HTML_COLORSTYLE_GAMMA = @DOXYGEN_HTML_COLORSTYLE_GAMMA@ -HTML_TIMESTAMP = @DOXYGEN_HTML_TIMESTAMP@ -HTML_DYNAMIC_MENUS = @DOXYGEN_HTML_DYNAMIC_MENUS@ -HTML_DYNAMIC_SECTIONS = @DOXYGEN_HTML_DYNAMIC_SECTIONS@ -HTML_INDEX_NUM_ENTRIES = @DOXYGEN_HTML_INDEX_NUM_ENTRIES@ -GENERATE_DOCSET = @DOXYGEN_GENERATE_DOCSET@ -DOCSET_FEEDNAME = @DOXYGEN_DOCSET_FEEDNAME@ -DOCSET_BUNDLE_ID = @DOXYGEN_DOCSET_BUNDLE_ID@ -DOCSET_PUBLISHER_ID = @DOXYGEN_DOCSET_PUBLISHER_ID@ -DOCSET_PUBLISHER_NAME = @DOXYGEN_DOCSET_PUBLISHER_NAME@ -GENERATE_HTMLHELP = @DOXYGEN_GENERATE_HTMLHELP@ -CHM_FILE = @DOXYGEN_CHM_FILE@ -HHC_LOCATION = @DOXYGEN_HHC_LOCATION@ -GENERATE_CHI = @DOXYGEN_GENERATE_CHI@ -CHM_INDEX_ENCODING = @DOXYGEN_CHM_INDEX_ENCODING@ -BINARY_TOC = @DOXYGEN_BINARY_TOC@ -TOC_EXPAND = @DOXYGEN_TOC_EXPAND@ -GENERATE_QHP = @DOXYGEN_GENERATE_QHP@ -QCH_FILE = @DOXYGEN_QCH_FILE@ -QHP_NAMESPACE = @DOXYGEN_QHP_NAMESPACE@ -QHP_VIRTUAL_FOLDER = @DOXYGEN_QHP_VIRTUAL_FOLDER@ -QHP_CUST_FILTER_NAME = @DOXYGEN_QHP_CUST_FILTER_NAME@ -QHP_CUST_FILTER_ATTRS = @DOXYGEN_QHP_CUST_FILTER_ATTRS@ -QHP_SECT_FILTER_ATTRS = @DOXYGEN_QHP_SECT_FILTER_ATTRS@ -QHG_LOCATION = @DOXYGEN_QHG_LOCATION@ -GENERATE_ECLIPSEHELP = @DOXYGEN_GENERATE_ECLIPSEHELP@ -ECLIPSE_DOC_ID = @DOXYGEN_ECLIPSE_DOC_ID@ -DISABLE_INDEX = @DOXYGEN_DISABLE_INDEX@ -GENERATE_TREEVIEW = @DOXYGEN_GENERATE_TREEVIEW@ -ENUM_VALUES_PER_LINE = @DOXYGEN_ENUM_VALUES_PER_LINE@ -TREEVIEW_WIDTH = @DOXYGEN_TREEVIEW_WIDTH@ -EXT_LINKS_IN_WINDOW = @DOXYGEN_EXT_LINKS_IN_WINDOW@ -FORMULA_FONTSIZE = @DOXYGEN_FORMULA_FONTSIZE@ -FORMULA_TRANSPARENT = @DOXYGEN_FORMULA_TRANSPARENT@ -FORMULA_MACROFILE = @DOXYGEN_FORMULA_MACROFILE@ -USE_MATHJAX = @DOXYGEN_USE_MATHJAX@ -MATHJAX_FORMAT = @DOXYGEN_MATHJAX_FORMAT@ -MATHJAX_RELPATH = @DOXYGEN_MATHJAX_RELPATH@ -MATHJAX_EXTENSIONS = @DOXYGEN_MATHJAX_EXTENSIONS@ -MATHJAX_CODEFILE = @DOXYGEN_MATHJAX_CODEFILE@ -SEARCHENGINE = @DOXYGEN_SEARCHENGINE@ -SERVER_BASED_SEARCH = @DOXYGEN_SERVER_BASED_SEARCH@ -EXTERNAL_SEARCH = @DOXYGEN_EXTERNAL_SEARCH@ -SEARCHENGINE_URL = @DOXYGEN_SEARCHENGINE_URL@ -SEARCHDATA_FILE = @DOXYGEN_SEARCHDATA_FILE@ -EXTERNAL_SEARCH_ID = @DOXYGEN_EXTERNAL_SEARCH_ID@ -EXTRA_SEARCH_MAPPINGS = @DOXYGEN_EXTRA_SEARCH_MAPPINGS@ -GENERATE_LATEX = @DOXYGEN_GENERATE_LATEX@ -LATEX_OUTPUT = @DOXYGEN_LATEX_OUTPUT@ -LATEX_CMD_NAME = @DOXYGEN_LATEX_CMD_NAME@ -MAKEINDEX_CMD_NAME = @DOXYGEN_MAKEINDEX_CMD_NAME@ -LATEX_MAKEINDEX_CMD = @DOXYGEN_LATEX_MAKEINDEX_CMD@ -COMPACT_LATEX = @DOXYGEN_COMPACT_LATEX@ -PAPER_TYPE = @DOXYGEN_PAPER_TYPE@ -EXTRA_PACKAGES = @DOXYGEN_EXTRA_PACKAGES@ -LATEX_HEADER = @DOXYGEN_LATEX_HEADER@ -LATEX_FOOTER = @DOXYGEN_LATEX_FOOTER@ -LATEX_EXTRA_STYLESHEET = @DOXYGEN_LATEX_EXTRA_STYLESHEET@ -LATEX_EXTRA_FILES = @DOXYGEN_LATEX_EXTRA_FILES@ -PDF_HYPERLINKS = @DOXYGEN_PDF_HYPERLINKS@ -USE_PDFLATEX = @DOXYGEN_USE_PDFLATEX@ -LATEX_BATCHMODE = @DOXYGEN_LATEX_BATCHMODE@ -LATEX_HIDE_INDICES = @DOXYGEN_LATEX_HIDE_INDICES@ -LATEX_SOURCE_CODE = @DOXYGEN_LATEX_SOURCE_CODE@ -LATEX_BIB_STYLE = @DOXYGEN_LATEX_BIB_STYLE@ -LATEX_TIMESTAMP = @DOXYGEN_LATEX_TIMESTAMP@ -LATEX_EMOJI_DIRECTORY = @DOXYGEN_LATEX_EMOJI_DIRECTORY@ -GENERATE_RTF = @DOXYGEN_GENERATE_RTF@ -RTF_OUTPUT = @DOXYGEN_RTF_OUTPUT@ -COMPACT_RTF = @DOXYGEN_COMPACT_RTF@ -RTF_HYPERLINKS = @DOXYGEN_RTF_HYPERLINKS@ -RTF_STYLESHEET_FILE = @DOXYGEN_RTF_STYLESHEET_FILE@ -RTF_EXTENSIONS_FILE = @DOXYGEN_RTF_EXTENSIONS_FILE@ -RTF_SOURCE_CODE = @DOXYGEN_RTF_SOURCE_CODE@ -GENERATE_MAN = @DOXYGEN_GENERATE_MAN@ -MAN_OUTPUT = @DOXYGEN_MAN_OUTPUT@ -MAN_EXTENSION = @DOXYGEN_MAN_EXTENSION@ -MAN_SUBDIR = @DOXYGEN_MAN_SUBDIR@ -MAN_LINKS = @DOXYGEN_MAN_LINKS@ -GENERATE_XML = @DOXYGEN_GENERATE_XML@ -XML_OUTPUT = @DOXYGEN_XML_OUTPUT@ -XML_PROGRAMLISTING = @DOXYGEN_XML_PROGRAMLISTING@ -XML_NS_MEMB_FILE_SCOPE = @DOXYGEN_XML_NS_MEMB_FILE_SCOPE@ -GENERATE_DOCBOOK = @DOXYGEN_GENERATE_DOCBOOK@ -DOCBOOK_OUTPUT = @DOXYGEN_DOCBOOK_OUTPUT@ -DOCBOOK_PROGRAMLISTING = @DOXYGEN_DOCBOOK_PROGRAMLISTING@ -GENERATE_AUTOGEN_DEF = @DOXYGEN_GENERATE_AUTOGEN_DEF@ -GENERATE_PERLMOD = @DOXYGEN_GENERATE_PERLMOD@ -PERLMOD_LATEX = @DOXYGEN_PERLMOD_LATEX@ -PERLMOD_PRETTY = @DOXYGEN_PERLMOD_PRETTY@ -PERLMOD_MAKEVAR_PREFIX = @DOXYGEN_PERLMOD_MAKEVAR_PREFIX@ -ENABLE_PREPROCESSING = @DOXYGEN_ENABLE_PREPROCESSING@ -MACRO_EXPANSION = @DOXYGEN_MACRO_EXPANSION@ -EXPAND_ONLY_PREDEF = @DOXYGEN_EXPAND_ONLY_PREDEF@ -SEARCH_INCLUDES = @DOXYGEN_SEARCH_INCLUDES@ -INCLUDE_PATH = @DOXYGEN_INCLUDE_PATH@ -INCLUDE_FILE_PATTERNS = @DOXYGEN_INCLUDE_FILE_PATTERNS@ -PREDEFINED = @DOXYGEN_PREDEFINED@ -EXPAND_AS_DEFINED = @DOXYGEN_EXPAND_AS_DEFINED@ -SKIP_FUNCTION_MACROS = @DOXYGEN_SKIP_FUNCTION_MACROS@ -TAGFILES = @DOXYGEN_TAGFILES@ -GENERATE_TAGFILE = @DOXYGEN_GENERATE_TAGFILE@ -ALLEXTERNALS = @DOXYGEN_ALLEXTERNALS@ -EXTERNAL_GROUPS = @DOXYGEN_EXTERNAL_GROUPS@ -EXTERNAL_PAGES = @DOXYGEN_EXTERNAL_PAGES@ -CLASS_DIAGRAMS = @DOXYGEN_CLASS_DIAGRAMS@ -DIA_PATH = @DOXYGEN_DIA_PATH@ -HIDE_UNDOC_RELATIONS = @DOXYGEN_HIDE_UNDOC_RELATIONS@ -HAVE_DOT = @DOXYGEN_HAVE_DOT@ -DOT_NUM_THREADS = @DOXYGEN_DOT_NUM_THREADS@ -DOT_FONTNAME = @DOXYGEN_DOT_FONTNAME@ -DOT_FONTSIZE = @DOXYGEN_DOT_FONTSIZE@ -DOT_FONTPATH = @DOXYGEN_DOT_FONTPATH@ -CLASS_GRAPH = @DOXYGEN_CLASS_GRAPH@ -COLLABORATION_GRAPH = @DOXYGEN_COLLABORATION_GRAPH@ -GROUP_GRAPHS = @DOXYGEN_GROUP_GRAPHS@ -UML_LOOK = @DOXYGEN_UML_LOOK@ -UML_LIMIT_NUM_FIELDS = @DOXYGEN_UML_LIMIT_NUM_FIELDS@ -TEMPLATE_RELATIONS = @DOXYGEN_TEMPLATE_RELATIONS@ -INCLUDE_GRAPH = @DOXYGEN_INCLUDE_GRAPH@ -INCLUDED_BY_GRAPH = @DOXYGEN_INCLUDED_BY_GRAPH@ -CALL_GRAPH = @DOXYGEN_CALL_GRAPH@ -CALLER_GRAPH = @DOXYGEN_CALLER_GRAPH@ -GRAPHICAL_HIERARCHY = @DOXYGEN_GRAPHICAL_HIERARCHY@ -DIRECTORY_GRAPH = @DOXYGEN_DIRECTORY_GRAPH@ -DOT_IMAGE_FORMAT = @DOXYGEN_DOT_IMAGE_FORMAT@ -INTERACTIVE_SVG = @DOXYGEN_INTERACTIVE_SVG@ -DOT_PATH = @DOXYGEN_DOT_PATH@ -DOTFILE_DIRS = @DOXYGEN_DOTFILE_DIRS@ -MSCFILE_DIRS = @DOXYGEN_MSCFILE_DIRS@ -DIAFILE_DIRS = @DOXYGEN_DIAFILE_DIRS@ -PLANTUML_JAR_PATH = @DOXYGEN_PLANTUML_JAR_PATH@ -PLANTUML_CFG_FILE = @DOXYGEN_PLANTUML_CFG_FILE@ -PLANTUML_INCLUDE_PATH = @DOXYGEN_PLANTUML_INCLUDE_PATH@ -DOT_GRAPH_MAX_NODES = @DOXYGEN_DOT_GRAPH_MAX_NODES@ -MAX_DOT_GRAPH_DEPTH = @DOXYGEN_MAX_DOT_GRAPH_DEPTH@ -DOT_TRANSPARENT = @DOXYGEN_DOT_TRANSPARENT@ -DOT_MULTI_TARGETS = @DOXYGEN_DOT_MULTI_TARGETS@ -GENERATE_LEGEND = @DOXYGEN_GENERATE_LEGEND@ -DOT_CLEANUP = @DOXYGEN_DOT_CLEANUP@ diff --git a/wound-w/build/CMakeDoxygenDefaults.cmake b/wound-w/build/CMakeDoxygenDefaults.cmake deleted file mode 100644 index db28798f..00000000 --- a/wound-w/build/CMakeDoxygenDefaults.cmake +++ /dev/null @@ -1,672 +0,0 @@ -# -# DO NOT EDIT! THIS FILE WAS GENERATED BY CMAKE! -# - -if(NOT DEFINED DOXYGEN_DOXYFILE_ENCODING) - set(DOXYGEN_DOXYFILE_ENCODING UTF-8) -endif() -if(NOT DEFINED DOXYGEN_PROJECT_NAME) - set(DOXYGEN_PROJECT_NAME "My Project") -endif() -if(NOT DEFINED DOXYGEN_CREATE_SUBDIRS) - set(DOXYGEN_CREATE_SUBDIRS NO) -endif() -if(NOT DEFINED DOXYGEN_ALLOW_UNICODE_NAMES) - set(DOXYGEN_ALLOW_UNICODE_NAMES NO) -endif() -if(NOT DEFINED DOXYGEN_OUTPUT_LANGUAGE) - set(DOXYGEN_OUTPUT_LANGUAGE English) -endif() -if(NOT DEFINED DOXYGEN_OUTPUT_TEXT_DIRECTION) - set(DOXYGEN_OUTPUT_TEXT_DIRECTION None) -endif() -if(NOT DEFINED DOXYGEN_BRIEF_MEMBER_DESC) - set(DOXYGEN_BRIEF_MEMBER_DESC YES) -endif() -if(NOT DEFINED DOXYGEN_REPEAT_BRIEF) - set(DOXYGEN_REPEAT_BRIEF YES) -endif() -if(NOT DEFINED DOXYGEN_ABBREVIATE_BRIEF) - set(DOXYGEN_ABBREVIATE_BRIEF "The $name class" - "The $name widget" - "The $name file" - is - provides - specifies - contains - represents - a - an - the) -endif() -if(NOT DEFINED DOXYGEN_ALWAYS_DETAILED_SEC) - set(DOXYGEN_ALWAYS_DETAILED_SEC NO) -endif() -if(NOT DEFINED DOXYGEN_INLINE_INHERITED_MEMB) - set(DOXYGEN_INLINE_INHERITED_MEMB NO) -endif() -if(NOT DEFINED DOXYGEN_FULL_PATH_NAMES) - set(DOXYGEN_FULL_PATH_NAMES YES) -endif() -if(NOT DEFINED DOXYGEN_SHORT_NAMES) - set(DOXYGEN_SHORT_NAMES NO) -endif() -if(NOT DEFINED DOXYGEN_JAVADOC_AUTOBRIEF) - set(DOXYGEN_JAVADOC_AUTOBRIEF NO) -endif() -if(NOT DEFINED DOXYGEN_JAVADOC_BANNER) - set(DOXYGEN_JAVADOC_BANNER NO) -endif() -if(NOT DEFINED DOXYGEN_QT_AUTOBRIEF) - set(DOXYGEN_QT_AUTOBRIEF NO) -endif() -if(NOT DEFINED DOXYGEN_MULTILINE_CPP_IS_BRIEF) - set(DOXYGEN_MULTILINE_CPP_IS_BRIEF NO) -endif() -if(NOT DEFINED DOXYGEN_INHERIT_DOCS) - set(DOXYGEN_INHERIT_DOCS YES) -endif() -if(NOT DEFINED DOXYGEN_SEPARATE_MEMBER_PAGES) - set(DOXYGEN_SEPARATE_MEMBER_PAGES NO) -endif() -if(NOT DEFINED DOXYGEN_TAB_SIZE) - set(DOXYGEN_TAB_SIZE 4) -endif() -if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_FOR_C) - set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C NO) -endif() -if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_JAVA) - set(DOXYGEN_OPTIMIZE_OUTPUT_JAVA NO) -endif() -if(NOT DEFINED DOXYGEN_OPTIMIZE_FOR_FORTRAN) - set(DOXYGEN_OPTIMIZE_FOR_FORTRAN NO) -endif() -if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_VHDL) - set(DOXYGEN_OPTIMIZE_OUTPUT_VHDL NO) -endif() -if(NOT DEFINED DOXYGEN_OPTIMIZE_OUTPUT_SLICE) - set(DOXYGEN_OPTIMIZE_OUTPUT_SLICE NO) -endif() -if(NOT DEFINED DOXYGEN_MARKDOWN_SUPPORT) - set(DOXYGEN_MARKDOWN_SUPPORT YES) -endif() -if(NOT DEFINED DOXYGEN_TOC_INCLUDE_HEADINGS) - set(DOXYGEN_TOC_INCLUDE_HEADINGS 5) -endif() -if(NOT DEFINED DOXYGEN_AUTOLINK_SUPPORT) - set(DOXYGEN_AUTOLINK_SUPPORT YES) -endif() -if(NOT DEFINED DOXYGEN_BUILTIN_STL_SUPPORT) - set(DOXYGEN_BUILTIN_STL_SUPPORT NO) -endif() -if(NOT DEFINED DOXYGEN_CPP_CLI_SUPPORT) - set(DOXYGEN_CPP_CLI_SUPPORT NO) -endif() -if(NOT DEFINED DOXYGEN_SIP_SUPPORT) - set(DOXYGEN_SIP_SUPPORT NO) -endif() -if(NOT DEFINED DOXYGEN_IDL_PROPERTY_SUPPORT) - set(DOXYGEN_IDL_PROPERTY_SUPPORT YES) -endif() -if(NOT DEFINED DOXYGEN_DISTRIBUTE_GROUP_DOC) - set(DOXYGEN_DISTRIBUTE_GROUP_DOC NO) -endif() -if(NOT DEFINED DOXYGEN_GROUP_NESTED_COMPOUNDS) - set(DOXYGEN_GROUP_NESTED_COMPOUNDS NO) -endif() -if(NOT DEFINED DOXYGEN_SUBGROUPING) - set(DOXYGEN_SUBGROUPING YES) -endif() -if(NOT DEFINED DOXYGEN_INLINE_GROUPED_CLASSES) - set(DOXYGEN_INLINE_GROUPED_CLASSES NO) -endif() -if(NOT DEFINED DOXYGEN_INLINE_SIMPLE_STRUCTS) - set(DOXYGEN_INLINE_SIMPLE_STRUCTS NO) -endif() -if(NOT DEFINED DOXYGEN_TYPEDEF_HIDES_STRUCT) - set(DOXYGEN_TYPEDEF_HIDES_STRUCT NO) -endif() -if(NOT DEFINED DOXYGEN_LOOKUP_CACHE_SIZE) - set(DOXYGEN_LOOKUP_CACHE_SIZE 0) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_ALL) - set(DOXYGEN_EXTRACT_ALL NO) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_PRIVATE) - set(DOXYGEN_EXTRACT_PRIVATE NO) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_PRIV_VIRTUAL) - set(DOXYGEN_EXTRACT_PRIV_VIRTUAL NO) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_PACKAGE) - set(DOXYGEN_EXTRACT_PACKAGE NO) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_STATIC) - set(DOXYGEN_EXTRACT_STATIC NO) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_CLASSES) - set(DOXYGEN_EXTRACT_LOCAL_CLASSES YES) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_LOCAL_METHODS) - set(DOXYGEN_EXTRACT_LOCAL_METHODS NO) -endif() -if(NOT DEFINED DOXYGEN_EXTRACT_ANON_NSPACES) - set(DOXYGEN_EXTRACT_ANON_NSPACES NO) -endif() -if(NOT DEFINED DOXYGEN_HIDE_UNDOC_MEMBERS) - set(DOXYGEN_HIDE_UNDOC_MEMBERS NO) -endif() -if(NOT DEFINED DOXYGEN_HIDE_UNDOC_CLASSES) - set(DOXYGEN_HIDE_UNDOC_CLASSES NO) -endif() -if(NOT DEFINED DOXYGEN_HIDE_FRIEND_COMPOUNDS) - set(DOXYGEN_HIDE_FRIEND_COMPOUNDS NO) -endif() -if(NOT DEFINED DOXYGEN_HIDE_IN_BODY_DOCS) - set(DOXYGEN_HIDE_IN_BODY_DOCS NO) -endif() -if(NOT DEFINED DOXYGEN_INTERNAL_DOCS) - set(DOXYGEN_INTERNAL_DOCS NO) -endif() -if(NOT DEFINED DOXYGEN_CASE_SENSE_NAMES) - set(DOXYGEN_CASE_SENSE_NAMES YES) -endif() -if(NOT DEFINED DOXYGEN_HIDE_SCOPE_NAMES) - set(DOXYGEN_HIDE_SCOPE_NAMES NO) -endif() -if(NOT DEFINED DOXYGEN_HIDE_COMPOUND_REFERENCE) - set(DOXYGEN_HIDE_COMPOUND_REFERENCE NO) -endif() -if(NOT DEFINED DOXYGEN_SHOW_INCLUDE_FILES) - set(DOXYGEN_SHOW_INCLUDE_FILES YES) -endif() -if(NOT DEFINED DOXYGEN_SHOW_GROUPED_MEMB_INC) - set(DOXYGEN_SHOW_GROUPED_MEMB_INC NO) -endif() -if(NOT DEFINED DOXYGEN_FORCE_LOCAL_INCLUDES) - set(DOXYGEN_FORCE_LOCAL_INCLUDES NO) -endif() -if(NOT DEFINED DOXYGEN_INLINE_INFO) - set(DOXYGEN_INLINE_INFO YES) -endif() -if(NOT DEFINED DOXYGEN_SORT_MEMBER_DOCS) - set(DOXYGEN_SORT_MEMBER_DOCS YES) -endif() -if(NOT DEFINED DOXYGEN_SORT_BRIEF_DOCS) - set(DOXYGEN_SORT_BRIEF_DOCS NO) -endif() -if(NOT DEFINED DOXYGEN_SORT_MEMBERS_CTORS_1ST) - set(DOXYGEN_SORT_MEMBERS_CTORS_1ST NO) -endif() -if(NOT DEFINED DOXYGEN_SORT_GROUP_NAMES) - set(DOXYGEN_SORT_GROUP_NAMES NO) -endif() -if(NOT DEFINED DOXYGEN_SORT_BY_SCOPE_NAME) - set(DOXYGEN_SORT_BY_SCOPE_NAME NO) -endif() -if(NOT DEFINED DOXYGEN_STRICT_PROTO_MATCHING) - set(DOXYGEN_STRICT_PROTO_MATCHING NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_TODOLIST) - set(DOXYGEN_GENERATE_TODOLIST YES) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_TESTLIST) - set(DOXYGEN_GENERATE_TESTLIST YES) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_BUGLIST) - set(DOXYGEN_GENERATE_BUGLIST YES) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_DEPRECATEDLIST) - set(DOXYGEN_GENERATE_DEPRECATEDLIST YES) -endif() -if(NOT DEFINED DOXYGEN_MAX_INITIALIZER_LINES) - set(DOXYGEN_MAX_INITIALIZER_LINES 30) -endif() -if(NOT DEFINED DOXYGEN_SHOW_USED_FILES) - set(DOXYGEN_SHOW_USED_FILES YES) -endif() -if(NOT DEFINED DOXYGEN_SHOW_FILES) - set(DOXYGEN_SHOW_FILES YES) -endif() -if(NOT DEFINED DOXYGEN_SHOW_NAMESPACES) - set(DOXYGEN_SHOW_NAMESPACES YES) -endif() -if(NOT DEFINED DOXYGEN_QUIET) - set(DOXYGEN_QUIET NO) -endif() -if(NOT DEFINED DOXYGEN_WARNINGS) - set(DOXYGEN_WARNINGS YES) -endif() -if(NOT DEFINED DOXYGEN_WARN_IF_UNDOCUMENTED) - set(DOXYGEN_WARN_IF_UNDOCUMENTED YES) -endif() -if(NOT DEFINED DOXYGEN_WARN_IF_DOC_ERROR) - set(DOXYGEN_WARN_IF_DOC_ERROR YES) -endif() -if(NOT DEFINED DOXYGEN_WARN_NO_PARAMDOC) - set(DOXYGEN_WARN_NO_PARAMDOC NO) -endif() -if(NOT DEFINED DOXYGEN_WARN_AS_ERROR) - set(DOXYGEN_WARN_AS_ERROR NO) -endif() -if(NOT DEFINED DOXYGEN_WARN_FORMAT) - set(DOXYGEN_WARN_FORMAT "$file:$line: $text") -endif() -if(NOT DEFINED DOXYGEN_INPUT_ENCODING) - set(DOXYGEN_INPUT_ENCODING UTF-8) -endif() -if(NOT DEFINED DOXYGEN_FILE_PATTERNS) - set(DOXYGEN_FILE_PATTERNS *.c - *.cc - *.cxx - *.cpp - *.c++ - *.java - *.ii - *.ixx - *.ipp - *.i++ - *.inl - *.idl - *.ddl - *.odl - *.h - *.hh - *.hxx - *.hpp - *.h++ - *.cs - *.d - *.php - *.php4 - *.php5 - *.phtml - *.inc - *.m - *.markdown - *.md - *.mm - *.dox - *.doc - *.txt - *.py - *.pyw - *.f90 - *.f95 - *.f03 - *.f08 - *.f - *.for - *.tcl - *.vhd - *.vhdl - *.ucf - *.qsf - *.ice) -endif() -if(NOT DEFINED DOXYGEN_RECURSIVE) - set(DOXYGEN_RECURSIVE NO) -endif() -if(NOT DEFINED DOXYGEN_EXCLUDE_SYMLINKS) - set(DOXYGEN_EXCLUDE_SYMLINKS NO) -endif() -if(NOT DEFINED DOXYGEN_EXAMPLE_PATTERNS) - set(DOXYGEN_EXAMPLE_PATTERNS *) -endif() -if(NOT DEFINED DOXYGEN_EXAMPLE_RECURSIVE) - set(DOXYGEN_EXAMPLE_RECURSIVE NO) -endif() -if(NOT DEFINED DOXYGEN_FILTER_SOURCE_FILES) - set(DOXYGEN_FILTER_SOURCE_FILES NO) -endif() -if(NOT DEFINED DOXYGEN_SOURCE_BROWSER) - set(DOXYGEN_SOURCE_BROWSER NO) -endif() -if(NOT DEFINED DOXYGEN_INLINE_SOURCES) - set(DOXYGEN_INLINE_SOURCES NO) -endif() -if(NOT DEFINED DOXYGEN_STRIP_CODE_COMMENTS) - set(DOXYGEN_STRIP_CODE_COMMENTS YES) -endif() -if(NOT DEFINED DOXYGEN_REFERENCED_BY_RELATION) - set(DOXYGEN_REFERENCED_BY_RELATION NO) -endif() -if(NOT DEFINED DOXYGEN_REFERENCES_RELATION) - set(DOXYGEN_REFERENCES_RELATION NO) -endif() -if(NOT DEFINED DOXYGEN_REFERENCES_LINK_SOURCE) - set(DOXYGEN_REFERENCES_LINK_SOURCE YES) -endif() -if(NOT DEFINED DOXYGEN_SOURCE_TOOLTIPS) - set(DOXYGEN_SOURCE_TOOLTIPS YES) -endif() -if(NOT DEFINED DOXYGEN_USE_HTAGS) - set(DOXYGEN_USE_HTAGS NO) -endif() -if(NOT DEFINED DOXYGEN_VERBATIM_HEADERS) - set(DOXYGEN_VERBATIM_HEADERS YES) -endif() -if(NOT DEFINED DOXYGEN_CLANG_ASSISTED_PARSING) - set(DOXYGEN_CLANG_ASSISTED_PARSING NO) -endif() -if(NOT DEFINED DOXYGEN_ALPHABETICAL_INDEX) - set(DOXYGEN_ALPHABETICAL_INDEX YES) -endif() -if(NOT DEFINED DOXYGEN_COLS_IN_ALPHA_INDEX) - set(DOXYGEN_COLS_IN_ALPHA_INDEX 5) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_HTML) - set(DOXYGEN_GENERATE_HTML YES) -endif() -if(NOT DEFINED DOXYGEN_HTML_OUTPUT) - set(DOXYGEN_HTML_OUTPUT html) -endif() -if(NOT DEFINED DOXYGEN_HTML_FILE_EXTENSION) - set(DOXYGEN_HTML_FILE_EXTENSION .html) -endif() -if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_HUE) - set(DOXYGEN_HTML_COLORSTYLE_HUE 220) -endif() -if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_SAT) - set(DOXYGEN_HTML_COLORSTYLE_SAT 100) -endif() -if(NOT DEFINED DOXYGEN_HTML_COLORSTYLE_GAMMA) - set(DOXYGEN_HTML_COLORSTYLE_GAMMA 80) -endif() -if(NOT DEFINED DOXYGEN_HTML_TIMESTAMP) - set(DOXYGEN_HTML_TIMESTAMP NO) -endif() -if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_MENUS) - set(DOXYGEN_HTML_DYNAMIC_MENUS YES) -endif() -if(NOT DEFINED DOXYGEN_HTML_DYNAMIC_SECTIONS) - set(DOXYGEN_HTML_DYNAMIC_SECTIONS NO) -endif() -if(NOT DEFINED DOXYGEN_HTML_INDEX_NUM_ENTRIES) - set(DOXYGEN_HTML_INDEX_NUM_ENTRIES 100) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_DOCSET) - set(DOXYGEN_GENERATE_DOCSET NO) -endif() -if(NOT DEFINED DOXYGEN_DOCSET_FEEDNAME) - set(DOXYGEN_DOCSET_FEEDNAME "Doxygen generated docs") -endif() -if(NOT DEFINED DOXYGEN_DOCSET_BUNDLE_ID) - set(DOXYGEN_DOCSET_BUNDLE_ID org.doxygen.Project) -endif() -if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_ID) - set(DOXYGEN_DOCSET_PUBLISHER_ID org.doxygen.Publisher) -endif() -if(NOT DEFINED DOXYGEN_DOCSET_PUBLISHER_NAME) - set(DOXYGEN_DOCSET_PUBLISHER_NAME Publisher) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_HTMLHELP) - set(DOXYGEN_GENERATE_HTMLHELP NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_CHI) - set(DOXYGEN_GENERATE_CHI NO) -endif() -if(NOT DEFINED DOXYGEN_BINARY_TOC) - set(DOXYGEN_BINARY_TOC NO) -endif() -if(NOT DEFINED DOXYGEN_TOC_EXPAND) - set(DOXYGEN_TOC_EXPAND NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_QHP) - set(DOXYGEN_GENERATE_QHP NO) -endif() -if(NOT DEFINED DOXYGEN_QHP_NAMESPACE) - set(DOXYGEN_QHP_NAMESPACE org.doxygen.Project) -endif() -if(NOT DEFINED DOXYGEN_QHP_VIRTUAL_FOLDER) - set(DOXYGEN_QHP_VIRTUAL_FOLDER doc) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_ECLIPSEHELP) - set(DOXYGEN_GENERATE_ECLIPSEHELP NO) -endif() -if(NOT DEFINED DOXYGEN_ECLIPSE_DOC_ID) - set(DOXYGEN_ECLIPSE_DOC_ID org.doxygen.Project) -endif() -if(NOT DEFINED DOXYGEN_DISABLE_INDEX) - set(DOXYGEN_DISABLE_INDEX NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_TREEVIEW) - set(DOXYGEN_GENERATE_TREEVIEW NO) -endif() -if(NOT DEFINED DOXYGEN_ENUM_VALUES_PER_LINE) - set(DOXYGEN_ENUM_VALUES_PER_LINE 4) -endif() -if(NOT DEFINED DOXYGEN_TREEVIEW_WIDTH) - set(DOXYGEN_TREEVIEW_WIDTH 250) -endif() -if(NOT DEFINED DOXYGEN_EXT_LINKS_IN_WINDOW) - set(DOXYGEN_EXT_LINKS_IN_WINDOW NO) -endif() -if(NOT DEFINED DOXYGEN_FORMULA_FONTSIZE) - set(DOXYGEN_FORMULA_FONTSIZE 10) -endif() -if(NOT DEFINED DOXYGEN_FORMULA_TRANSPARENT) - set(DOXYGEN_FORMULA_TRANSPARENT YES) -endif() -if(NOT DEFINED DOXYGEN_USE_MATHJAX) - set(DOXYGEN_USE_MATHJAX NO) -endif() -if(NOT DEFINED DOXYGEN_MATHJAX_FORMAT) - set(DOXYGEN_MATHJAX_FORMAT HTML-CSS) -endif() -if(NOT DEFINED DOXYGEN_MATHJAX_RELPATH) - set(DOXYGEN_MATHJAX_RELPATH https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/) -endif() -if(NOT DEFINED DOXYGEN_SEARCHENGINE) - set(DOXYGEN_SEARCHENGINE YES) -endif() -if(NOT DEFINED DOXYGEN_SERVER_BASED_SEARCH) - set(DOXYGEN_SERVER_BASED_SEARCH NO) -endif() -if(NOT DEFINED DOXYGEN_EXTERNAL_SEARCH) - set(DOXYGEN_EXTERNAL_SEARCH NO) -endif() -if(NOT DEFINED DOXYGEN_SEARCHDATA_FILE) - set(DOXYGEN_SEARCHDATA_FILE searchdata.xml) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_LATEX) - set(DOXYGEN_GENERATE_LATEX YES) -endif() -if(NOT DEFINED DOXYGEN_LATEX_OUTPUT) - set(DOXYGEN_LATEX_OUTPUT latex) -endif() -if(NOT DEFINED DOXYGEN_MAKEINDEX_CMD_NAME) - set(DOXYGEN_MAKEINDEX_CMD_NAME makeindex) -endif() -if(NOT DEFINED DOXYGEN_LATEX_MAKEINDEX_CMD) - set(DOXYGEN_LATEX_MAKEINDEX_CMD makeindex) -endif() -if(NOT DEFINED DOXYGEN_COMPACT_LATEX) - set(DOXYGEN_COMPACT_LATEX NO) -endif() -if(NOT DEFINED DOXYGEN_PAPER_TYPE) - set(DOXYGEN_PAPER_TYPE a4) -endif() -if(NOT DEFINED DOXYGEN_PDF_HYPERLINKS) - set(DOXYGEN_PDF_HYPERLINKS YES) -endif() -if(NOT DEFINED DOXYGEN_USE_PDFLATEX) - set(DOXYGEN_USE_PDFLATEX YES) -endif() -if(NOT DEFINED DOXYGEN_LATEX_BATCHMODE) - set(DOXYGEN_LATEX_BATCHMODE NO) -endif() -if(NOT DEFINED DOXYGEN_LATEX_HIDE_INDICES) - set(DOXYGEN_LATEX_HIDE_INDICES NO) -endif() -if(NOT DEFINED DOXYGEN_LATEX_SOURCE_CODE) - set(DOXYGEN_LATEX_SOURCE_CODE NO) -endif() -if(NOT DEFINED DOXYGEN_LATEX_BIB_STYLE) - set(DOXYGEN_LATEX_BIB_STYLE plain) -endif() -if(NOT DEFINED DOXYGEN_LATEX_TIMESTAMP) - set(DOXYGEN_LATEX_TIMESTAMP NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_RTF) - set(DOXYGEN_GENERATE_RTF NO) -endif() -if(NOT DEFINED DOXYGEN_RTF_OUTPUT) - set(DOXYGEN_RTF_OUTPUT rtf) -endif() -if(NOT DEFINED DOXYGEN_COMPACT_RTF) - set(DOXYGEN_COMPACT_RTF NO) -endif() -if(NOT DEFINED DOXYGEN_RTF_HYPERLINKS) - set(DOXYGEN_RTF_HYPERLINKS NO) -endif() -if(NOT DEFINED DOXYGEN_RTF_SOURCE_CODE) - set(DOXYGEN_RTF_SOURCE_CODE NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_MAN) - set(DOXYGEN_GENERATE_MAN NO) -endif() -if(NOT DEFINED DOXYGEN_MAN_OUTPUT) - set(DOXYGEN_MAN_OUTPUT man) -endif() -if(NOT DEFINED DOXYGEN_MAN_EXTENSION) - set(DOXYGEN_MAN_EXTENSION .3) -endif() -if(NOT DEFINED DOXYGEN_MAN_LINKS) - set(DOXYGEN_MAN_LINKS NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_XML) - set(DOXYGEN_GENERATE_XML NO) -endif() -if(NOT DEFINED DOXYGEN_XML_OUTPUT) - set(DOXYGEN_XML_OUTPUT xml) -endif() -if(NOT DEFINED DOXYGEN_XML_PROGRAMLISTING) - set(DOXYGEN_XML_PROGRAMLISTING YES) -endif() -if(NOT DEFINED DOXYGEN_XML_NS_MEMB_FILE_SCOPE) - set(DOXYGEN_XML_NS_MEMB_FILE_SCOPE NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_DOCBOOK) - set(DOXYGEN_GENERATE_DOCBOOK NO) -endif() -if(NOT DEFINED DOXYGEN_DOCBOOK_OUTPUT) - set(DOXYGEN_DOCBOOK_OUTPUT docbook) -endif() -if(NOT DEFINED DOXYGEN_DOCBOOK_PROGRAMLISTING) - set(DOXYGEN_DOCBOOK_PROGRAMLISTING NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_AUTOGEN_DEF) - set(DOXYGEN_GENERATE_AUTOGEN_DEF NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_PERLMOD) - set(DOXYGEN_GENERATE_PERLMOD NO) -endif() -if(NOT DEFINED DOXYGEN_PERLMOD_LATEX) - set(DOXYGEN_PERLMOD_LATEX NO) -endif() -if(NOT DEFINED DOXYGEN_PERLMOD_PRETTY) - set(DOXYGEN_PERLMOD_PRETTY YES) -endif() -if(NOT DEFINED DOXYGEN_ENABLE_PREPROCESSING) - set(DOXYGEN_ENABLE_PREPROCESSING YES) -endif() -if(NOT DEFINED DOXYGEN_MACRO_EXPANSION) - set(DOXYGEN_MACRO_EXPANSION NO) -endif() -if(NOT DEFINED DOXYGEN_EXPAND_ONLY_PREDEF) - set(DOXYGEN_EXPAND_ONLY_PREDEF NO) -endif() -if(NOT DEFINED DOXYGEN_SEARCH_INCLUDES) - set(DOXYGEN_SEARCH_INCLUDES YES) -endif() -if(NOT DEFINED DOXYGEN_SKIP_FUNCTION_MACROS) - set(DOXYGEN_SKIP_FUNCTION_MACROS YES) -endif() -if(NOT DEFINED DOXYGEN_ALLEXTERNALS) - set(DOXYGEN_ALLEXTERNALS NO) -endif() -if(NOT DEFINED DOXYGEN_EXTERNAL_GROUPS) - set(DOXYGEN_EXTERNAL_GROUPS YES) -endif() -if(NOT DEFINED DOXYGEN_EXTERNAL_PAGES) - set(DOXYGEN_EXTERNAL_PAGES YES) -endif() -if(NOT DEFINED DOXYGEN_CLASS_DIAGRAMS) - set(DOXYGEN_CLASS_DIAGRAMS YES) -endif() -if(NOT DEFINED DOXYGEN_HIDE_UNDOC_RELATIONS) - set(DOXYGEN_HIDE_UNDOC_RELATIONS YES) -endif() -if(NOT DEFINED DOXYGEN_HAVE_DOT) - set(DOXYGEN_HAVE_DOT YES) -endif() -if(NOT DEFINED DOXYGEN_DOT_NUM_THREADS) - set(DOXYGEN_DOT_NUM_THREADS 0) -endif() -if(NOT DEFINED DOXYGEN_DOT_FONTNAME) - set(DOXYGEN_DOT_FONTNAME Helvetica) -endif() -if(NOT DEFINED DOXYGEN_DOT_FONTSIZE) - set(DOXYGEN_DOT_FONTSIZE 10) -endif() -if(NOT DEFINED DOXYGEN_CLASS_GRAPH) - set(DOXYGEN_CLASS_GRAPH YES) -endif() -if(NOT DEFINED DOXYGEN_COLLABORATION_GRAPH) - set(DOXYGEN_COLLABORATION_GRAPH YES) -endif() -if(NOT DEFINED DOXYGEN_GROUP_GRAPHS) - set(DOXYGEN_GROUP_GRAPHS YES) -endif() -if(NOT DEFINED DOXYGEN_UML_LOOK) - set(DOXYGEN_UML_LOOK NO) -endif() -if(NOT DEFINED DOXYGEN_UML_LIMIT_NUM_FIELDS) - set(DOXYGEN_UML_LIMIT_NUM_FIELDS 10) -endif() -if(NOT DEFINED DOXYGEN_TEMPLATE_RELATIONS) - set(DOXYGEN_TEMPLATE_RELATIONS NO) -endif() -if(NOT DEFINED DOXYGEN_INCLUDE_GRAPH) - set(DOXYGEN_INCLUDE_GRAPH YES) -endif() -if(NOT DEFINED DOXYGEN_INCLUDED_BY_GRAPH) - set(DOXYGEN_INCLUDED_BY_GRAPH YES) -endif() -if(NOT DEFINED DOXYGEN_CALL_GRAPH) - set(DOXYGEN_CALL_GRAPH NO) -endif() -if(NOT DEFINED DOXYGEN_CALLER_GRAPH) - set(DOXYGEN_CALLER_GRAPH NO) -endif() -if(NOT DEFINED DOXYGEN_GRAPHICAL_HIERARCHY) - set(DOXYGEN_GRAPHICAL_HIERARCHY YES) -endif() -if(NOT DEFINED DOXYGEN_DIRECTORY_GRAPH) - set(DOXYGEN_DIRECTORY_GRAPH YES) -endif() -if(NOT DEFINED DOXYGEN_DOT_IMAGE_FORMAT) - set(DOXYGEN_DOT_IMAGE_FORMAT png) -endif() -if(NOT DEFINED DOXYGEN_INTERACTIVE_SVG) - set(DOXYGEN_INTERACTIVE_SVG NO) -endif() -if(NOT DEFINED DOXYGEN_DOT_GRAPH_MAX_NODES) - set(DOXYGEN_DOT_GRAPH_MAX_NODES 50) -endif() -if(NOT DEFINED DOXYGEN_MAX_DOT_GRAPH_DEPTH) - set(DOXYGEN_MAX_DOT_GRAPH_DEPTH 0) -endif() -if(NOT DEFINED DOXYGEN_DOT_TRANSPARENT) - set(DOXYGEN_DOT_TRANSPARENT NO) -endif() -if(NOT DEFINED DOXYGEN_DOT_MULTI_TARGETS) - set(DOXYGEN_DOT_MULTI_TARGETS NO) -endif() -if(NOT DEFINED DOXYGEN_GENERATE_LEGEND) - set(DOXYGEN_GENERATE_LEGEND YES) -endif() -if(NOT DEFINED DOXYGEN_DOT_CLEANUP) - set(DOXYGEN_DOT_CLEANUP YES) -endif() diff --git a/wound-w/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake b/wound-w/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake deleted file mode 100644 index 278ef39e..00000000 --- a/wound-w/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake +++ /dev/null @@ -1,88 +0,0 @@ -set(CMAKE_CXX_COMPILER "/usr/bin/c++") -set(CMAKE_CXX_COMPILER_ARG1 "") -set(CMAKE_CXX_COMPILER_ID "GNU") -set(CMAKE_CXX_COMPILER_VERSION "9.4.0") -set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") -set(CMAKE_CXX_COMPILER_WRAPPER "") -set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14") -set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20") -set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") -set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") -set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") -set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") -set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") - -set(CMAKE_CXX_PLATFORM_ID "Linux") -set(CMAKE_CXX_SIMULATE_ID "") -set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "") -set(CMAKE_CXX_SIMULATE_VERSION "") - - - -set(CMAKE_AR "/usr/bin/ar") -set(CMAKE_CXX_COMPILER_AR "/usr/bin/gcc-ar-9") -set(CMAKE_RANLIB "/usr/bin/ranlib") -set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/gcc-ranlib-9") -set(CMAKE_LINKER "/usr/bin/ld") -set(CMAKE_MT "") -set(CMAKE_COMPILER_IS_GNUCXX 1) -set(CMAKE_CXX_COMPILER_LOADED 1) -set(CMAKE_CXX_COMPILER_WORKS TRUE) -set(CMAKE_CXX_ABI_COMPILED TRUE) -set(CMAKE_COMPILER_IS_MINGW ) -set(CMAKE_COMPILER_IS_CYGWIN ) -if(CMAKE_COMPILER_IS_CYGWIN) - set(CYGWIN 1) - set(UNIX 1) -endif() - -set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") - -if(CMAKE_COMPILER_IS_MINGW) - set(MINGW 1) -endif() -set(CMAKE_CXX_COMPILER_ID_RUN 1) -set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP) -set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) - -foreach (lang C OBJC OBJCXX) - if (CMAKE_${lang}_COMPILER_ID_RUN) - foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) - list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) - endforeach() - endif() -endforeach() - -set(CMAKE_CXX_LINKER_PREFERENCE 30) -set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) - -# Save compiler ABI information. -set(CMAKE_CXX_SIZEOF_DATA_PTR "8") -set(CMAKE_CXX_COMPILER_ABI "ELF") -set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") - -if(CMAKE_CXX_SIZEOF_DATA_PTR) - set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") -endif() - -if(CMAKE_CXX_COMPILER_ABI) - set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") -endif() - -if(CMAKE_CXX_LIBRARY_ARCHITECTURE) - set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") -endif() - -set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") -if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) - set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") -endif() - - - - - -set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include") -set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc") -set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib") -set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/wound-w/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin b/wound-w/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin deleted file mode 100755 index 156cfcfc782ba2dc2f291ca842e4a4516fe2c356..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16560 zcmeHOZ)_Y#6`%9j$)!!smoyvn%vnwdyOtmo7lvVrpwuPwvXOF z?)Io%(NJWFI0cgkRnUGwDn+15d};Xrp8!W`(@F?vgj9;4ULUuER;5=OoERY94~Tj#n5l!?6b&9!;ua#J-b(4kCRM{I=sHkOR#BOG z#%tt&k@=cGjXb(=g7g^edKjC9R;9Pl=|qjSMtyuDiO|-KSqux#soiM zil-YjWkoQ$^@d5$jXk8th(0hKecej_JO1uvJx!VsVHe(`Xu-(-?gKp;7pi|d;BG!b z{#NRT5XGO7!Yg)X(jy&vcW08VnRKo^**Y2SXzkdmm-6}^=^ERGK5$I+4Gak|Gm9LB zQTD|~Dr5cgv-h1U#vXj`#^jmevtRqwV*@`q_5|BNpD2R~^?68O8T04^Wz_Y5268l( z0WYS0oR!21Ut!?2I(1us+faue1Wv2NkFLPq3jDk4$P0+yD2A&;nC9qY!W>KI5}EYF zDJWu(H*e#4>>$5j<9QAszi8v>R)@5gya;#^@FL(vz>9zv0WShx1iT3R zQxW)6^X-2#rY{AI(@j6$Erjv8S*xM?k}>^U;JnnY?t2R8tJOQd4$!<^pgfemCrdp- zmfPRxuUve@LfF4( zZ35Q=m9zv0WShx1iT1%5%415MZk-I7lHqi2>2Xt8-?f}=skR(1n=qcV`j2o6_2-t zPhcn{pBPCWhy4Ob__q2#fbVGWJ=gr3)oKB75%6)qz(Tb;40r|b8Nl$BYV{?+rvY2& zr5L^&#pHYVi11B@d|TJ94xEKLY``0eB-tQvU}lE0A3QoP;ap1L(R87 z6nIn|+;ZT(@82O`L!$ou@EK+~$YVmA7JT+YoBEK51w*GAy4S5b367x%e;J6!;PWx4 zPXUVFVCYOkf3W3?{#a0(X^aJTexa!+*mi1_5e!eS?h8h8!EiL#77gy~3Tj=!mabr^ zD;SXP7k>%rp9eeM`#B7xm%Ipg5%415MZk-I7XdE3dANt22vBVv`=z1RRqWpw_}!g*aRvQ+q<30EcaGbwHM+f zDR?6*+doh3g*U^p%yERrK3RU5>i&+m9F2;lV;iQGHAnH_ zMhOmWB=hEYCO?wMm`N*NESZV&q!`U-3z?LaO6uXZj`sROcw{7PCW^(xl$pv|#VIjX zOk`7LvYgFMfr_nUf~4gT?LL%vFx5Rg+zpP>nN%^_)vu2h3c~zoyuBlx8_S!vKe>?& zOA`L!2FtxiqK9H;Y@o-4QzlN^Nn!SUWFUH|zuQ?OkFx*;=XlJRK^BajBf{*9AMT3A z&BMLDM`MHLV6-b9L#y%-%xI}Buks%sdr2h|R)STQ&do$3j)OBMN~yy!AnQCSV(vVxOW>D2o`;N;nuKp0c_5jWf!9+L zG}b1PpwA_xuLhmc;5-;lWYeS29PBq8;wf|(@L3qd?%DG%mvOxfQxxuWX%KE&HWt=5J_V2#_ zuRuLs6W8NUnoNZJJV>nc#d*Z9!pE+!ksc$PV;wFtKIPKq^)n;Ot)%}gmwtp481eVp zp4|4Hb?NhZoROcG*@k=kewXw){z4;3LY!arVBP=xjQe}Y+BNJXH|o>-r85i0HaB0|z_3fT{_HUC_` z2^qA-{(1csB7OG5@^m>|6n-F(Bk>x~`gheBm0^85^4PJ9M%W-tY@Ej!Qf?35|M343 eZo5OD2JQ}*arVoyxD2hQpA0LBwJrr$QT!cqBtQ)S diff --git a/wound-w/build/CMakeFiles/3.17.0/CMakeSystem.cmake b/wound-w/build/CMakeFiles/3.17.0/CMakeSystem.cmake deleted file mode 100644 index 0fd1f759..00000000 --- a/wound-w/build/CMakeFiles/3.17.0/CMakeSystem.cmake +++ /dev/null @@ -1,15 +0,0 @@ -set(CMAKE_HOST_SYSTEM "Linux-5.4.0-113-generic") -set(CMAKE_HOST_SYSTEM_NAME "Linux") -set(CMAKE_HOST_SYSTEM_VERSION "5.4.0-113-generic") -set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") - - - -set(CMAKE_SYSTEM "Linux-5.4.0-113-generic") -set(CMAKE_SYSTEM_NAME "Linux") -set(CMAKE_SYSTEM_VERSION "5.4.0-113-generic") -set(CMAKE_SYSTEM_PROCESSOR "x86_64") - -set(CMAKE_CROSSCOMPILING "FALSE") - -set(CMAKE_SYSTEM_LOADED 1) diff --git a/wound-w/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp b/wound-w/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp deleted file mode 100644 index 69cfdba6..00000000 --- a/wound-w/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp +++ /dev/null @@ -1,660 +0,0 @@ -/* This source file must have a .cpp extension so that all C++ compilers - recognize the extension without flags. Borland does not know .cxx for - example. */ -#ifndef __cplusplus -# error "A C compiler has been selected for C++." -#endif - - -/* Version number components: V=Version, R=Revision, P=Patch - Version date components: YYYY=Year, MM=Month, DD=Day */ - -#if defined(__COMO__) -# define COMPILER_ID "Comeau" - /* __COMO_VERSION__ = VRR */ -# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) -# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) - -#elif defined(__INTEL_COMPILER) || defined(__ICC) -# define COMPILER_ID "Intel" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# if defined(__GNUC__) -# define SIMULATE_ID "GNU" -# endif - /* __INTEL_COMPILER = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) -# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) -# if defined(__INTEL_COMPILER_UPDATE) -# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) -# else -# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) -# endif -# if defined(__INTEL_COMPILER_BUILD_DATE) - /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ -# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) -# endif -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif -# if defined(__GNUC__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) -# elif defined(__GNUG__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) -# endif -# if defined(__GNUC_MINOR__) -# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) -# endif -# if defined(__GNUC_PATCHLEVEL__) -# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif - -#elif defined(__PATHCC__) -# define COMPILER_ID "PathScale" -# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) -# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) -# if defined(__PATHCC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) -# endif - -#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) -# define COMPILER_ID "Embarcadero" -# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) -# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) -# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) - -#elif defined(__BORLANDC__) -# define COMPILER_ID "Borland" - /* __BORLANDC__ = 0xVRR */ -# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) -# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) - -#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 -# define COMPILER_ID "Watcom" - /* __WATCOMC__ = VVRR */ -# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) -# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) -# if (__WATCOMC__ % 10) > 0 -# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) -# endif - -#elif defined(__WATCOMC__) -# define COMPILER_ID "OpenWatcom" - /* __WATCOMC__ = VVRP + 1100 */ -# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) -# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) -# if (__WATCOMC__ % 10) > 0 -# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) -# endif - -#elif defined(__SUNPRO_CC) -# define COMPILER_ID "SunPro" -# if __SUNPRO_CC >= 0x5100 - /* __SUNPRO_CC = 0xVRRP */ -# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) -# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) -# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) -# else - /* __SUNPRO_CC = 0xVRP */ -# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) -# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) -# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) -# endif - -#elif defined(__HP_aCC) -# define COMPILER_ID "HP" - /* __HP_aCC = VVRRPP */ -# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) -# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) -# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) - -#elif defined(__DECCXX) -# define COMPILER_ID "Compaq" - /* __DECCXX_VER = VVRRTPPPP */ -# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) -# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) -# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) - -#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) -# define COMPILER_ID "zOS" - /* __IBMCPP__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) - -#elif defined(__ibmxl__) && defined(__clang__) -# define COMPILER_ID "XLClang" -# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) -# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) -# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) -# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) - - -#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 -# define COMPILER_ID "XL" - /* __IBMCPP__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) - -#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 -# define COMPILER_ID "VisualAge" - /* __IBMCPP__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) - -#elif defined(__PGI) -# define COMPILER_ID "PGI" -# define COMPILER_VERSION_MAJOR DEC(__PGIC__) -# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) -# if defined(__PGIC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) -# endif - -#elif defined(_CRAYC) -# define COMPILER_ID "Cray" -# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) -# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) - -#elif defined(__TI_COMPILER_VERSION__) -# define COMPILER_ID "TI" - /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ -# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) -# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) -# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) - -#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) -# define COMPILER_ID "Fujitsu" - -#elif defined(__ghs__) -# define COMPILER_ID "GHS" -/* __GHS_VERSION_NUMBER = VVVVRP */ -# ifdef __GHS_VERSION_NUMBER -# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) -# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) -# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) -# endif - -#elif defined(__SCO_VERSION__) -# define COMPILER_ID "SCO" - -#elif defined(__ARMCC_VERSION) && !defined(__clang__) -# define COMPILER_ID "ARMCC" -#if __ARMCC_VERSION >= 1000000 - /* __ARMCC_VERSION = VRRPPPP */ - # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) - # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) - # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) -#else - /* __ARMCC_VERSION = VRPPPP */ - # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) - # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) - # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) -#endif - - -#elif defined(__clang__) && defined(__apple_build_version__) -# define COMPILER_ID "AppleClang" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# define COMPILER_VERSION_MAJOR DEC(__clang_major__) -# define COMPILER_VERSION_MINOR DEC(__clang_minor__) -# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif -# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) - -#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) -# define COMPILER_ID "ARMClang" - # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) - # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) - # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) -# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) - -#elif defined(__clang__) -# define COMPILER_ID "Clang" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# define COMPILER_VERSION_MAJOR DEC(__clang_major__) -# define COMPILER_VERSION_MINOR DEC(__clang_minor__) -# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif - -#elif defined(__GNUC__) || defined(__GNUG__) -# define COMPILER_ID "GNU" -# if defined(__GNUC__) -# define COMPILER_VERSION_MAJOR DEC(__GNUC__) -# else -# define COMPILER_VERSION_MAJOR DEC(__GNUG__) -# endif -# if defined(__GNUC_MINOR__) -# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) -# endif -# if defined(__GNUC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif - -#elif defined(_MSC_VER) -# define COMPILER_ID "MSVC" - /* _MSC_VER = VVRR */ -# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) -# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) -# if defined(_MSC_FULL_VER) -# if _MSC_VER >= 1400 - /* _MSC_FULL_VER = VVRRPPPPP */ -# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) -# else - /* _MSC_FULL_VER = VVRRPPPP */ -# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) -# endif -# endif -# if defined(_MSC_BUILD) -# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) -# endif - -#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) -# define COMPILER_ID "ADSP" -#if defined(__VISUALDSPVERSION__) - /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ -# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) -# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) -# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) -#endif - -#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) -# define COMPILER_ID "IAR" -# if defined(__VER__) && defined(__ICCARM__) -# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) -# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) -# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) -# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) -# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) -# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) -# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) -# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) -# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) -# endif - - -/* These compilers are either not known or too old to define an - identification macro. Try to identify the platform and guess that - it is the native compiler. */ -#elif defined(__hpux) || defined(__hpua) -# define COMPILER_ID "HP" - -#else /* unknown compiler */ -# define COMPILER_ID "" -#endif - -/* Construct the string literal in pieces to prevent the source from - getting matched. Store it in a pointer rather than an array - because some compilers will just produce instructions to fill the - array rather than assigning a pointer to a static array. */ -char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; -#ifdef SIMULATE_ID -char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; -#endif - -#ifdef __QNXNTO__ -char const* qnxnto = "INFO" ":" "qnxnto[]"; -#endif - -#if defined(__CRAYXE) || defined(__CRAYXC) -char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; -#endif - -#define STRINGIFY_HELPER(X) #X -#define STRINGIFY(X) STRINGIFY_HELPER(X) - -/* Identify known platforms by name. */ -#if defined(__linux) || defined(__linux__) || defined(linux) -# define PLATFORM_ID "Linux" - -#elif defined(__CYGWIN__) -# define PLATFORM_ID "Cygwin" - -#elif defined(__MINGW32__) -# define PLATFORM_ID "MinGW" - -#elif defined(__APPLE__) -# define PLATFORM_ID "Darwin" - -#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) -# define PLATFORM_ID "Windows" - -#elif defined(__FreeBSD__) || defined(__FreeBSD) -# define PLATFORM_ID "FreeBSD" - -#elif defined(__NetBSD__) || defined(__NetBSD) -# define PLATFORM_ID "NetBSD" - -#elif defined(__OpenBSD__) || defined(__OPENBSD) -# define PLATFORM_ID "OpenBSD" - -#elif defined(__sun) || defined(sun) -# define PLATFORM_ID "SunOS" - -#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) -# define PLATFORM_ID "AIX" - -#elif defined(__hpux) || defined(__hpux__) -# define PLATFORM_ID "HP-UX" - -#elif defined(__HAIKU__) -# define PLATFORM_ID "Haiku" - -#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) -# define PLATFORM_ID "BeOS" - -#elif defined(__QNX__) || defined(__QNXNTO__) -# define PLATFORM_ID "QNX" - -#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) -# define PLATFORM_ID "Tru64" - -#elif defined(__riscos) || defined(__riscos__) -# define PLATFORM_ID "RISCos" - -#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) -# define PLATFORM_ID "SINIX" - -#elif defined(__UNIX_SV__) -# define PLATFORM_ID "UNIX_SV" - -#elif defined(__bsdos__) -# define PLATFORM_ID "BSDOS" - -#elif defined(_MPRAS) || defined(MPRAS) -# define PLATFORM_ID "MP-RAS" - -#elif defined(__osf) || defined(__osf__) -# define PLATFORM_ID "OSF1" - -#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) -# define PLATFORM_ID "SCO_SV" - -#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) -# define PLATFORM_ID "ULTRIX" - -#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) -# define PLATFORM_ID "Xenix" - -#elif defined(__WATCOMC__) -# if defined(__LINUX__) -# define PLATFORM_ID "Linux" - -# elif defined(__DOS__) -# define PLATFORM_ID "DOS" - -# elif defined(__OS2__) -# define PLATFORM_ID "OS2" - -# elif defined(__WINDOWS__) -# define PLATFORM_ID "Windows3x" - -# else /* unknown platform */ -# define PLATFORM_ID -# endif - -#elif defined(__INTEGRITY) -# if defined(INT_178B) -# define PLATFORM_ID "Integrity178" - -# else /* regular Integrity */ -# define PLATFORM_ID "Integrity" -# endif - -#else /* unknown platform */ -# define PLATFORM_ID - -#endif - -/* For windows compilers MSVC and Intel we can determine - the architecture of the compiler being used. This is because - the compilers do not have flags that can change the architecture, - but rather depend on which compiler is being used -*/ -#if defined(_WIN32) && defined(_MSC_VER) -# if defined(_M_IA64) -# define ARCHITECTURE_ID "IA64" - -# elif defined(_M_X64) || defined(_M_AMD64) -# define ARCHITECTURE_ID "x64" - -# elif defined(_M_IX86) -# define ARCHITECTURE_ID "X86" - -# elif defined(_M_ARM64) -# define ARCHITECTURE_ID "ARM64" - -# elif defined(_M_ARM) -# if _M_ARM == 4 -# define ARCHITECTURE_ID "ARMV4I" -# elif _M_ARM == 5 -# define ARCHITECTURE_ID "ARMV5I" -# else -# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) -# endif - -# elif defined(_M_MIPS) -# define ARCHITECTURE_ID "MIPS" - -# elif defined(_M_SH) -# define ARCHITECTURE_ID "SHx" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__WATCOMC__) -# if defined(_M_I86) -# define ARCHITECTURE_ID "I86" - -# elif defined(_M_IX86) -# define ARCHITECTURE_ID "X86" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) -# if defined(__ICCARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__ICCRX__) -# define ARCHITECTURE_ID "RX" - -# elif defined(__ICCRH850__) -# define ARCHITECTURE_ID "RH850" - -# elif defined(__ICCRL78__) -# define ARCHITECTURE_ID "RL78" - -# elif defined(__ICCRISCV__) -# define ARCHITECTURE_ID "RISCV" - -# elif defined(__ICCAVR__) -# define ARCHITECTURE_ID "AVR" - -# elif defined(__ICC430__) -# define ARCHITECTURE_ID "MSP430" - -# elif defined(__ICCV850__) -# define ARCHITECTURE_ID "V850" - -# elif defined(__ICC8051__) -# define ARCHITECTURE_ID "8051" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__ghs__) -# if defined(__PPC64__) -# define ARCHITECTURE_ID "PPC64" - -# elif defined(__ppc__) -# define ARCHITECTURE_ID "PPC" - -# elif defined(__ARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__x86_64__) -# define ARCHITECTURE_ID "x64" - -# elif defined(__i386__) -# define ARCHITECTURE_ID "X86" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif -#else -# define ARCHITECTURE_ID -#endif - -/* Convert integer to decimal digit literals. */ -#define DEC(n) \ - ('0' + (((n) / 10000000)%10)), \ - ('0' + (((n) / 1000000)%10)), \ - ('0' + (((n) / 100000)%10)), \ - ('0' + (((n) / 10000)%10)), \ - ('0' + (((n) / 1000)%10)), \ - ('0' + (((n) / 100)%10)), \ - ('0' + (((n) / 10)%10)), \ - ('0' + ((n) % 10)) - -/* Convert integer to hex digit literals. */ -#define HEX(n) \ - ('0' + ((n)>>28 & 0xF)), \ - ('0' + ((n)>>24 & 0xF)), \ - ('0' + ((n)>>20 & 0xF)), \ - ('0' + ((n)>>16 & 0xF)), \ - ('0' + ((n)>>12 & 0xF)), \ - ('0' + ((n)>>8 & 0xF)), \ - ('0' + ((n)>>4 & 0xF)), \ - ('0' + ((n) & 0xF)) - -/* Construct a string literal encoding the version number components. */ -#ifdef COMPILER_VERSION_MAJOR -char const info_version[] = { - 'I', 'N', 'F', 'O', ':', - 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', - COMPILER_VERSION_MAJOR, -# ifdef COMPILER_VERSION_MINOR - '.', COMPILER_VERSION_MINOR, -# ifdef COMPILER_VERSION_PATCH - '.', COMPILER_VERSION_PATCH, -# ifdef COMPILER_VERSION_TWEAK - '.', COMPILER_VERSION_TWEAK, -# endif -# endif -# endif - ']','\0'}; -#endif - -/* Construct a string literal encoding the internal version number. */ -#ifdef COMPILER_VERSION_INTERNAL -char const info_version_internal[] = { - 'I', 'N', 'F', 'O', ':', - 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', - 'i','n','t','e','r','n','a','l','[', - COMPILER_VERSION_INTERNAL,']','\0'}; -#endif - -/* Construct a string literal encoding the version number components. */ -#ifdef SIMULATE_VERSION_MAJOR -char const info_simulate_version[] = { - 'I', 'N', 'F', 'O', ':', - 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', - SIMULATE_VERSION_MAJOR, -# ifdef SIMULATE_VERSION_MINOR - '.', SIMULATE_VERSION_MINOR, -# ifdef SIMULATE_VERSION_PATCH - '.', SIMULATE_VERSION_PATCH, -# ifdef SIMULATE_VERSION_TWEAK - '.', SIMULATE_VERSION_TWEAK, -# endif -# endif -# endif - ']','\0'}; -#endif - -/* Construct the string literal in pieces to prevent the source from - getting matched. Store it in a pointer rather than an array - because some compilers will just produce instructions to fill the - array rather than assigning a pointer to a static array. */ -char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; -char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; - - - - -#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L -# if defined(__INTEL_CXX11_MODE__) -# if defined(__cpp_aggregate_nsdmi) -# define CXX_STD 201402L -# else -# define CXX_STD 201103L -# endif -# else -# define CXX_STD 199711L -# endif -#elif defined(_MSC_VER) && defined(_MSVC_LANG) -# define CXX_STD _MSVC_LANG -#else -# define CXX_STD __cplusplus -#endif - -const char* info_language_dialect_default = "INFO" ":" "dialect_default[" -#if CXX_STD > 201703L - "20" -#elif CXX_STD >= 201703L - "17" -#elif CXX_STD >= 201402L - "14" -#elif CXX_STD >= 201103L - "11" -#else - "98" -#endif -"]"; - -/*--------------------------------------------------------------------------*/ - -int main(int argc, char* argv[]) -{ - int require = 0; - require += info_compiler[argc]; - require += info_platform[argc]; -#ifdef COMPILER_VERSION_MAJOR - require += info_version[argc]; -#endif -#ifdef COMPILER_VERSION_INTERNAL - require += info_version_internal[argc]; -#endif -#ifdef SIMULATE_ID - require += info_simulate[argc]; -#endif -#ifdef SIMULATE_VERSION_MAJOR - require += info_simulate_version[argc]; -#endif -#if defined(__CRAYXE) || defined(__CRAYXC) - require += info_cray[argc]; -#endif - require += info_language_dialect_default[argc]; - (void)argv; - return require; -} diff --git a/wound-w/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx b/wound-w/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx deleted file mode 100644 index 13435e07..00000000 --- a/wound-w/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx +++ /dev/null @@ -1,28 +0,0 @@ -#ifdef CHECK_FUNCTION_EXISTS - -# ifdef __cplusplus -extern "C" -# endif - char - CHECK_FUNCTION_EXISTS(void); -# ifdef __CLASSIC_C__ -int main() -{ - int ac; - char* av[]; -# else -int main(int ac, char* av[]) -{ -# endif - CHECK_FUNCTION_EXISTS(); - if (ac > 1000) { - return *av[0]; - } - return 0; -} - -#else /* CHECK_FUNCTION_EXISTS */ - -# error "CHECK_FUNCTION_EXISTS has to specify the function" - -#endif /* CHECK_FUNCTION_EXISTS */ diff --git a/wound-w/build/CMakeFiles/TargetDirectories.txt b/wound-w/build/CMakeFiles/TargetDirectories.txt deleted file mode 100644 index ebbd7525..00000000 --- a/wound-w/build/CMakeFiles/TargetDirectories.txt +++ /dev/null @@ -1,3 +0,0 @@ -/home/tngngn/ccbench/ww/build/CMakeFiles/rebuild_cache.dir -/home/tngngn/ccbench/ww/build/CMakeFiles/edit_cache.dir -/home/tngngn/ccbench/ww/build/CMakeFiles/ss2pl.exe.dir diff --git a/wound-w/build/CMakeFiles/cmake.check_cache b/wound-w/build/CMakeFiles/cmake.check_cache deleted file mode 100644 index 3dccd731..00000000 --- a/wound-w/build/CMakeFiles/cmake.check_cache +++ /dev/null @@ -1 +0,0 @@ -# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/wound-w/include/result.hh b/wound-w/include/result.hh deleted file mode 100644 index 26dd8285..00000000 --- a/wound-w/include/result.hh +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -#include - -#include "../../include/result.hh" - -extern std::vector SS2PLResult; - -extern void initResult(); diff --git a/wound-w/include/ss2pl_op_element.hh b/wound-w/include/ss2pl_op_element.hh deleted file mode 100644 index 6162c229..00000000 --- a/wound-w/include/ss2pl_op_element.hh +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -#include "../../include/op_element.hh" - -template -class SetElement : public OpElement { -public: - using OpElement::OpElement; - - char val_[VAL_SIZE]; - - SetElement(uint64_t key, T *rcdptr) : OpElement::OpElement(key, rcdptr) {} - - SetElement(uint64_t key, T *rcdptr, char *val) - : OpElement::OpElement(key, rcdptr) { - memcpy(this->val_, val, VAL_SIZE); - } -}; diff --git a/wound-w/include/util.hh b/wound-w/include/util.hh deleted file mode 100644 index 547508fa..00000000 --- a/wound-w/include/util.hh +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -extern void chkArg(); - -extern void displayDB(); - -extern void displayParameter(); - -extern void makeDB(); - -extern void partTableInit([[maybe_unused]] size_t thid, uint64_t start, uint64_t end); - -extern void ShowOptParameters(); diff --git a/wound-w/result.cc b/wound-w/result.cc deleted file mode 100644 index ff17dd8d..00000000 --- a/wound-w/result.cc +++ /dev/null @@ -1,11 +0,0 @@ -#include "include/result.hh" -#include "include/common.hh" - -#include "../include/cache_line_size.hh" -#include "../include/result.hh" - -using namespace std; - -alignas(CACHE_LINE_SIZE) std::vector SS2PLResult; - -void initResult() { SS2PLResult.resize(FLAGS_thread_num); } diff --git a/wound-w/script/test_cache_ana.sh b/wound-w/script/test_cache_ana.sh deleted file mode 100755 index df6753dd..00000000 --- a/wound-w/script/test_cache_ana.sh +++ /dev/null @@ -1,227 +0,0 @@ -#test_cache_ana.sh(ss2pl) -maxope=10 -thread=24 -cpu_mhz=2400 -extime=3 -epoch=5 - -tuple=100 -workload=0 -result=result_ss2pl_r10_cache.dat -rm $result -echo "#tuple, cache-miss-ratio, min, max" >> $result -echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result - -for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) -do - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - sum=0 - max=0 - min=0 - for ((i = 1; i <= epoch; ++i)) - do - perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime - tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$tuple $avg $min $max" >> $result -done - -tuple=100 -workload=1 -result=result_ss2pl_r8_cache.dat -rm $result -echo "#tuple, cache-miss-ratio, min, max" >> $result -echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result - -for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) -do - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - sum=0 - max=0 - min=0 - for ((i = 1; i <= epoch; ++i)) - do - perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime - tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$tuple $avg $min $max" >> $result -done - -tuple=100 -workload=2 -result=result_ss2pl_r5_cache.dat -rm $result -echo "#tuple, cache-miss-ratio, min, max" >> $result -echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result - -for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) -do - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - sum=0 - max=0 - min=0 - for ((i = 1; i <= epoch; ++i)) - do - perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime - tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$tuple $avg $min $max" >> $result -done - -tuple=100 -workload=3 -result=result_ss2pl_r2_cache.dat -rm $result -echo "#tuple, cache-miss-ratio, min, max" >> $result -echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result - -for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) -do - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - sum=0 - max=0 - min=0 - for ((i = 1; i <= epoch; ++i)) - do - perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime - tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$tuple $avg $min $max" >> $result -done - -tuple=100 -workload=4 -result=result_ss2pl_r0_cache.dat -rm $result -echo "#tuple, cache-miss-ratio, min, max" >> $result -echo "#./ss2pl.exe tuple $maxope $thread $workload $cpu_mhz $extime" >> $result - -for ((tuple=100; tuple<=100000000; tuple=$tuple * 10)) -do - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - sum=0 - max=0 - min=0 - for ((i = 1; i <= epoch; ++i)) - do - perf stat -e cache-references,cache-misses -o ss2pl_cache_ana.txt ./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime - tmp=`grep cache-misses ./ss2pl_cache_ana.txt | awk '{print $4}'` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$tuple $avg $min $max" >> $result -done - diff --git a/wound-w/script/test_t1k.sh b/wound-w/script/test_t1k.sh deleted file mode 100755 index 73dbfec1..00000000 --- a/wound-w/script/test_t1k.sh +++ /dev/null @@ -1,382 +0,0 @@ -#test_t1k.sh(ss2pl) -tuple=1000 -maxope=10 -cpu_mhz=2400 -extime=3 -epoch=5 - -workload=0 -result=result_ss2pl_r10_tuple1k_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=1 -result=result_ss2pl_r8_tuple1k_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=2 -result=result_ss2pl_r5_tuple1k_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=3 -result=result_ss2pl_r2_tuple1k_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=4 -result=result_ss2pl_r0_tuple1k_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - diff --git a/wound-w/script/test_t1m.sh b/wound-w/script/test_t1m.sh deleted file mode 100755 index 9b30a188..00000000 --- a/wound-w/script/test_t1m.sh +++ /dev/null @@ -1,382 +0,0 @@ -#test_t1m.sh(ss2pl) -tuple=1000000 -maxope=10 -cpu_mhz=2400 -extime=3 -epoch=5 - -workload=0 -result=result_ss2pl_r10_tuple1m_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=1 -result=result_ss2pl_r8_tuple1m_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=2 -result=result_ss2pl_r5_tuple1m_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=3 -result=result_ss2pl_r2_tuple1m_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=4 -result=result_ss2pl_r0_tuple1m_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - diff --git a/wound-w/script/test_t200.sh b/wound-w/script/test_t200.sh deleted file mode 100755 index ed333bb7..00000000 --- a/wound-w/script/test_t200.sh +++ /dev/null @@ -1,382 +0,0 @@ -#test_t200.sh(ss2pl) -tuple=200 -maxope=10 -cpu_mhz=2400 -extime=3 -epoch=5 - -workload=0 -result=result_ss2pl_r10_tuple200_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=1 -result=result_ss2pl_r8_tuple200_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=2 -result=result_ss2pl_r5_tuple200_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=3 -result=result_ss2pl_r2_tuple200_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - -workload=4 -result=result_ss2pl_r0_tuple200_ar.dat -rm $result -echo "#Worker threads, throughput, min, max" >> $result - -thread=1 -sum=0 -echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" -echo "$thread $epoch" - -max=0 -min=0 -for ((i=1; i <= epoch; i++)) -do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi -done -avg=`echo "$sum / $epoch" | bc -l` -echo "sum: $sum, epoch: $epoch" -echo "avg $avg" -echo "max: $max" -echo "min: $min" -echo "$thread $avg $min $max" >> $result - -for ((thread=4; thread<=24; thread+=4)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime" - echo "$thread $epoch" - - max=0 - min=0 - for ((i=1; i <= epoch; i++)) - do - tmp=`./ss2pl.exe $tuple $maxope $thread $workload $cpu_mhz $extime` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$thread $avg $min $max" >> $result -done - diff --git a/wound-w/script/tst200-1k-1m.sh b/wound-w/script/tst200-1k-1m.sh deleted file mode 100755 index c347fa88..00000000 --- a/wound-w/script/tst200-1k-1m.sh +++ /dev/null @@ -1,1991 +0,0 @@ -#tst200-1k-1m.sh(ss2pl) -maxope=10 -rmw=off -skew=0 -ycsb=off -cpu_mhz=2400 -extime=3 -epoch=3 - -host=`hostname` -chris41="chris41.omni.hpcc.jp" -dbs11="dbs11" - -#basically -inith=4 -enth=24 -inc=4 -if test $host = $dbs11 ; then -inith=28 -enth=224 -inc=28 -fi - -#kugiri -rratio=0 -tuple=200 -result=result_ss2pl_r0_tuple200.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=20 -tuple=200 -result=result_ss2pl_r2_tuple200.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=80 -tuple=200 -result=result_ss2pl_r8_tuple200.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=100 -tuple=200 -result=result_ss2pl_r10_tuple200.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=0 -tuple=1000 -result=result_ss2pl_r0_tuple1k.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=20 -tuple=1000 -result=result_ss2pl_r2_tuple1k.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=80 -tuple=1000 -result=result_ss2pl_r8_tuple1k.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=100 -tuple=1000 -result=result_ss2pl_r10_tuple1k.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=0 -tuple=1000000 -result=result_ss2pl_r0_tuple1m.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=20 -tuple=1000000 -result=result_ss2pl_r2_tuple1m.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=80 -tuple=1000000 -result=result_ss2pl_r8_tuple1m.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -#kugiri -rratio=100 -tuple=1000000 -result=result_ss2pl_r10_tuple1m.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep AbortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - diff --git a/wound-w/script/ycsb-xope.sh b/wound-w/script/ycsb-xope.sh deleted file mode 100755 index 7398b793..00000000 --- a/wound-w/script/ycsb-xope.sh +++ /dev/null @@ -1,106 +0,0 @@ -#ycsb-xope.sh(ss2pl) -tuple=100000000 -maxope=10 -rratio=95 -rmw=off -skew=0.8 -ycsb=on -cpu_mhz=2100 -extime=3 -epoch=3 - -host=`hostname` -chris41="chris41.omni.hpcc.jp" -dbs11="dbs11" - -#basically -thread=24 -if test $host = $dbs11 ; then -thread=224 -fi - -cd ../ -make clean; make -j KEY_SIZE=8 VAL_SIZE=4 -cd script/ - -result=result_ss2pl-dlr1_ycsbB_tuple100m_skew08_ope10-100.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result - -for ((maxope=10; maxope<=100; maxope+=10)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - echo "$maxope $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done diff --git a/wound-w/script/ycsb-xrratio.sh b/wound-w/script/ycsb-xrratio.sh deleted file mode 100755 index e4e74263..00000000 --- a/wound-w/script/ycsb-xrratio.sh +++ /dev/null @@ -1,102 +0,0 @@ -#ycsb-xrratio.sh(ss2pl) -tuple=1000000 -maxope=10 -rratio=0 -rmw=off -skew=0.9 -ycsb=on -cpu_mhz=2400 -extime=3 -epoch=3 - -host=`hostname` -chris41="chris41.omni.hpcc.jp" -dbs11="dbs11" - -#basically -thread=24 -if test $host = $dbs11 ; then -thread=224 -fi - -result=result_ss2pl-dlr1_tuple1m_val1k_skew09_rratio0-100.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result - -for ((rratio=0; rratio<=100; rratio+=10)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pln.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - echo "$rratio $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done diff --git a/wound-w/script/ycsb-xrs.sh b/wound-w/script/ycsb-xrs.sh deleted file mode 100755 index fb18cb42..00000000 --- a/wound-w/script/ycsb-xrs.sh +++ /dev/null @@ -1,118 +0,0 @@ -#ycsb-xrs.sh(ss2pl) -maxope=10 -rratioary=(50 95 100) -rmw=off -skew=0.9 -ycsb=on -cpu_mhz=2100 -extime=3 -epoch=3 - -host=`hostname` -chris41="chris41.omni.hpcc.jp" -dbs11="dbs11" - -#basically -thread=24 -if test $host = $dbs11 ; then -thread=224 -fi - -cd ../ -make clean; make -j KEY_SIZE=8 VAL_SIZE=1000 -cd script/ - -for rratio in "${rratioary[@]}" -do - if test $rratio = 50 ; then - result=result_ss2pl_ycsbA_tuple1k-100m_val1k_skew09.dat - elif test $rratio = 95 ; then - result=result_ss2pl_ycsbB_tuple1k-100m_val1k_skew09.dat - elif test $rratio = 100 ; then - result=result_ss2pl_ycsbC_tuple1k-100m_val1k_skew09.dat - else - echo "BUG" - exit 1 - fi - rm $result - - echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result - echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result - - for ((tuple=1000; tuple<=100000000; tuple*=10)) - do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - echo "$tuple $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - done -done diff --git a/wound-w/script/ycsb-xskew.sh b/wound-w/script/ycsb-xskew.sh deleted file mode 100755 index 314e6020..00000000 --- a/wound-w/script/ycsb-xskew.sh +++ /dev/null @@ -1,131 +0,0 @@ -#ycsb-xrs.sh(ss2pl) -tuple=10000000 -maxope=16 -rratioary=(50 95) -rmw=on -ycsb=on -cpu_mhz=2100 -extime=3 -epoch=3 - -host=`hostname` -chris41="chris41.omni.hpcc.jp" -dbs11="dbs11" - -#basically -thread=24 -if test $host = $dbs11 ; then -thread=224 -fi - -cd ../ -make clean; make -j VAL_SIZE=100 -cd script/ - -for rratio in "${rratioary[@]}" -do - if test $rratio = 50; then - thread=28 - result=result_2pl_ycsbA_tuple10m_ope16_rmw_skew0-099_th28.dat - elif test $rratio = 95; then - thread=28 - result=result_2pl_ycsbB_tuple10m_ope16_rmw_skew0-099_th28.dat - elif test $rratio = 100; then - result=result_ss2pl_ycsbC_tuple1k_skew0-099.dat - else - echo "BUG" - exit 1 - fi - rm $result - - echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result - echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw skew $ycsb $cpu_mhz $extime" >> $result - ../ss2pl.exe > exp.txt - tmpStr=`grep ShowOptParameters ./exp.txt` - echo "#$tmpStr" >> $result - - for ((tmpskew = 0; tmpskew <= 105; tmpskew += 10)) - do - if test $tmpskew = 100 ; then - tmpskew=95 - fi - if test $tmpskew = 105 ; then - tmpskew=99 - fi - skew=`echo "scale=3; $tmpskew / 100.0" | bc -l | xargs printf %.2f` - - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - echo "$skew $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - done -done diff --git a/wound-w/script/ycsb-xth.sh b/wound-w/script/ycsb-xth.sh deleted file mode 100755 index 1ff00ecf..00000000 --- a/wound-w/script/ycsb-xth.sh +++ /dev/null @@ -1,124 +0,0 @@ -#ycsb-xrs.sh(ss2pl) -tuple=10000000 -maxope=1 -#rratioary=(50 95 100) -rratioary=(95) -rmw=on -skew=0.99 -ycsb=on -cpu_mhz=2100 -extime=3 -epoch=3 - -host=`hostname` -chris41="chris41.omni.hpcc.jp" -dbs11="dbs11" - -#basically -thread=24 -if test $host = $dbs11 ; then -thread=224 -fi - -cd ../ -make clean; make -j VAL_SIZE=100 -cd script/ - -for rratio in "${rratioary[@]}" -do - if test $rratio = 50 ; then - result=result_2pl_ycsbA_tuple10m_ope16_rmw_skew099.dat - elif test $rratio = 95 ; then - result=result_2pl_ycsbB_tuple10m_ope1_rmw_skew099.dat - elif test $rratio = 100 ; then - result=result_ss2pl_ycsbC_tuple10m_ope1_skew099.dat - maxope=1 - else - echo "BUG" - exit 1 - fi - rm $result - - echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result - echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result - - for ((thread=1; thread<=25; thread+=5)) - do - if test $thread = 6 ; then - thread=5 - fi - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - echo "$thread $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - done -done diff --git a/wound-w/script/ycsb-xval.sh b/wound-w/script/ycsb-xval.sh deleted file mode 100755 index e5c64aea..00000000 --- a/wound-w/script/ycsb-xval.sh +++ /dev/null @@ -1,122 +0,0 @@ -#ycsb-xrs.sh(ss2pl) -tuple=1000000 -maxope=10 -rratioary=(95) -rmw=off -skew=0 -ycsb=on -cpu_mhz=2100 -extime=3 -epoch=3 - -host=`hostname` -chris41="chris41.omni.hpcc.jp" -dbs11="dbs11" - -#basically -thread=24 -if test $host = $dbs11 ; then -thread=224 -fi - -for rratio in "${rratioary[@]}" -do - if test $rratio = 50; then - result=result_ss2pl_ycsbA_tuple100m_skew09_val4-1k.dat - elif test $rratio = 95; then - result=result_ss2pl_ycsbB_tuple1m_val10-100k.dat - elif test $rratio = 100; then - result=result_ss2pl_ycsbC_tuple100m_skew09_val4-1k.dat - else - echo "BUG" - exit 1 - fi - rm $result - - echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result - echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result - - for ((val = 10; val <= 100000; val *= 10)) - do - if test $val = 104 ; then - val=100 - fi - cd ../ - make clean; make -j VAL_SIZE=$val - cd script - - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - echo "$val $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - done -done diff --git a/wound-w/script/ycsbA-xrs-cache.sh b/wound-w/script/ycsbA-xrs-cache.sh deleted file mode 100755 index 61dbd5f4..00000000 --- a/wound-w/script/ycsbA-xrs-cache.sh +++ /dev/null @@ -1,52 +0,0 @@ -#ycsbA-xrs-cache.sh(ss2pl) -maxope=10 -thread=24 -rratio=50 -skew=0 -ycsb=ON -cpu_mhz=2400 -extime=3 -epoch=5 - -result=result_ss2pl_ycsbA_tuple100-10m_cachemiss.dat -rm $result -echo "#tuple num, cache-misses, min, max" >> $result -echo "#./ss2pl.exe tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime" >> $result - -for ((tuple=100; tuple<=10000000; tuple*=10)) -do - sum=0 - echo "./ss2pl.exe $tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime" - echo "$tuple $epoch" - - max=0 - min=0 - for ((i = 1; i <= epoch; ++i)) - do - perf stat -e cache-misses,cache-references -o ss2pl-cache-ana.txt ./ss2pl.exe $tuple $maxope $thread $rratio $skew $ycsb $cpu_mhz $extime - tmp=`grep cache-misses ./ss2pl-cache-ana.txt | awk '{print $4}'` - sum=`echo "$sum + $tmp" | bc -l` - echo "sum: $sum, tmp: $tmp" - - if test $i -eq 1 ; then - max=$tmp - min=$tmp - fi - - flag=`echo "$tmp > $max" | bc -l` - if test $flag -eq 1 ; then - max=$tmp - fi - flag=`echo "$tmp < $min" | bc -l` - if test $flag -eq 1 ; then - min=$tmp - fi - done - avg=`echo "$sum / $epoch" | bc -l` - echo "sum: $sum, epoch: $epoch" - echo "avg $avg" - echo "max: $max" - echo "min: $min" - echo "$tuple $avg $min $max" >> $result -done - diff --git a/wound-w/script/ycsbA.sh b/wound-w/script/ycsbA.sh deleted file mode 100755 index c83e85f6..00000000 --- a/wound-w/script/ycsbA.sh +++ /dev/null @@ -1,510 +0,0 @@ -#ycsbA.sh(ss2pl) -maxope=10 -rratio=50 -rmw=off -skew=0 -ycsb=on -cpu_mhz=2400 -extime=3 -epoch=3 - -host=`hostname` -chris41="chris41.omni.hpcc.jp" -dbs11="dbs11" - -#basically -inith=4 -enth=24 -inc=4 -if test $host = $dbs11 ; then -inith=28 -enth=224 -inc=28 -fi - -tuple=500 -result=result_ss2pl_ycsbA_tuple500_masstree.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -tuple=500000 -result=result_ss2pl_ycsbA_tuple500k_masstree.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -tuple=5000000 -result=result_ss2pl_ycsbA_tuple5m_masstree.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - diff --git a/wound-w/script/ycsbB.sh b/wound-w/script/ycsbB.sh deleted file mode 100755 index 2a5966d9..00000000 --- a/wound-w/script/ycsbB.sh +++ /dev/null @@ -1,510 +0,0 @@ -#ycsbB.sh(ss2pl) -maxope=10 -rratio=95 -rmw=off -skew=0 -ycsb=on -cpu_mhz=2400 -extime=3 -epoch=3 - -host=`hostname` -chris41="chris41.omni.hpcc.jp" -dbs11="dbs11" - -#basically -inith=4 -enth=24 -inc=4 -if test $host = $dbs11 ; then -inith=28 -enth=224 -inc=28 -fi - -tuple=500 -result=result_ss2pl_ycsbB_tuple500_masstree.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -tuple=500000 -result=result_ss2pl_ycsbB_tuple500k_masstree.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - -tuple=5000000 -result=result_ss2pl_ycsbB_tuple5m_masstree.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abortRate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - diff --git a/wound-w/script/ycsbC.sh b/wound-w/script/ycsbC.sh deleted file mode 100755 index 4894481b..00000000 --- a/wound-w/script/ycsbC.sh +++ /dev/null @@ -1,187 +0,0 @@ -#ycsbC.sh(ss2pl) -#tuple=1000000000 -tuple=1000 -maxope=10 -rratio=100 -rmw=off -skew=0.9 -ycsb=on -cpu_mhz=2100 -extime=1 -epoch=3 - -host=`hostname` -chris41="chris41.omni.hpcc.jp" -dbs11="dbs11" - -#basically -inith=4 -enth=24 -inc=4 -if test $host = $dbs11 ; then -inith=28 -enth=224 -inc=28 -fi - -result=result_ss2pl_ycsbC_tuple1g_skew09_val1k.dat -rm $result -echo "#Worker threads, avg-tps, min-tps, max-tps, avg-ar, min-ar, max-ar, avg-camiss, min-camiss, max-camiss" >> $result -echo "#sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" >> $result -thread=1 - -echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" -echo "Thread number $thread" - -sumTH=0 -sumAR=0 -sumCA=0 -maxTH=0 -maxAR=0 -maxCA=0 -minTH=0 -minAR=0 -minCA=0 -for ((i=1; i <= epoch; i++)) -do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - -done -avgTH=`echo "$sumTH / $epoch" | bc` -avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` -avgCA=`echo "$sumCA / $epoch" | bc` -echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" -echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" -echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" -echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" -echo "" -thout=`echo "$thread - 1" | bc` -echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result - -for ((thread=$inith; thread<=$enth; thread+=$inc)) -do - echo "sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope thread $rratio $rmw $skew $ycsb $cpu_mhz $extime" - echo "Thread number $thread" - - sumTH=0 - sumAR=0 - sumCA=0 - maxTH=0 - maxAR=0 - maxCA=0 - minTH=0 - minAR=0 - minCA=0 - for ((i=1; i <= epoch; i++)) - do - if test $host = $dbs11 ; then - sudo perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - if test $host = $chris41 ; then - perf stat -e cache-misses,cache-references -o ana.txt numactl --interleave=all ../ss2pl.exe $tuple $maxope $thread $rratio $rmw $skew $ycsb $cpu_mhz $extime > exp.txt - fi - - tmpTH=`grep Throughput ./exp.txt | awk '{print $2}'` - tmpAR=`grep abort_rate ./exp.txt | awk '{print $2}'` - tmpCA=`grep cache-misses ./ana.txt | awk '{print $4}'` - sumTH=`echo "$sumTH + $tmpTH" | bc` - sumAR=`echo "scale=4; $sumAR + $tmpAR" | bc | xargs printf %.4f` - sumCA=`echo "$sumCA + $tmpCA" | bc` - echo "tmpTH: $tmpTH, tmpAR: $tmpAR, tmpCA: $tmpCA" - - if test $i -eq 1 ; then - maxTH=$tmpTH - maxAR=$tmpAR - maxCA=$tmpCA - minTH=$tmpTH - minAR=$tmpAR - minCA=$tmpCA - fi - - flag=`echo "$tmpTH > $maxTH" | bc` - if test $flag -eq 1 ; then - maxTH=$tmpTH - fi - flag=`echo "$tmpAR > $maxAR" | bc` - if test $flag -eq 1 ; then - maxAR=$tmpAR - fi - flag=`echo "$tmpCA > $maxCA" | bc` - if test $flag -eq 1 ; then - maxCA=$tmpCA - fi - - flag=`echo "$tmpTH < $minTH" | bc` - if test $flag -eq 1 ; then - minTH=$tmpTH - fi - flag=`echo "$tmpAR < $minAR" | bc` - if test $flag -eq 1 ; then - minAR=$tmpAR - fi - flag=`echo "$tmpCA < $minCA" | bc` - if test $flag -eq 1 ; then - minCA=$tmpCA - fi - - done - avgTH=`echo "$sumTH / $epoch" | bc` - avgAR=`echo "scale=4; $sumAR / $epoch" | bc | xargs printf %.4f` - avgCA=`echo "$sumCA / $epoch" | bc` - echo "sumTH: $sumTH, sumAR: $sumAR, sumCA: $sumCA" - echo "avgTH: $avgTH, avgAR: $avgAR, avgCA: $avgCA" - echo "maxTH: $maxTH, maxAR: $maxAR, maxCA: $maxCA" - echo "minTH: $minTH, minAR: $minAR, minCA: $minCA" - echo "" - thout=`echo "$thread - 1" | bc` - echo "$thout $avgTH $minTH $maxTH $avgAR $minAR $maxAR, $avgCA $minCA $maxCA" >> $result -done - diff --git a/wound-w/test/CMakeLists.txt b/wound-w/test/CMakeLists.txt deleted file mode 100644 index 9b5dd16f..00000000 --- a/wound-w/test/CMakeLists.txt +++ /dev/null @@ -1,76 +0,0 @@ -file(GLOB SS2PL_SOURCES - "${PROJECT_SOURCE_DIR}/../common/result.cc" - "${PROJECT_SOURCE_DIR}/../common/util.cc" - "${PROJECT_SOURCE_DIR}/result.cc" - "${PROJECT_SOURCE_DIR}/transaction.cc" - "${PROJECT_SOURCE_DIR}/util.cc" - ) - -file (GLOB TEST_SOURCES -"make_db_test.cpp" -) - -if (DEFINED ADD_ANALYSIS) - add_definitions(-DADD_ANALYSIS=${ADD_ANALYSIS}) -else () - add_definitions(-DADD_ANALYSIS=0) -endif () - -if (DEFINED BACK_OFF) - add_definitions(-DBACK_OFF=${BACK_OFF}) -else () - add_definitions(-DBACK_OFF=0) -endif () - -add_definitions(-DDLR1) - -if (DEFINED KEY_SIZE) - add_definitions(-DKEY_SIZE=${KEY_SIZE}) -else () - add_definitions(-DKEY_SIZE=8) -endif () - -if (DEFINED KEY_SORT) - add_definitions(-DKEY_SORT=${KEY_SORT}) -else () - add_definitions(-DKEY_SORT=0) -endif () - -if (DEFINED MASSTREE_USE) - add_definitions(-DMASSTREE_USE=${MASSTREE_USE}) -else () - add_definitions(-DMASSTREE_USE=1) -endif () - -if (DEFINED VAL_SIZE) - add_definitions(-DVAL_SIZE=${VAL_SIZE}) -else () - add_definitions(-DVAL_SIZE=4) -endif () - -foreach(src IN LISTS TEST_SOURCES) - get_filename_component(fname "${src}" NAME_WE) - set(test_name "${fname}") - - add_executable(${test_name} ${src} ${SS2PL_SOURCES}) - - target_include_directories(${test_name} - PRIVATE ${PROJECT_SOURCE_DIR}/../third_party/googletest/googletest/include - ) - - target_link_libraries(${test_name} - Boost::filesystem - gflags::gflags - glog::glog - ${PROJECT_SOURCE_DIR}/../third_party/mimalloc/out/release/libmimalloc.a - ${PROJECT_SOURCE_DIR}/../third_party/masstree/libkohler_masstree_json.a - Threads::Threads - ${PROJECT_SOURCE_DIR}/../third_party/googletest/build/lib/libgtest.a - ${PROJECT_SOURCE_DIR}/../third_party/googletest/build/lib/libgtest_main.a - ) - set_compile_options(${test_name}) - add_test( - NAME ${test_name} - COMMAND ${test_name} --gtest_output=xml:${test_name}_gtest_result.xml - ) -endforeach() \ No newline at end of file diff --git a/wound-w/test/make_db_test.cpp b/wound-w/test/make_db_test.cpp deleted file mode 100644 index 260dd3a3..00000000 --- a/wound-w/test/make_db_test.cpp +++ /dev/null @@ -1,40 +0,0 @@ - -#include - -#define GLOBAL_VALUE_DEFINE - -#include "../../include/backoff.hh" -#include "../include/common.hh" -#include "../include/util.hh" - -#include "glog/logging.h" -#include "gtest/gtest.h" - -namespace ccbench::testing { - -class make_db_test : public ::testing::Test { -public: - static void call_once_f() { - google::InitGoogleLogging("make_db_test_log"); - FLAGS_stderrthreshold = 0; - } - - void SetUp() override { std::call_once(init_, call_once_f); } - - void TearDown() override {} - -private: - static inline std::once_flag init_; // NOLINT -}; - -TEST_F(make_db_test, simple) { // NOLINT - makeDB(); - // verify effect makeDb - for (std::uint64_t i = 0; i < FLAGS_tuple_num; ++i) { - ASSERT_EQ(Table[i].val_[0], 'a'); - ASSERT_EQ(Table[i].val_[1], '\0'); - ASSERT_EQ(Table[i].lock_.counter.load(std::memory_order_acquire), 0); - } -} - -} // namespace ccbench::testing \ No newline at end of file diff --git a/wound-w/util.cc b/wound-w/util.cc deleted file mode 100644 index 8c156318..00000000 --- a/wound-w/util.cc +++ /dev/null @@ -1,117 +0,0 @@ - -#include -#include // syscall(SYS_gettid), -#include // syscall(SSY_gettid), -#include // syscall(SSY_gettid), - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "../include/config.hh" -#include "../include/debug.hh" -#include "../include/masstree_wrapper.hh" -#include "../include/procedure.hh" -#include "../include/random.hh" -#include "../include/result.hh" -#include "../include/zipf.hh" -#include "include/common.hh" -#include "include/tuple.hh" -#include "include/util.hh" - -void chkArg() { - displayParameter(); - - if (FLAGS_rratio > 100) { - ERR; - } - - if (FLAGS_clocks_per_us < 100) { - cout << "CPU_MHZ is less than 100. are your really?" << endl; - ERR; - } -} - -void displayDB() { - Tuple *tuple; - - for (unsigned int i = 0; i < FLAGS_tuple_num; i++) { - tuple = &Table[i]; - cout << "------------------------------" << endl; // - 30 - cout << "key: " << i << endl; - cout << "val: " << tuple->val_ << endl; - } -} - -void displayParameter() { - cout << "#FLAGS_clocks_per_us:\t" << FLAGS_clocks_per_us << endl; - cout << "#FLAGS_extime:\t\t" << FLAGS_extime << endl; - cout << "#FLAGS_max_ope:\t\t" << FLAGS_max_ope << endl; - cout << "#FLAGS_rmw:\t\t" << FLAGS_rmw << endl; - cout << "#FLAGS_rratio:\t\t" << FLAGS_rratio << endl; - cout << "#FLAGS_thread_num:\t" << FLAGS_thread_num << endl; - cout << "#FLAGS_tuple_num:\t" << FLAGS_tuple_num << endl; - cout << "#FLAGS_ycsb:\t\t" << FLAGS_ycsb << endl; - cout << "#FLAGS_zipf_skew:\t" << FLAGS_zipf_skew << endl; -} - -void partTableInit([[maybe_unused]] size_t thid, uint64_t start, uint64_t end) { - // printf("partTableInit(...): thid %zu : %lu : %lu\n", thid, start, end); -#if MASSTREE_USE - MasstreeWrapper::thread_init(thid); -#endif - - for (auto i = start; i <= end; ++i) { - Table[i].val_[0] = 'a'; - Table[i].val_[1] = '\0'; -#if MASSTREE_USE - MT.insert_value(i, &Table[i]); -#endif - } -} - -void makeDB() { - if (posix_memalign((void **) &Table, PAGE_SIZE, FLAGS_tuple_num * sizeof(Tuple)) != - 0) - ERR; -#if dbs11 - if (madvise((void *)Table, (FLAGS_tuple_num) * sizeof(Tuple), MADV_HUGEPAGE) != 0) - ERR; -#endif - - // maxthread は masstree 構築の最大並行スレッド数。 - // 初期値はハードウェア最大値。 - // FLAGS_tuple_num を均等に分割できる最大スレッド数を求める。 - size_t maxthread = decideParallelBuildNumber(FLAGS_tuple_num); - - std::vector thv; - // cout << "masstree 並列構築スレッド数 " << maxthread << endl; - for (size_t i = 0; i < maxthread; ++i) { - thv.emplace_back(partTableInit, i, i * (FLAGS_tuple_num / maxthread), - (i + 1) * (FLAGS_tuple_num / maxthread) - 1); - } - for (auto &th : thv) th.join(); -} - -void -ShowOptParameters() { - cout << "#ShowOptParameters()" - << ": ADD_ANALYSIS " << ADD_ANALYSIS - << ": BACK_OFF " << BACK_OFF - #ifdef DLR0 - << ": DLR0 " - #elif defined DLR1 - << ": DLR1 " - #endif - << ": MASSTREE_USE " << MASSTREE_USE - << ": KEY_SIZE " << KEY_SIZE - << ": KEY_SORT " << KEY_SORT - << ": VAL_SIZE " << VAL_SIZE - << endl; -} diff --git a/wound-w/CMakeLists.txt b/wound-wait/CMakeLists.txt similarity index 100% rename from wound-w/CMakeLists.txt rename to wound-wait/CMakeLists.txt diff --git a/wound-w/README.md b/wound-wait/README.md similarity index 84% rename from wound-w/README.md rename to wound-wait/README.md index 665d8888..fdbe3c4b 100644 --- a/wound-w/README.md +++ b/wound-wait/README.md @@ -1,7 +1,6 @@ # 2PL ## How to use -<<<<<<< HEAD - Build masstree in ccbench directory ``` $ ./build_tools/bootstrap.sh @@ -10,18 +9,6 @@ This makes ccbench/third_party/masstree/libkohler_masstree_json.a used by buildi - Build mimalloc in ccbench directory ``` $ ./build_tools/bootstrap_mimalloc.sh -======= -- Build masstree -``` -$ cd ../ -$ ./bootstrap.sh -``` -This makes ../third_party/masstree/libkohler_masstree_json.a used by building ss2pl. -- Build mimalloc -``` -$ cd ../ -$ ./bootstrap_mimalloc.sh ->>>>>>> 47c8a934ca05586ad6839e3ea55d09d64545afb4 ``` This makes ../third_party/mimalloc/out/release/libmimalloc.a used by building ss2pl. - Build diff --git a/wound-w/build/.ninja_deps b/wound-wait/build/.ninja_deps similarity index 97% rename from wound-w/build/.ninja_deps rename to wound-wait/build/.ninja_deps index 8c03fbf07ff9ffe087ec5245da06c34e5cc96407..2227ab5ace45fffae6b05729513b8cb435ffd8b5 100644 GIT binary patch delta 250 zcmaFR%k-d^X@iZf;Occc60bLyi!(AXFfaiz^W=|V+M6qMMTFUwvnFf2-mrO+gPRyz zyF7~lkbN(#OM)%4l+O>y&dYCSS12vX%+X6u*2`yL5dQc7zW~q#Jw1J>CO@)GB3L8Vi8=$qu=Dxuo7rfov*#`XE1dUo@ delta 254 zcmaFR%k-d^X@iZf;L4nPhkiPni!(AXFfaiz^W=|V+M6qMMTFV<4~ty>>AZQ8gPR!J z?1F*|oGzR1g>^}=t?M}d2FT9KZ)aC1E;cI2(MwL&%V!Y&_y4~D&;&g_eV8bN&}2h* zt;zP~YbSrHlVIeX%v*0hS*Jola0)v^!yBNLznRrOaJra_zug>JFV4pL2`Kb=b7^Zf z~U$m6sO3ExLPAvi2#4-6|o~V3seqLH;x?V;G13S ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/ccDzeSBd.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccpcLhbg.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -182,7 +182,7 @@ Parsed CXX implicit link information from above output: arg [-znow] ==> ignore arg [-zrelro] ==> ignore arg [-o] ==> ignore - arg [cmTC_26564] ==> ignore + arg [cmTC_e3156] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore @@ -194,7 +194,7 @@ Parsed CXX implicit link information from above output: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] - arg [CMakeFiles/cmTC_26564.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [CMakeFiles/cmTC_e3156.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore arg [-lstdc++] ==> lib [stdc++] arg [-lm] ==> lib [m] arg [-lgcc_s] ==> lib [gcc_s] @@ -218,18 +218,18 @@ Parsed CXX implicit link information from above output: Determining if the include file pthread.h exists passed with the following output: -Change Dir: /home/tngngn/ccbench/ww/build/CMakeFiles/CMakeTmp +Change Dir: /home/tngngn/ccbench/wound-wait/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_5a22b && [1/2] Building CXX object CMakeFiles/cmTC_5a22b.dir/CheckIncludeFile.cxx.o -[2/2] Linking CXX executable cmTC_5a22b +Run Build Command(s):/usr/local/bin/ninja cmTC_d2997 && [1/2] Building CXX object CMakeFiles/cmTC_d2997.dir/CheckIncludeFile.cxx.o +[2/2] Linking CXX executable cmTC_d2997 Determining if the function pthread_create exists in the pthread passed with the following output: -Change Dir: /home/tngngn/ccbench/ww/build/CMakeFiles/CMakeTmp +Change Dir: /home/tngngn/ccbench/wound-wait/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_98d43 && [1/2] Building CXX object CMakeFiles/cmTC_98d43.dir/CheckFunctionExists.cxx.o -[2/2] Linking CXX executable cmTC_98d43 +Run Build Command(s):/usr/local/bin/ninja cmTC_8e019 && [1/2] Building CXX object CMakeFiles/cmTC_8e019.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_8e019 diff --git a/wait-die/wait-die/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx b/wound-wait/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx similarity index 100% rename from wait-die/wait-die/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx rename to wound-wait/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx diff --git a/wound-wait/build/CMakeFiles/TargetDirectories.txt b/wound-wait/build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 00000000..a4bbd1af --- /dev/null +++ b/wound-wait/build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +/home/tngngn/ccbench/wound-wait/build/CMakeFiles/rebuild_cache.dir +/home/tngngn/ccbench/wound-wait/build/CMakeFiles/edit_cache.dir +/home/tngngn/ccbench/wound-wait/build/CMakeFiles/ss2pl.exe.dir diff --git a/wait-die/wait-die/build/CMakeFiles/cmake.check_cache b/wound-wait/build/CMakeFiles/cmake.check_cache similarity index 100% rename from wait-die/wait-die/build/CMakeFiles/cmake.check_cache rename to wound-wait/build/CMakeFiles/cmake.check_cache diff --git a/wound-w/build/build.ninja b/wound-wait/build/build.ninja similarity index 98% rename from wound-w/build/build.ninja rename to wound-wait/build/build.ninja index 93f677aa..97745b6d 100644 --- a/wound-w/build/build.ninja +++ b/wound-wait/build/build.ninja @@ -39,7 +39,7 @@ include rules.ninja # Utility command for rebuild_cache build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND - COMMAND = cd /home/tngngn/ccbench/ww/build && /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/ww -B/home/tngngn/ccbench/ww/build + COMMAND = cd /home/tngngn/ccbench/wound-wait/build && /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/wound-wait -B/home/tngngn/ccbench/wound-wait/build DESC = Running CMake to regenerate build system... pool = console restat = 1 @@ -51,7 +51,7 @@ build rebuild_cache: phony CMakeFiles/rebuild_cache.util # Utility command for edit_cache build CMakeFiles/edit_cache.util: CUSTOM_COMMAND - COMMAND = cd /home/tngngn/ccbench/ww/build && /usr/local/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. + COMMAND = cd /home/tngngn/ccbench/wound-wait/build && /usr/local/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. DESC = No interactive CMake dialog available... restat = 1 @@ -147,7 +147,7 @@ build ss2pl.exe: CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Release CMakeFiles/ss2pl.exe # ============================================================================= ############################################# -# Folder: /home/tngngn/ccbench/ww/build +# Folder: /home/tngngn/ccbench/wound-wait/build build all: phony ss2pl.exe diff --git a/wound-w/build/cmake_install.cmake b/wound-wait/build/cmake_install.cmake similarity index 90% rename from wound-w/build/cmake_install.cmake rename to wound-wait/build/cmake_install.cmake index 10d85246..3e94cb94 100644 --- a/wound-w/build/cmake_install.cmake +++ b/wound-wait/build/cmake_install.cmake @@ -1,4 +1,4 @@ -# Install script for directory: /home/tngngn/ccbench/ww +# Install script for directory: /home/tngngn/ccbench/wound-wait # Set the install prefix if(NOT DEFINED CMAKE_INSTALL_PREFIX) @@ -45,5 +45,5 @@ endif() string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT "${CMAKE_INSTALL_MANIFEST_FILES}") -file(WRITE "/home/tngngn/ccbench/ww/build/${CMAKE_INSTALL_MANIFEST}" +file(WRITE "/home/tngngn/ccbench/wound-wait/build/${CMAKE_INSTALL_MANIFEST}" "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/wound-w/build/rules.ninja b/wound-wait/build/rules.ninja similarity index 96% rename from wound-w/build/rules.ninja rename to wound-wait/build/rules.ninja index a466f877..6c275863 100644 --- a/wound-w/build/rules.ninja +++ b/wound-wait/build/rules.ninja @@ -42,7 +42,7 @@ rule CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Release # Rule for re-running cmake. rule RERUN_CMAKE - command = /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/ww -B/home/tngngn/ccbench/ww/build + command = /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/wound-wait -B/home/tngngn/ccbench/wound-wait/build description = Re-running CMake... generator = 1 diff --git a/wound-w/include/common.hh b/wound-wait/include/common.hh similarity index 100% rename from wound-w/include/common.hh rename to wound-wait/include/common.hh diff --git a/wait-die/wait-die/include/result.hh b/wound-wait/include/result.hh similarity index 100% rename from wait-die/wait-die/include/result.hh rename to wound-wait/include/result.hh diff --git a/wait-die/wait-die/include/ss2pl_op_element.hh b/wound-wait/include/ss2pl_op_element.hh similarity index 100% rename from wait-die/wait-die/include/ss2pl_op_element.hh rename to wound-wait/include/ss2pl_op_element.hh diff --git a/wound-w/include/transaction.hh b/wound-wait/include/transaction.hh similarity index 100% rename from wound-w/include/transaction.hh rename to wound-wait/include/transaction.hh diff --git a/wound-w/include/tuple.hh b/wound-wait/include/tuple.hh similarity index 74% rename from wound-w/include/tuple.hh rename to wound-wait/include/tuple.hh index ffd2d45e..de240080 100644 --- a/wound-w/include/tuple.hh +++ b/wound-wait/include/tuple.hh @@ -16,10 +16,4 @@ public: int writer = 0; int readers[224] = {0}; int writers[224] = {0}; - std::vector waitRd; - std::vector waitWR; - Tuple() { - waitRd.reserve(224); - waitWR.reserve(224); - } }; diff --git a/wait-die/wait-die/include/util.hh b/wound-wait/include/util.hh similarity index 100% rename from wait-die/wait-die/include/util.hh rename to wound-wait/include/util.hh diff --git a/wait-die/wait-die/result.cc b/wound-wait/result.cc similarity index 100% rename from wait-die/wait-die/result.cc rename to wound-wait/result.cc diff --git a/wait-die/wait-die/script/test_cache_ana.sh b/wound-wait/script/test_cache_ana.sh similarity index 100% rename from wait-die/wait-die/script/test_cache_ana.sh rename to wound-wait/script/test_cache_ana.sh diff --git a/wait-die/wait-die/script/test_t1k.sh b/wound-wait/script/test_t1k.sh similarity index 100% rename from wait-die/wait-die/script/test_t1k.sh rename to wound-wait/script/test_t1k.sh diff --git a/wait-die/wait-die/script/test_t1m.sh b/wound-wait/script/test_t1m.sh similarity index 100% rename from wait-die/wait-die/script/test_t1m.sh rename to wound-wait/script/test_t1m.sh diff --git a/wait-die/wait-die/script/test_t200.sh b/wound-wait/script/test_t200.sh similarity index 100% rename from wait-die/wait-die/script/test_t200.sh rename to wound-wait/script/test_t200.sh diff --git a/wait-die/wait-die/script/tst200-1k-1m.sh b/wound-wait/script/tst200-1k-1m.sh similarity index 100% rename from wait-die/wait-die/script/tst200-1k-1m.sh rename to wound-wait/script/tst200-1k-1m.sh diff --git a/wait-die/wait-die/script/ycsb-xope.sh b/wound-wait/script/ycsb-xope.sh similarity index 100% rename from wait-die/wait-die/script/ycsb-xope.sh rename to wound-wait/script/ycsb-xope.sh diff --git a/wait-die/wait-die/script/ycsb-xrratio.sh b/wound-wait/script/ycsb-xrratio.sh similarity index 100% rename from wait-die/wait-die/script/ycsb-xrratio.sh rename to wound-wait/script/ycsb-xrratio.sh diff --git a/wait-die/wait-die/script/ycsb-xrs.sh b/wound-wait/script/ycsb-xrs.sh similarity index 100% rename from wait-die/wait-die/script/ycsb-xrs.sh rename to wound-wait/script/ycsb-xrs.sh diff --git a/wait-die/wait-die/script/ycsb-xskew.sh b/wound-wait/script/ycsb-xskew.sh similarity index 100% rename from wait-die/wait-die/script/ycsb-xskew.sh rename to wound-wait/script/ycsb-xskew.sh diff --git a/wait-die/wait-die/script/ycsb-xth.sh b/wound-wait/script/ycsb-xth.sh similarity index 100% rename from wait-die/wait-die/script/ycsb-xth.sh rename to wound-wait/script/ycsb-xth.sh diff --git a/wait-die/wait-die/script/ycsb-xval.sh b/wound-wait/script/ycsb-xval.sh similarity index 100% rename from wait-die/wait-die/script/ycsb-xval.sh rename to wound-wait/script/ycsb-xval.sh diff --git a/wait-die/wait-die/script/ycsbA-xrs-cache.sh b/wound-wait/script/ycsbA-xrs-cache.sh similarity index 100% rename from wait-die/wait-die/script/ycsbA-xrs-cache.sh rename to wound-wait/script/ycsbA-xrs-cache.sh diff --git a/wait-die/wait-die/script/ycsbA.sh b/wound-wait/script/ycsbA.sh similarity index 100% rename from wait-die/wait-die/script/ycsbA.sh rename to wound-wait/script/ycsbA.sh diff --git a/wait-die/wait-die/script/ycsbB.sh b/wound-wait/script/ycsbB.sh similarity index 100% rename from wait-die/wait-die/script/ycsbB.sh rename to wound-wait/script/ycsbB.sh diff --git a/wait-die/wait-die/script/ycsbC.sh b/wound-wait/script/ycsbC.sh similarity index 100% rename from wait-die/wait-die/script/ycsbC.sh rename to wound-wait/script/ycsbC.sh diff --git a/wound-w/ss2pl.cc b/wound-wait/ss2pl.cc similarity index 100% rename from wound-w/ss2pl.cc rename to wound-wait/ss2pl.cc diff --git a/wound-w/transaction.cc b/wound-wait/transaction.cc similarity index 99% rename from wound-w/transaction.cc rename to wound-wait/transaction.cc index 0b16beb4..1af4d9b2 100644 --- a/wound-w/transaction.cc +++ b/wound-wait/transaction.cc @@ -143,8 +143,7 @@ void TxExecutor::read(uint64_t key) { if (tuple->lock_.r_trylock()) { r_lock_list_.emplace_back(&tuple->lock_); read_set_.emplace_back(key, tuple, tuple->val_); - //tuple->readers[thid_] = 1; - tuple->waitRd.emplace_back(thid_); + tuple->readers[thid_] = 1; break; } else { diff --git a/wait-die/wait-die/util.cc b/wound-wait/util.cc similarity index 100% rename from wait-die/wait-die/util.cc rename to wound-wait/util.cc From 7e9d7963de4350818bffe02e419d9df91082a61a Mon Sep 17 00:00:00 2001 From: tngngn Date: Sun, 8 Jan 2023 02:39:04 +0900 Subject: [PATCH 07/14] fix visibke bugs --- plor/build/.ninja_deps | Bin 34528 -> 34528 bytes plor/build/.ninja_log | 14 +-- plor/build/CMakeFiles/CMakeError.log | 18 +-- plor/build/CMakeFiles/CMakeOutput.log | 56 ++++----- plor/include/transaction.hh | 6 + plor/ss2pl.cc | 12 +- plor/transaction.cc | 119 ++++++++++---------- wound-wait/build/.ninja_deps | Bin 34528 -> 34528 bytes wound-wait/build/.ninja_log | 14 +-- wound-wait/build/CMakeFiles/CMakeError.log | 18 +-- wound-wait/build/CMakeFiles/CMakeOutput.log | 56 ++++----- 11 files changed, 162 insertions(+), 151 deletions(-) diff --git a/plor/build/.ninja_deps b/plor/build/.ninja_deps index f8768b7dc67899d92b7d230973a28b5aa62844db..d07074bf1a6f2858ab4916987c69675964ff095c 100644 GIT binary patch delta 425 zcmaFR%k-d^X@iZfU?pGuop^BzaYhCP1|}e8p8PRPdvk@Zh%o!fVCy$Psm+reT*cT6 z%Ot;mIQPRkCD_9Pwu>f+TTIT+Z)LnRSX7$;A1ikm#6 zT4b_-vk2q-$&C8;jEg2078_4q;B3Mx3smwHXu>lfem+^ZKzZ|(0s+R!M_dvnHx%(q zc4-!wY~W%rc}@+_;tE4Cr_9x0^c~ zj2Rg}ZQk41&&2q7vv12}rpYa?vOLAbMg>qyxF$1}3o~*~epxQf$^o>`Wb(x<9hrjC q%oM#026mvp6n2J&uRud*&%YxMGW6T#+zN3v*6%=}ADcVtvKaxnL5Ugw delta 469 zcmaFR%k-d^X@iZfpthL0-(F^8aYhCP1|}e8p8PRPdvk@Zh%o!t(phmpsm+reT*cVU z>kg)ZIQPRkCD=p0?{5KeCg| zlN*baCpR>(OjdCenS7=|Wb%`Oh|PN%co-*dC}v^h11jO4e9*;sa)_SD}@&*TbcjmaL( zK9dVdOeQx}D@^d2h^vjH(X5OV-AClGT1F*gtcov_T=ZL&hE#Acq-my8O< z#YP1=ddbOp`3%DU{{I&MTBWC_4-;h&nr!Hr^NRPGM(g zcmp(Uw%gM-P@ulu99b{U#`*~;^m%h>Yc}KL7FSuG(vnQ5*$iBh8OwzkIVWGVl;TRt zEGbSc0oued`C^`^d~$wXT4uUlMg{{r&;==M3=Lm_#xyK%=>(blZF6jeF(c#m%@Zs8 NnHYa;R;-!K1OVNvj+p=e diff --git a/plor/build/.ninja_log b/plor/build/.ninja_log index b794b7b7..ea00d93d 100644 --- a/plor/build/.ninja_log +++ b/plor/build/.ninja_log @@ -1,8 +1,8 @@ # ninja log v5 -0 438 1671683998279472683 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o cb094bc7f3f6c775 -0 713 1671683998555469301 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o f95633baccc8a3ed -1 835 1671683998675467831 CMakeFiles/ss2pl.exe.dir/result.cc.o 851e6c2fa850bcf5 -1 1356 1671683999195461460 CMakeFiles/ss2pl.exe.dir/transaction.cc.o 57b8653ac41a1255 -1 1392 1671683999231461019 CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o 788a57bce6d40cdd -2 1434 1671683999275460480 CMakeFiles/ss2pl.exe.dir/util.cc.o c9c2e62e88d9d2c6 -1434 1514 1671683999355459500 ss2pl.exe eee19cd8572392e1 +0 444 1673112962056785529 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o cb094bc7f3f6c775 +0 710 1673112962320782281 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o f95633baccc8a3ed +1 841 1673112962452780657 CMakeFiles/ss2pl.exe.dir/result.cc.o 851e6c2fa850bcf5 +1 1404 1673112963016773718 CMakeFiles/ss2pl.exe.dir/transaction.cc.o 57b8653ac41a1255 +2 1420 1673112963032773521 CMakeFiles/ss2pl.exe.dir/util.cc.o c9c2e62e88d9d2c6 +1 1440 1673112963052773275 CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o 788a57bce6d40cdd +1441 1519 1673112963128772340 ss2pl.exe eee19cd8572392e1 diff --git a/plor/build/CMakeFiles/CMakeError.log b/plor/build/CMakeFiles/CMakeError.log index 41f0c1e0..e61a70c5 100644 --- a/plor/build/CMakeFiles/CMakeError.log +++ b/plor/build/CMakeFiles/CMakeError.log @@ -1,11 +1,11 @@ Performing C++ SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_08f88 && [1/2] Building CXX object CMakeFiles/cmTC_08f88.dir/src.cxx.o -[2/2] Linking CXX executable cmTC_08f88 -FAILED: cmTC_08f88 -: && /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD CMakeFiles/cmTC_08f88.dir/src.cxx.o -o cmTC_08f88 && : -/usr/bin/ld: CMakeFiles/cmTC_08f88.dir/src.cxx.o: in function `main': +Run Build Command(s):/usr/local/bin/ninja cmTC_f66cd && [1/2] Building CXX object CMakeFiles/cmTC_f66cd.dir/src.cxx.o +[2/2] Linking CXX executable cmTC_f66cd +FAILED: cmTC_f66cd +: && /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD CMakeFiles/cmTC_f66cd.dir/src.cxx.o -o cmTC_f66cd && : +/usr/bin/ld: CMakeFiles/cmTC_f66cd.dir/src.cxx.o: in function `main': src.cxx:(.text+0x46): undefined reference to `pthread_create' /usr/bin/ld: src.cxx:(.text+0x52): undefined reference to `pthread_detach' /usr/bin/ld: src.cxx:(.text+0x5e): undefined reference to `pthread_cancel' @@ -38,10 +38,10 @@ int main(void) Determining if the function pthread_create exists in the pthreads failed with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_9744f && [1/2] Building CXX object CMakeFiles/cmTC_9744f.dir/CheckFunctionExists.cxx.o -[2/2] Linking CXX executable cmTC_9744f -FAILED: cmTC_9744f -: && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_9744f.dir/CheckFunctionExists.cxx.o -o cmTC_9744f -lpthreads && : +Run Build Command(s):/usr/local/bin/ninja cmTC_3377f && [1/2] Building CXX object CMakeFiles/cmTC_3377f.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_3377f +FAILED: cmTC_3377f +: && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_3377f.dir/CheckFunctionExists.cxx.o -o cmTC_3377f -lpthreads && : /usr/bin/ld: -lpthreads が見つかりません collect2: error: ld returned 1 exit status ninja: build stopped: subcommand failed. diff --git a/plor/build/CMakeFiles/CMakeOutput.log b/plor/build/CMakeFiles/CMakeOutput.log index 5e35fe2e..edd50729 100644 --- a/plor/build/CMakeFiles/CMakeOutput.log +++ b/plor/build/CMakeFiles/CMakeOutput.log @@ -15,15 +15,15 @@ The CXX compiler identification is GNU, found in "/home/tngngn/ccbench/plor/buil Determining if the CXX compiler works passed with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_5d7fb && [1/2] Building CXX object CMakeFiles/cmTC_5d7fb.dir/testCXXCompiler.cxx.o -[2/2] Linking CXX executable cmTC_5d7fb +Run Build Command(s):/usr/local/bin/ninja cmTC_07d47 && [1/2] Building CXX object CMakeFiles/cmTC_07d47.dir/testCXXCompiler.cxx.o +[2/2] Linking CXX executable cmTC_07d47 Detecting CXX compiler ABI info compiled with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_4448f && [1/2] Building CXX object CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o +Run Build Command(s):/usr/local/bin/ninja cmTC_ccd7d && [1/2] Building CXX object CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o Using built-in specs. COLLECT_GCC=/usr/bin/c++ OFFLOAD_TARGET_NAMES=nvptx-none:hsa @@ -32,8 +32,8 @@ Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cceEUz5Q.s +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccLHZdMN.s GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP @@ -57,13 +57,13 @@ GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0 -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - as -v --64 -o CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o /tmp/cceEUz5Q.s +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + as -v --64 -o CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccLHZdMN.s GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34 COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' -[2/2] Linking CXX executable cmTC_4448f +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +[2/2] Linking CXX executable cmTC_ccd7d Using built-in specs. COLLECT_GCC=/usr/bin/c++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper @@ -75,9 +75,9 @@ Thread model: posix gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_4448f' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccpek809.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_4448f /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_4448f' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_ccd7d' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccuIbsG6.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_ccd7d /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_ccd7d' '-shared-libgcc' '-mtune=generic' '-march=x86-64' @@ -106,7 +106,7 @@ Parsed CXX implicit link information from above output: link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] ignore line: [Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp] ignore line: [] - ignore line: [Run Build Command(s):/usr/local/bin/ninja cmTC_4448f && [1/2] Building CXX object CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Run Build Command(s):/usr/local/bin/ninja cmTC_ccd7d && [1/2] Building CXX object CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] @@ -115,8 +115,8 @@ Parsed CXX implicit link information from above output: ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] ignore line: [Thread model: posix] ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cceEUz5Q.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccLHZdMN.s] ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] ignore line: [] @@ -140,13 +140,13 @@ Parsed CXX implicit link information from above output: ignore line: [] ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] ignore line: [Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o /tmp/cceEUz5Q.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccLHZdMN.s] ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [[2/2] Linking CXX executable cmTC_4448f] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [[2/2] Linking CXX executable cmTC_ccd7d] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] @@ -158,13 +158,13 @@ Parsed CXX implicit link information from above output: ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_4448f' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccpek809.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_4448f /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_ccd7d' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccuIbsG6.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_ccd7d /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/ccpek809.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccuIbsG6.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -182,7 +182,7 @@ Parsed CXX implicit link information from above output: arg [-znow] ==> ignore arg [-zrelro] ==> ignore arg [-o] ==> ignore - arg [cmTC_4448f] ==> ignore + arg [cmTC_ccd7d] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore @@ -194,7 +194,7 @@ Parsed CXX implicit link information from above output: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] - arg [CMakeFiles/cmTC_4448f.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore arg [-lstdc++] ==> lib [stdc++] arg [-lm] ==> lib [m] arg [-lgcc_s] ==> lib [gcc_s] @@ -220,16 +220,16 @@ Parsed CXX implicit link information from above output: Determining if the include file pthread.h exists passed with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_4f3ca && [1/2] Building CXX object CMakeFiles/cmTC_4f3ca.dir/CheckIncludeFile.cxx.o -[2/2] Linking CXX executable cmTC_4f3ca +Run Build Command(s):/usr/local/bin/ninja cmTC_07653 && [1/2] Building CXX object CMakeFiles/cmTC_07653.dir/CheckIncludeFile.cxx.o +[2/2] Linking CXX executable cmTC_07653 Determining if the function pthread_create exists in the pthread passed with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_69814 && [1/2] Building CXX object CMakeFiles/cmTC_69814.dir/CheckFunctionExists.cxx.o -[2/2] Linking CXX executable cmTC_69814 +Run Build Command(s):/usr/local/bin/ninja cmTC_6208f && [1/2] Building CXX object CMakeFiles/cmTC_6208f.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_6208f diff --git a/plor/include/transaction.hh b/plor/include/transaction.hh index 5431f352..08bda906 100644 --- a/plor/include/transaction.hh +++ b/plor/include/transaction.hh @@ -60,6 +60,12 @@ public: void unlockList(); + void unlockRead(int thid, Tuple *tuple); + + void unlockWrite(int thid, Tuple *tuple); + + + // inline Tuple *get_tuple(Tuple *table, uint64_t key) { return &table[key]; } }; diff --git a/plor/ss2pl.cc b/plor/ss2pl.cc index 50a514c4..9ba38ab3 100644 --- a/plor/ss2pl.cc +++ b/plor/ss2pl.cc @@ -75,15 +75,23 @@ void worker(size_t thid, char &ready, const bool &start, const bool &quit) { } else { ERR; } - + /* if (thread_stats[thid] == 1) { trans.status_ = TransactionStatus::aborted; trans.abort(); goto RETRY; } + */ } - + trans.commit(); + + if (thread_stats[thid] == 1) { + trans.status_ = TransactionStatus::aborted; + trans.abort(); + goto RETRY; + } + /** * local_commit_counts is used at ../include/backoff.hh to calcurate about * backoff. diff --git a/plor/transaction.cc b/plor/transaction.cc index 77e0635f..599680d5 100644 --- a/plor/transaction.cc +++ b/plor/transaction.cc @@ -1,6 +1,7 @@ #include #include +#include #include #include @@ -98,14 +99,14 @@ void TxExecutor::commit() { tuple = (*itr).rcdptr_; //tuple->waitRd.emplace_back(excl_sig); for (int i=0; iwaitRd.size(); i++) { - if (thread_timestamp[this-thid_] < thread_timestamp[tuple->waitRd[i].first]) { - thread_stats[tuple->waitRd[i].first] = 1; + if (thread_timestamp[this->thid_] < thread_timestamp[tuple->waitRd[i].second]) { + thread_stats[tuple->waitRd[i].second] = 1; } else { - /* + while (1) { - if (thread_stats[thid_] == 1) goto FINISH_WRITE; + if (thread_stats[thid_] == 1) goto FINISH_COMMIT; } - */ + } } } @@ -139,6 +140,10 @@ void TxExecutor::commit() { */ read_set_.clear(); write_set_.clear(); + + FINISH_COMMIT: + + return; } /** @@ -180,7 +185,16 @@ void TxExecutor::read(uint64_t key) { */ /** PLOR */ - lockRead(); + read_set_.emplace_back(key, tuple, tuple->val_); + tuple->waitRd.emplace_back(thread_timestamp[this->thid_], this->thid_); + + // pure, no commit priority yet + while (1) { + if (tuple->curr_writer > 0 && thread_timestamp[this->thid_] < thread_timestamp[tuple->curr_writer]) { + thread_stats[tuple->curr_writer] = 1; + } + if (thread_stats[thid_] == 1) goto FINISH_READ; + } /** Wound-Wait * @@ -271,7 +285,23 @@ void TxExecutor::write(uint64_t key) { */ /** PLOR */ - lockWrite(); + write_set_.emplace_back(key, tuple); + tuple->waitWr.emplace_back(thread_timestamp[this->thid_],this->thid_); + sort(tuple->waitWr.begin(), tuple->waitWr.end()); + + // @task: need to use CAS for this + while (1) { + if (tuple->curr_writer == 0) { + tuple->curr_writer == this->thid_; + } else { + while (tuple->curr_writer != this->thid_) { + if (thread_timestamp[this->thid_] < thread_timestamp[tuple->curr_writer]) { + thread_stats[tuple->curr_writer] = 1; + } + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } + } + } /** Wound-Wait * @@ -362,7 +392,23 @@ void TxExecutor::readWrite(uint64_t key) { */ /** PLOR */ - lockWrite(); + write_set_.emplace_back(key, tuple); + tuple->waitWr.emplace_back(thread_timestamp[this->thid_], this->thid_); + sort(tuple->waitWr.begin(), tuple->waitWr.end()); + + // @task: need to use CAS for this + while (1) { + if (tuple->curr_writer == 0) { + tuple->curr_writer == this->thid_; + } else { + while (tuple->curr_writer != this->thid_) { + if (thread_timestamp[this->thid_] < thread_timestamp[tuple->curr_writer]) { + thread_stats[tuple->curr_writer] = 1; + } + if (thread_stats[thid_] == 1) goto FINISH_WRITE; + } + } + } /** Wound-Wait * @@ -397,59 +443,10 @@ void TxExecutor::readWrite(uint64_t key) { return; } -void TxExecutor::lockRead() { - /** PLOR */ - // @task: need to add exclusive signifier for commiting writer - read_set_.emplace_back(key, tuple, tuple->val_); - tuple->waitRd.emplace_back(thid_, thread_timestamp[this->thid_]); - - // pure, no commit priority yet - while (1) { - if (tuple->curr_writer > 0 && thread_timestamp[this-thid_] < thread_timestamp[tuple->curr_writer]) { - thread_stats[tuple->curr_writer] = 1; - } - if (thread_stats[thid_] == 1) goto FINISH_READ; - } - - /** Wound-Wait - * - tuple->readers[thid_] = 1; - for (int i = 0; i < FLAGS_thread_num; i++) { - if (tuple->writers[i] > 0 && thread_timestamp[i] > thread_timestamp[this->thid_]) { - thread_stats[i] = 1; - } - } - */ -} - -void TxExecutor::lockWrite() { - write_set_.emplace_back(key, tuple); - tuple->waitWr.emplace_back(thid_, thread_timestamp[this->thid_]); - sort(tuple->waitWr.begin(), tuple->waitWr.end(),[](const pair &x, const pair &y) { - if (x.second != y.second) { - return x.second < y.second; - } - }); // sort by ts - - // @task: need to use CAS for this - while (1) { - if (tuple->curr_writer == 0) { - tuple->curr_writer == this->thid_; - } else { - while (tuple->writer != this->thid_) { - if (thread_timestamp[this-thid_] < thread_timestamp[tuple->curr_writer]) { - thread_stats[tuple->curr_writer] = 1; - } - if (thread_stats[thid_] == 1) goto FINISH_WRITE; - } - } - } -} - void TxExecutor::unlockRead(int thid, Tuple *tuple) { int j; for (int i=0; iwaitRd.size(); i++) { - if (tuple->waitRd[i].first == thid) { + if (tuple->waitRd[i].second == thid) { j = i; break; } @@ -466,16 +463,16 @@ void TxExecutor::unlockWrite(int thid, Tuple *tuple) { */ int j; for (int i=0; iwaitWr.size(); i++) { - if (tuple->waitWr[i].first == thid_) { + if (tuple->waitWr[i].second == thid) { j = i; break; } } tuple->waitWr.erase(tuple->waitWr.begin()+j); - if (curr_writer == thid_) { + if (tuple->curr_writer == thid) { // remove exclusive signifier in read set - tuple->curr_writer = tuple->waitWr[0].first; + tuple->curr_writer = tuple->waitWr[0].second; } } diff --git a/wound-wait/build/.ninja_deps b/wound-wait/build/.ninja_deps index 2227ab5ace45fffae6b05729513b8cb435ffd8b5..46df5f94f46cea0a8ebc3398ae7885629e1cc609 100644 GIT binary patch delta 101 zcmaFR%k-d^X@iZf;6ta#cje+1;*1Oo3`{`GJo#go_T~y*5n=Z8GyDGmr8ZA?a1~?s w|9G3d0?4@^)+xb$Tltd;h?AfHl!M*mbfqSU6J7C@jeWsW11%6IyuOni04TpD3;+NC delta 101 zcmaFR%k-d^X@iZf;Occc60bLyi!(AXFfaiz^W=|V+M6qMMTFUxvnFc*r8ZA?a1~>3 umuE2maqfq8O0Z{^^7(-{`T0*d*p1D7gF&3=imzl diff --git a/wound-wait/build/.ninja_log b/wound-wait/build/.ninja_log index 46def822..aee719cb 100644 --- a/wound-wait/build/.ninja_log +++ b/wound-wait/build/.ninja_log @@ -1,8 +1,8 @@ # ninja log v5 -0 439 1673000310360813227 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o cb094bc7f3f6c775 -0 714 1673000310632809895 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o f95633baccc8a3ed -1 840 1673000310760808327 CMakeFiles/ss2pl.exe.dir/result.cc.o 851e6c2fa850bcf5 -1 1345 1673000311264802153 CMakeFiles/ss2pl.exe.dir/transaction.cc.o 57b8653ac41a1255 -2 1435 1673000311352801075 CMakeFiles/ss2pl.exe.dir/util.cc.o c9c2e62e88d9d2c6 -1 1449 1673000311368800879 CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o 788a57bce6d40cdd -1449 1525 1673000311444799948 ss2pl.exe eee19cd8572392e1 +0 435 1673113065435513569 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o cb094bc7f3f6c775 +1 710 1673113065707510223 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o f95633baccc8a3ed +1 863 1673113065863508303 CMakeFiles/ss2pl.exe.dir/result.cc.o 851e6c2fa850bcf5 +2 1352 1673113066351502299 CMakeFiles/ss2pl.exe.dir/transaction.cc.o 57b8653ac41a1255 +2 1428 1673113066427501364 CMakeFiles/ss2pl.exe.dir/util.cc.o c9c2e62e88d9d2c6 +2 1439 1673113066439501216 CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o 788a57bce6d40cdd +1439 1515 1673113066515500281 ss2pl.exe eee19cd8572392e1 diff --git a/wound-wait/build/CMakeFiles/CMakeError.log b/wound-wait/build/CMakeFiles/CMakeError.log index 06917cbe..947305de 100644 --- a/wound-wait/build/CMakeFiles/CMakeError.log +++ b/wound-wait/build/CMakeFiles/CMakeError.log @@ -1,11 +1,11 @@ Performing C++ SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output: Change Dir: /home/tngngn/ccbench/wound-wait/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_9c10b && [1/2] Building CXX object CMakeFiles/cmTC_9c10b.dir/src.cxx.o -[2/2] Linking CXX executable cmTC_9c10b -FAILED: cmTC_9c10b -: && /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD CMakeFiles/cmTC_9c10b.dir/src.cxx.o -o cmTC_9c10b && : -/usr/bin/ld: CMakeFiles/cmTC_9c10b.dir/src.cxx.o: in function `main': +Run Build Command(s):/usr/local/bin/ninja cmTC_7abf4 && [1/2] Building CXX object CMakeFiles/cmTC_7abf4.dir/src.cxx.o +[2/2] Linking CXX executable cmTC_7abf4 +FAILED: cmTC_7abf4 +: && /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD CMakeFiles/cmTC_7abf4.dir/src.cxx.o -o cmTC_7abf4 && : +/usr/bin/ld: CMakeFiles/cmTC_7abf4.dir/src.cxx.o: in function `main': src.cxx:(.text+0x46): undefined reference to `pthread_create' /usr/bin/ld: src.cxx:(.text+0x52): undefined reference to `pthread_detach' /usr/bin/ld: src.cxx:(.text+0x5e): undefined reference to `pthread_cancel' @@ -38,10 +38,10 @@ int main(void) Determining if the function pthread_create exists in the pthreads failed with the following output: Change Dir: /home/tngngn/ccbench/wound-wait/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_ea672 && [1/2] Building CXX object CMakeFiles/cmTC_ea672.dir/CheckFunctionExists.cxx.o -[2/2] Linking CXX executable cmTC_ea672 -FAILED: cmTC_ea672 -: && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_ea672.dir/CheckFunctionExists.cxx.o -o cmTC_ea672 -lpthreads && : +Run Build Command(s):/usr/local/bin/ninja cmTC_a0dcf && [1/2] Building CXX object CMakeFiles/cmTC_a0dcf.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_a0dcf +FAILED: cmTC_a0dcf +: && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_a0dcf.dir/CheckFunctionExists.cxx.o -o cmTC_a0dcf -lpthreads && : /usr/bin/ld: -lpthreads が見つかりません collect2: error: ld returned 1 exit status ninja: build stopped: subcommand failed. diff --git a/wound-wait/build/CMakeFiles/CMakeOutput.log b/wound-wait/build/CMakeFiles/CMakeOutput.log index d8172410..0d4cbc60 100644 --- a/wound-wait/build/CMakeFiles/CMakeOutput.log +++ b/wound-wait/build/CMakeFiles/CMakeOutput.log @@ -15,15 +15,15 @@ The CXX compiler identification is GNU, found in "/home/tngngn/ccbench/wound-wai Determining if the CXX compiler works passed with the following output: Change Dir: /home/tngngn/ccbench/wound-wait/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_7a83d && [1/2] Building CXX object CMakeFiles/cmTC_7a83d.dir/testCXXCompiler.cxx.o -[2/2] Linking CXX executable cmTC_7a83d +Run Build Command(s):/usr/local/bin/ninja cmTC_718b5 && [1/2] Building CXX object CMakeFiles/cmTC_718b5.dir/testCXXCompiler.cxx.o +[2/2] Linking CXX executable cmTC_718b5 Detecting CXX compiler ABI info compiled with the following output: Change Dir: /home/tngngn/ccbench/wound-wait/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_e3156 && [1/2] Building CXX object CMakeFiles/cmTC_e3156.dir/CMakeCXXCompilerABI.cpp.o +Run Build Command(s):/usr/local/bin/ninja cmTC_a7bfa && [1/2] Building CXX object CMakeFiles/cmTC_a7bfa.dir/CMakeCXXCompilerABI.cpp.o Using built-in specs. COLLECT_GCC=/usr/bin/c++ OFFLOAD_TARGET_NAMES=nvptx-none:hsa @@ -32,8 +32,8 @@ Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_e3156.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_e3156.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cct4zCpV.s +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_a7bfa.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_a7bfa.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccubAZEO.s GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP @@ -57,13 +57,13 @@ GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0 -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_e3156.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - as -v --64 -o CMakeFiles/cmTC_e3156.dir/CMakeCXXCompilerABI.cpp.o /tmp/cct4zCpV.s +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_a7bfa.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + as -v --64 -o CMakeFiles/cmTC_a7bfa.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccubAZEO.s GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34 COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_e3156.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' -[2/2] Linking CXX executable cmTC_e3156 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_a7bfa.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +[2/2] Linking CXX executable cmTC_a7bfa Using built-in specs. COLLECT_GCC=/usr/bin/c++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper @@ -75,9 +75,9 @@ Thread model: posix gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_e3156' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccpcLhbg.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_e3156 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_e3156.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_e3156' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_a7bfa' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/cc3gC2x9.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_a7bfa /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_a7bfa.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_a7bfa' '-shared-libgcc' '-mtune=generic' '-march=x86-64' @@ -106,7 +106,7 @@ Parsed CXX implicit link information from above output: link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] ignore line: [Change Dir: /home/tngngn/ccbench/wound-wait/build/CMakeFiles/CMakeTmp] ignore line: [] - ignore line: [Run Build Command(s):/usr/local/bin/ninja cmTC_e3156 && [1/2] Building CXX object CMakeFiles/cmTC_e3156.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Run Build Command(s):/usr/local/bin/ninja cmTC_a7bfa && [1/2] Building CXX object CMakeFiles/cmTC_a7bfa.dir/CMakeCXXCompilerABI.cpp.o] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] @@ -115,8 +115,8 @@ Parsed CXX implicit link information from above output: ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] ignore line: [Thread model: posix] ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_e3156.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_e3156.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cct4zCpV.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_a7bfa.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_a7bfa.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccubAZEO.s] ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] ignore line: [] @@ -140,13 +140,13 @@ Parsed CXX implicit link information from above output: ignore line: [] ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] ignore line: [Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_e3156.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_e3156.dir/CMakeCXXCompilerABI.cpp.o /tmp/cct4zCpV.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_a7bfa.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_a7bfa.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccubAZEO.s] ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_e3156.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [[2/2] Linking CXX executable cmTC_e3156] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_a7bfa.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [[2/2] Linking CXX executable cmTC_a7bfa] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] @@ -158,13 +158,13 @@ Parsed CXX implicit link information from above output: ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_e3156' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccpcLhbg.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_e3156 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_e3156.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_a7bfa' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/cc3gC2x9.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_a7bfa /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_a7bfa.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/ccpcLhbg.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/cc3gC2x9.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -182,7 +182,7 @@ Parsed CXX implicit link information from above output: arg [-znow] ==> ignore arg [-zrelro] ==> ignore arg [-o] ==> ignore - arg [cmTC_e3156] ==> ignore + arg [cmTC_a7bfa] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore @@ -194,7 +194,7 @@ Parsed CXX implicit link information from above output: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] - arg [CMakeFiles/cmTC_e3156.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [CMakeFiles/cmTC_a7bfa.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore arg [-lstdc++] ==> lib [stdc++] arg [-lm] ==> lib [m] arg [-lgcc_s] ==> lib [gcc_s] @@ -220,16 +220,16 @@ Parsed CXX implicit link information from above output: Determining if the include file pthread.h exists passed with the following output: Change Dir: /home/tngngn/ccbench/wound-wait/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_d2997 && [1/2] Building CXX object CMakeFiles/cmTC_d2997.dir/CheckIncludeFile.cxx.o -[2/2] Linking CXX executable cmTC_d2997 +Run Build Command(s):/usr/local/bin/ninja cmTC_48897 && [1/2] Building CXX object CMakeFiles/cmTC_48897.dir/CheckIncludeFile.cxx.o +[2/2] Linking CXX executable cmTC_48897 Determining if the function pthread_create exists in the pthread passed with the following output: Change Dir: /home/tngngn/ccbench/wound-wait/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_8e019 && [1/2] Building CXX object CMakeFiles/cmTC_8e019.dir/CheckFunctionExists.cxx.o -[2/2] Linking CXX executable cmTC_8e019 +Run Build Command(s):/usr/local/bin/ninja cmTC_72945 && [1/2] Building CXX object CMakeFiles/cmTC_72945.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_72945 From 648312f7b7a94be6d3ada68a529d6fe31e355d24 Mon Sep 17 00:00:00 2001 From: tngngn Date: Sun, 8 Jan 2023 19:46:34 +0900 Subject: [PATCH 08/14] fix main --- plor/build/.ninja_deps | Bin 34528 -> 38384 bytes plor/build/.ninja_log | 18 +-- plor/build/CMakeFiles/CMakeError.log | 18 +-- plor/build/CMakeFiles/CMakeOutput.log | 56 ++++----- plor/ss2pl.cc | 4 +- plor/transaction.cc | 165 +------------------------- 6 files changed, 56 insertions(+), 205 deletions(-) diff --git a/plor/build/.ninja_deps b/plor/build/.ninja_deps index d07074bf1a6f2858ab4916987c69675964ff095c..b099575f509bb1e2de47910b88bc9cfd0c19cefb 100644 GIT binary patch delta 1437 zcmb`GUrbwd6vyu=vC#Im+}d`XzyfST7)U8F3d==-;ea^C#3{N#f%cZRciel++K!fF z*-A2>)EGP_Glr;3{2L+8+`X9apbtjhl*9*vL@`;S+nlb5O3dOs{VjJczUsrt?{k0W zd(J)Idw;);7fd(bH(ly%bZ&X>`{Kf2hZi`GGf@;_exyOqHo9HrD;M9}xG<={)ZMqk zT-$!}I`Ow72hDi-Y@KKFuiLi;lKXs3sZ`61;*%t90-O8mu`6SNafHYA*-mS6Djo5~ zIWCCKfg02@R$R)Iz!(k>*5h}i8^!syCR_>faDve`(eVP=WmT26bW+x+{2A;S7vX8l ztA1P_x4{TD5Bc#b(Nnl8H{sq10iI-4nR}{^;i(A`o?wb~QVcVym=xe~Mq@-r87&eG zvG=b}@^FOF&Jd4RLIFGxvch4e+K|lnYRHO_Z~)h6eUsL*uoVVa_T#By91UBb{~s;o z`tClhg{^o=q6*0YkK%_?8;(m3?1%(P<)|9EYn3}lxnAgDiu#BHx*2IiUHC~P;2`l# z%8)-oTfOiwE=&bboN_{EL0mc;R^=8$!ikja$E9ch9Z?4yxTDZCc~&tb9T}Q{5F~&nHqpyit5Y!f{QNcB1bzB5LOFtjyp@|iL9v8sJ z_DWZz&=_M!8n2z9K(nUez4GFl;ekkKuo8b+Pd z0_?q`Bih5>v@*@ZZbsWg)vWh^#SK+VmsJF)q;uuRj}#kbRli+TTO(Q`Q#h{NE;1!T z1*=w69?BWLOH@`MyONnPM&}-&b1A}3>gva!RtjF$e^C=)2d-)!TR0?5C!$ebJnq5# z*>Z5B{aib^Ft1g@{kW{{0VnAyK|p7s7D}$Kb@8f*V&igI36M60voO#D6`VhNKK{b<5&x} zDy4)Lm1E?Jv(ShUGnf07I(+q7jkPf176!B5uo1uPslxbN9sH&*%)MxW-}UMj$;}`UPuRJ$;^#A(>Zew_3@J%xDH>FMT;{X5v delta 1274 zcmY*YUu;ul6u+lr-Fkc5acR2(+uX)P*l_*FR#?i`K?jV0NJXdOwywQx*UtW%ElZau zV@3(lj5&Xp7$iYN)C5g1eb6TfZ;}|3z7ZuV4@N*#szZHZp59po55IGN-#O>^o%5ah zeRnQsewx)>+}0sa8K8(mY!8rHKP)S0uDnopJl<4=o$D&z4SEZ*&alZ?NgA0 zUh=~q^w0seE?f%g=t<7Aqc5z*y`V_@@2`48B0X_`btEL>>!2H7v3IZPZH`uBF{Hyl z$c4oRK!@-cW-gAA4SE5A0sk(IoDU!tNN~oyO4?+sRx&%5AL^(*S;zb=M4O> zt3f*I!?7_Vb(hB}#e$Vu!d4W=ytD;!%tLOrE=VJtk-AYBW85H-B zi|64$GG0qgHTToFL=KhRU}jfUlfg)~qO!p`?xPMAQx2RTucgP;M#l1$xUh+Tub0~4 ze9=p7m|(jRpR?V765Ge%On7L$THtg-qDOg}c3e%Esg)HDG$w0lof;iVO4P#4iBn0D zn$M4S29hqk%Bx(DZK!dr8F56`w>&h~5QY@rbf>HgvU Z{$<=O%)H)2_~e~Vb7kV{v^liE_zyAYu@L|O diff --git a/plor/build/.ninja_log b/plor/build/.ninja_log index ea00d93d..70d13c60 100644 --- a/plor/build/.ninja_log +++ b/plor/build/.ninja_log @@ -1,8 +1,12 @@ # ninja log v5 -0 444 1673112962056785529 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o cb094bc7f3f6c775 -0 710 1673112962320782281 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o f95633baccc8a3ed -1 841 1673112962452780657 CMakeFiles/ss2pl.exe.dir/result.cc.o 851e6c2fa850bcf5 -1 1404 1673112963016773718 CMakeFiles/ss2pl.exe.dir/transaction.cc.o 57b8653ac41a1255 -2 1420 1673112963032773521 CMakeFiles/ss2pl.exe.dir/util.cc.o c9c2e62e88d9d2c6 -1 1440 1673112963052773275 CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o 788a57bce6d40cdd -1441 1519 1673112963128772340 ss2pl.exe eee19cd8572392e1 +0 433 1673171476465128948 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o cb094bc7f3f6c775 +0 730 1673171476761125348 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o f95633baccc8a3ed +1 912 1673171476945123111 CMakeFiles/ss2pl.exe.dir/result.cc.o 851e6c2fa850bcf5 +1 1405 1673171477437117127 CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o 788a57bce6d40cdd +2 1424 1673171477457116884 CMakeFiles/ss2pl.exe.dir/util.cc.o c9c2e62e88d9d2c6 +3 1306 1673172869144107628 CMakeFiles/ss2pl.exe.dir/transaction.cc.o 57b8653ac41a1255 +1306 1377 1673172869216106745 ss2pl.exe eee19cd8572392e1 +3 1308 1673173211055913590 CMakeFiles/ss2pl.exe.dir/transaction.cc.o 57b8653ac41a1255 +1308 1371 1673173211119912806 ss2pl.exe eee19cd8572392e1 +3 1312 1673174516167926083 CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o 788a57bce6d40cdd +1312 1385 1673174516243925153 ss2pl.exe eee19cd8572392e1 diff --git a/plor/build/CMakeFiles/CMakeError.log b/plor/build/CMakeFiles/CMakeError.log index e61a70c5..0898946a 100644 --- a/plor/build/CMakeFiles/CMakeError.log +++ b/plor/build/CMakeFiles/CMakeError.log @@ -1,11 +1,11 @@ Performing C++ SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_f66cd && [1/2] Building CXX object CMakeFiles/cmTC_f66cd.dir/src.cxx.o -[2/2] Linking CXX executable cmTC_f66cd -FAILED: cmTC_f66cd -: && /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD CMakeFiles/cmTC_f66cd.dir/src.cxx.o -o cmTC_f66cd && : -/usr/bin/ld: CMakeFiles/cmTC_f66cd.dir/src.cxx.o: in function `main': +Run Build Command(s):/usr/local/bin/ninja cmTC_7e1d7 && [1/2] Building CXX object CMakeFiles/cmTC_7e1d7.dir/src.cxx.o +[2/2] Linking CXX executable cmTC_7e1d7 +FAILED: cmTC_7e1d7 +: && /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD CMakeFiles/cmTC_7e1d7.dir/src.cxx.o -o cmTC_7e1d7 && : +/usr/bin/ld: CMakeFiles/cmTC_7e1d7.dir/src.cxx.o: in function `main': src.cxx:(.text+0x46): undefined reference to `pthread_create' /usr/bin/ld: src.cxx:(.text+0x52): undefined reference to `pthread_detach' /usr/bin/ld: src.cxx:(.text+0x5e): undefined reference to `pthread_cancel' @@ -38,10 +38,10 @@ int main(void) Determining if the function pthread_create exists in the pthreads failed with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_3377f && [1/2] Building CXX object CMakeFiles/cmTC_3377f.dir/CheckFunctionExists.cxx.o -[2/2] Linking CXX executable cmTC_3377f -FAILED: cmTC_3377f -: && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_3377f.dir/CheckFunctionExists.cxx.o -o cmTC_3377f -lpthreads && : +Run Build Command(s):/usr/local/bin/ninja cmTC_7009f && [1/2] Building CXX object CMakeFiles/cmTC_7009f.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_7009f +FAILED: cmTC_7009f +: && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_7009f.dir/CheckFunctionExists.cxx.o -o cmTC_7009f -lpthreads && : /usr/bin/ld: -lpthreads が見つかりません collect2: error: ld returned 1 exit status ninja: build stopped: subcommand failed. diff --git a/plor/build/CMakeFiles/CMakeOutput.log b/plor/build/CMakeFiles/CMakeOutput.log index edd50729..e129e64d 100644 --- a/plor/build/CMakeFiles/CMakeOutput.log +++ b/plor/build/CMakeFiles/CMakeOutput.log @@ -15,15 +15,15 @@ The CXX compiler identification is GNU, found in "/home/tngngn/ccbench/plor/buil Determining if the CXX compiler works passed with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_07d47 && [1/2] Building CXX object CMakeFiles/cmTC_07d47.dir/testCXXCompiler.cxx.o -[2/2] Linking CXX executable cmTC_07d47 +Run Build Command(s):/usr/local/bin/ninja cmTC_0b35d && [1/2] Building CXX object CMakeFiles/cmTC_0b35d.dir/testCXXCompiler.cxx.o +[2/2] Linking CXX executable cmTC_0b35d Detecting CXX compiler ABI info compiled with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_ccd7d && [1/2] Building CXX object CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o +Run Build Command(s):/usr/local/bin/ninja cmTC_eadc3 && [1/2] Building CXX object CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o Using built-in specs. COLLECT_GCC=/usr/bin/c++ OFFLOAD_TARGET_NAMES=nvptx-none:hsa @@ -32,8 +32,8 @@ Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccLHZdMN.s +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cc1010US.s GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP @@ -57,13 +57,13 @@ GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0 -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - as -v --64 -o CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccLHZdMN.s +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + as -v --64 -o CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o /tmp/cc1010US.s GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34 COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' -[2/2] Linking CXX executable cmTC_ccd7d +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +[2/2] Linking CXX executable cmTC_eadc3 Using built-in specs. COLLECT_GCC=/usr/bin/c++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper @@ -75,9 +75,9 @@ Thread model: posix gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_ccd7d' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccuIbsG6.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_ccd7d /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_ccd7d' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_eadc3' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccIRRr6c.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_eadc3 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_eadc3' '-shared-libgcc' '-mtune=generic' '-march=x86-64' @@ -106,7 +106,7 @@ Parsed CXX implicit link information from above output: link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] ignore line: [Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp] ignore line: [] - ignore line: [Run Build Command(s):/usr/local/bin/ninja cmTC_ccd7d && [1/2] Building CXX object CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Run Build Command(s):/usr/local/bin/ninja cmTC_eadc3 && [1/2] Building CXX object CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] @@ -115,8 +115,8 @@ Parsed CXX implicit link information from above output: ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] ignore line: [Thread model: posix] ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccLHZdMN.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cc1010US.s] ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] ignore line: [] @@ -140,13 +140,13 @@ Parsed CXX implicit link information from above output: ignore line: [] ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] ignore line: [Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccLHZdMN.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o /tmp/cc1010US.s] ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [[2/2] Linking CXX executable cmTC_ccd7d] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [[2/2] Linking CXX executable cmTC_eadc3] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] @@ -158,13 +158,13 @@ Parsed CXX implicit link information from above output: ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_ccd7d' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccuIbsG6.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_ccd7d /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_eadc3' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccIRRr6c.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_eadc3 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/ccuIbsG6.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccIRRr6c.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -182,7 +182,7 @@ Parsed CXX implicit link information from above output: arg [-znow] ==> ignore arg [-zrelro] ==> ignore arg [-o] ==> ignore - arg [cmTC_ccd7d] ==> ignore + arg [cmTC_eadc3] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore @@ -194,7 +194,7 @@ Parsed CXX implicit link information from above output: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] - arg [CMakeFiles/cmTC_ccd7d.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore arg [-lstdc++] ==> lib [stdc++] arg [-lm] ==> lib [m] arg [-lgcc_s] ==> lib [gcc_s] @@ -220,16 +220,16 @@ Parsed CXX implicit link information from above output: Determining if the include file pthread.h exists passed with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_07653 && [1/2] Building CXX object CMakeFiles/cmTC_07653.dir/CheckIncludeFile.cxx.o -[2/2] Linking CXX executable cmTC_07653 +Run Build Command(s):/usr/local/bin/ninja cmTC_92553 && [1/2] Building CXX object CMakeFiles/cmTC_92553.dir/CheckIncludeFile.cxx.o +[2/2] Linking CXX executable cmTC_92553 Determining if the function pthread_create exists in the pthread passed with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_6208f && [1/2] Building CXX object CMakeFiles/cmTC_6208f.dir/CheckFunctionExists.cxx.o -[2/2] Linking CXX executable cmTC_6208f +Run Build Command(s):/usr/local/bin/ninja cmTC_a1be1 && [1/2] Building CXX object CMakeFiles/cmTC_a1be1.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_a1be1 diff --git a/plor/ss2pl.cc b/plor/ss2pl.cc index 9ba38ab3..2cecd1b2 100644 --- a/plor/ss2pl.cc +++ b/plor/ss2pl.cc @@ -75,13 +75,13 @@ void worker(size_t thid, char &ready, const bool &start, const bool &quit) { } else { ERR; } - /* + if (thread_stats[thid] == 1) { trans.status_ = TransactionStatus::aborted; trans.abort(); goto RETRY; } - */ + } trans.commit(); diff --git a/plor/transaction.cc b/plor/transaction.cc index 599680d5..c2ab203f 100644 --- a/plor/transaction.cc +++ b/plor/transaction.cc @@ -60,7 +60,7 @@ void TxExecutor::abort() { /** * Release locks */ - unlockList(); + //unlockList(); /** * Clean-up local read/write set. @@ -102,11 +102,9 @@ void TxExecutor::commit() { if (thread_timestamp[this->thid_] < thread_timestamp[tuple->waitRd[i].second]) { thread_stats[tuple->waitRd[i].second] = 1; } else { - while (1) { - if (thread_stats[thid_] == 1) goto FINISH_COMMIT; + if (thread_stats[this->thid_] == 1) goto FINISH_COMMIT; } - } } } @@ -135,14 +133,13 @@ void TxExecutor::commit() { //Release locks. //unlockList(); + FINISH_COMMIT: /** * Clean-up local read/write set. */ read_set_.clear(); write_set_.clear(); - FINISH_COMMIT: - return; } @@ -193,31 +190,9 @@ void TxExecutor::read(uint64_t key) { if (tuple->curr_writer > 0 && thread_timestamp[this->thid_] < thread_timestamp[tuple->curr_writer]) { thread_stats[tuple->curr_writer] = 1; } - if (thread_stats[thid_] == 1) goto FINISH_READ; - } - - /** Wound-Wait - * - - while (1) { - if (tuple->lock_.r_trylock()) { - r_lock_list_.emplace_back(&tuple->lock_); - read_set_.emplace_back(key, tuple, tuple->val_); - tuple->readers[thid_] = 1; - break; - } - else { - for (int i = 0; i < FLAGS_thread_num; i++) { - if (tuple->writers[i] > 0 && thread_timestamp[i] > thread_timestamp[this->thid_]) { - thread_stats[i] = 1; - } - } - if (thread_stats[thid_] == 1) goto FINISH_READ; - } + if (thread_stats[this->thid_] == 1) goto FINISH_READ; } - */ - FINISH_READ: #if ADD_ANALYSIS @@ -250,39 +225,6 @@ void TxExecutor::write(uint64_t key) { #else tuple = get_tuple(Table, key); #endif - /* - for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { - if ((*rItr).key_ == key) { // hit - while (1) { - if (!(*rItr).rcdptr_->lock_.tryupgrade()) { - if (tuple->curr_writer > 0 && thread_timestamp[this-thid_] < thread_timestamp[tuple->curr_writer]) { - thread_stats[tuple->curr_writer] = 1; - } - if (thread_stats[thid_] == 1) goto FINISH_WRITE; - } else { - break; - } - } - - // upgrade success - // remove old element of read lock list. - //tuple->readers[this->thid_] = 0; - //tuple->writers[this->thid_] = 1; - for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); - ++lItr) { - if (*lItr == &((*rItr).rcdptr_->lock_)) { - write_set_.emplace_back(key, (*rItr).rcdptr_); - w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); - r_lock_list_.erase(lItr); - break; - } - } - - read_set_.erase(rItr); - goto FINISH_WRITE; - } - } - */ /** PLOR */ write_set_.emplace_back(key, tuple); @@ -298,29 +240,11 @@ void TxExecutor::write(uint64_t key) { if (thread_timestamp[this->thid_] < thread_timestamp[tuple->curr_writer]) { thread_stats[tuple->curr_writer] = 1; } - if (thread_stats[thid_] == 1) goto FINISH_WRITE; + if (thread_stats[this->thid_] == 1) goto FINISH_WRITE; } } } - /** Wound-Wait - * - while (1) { - if (!tuple->lock_.w_trylock()) { - // wound-wait - - for (int i = 0; i < FLAGS_thread_num; i++) { - if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { - thread_stats[i] = 1; - } - } - if (thread_stats[thid_] == 1) goto FINISH_WRITE; - } else { - break; - } - } - */ - memcpy(tuple->val_, write_val_, VAL_SIZE); /** @@ -355,41 +279,6 @@ void TxExecutor::readWrite(uint64_t key) { #else tuple = get_tuple(Table, key); #endif -/* - for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { - if ((*rItr).key_ == key) { // hit - - while (1) { - if (!(*rItr).rcdptr_->lock_.tryupgrade()) { - if (tuple->curr_writer > 0 && thread_timestamp[this-thid_] < thread_timestamp[tuple->curr_writer]) { - thread_stats[tuple->curr_writer] = 1; - } - if (thread_stats[thid_] == 1) goto FINISH_WRITE; - } else { - break; - } - } - - - // upgrade success - // remove old element of read set. - //tuple->readers[this->thid_] = 0; - //tuple->writers[this->thid_] = 1; - for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); - ++lItr) { - if (*lItr == &((*rItr).rcdptr_->lock_)) { - write_set_.emplace_back(key, (*rItr).rcdptr_); - w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); - r_lock_list_.erase(lItr); - break; - } - } - - read_set_.erase(rItr); - goto FINISH_WRITE; - } - } - */ /** PLOR */ write_set_.emplace_back(key, tuple); @@ -405,29 +294,11 @@ void TxExecutor::readWrite(uint64_t key) { if (thread_timestamp[this->thid_] < thread_timestamp[tuple->curr_writer]) { thread_stats[tuple->curr_writer] = 1; } - if (thread_stats[thid_] == 1) goto FINISH_WRITE; + if (thread_stats[this->thid_] == 1) goto FINISH_WRITE; } } } - /** Wound-Wait - * - while (1) { - if (!tuple->lock_.w_trylock()) { - // wound-wait. - - for (int i = 0; i < FLAGS_thread_num; i++) { - if ((tuple->readers[i] > 0 || tuple->writers[i] > 0) && thread_timestamp[i] > thread_timestamp[this->thid_]) { - thread_stats[i] = 1; - } - } - if (thread_stats[thid_] == 1) goto FINISH_WRITE; - } else { - break; - } - } - */ - // read payload memcpy(this->return_val_, tuple->val_, VAL_SIZE); // finish read. @@ -476,30 +347,6 @@ void TxExecutor::unlockWrite(int thid, Tuple *tuple) { } } -/** - * @brief unlock and clean-up local lock set. - * @return void - */ - -void TxExecutor::unlockList() { - for (auto itr = r_lock_list_.begin(); itr != r_lock_list_.end(); ++itr) - (*itr)->r_unlock(); - - for (auto itr = w_lock_list_.begin(); itr != w_lock_list_.end(); ++itr) - (*itr)->w_unlock(); - - /* - for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) - (*itr).rcdptr_->readers[this->thid_] = -1; - for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) - (*itr).rcdptr_->writers[this->thid_] = -1; - */ - /** - * Clean-up local lock set. - */ - r_lock_list_.clear(); - w_lock_list_.clear(); -} From d11eff03f93e6edd6310bf064935198f048a503e Mon Sep 17 00:00:00 2001 From: tngngn Date: Wed, 11 Jan 2023 01:48:43 +0900 Subject: [PATCH 09/14] segmentation fault! at least not idling --- plor/build/.ninja_deps | Bin 38384 -> 34528 bytes plor/build/.ninja_log | 18 ++++----- plor/build/CMakeFiles/CMakeError.log | 18 ++++----- plor/build/CMakeFiles/CMakeOutput.log | 56 +++++++++++++------------- plor/include/transaction.hh | 2 + plor/transaction.cc | 17 ++++++-- 6 files changed, 59 insertions(+), 52 deletions(-) diff --git a/plor/build/.ninja_deps b/plor/build/.ninja_deps index b099575f509bb1e2de47910b88bc9cfd0c19cefb..1f1e6caa6019c18fd2a8bbcf86320d5c835d8ec7 100644 GIT binary patch delta 1216 zcmZuxUu;u#6uzfq>)PI~T-H(|8{3?UfNO8d)>*FOPRsZsg4XC%BHOy#e|PlX>{x1| zuo+RK8Mu5vOeA7r#vg$Mb6?a4$P!Ng|Q0dzAZ+n-Q8fF`TqA)95T?;yVjbu-T$IO zZua%pVo%B88GNv~xS9n%pa1Zvp7Cj#APgX|YcoDPcm+R)z4jq}w3ry>lmm$7J&Kmk zCH0gqofh6;>AEGUp3^dipVSiDvkKg$Dk{pA0yGTWENOld38v~ln46PB8D z9GOJ-flt12ziXlMnCNXm_d$o}wUvR2#bCjls1JdDgWzNP1UY2jtG4k#2wV84vX0SCQ=^015_2VC@`si_+jX@BM9OqPl)S(5ETbWo)i zFvWH+X4yUuDW=jML}Lo=W*fxym<@GW2oGX*+R6ET^u%kieaKF|%j^iV9n0(*vxv!B zl2$AZ+2}cwji;cHi)BX8?~FO|28es zQ%kE4gtV$;3rJUJGp|BMR(H`RGxxGC(v#-tHlH?{s?_H%w5jdn$D@NG1;2XBhD6`#wKt`b^v%#5+NR7N$KW=2)w4N0*nzAl> z#Eia~6>*ZAe3lhyojFD_8|$dH@#0oip|$*V%Gj54kjK<~loQF#-=QoHt$dgbJgZ7; zAmvq(_#rjZYK-L9lM9piE~>9QE&P(VlM}z?+ekF|hJu|O*i_g^c0>zp9vk1sNvkk^ zfuGLl>D$*TkLseKA9s-LYj#~?T!!><13o>`gCE{okp5uLpNzj4cNl*gQgN4s=8Pt2 zWSeJCnQ_;cIMz(KaH_-e57Pz4J;r^;d4@bCHKOyVVm-UyJv7Guj=2v!tDJKjdAO+TKX;vtL6U%)#jS7 delta 1428 zcmb_cT}%{L6rM9iV0VUPrm~8aq82GCus`4ey4qD2gjU3$6>S^W!m`T@J3G6}{?VpJ zZA>&VYBtBDeX8())ru)}9-B1nQ~RK4O!`t|q9&RcmHJa!nxn#C4KKk&T{qDKn z`MZ;|w@>p=F7wlyo8&p?;$J@RX2z~abA`j)A@p{w#}fyy;Bj9gDiIMrz?q0g9B64) z^~|WMyOj6I;fDiw%;(1Hs0jNRJ3y=-y}ceW9=DX-KAeaK;61z(_2Z+62YZG^*h4-y zo*b5-kFlSJB^-}>uuPF)H}iB8>t#t#DkAJMS@}S2tk^&gURMIJ6J<33?_wX>cd$UV z8?Te?LU|+rJFt&zCl*G6&_T8h#h3^|Vm|DRIbgfVD%5CvAg5XFZo`RK5Vn%th&7rW z0!$s!9Pl<%Z^-Gonzz(ja7OFG@z^Gz*cj(0Un{2LGHjxVR{Snr4jUPpC)SST`c7zL zSY;ujvB#*xY3a2{y2~yAvX`u(=20YB7B?77~8&lJ(%f2?0Dz+nyA`&Ehjj z30y2H9LZR1a!vSS(hrSH+n5ref$F)mZHYLDX@_BIGXa&@>TV+&& zw-~!ftd6n!#MUh6(iKq4GAn5j-dw1ylU^EL&ApgcVFXmPi)0uj4@056hY2Dk-X1-m;to%NXk>wiM;O6ZM=OocM8W z1z-6BYn(1yIGI(4Tne|uycVJnJsfc<3dg;Mv$=NN? z!ezn~Uis|#x1V(IB@gIykHhafqB#BO-?oQzd_Z!K$wmX;IH8>$66n|&l?ciKoZRKgwogCc+Zvd(U{H)l+SS^)kuemiuQhrbMU z@GQUh83{ZExf*>({H5BBdimzAb|ZhpxyWa>R~&^n5I6!)cx?X5(C|7GW2NA>74uLo2iE0S5~X;Wwopi6uhII`f&HF{XmsgL2EGcCI189(aksj diff --git a/plor/build/.ninja_log b/plor/build/.ninja_log index 70d13c60..829be3e6 100644 --- a/plor/build/.ninja_log +++ b/plor/build/.ninja_log @@ -1,12 +1,8 @@ # ninja log v5 -0 433 1673171476465128948 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o cb094bc7f3f6c775 -0 730 1673171476761125348 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o f95633baccc8a3ed -1 912 1673171476945123111 CMakeFiles/ss2pl.exe.dir/result.cc.o 851e6c2fa850bcf5 -1 1405 1673171477437117127 CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o 788a57bce6d40cdd -2 1424 1673171477457116884 CMakeFiles/ss2pl.exe.dir/util.cc.o c9c2e62e88d9d2c6 -3 1306 1673172869144107628 CMakeFiles/ss2pl.exe.dir/transaction.cc.o 57b8653ac41a1255 -1306 1377 1673172869216106745 ss2pl.exe eee19cd8572392e1 -3 1308 1673173211055913590 CMakeFiles/ss2pl.exe.dir/transaction.cc.o 57b8653ac41a1255 -1308 1371 1673173211119912806 ss2pl.exe eee19cd8572392e1 -3 1312 1673174516167926083 CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o 788a57bce6d40cdd -1312 1385 1673174516243925153 ss2pl.exe eee19cd8572392e1 +0 440 1673369202648247469 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o cb094bc7f3f6c775 +0 707 1673369202916244161 CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o f95633baccc8a3ed +1 856 1673369203068242285 CMakeFiles/ss2pl.exe.dir/result.cc.o 851e6c2fa850bcf5 +2 1299 1673369203508236855 CMakeFiles/ss2pl.exe.dir/util.cc.o c9c2e62e88d9d2c6 +1 1393 1673369203604235670 CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o 788a57bce6d40cdd +3 1337 1673369245147722911 CMakeFiles/ss2pl.exe.dir/transaction.cc.o 57b8653ac41a1255 +1337 1412 1673369245223721973 ss2pl.exe eee19cd8572392e1 diff --git a/plor/build/CMakeFiles/CMakeError.log b/plor/build/CMakeFiles/CMakeError.log index 0898946a..15c07ddb 100644 --- a/plor/build/CMakeFiles/CMakeError.log +++ b/plor/build/CMakeFiles/CMakeError.log @@ -1,11 +1,11 @@ Performing C++ SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_7e1d7 && [1/2] Building CXX object CMakeFiles/cmTC_7e1d7.dir/src.cxx.o -[2/2] Linking CXX executable cmTC_7e1d7 -FAILED: cmTC_7e1d7 -: && /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD CMakeFiles/cmTC_7e1d7.dir/src.cxx.o -o cmTC_7e1d7 && : -/usr/bin/ld: CMakeFiles/cmTC_7e1d7.dir/src.cxx.o: in function `main': +Run Build Command(s):/usr/local/bin/ninja cmTC_ca617 && [1/2] Building CXX object CMakeFiles/cmTC_ca617.dir/src.cxx.o +[2/2] Linking CXX executable cmTC_ca617 +FAILED: cmTC_ca617 +: && /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD CMakeFiles/cmTC_ca617.dir/src.cxx.o -o cmTC_ca617 && : +/usr/bin/ld: CMakeFiles/cmTC_ca617.dir/src.cxx.o: in function `main': src.cxx:(.text+0x46): undefined reference to `pthread_create' /usr/bin/ld: src.cxx:(.text+0x52): undefined reference to `pthread_detach' /usr/bin/ld: src.cxx:(.text+0x5e): undefined reference to `pthread_cancel' @@ -38,10 +38,10 @@ int main(void) Determining if the function pthread_create exists in the pthreads failed with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_7009f && [1/2] Building CXX object CMakeFiles/cmTC_7009f.dir/CheckFunctionExists.cxx.o -[2/2] Linking CXX executable cmTC_7009f -FAILED: cmTC_7009f -: && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_7009f.dir/CheckFunctionExists.cxx.o -o cmTC_7009f -lpthreads && : +Run Build Command(s):/usr/local/bin/ninja cmTC_061b3 && [1/2] Building CXX object CMakeFiles/cmTC_061b3.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_061b3 +FAILED: cmTC_061b3 +: && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_061b3.dir/CheckFunctionExists.cxx.o -o cmTC_061b3 -lpthreads && : /usr/bin/ld: -lpthreads が見つかりません collect2: error: ld returned 1 exit status ninja: build stopped: subcommand failed. diff --git a/plor/build/CMakeFiles/CMakeOutput.log b/plor/build/CMakeFiles/CMakeOutput.log index e129e64d..37facaa8 100644 --- a/plor/build/CMakeFiles/CMakeOutput.log +++ b/plor/build/CMakeFiles/CMakeOutput.log @@ -15,15 +15,15 @@ The CXX compiler identification is GNU, found in "/home/tngngn/ccbench/plor/buil Determining if the CXX compiler works passed with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_0b35d && [1/2] Building CXX object CMakeFiles/cmTC_0b35d.dir/testCXXCompiler.cxx.o -[2/2] Linking CXX executable cmTC_0b35d +Run Build Command(s):/usr/local/bin/ninja cmTC_6cc20 && [1/2] Building CXX object CMakeFiles/cmTC_6cc20.dir/testCXXCompiler.cxx.o +[2/2] Linking CXX executable cmTC_6cc20 Detecting CXX compiler ABI info compiled with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_eadc3 && [1/2] Building CXX object CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o +Run Build Command(s):/usr/local/bin/ninja cmTC_f8c20 && [1/2] Building CXX object CMakeFiles/cmTC_f8c20.dir/CMakeCXXCompilerABI.cpp.o Using built-in specs. COLLECT_GCC=/usr/bin/c++ OFFLOAD_TARGET_NAMES=nvptx-none:hsa @@ -32,8 +32,8 @@ Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cc1010US.s +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f8c20.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_f8c20.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cc00cLON.s GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP @@ -57,13 +57,13 @@ GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0 -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - as -v --64 -o CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o /tmp/cc1010US.s +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f8c20.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + as -v --64 -o CMakeFiles/cmTC_f8c20.dir/CMakeCXXCompilerABI.cpp.o /tmp/cc00cLON.s GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34 COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' -[2/2] Linking CXX executable cmTC_eadc3 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f8c20.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +[2/2] Linking CXX executable cmTC_f8c20 Using built-in specs. COLLECT_GCC=/usr/bin/c++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper @@ -75,9 +75,9 @@ Thread model: posix gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_eadc3' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccIRRr6c.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_eadc3 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_eadc3' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_f8c20' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/cc7olj34.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_f8c20 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_f8c20.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_f8c20' '-shared-libgcc' '-mtune=generic' '-march=x86-64' @@ -106,7 +106,7 @@ Parsed CXX implicit link information from above output: link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] ignore line: [Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp] ignore line: [] - ignore line: [Run Build Command(s):/usr/local/bin/ninja cmTC_eadc3 && [1/2] Building CXX object CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Run Build Command(s):/usr/local/bin/ninja cmTC_f8c20 && [1/2] Building CXX object CMakeFiles/cmTC_f8c20.dir/CMakeCXXCompilerABI.cpp.o] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] @@ -115,8 +115,8 @@ Parsed CXX implicit link information from above output: ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] ignore line: [Thread model: posix] ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cc1010US.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f8c20.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_f8c20.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cc00cLON.s] ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] ignore line: [] @@ -140,13 +140,13 @@ Parsed CXX implicit link information from above output: ignore line: [] ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] ignore line: [Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o /tmp/cc1010US.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f8c20.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_f8c20.dir/CMakeCXXCompilerABI.cpp.o /tmp/cc00cLON.s] ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [[2/2] Linking CXX executable cmTC_eadc3] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f8c20.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [[2/2] Linking CXX executable cmTC_f8c20] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] @@ -158,13 +158,13 @@ Parsed CXX implicit link information from above output: ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_eadc3' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccIRRr6c.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_eadc3 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_f8c20' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/cc7olj34.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_f8c20 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_f8c20.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/ccIRRr6c.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/cc7olj34.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -182,7 +182,7 @@ Parsed CXX implicit link information from above output: arg [-znow] ==> ignore arg [-zrelro] ==> ignore arg [-o] ==> ignore - arg [cmTC_eadc3] ==> ignore + arg [cmTC_f8c20] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore @@ -194,7 +194,7 @@ Parsed CXX implicit link information from above output: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] - arg [CMakeFiles/cmTC_eadc3.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [CMakeFiles/cmTC_f8c20.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore arg [-lstdc++] ==> lib [stdc++] arg [-lm] ==> lib [m] arg [-lgcc_s] ==> lib [gcc_s] @@ -220,16 +220,16 @@ Parsed CXX implicit link information from above output: Determining if the include file pthread.h exists passed with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_92553 && [1/2] Building CXX object CMakeFiles/cmTC_92553.dir/CheckIncludeFile.cxx.o -[2/2] Linking CXX executable cmTC_92553 +Run Build Command(s):/usr/local/bin/ninja cmTC_8df9f && [1/2] Building CXX object CMakeFiles/cmTC_8df9f.dir/CheckIncludeFile.cxx.o +[2/2] Linking CXX executable cmTC_8df9f Determining if the function pthread_create exists in the pthread passed with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_a1be1 && [1/2] Building CXX object CMakeFiles/cmTC_a1be1.dir/CheckFunctionExists.cxx.o -[2/2] Linking CXX executable cmTC_a1be1 +Run Build Command(s):/usr/local/bin/ninja cmTC_7e2da && [1/2] Building CXX object CMakeFiles/cmTC_7e2da.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_7e2da diff --git a/plor/include/transaction.hh b/plor/include/transaction.hh index 08bda906..82981599 100644 --- a/plor/include/transaction.hh +++ b/plor/include/transaction.hh @@ -64,6 +64,8 @@ public: void unlockWrite(int thid, Tuple *tuple); + bool checkRd(int thid, Tuple *tuple); + // inline diff --git a/plor/transaction.cc b/plor/transaction.cc index c2ab203f..c1832c65 100644 --- a/plor/transaction.cc +++ b/plor/transaction.cc @@ -97,12 +97,13 @@ void TxExecutor::commit() { for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { tuple = (*itr).rcdptr_; - //tuple->waitRd.emplace_back(excl_sig); + tuple->waitRd.emplace_back(-1,-1); for (int i=0; iwaitRd.size(); i++) { if (thread_timestamp[this->thid_] < thread_timestamp[tuple->waitRd[i].second]) { thread_stats[tuple->waitRd[i].second] = 1; } else { - while (1) { + // checkRd + while (checkRd(tuple->waitRd[i].second, tuple)) { if (thread_stats[this->thid_] == 1) goto FINISH_COMMIT; } } @@ -186,7 +187,8 @@ void TxExecutor::read(uint64_t key) { tuple->waitRd.emplace_back(thread_timestamp[this->thid_], this->thid_); // pure, no commit priority yet - while (1) { + // need checkRd + while (checkRd(-1, tuple)) { if (tuple->curr_writer > 0 && thread_timestamp[this->thid_] < thread_timestamp[tuple->curr_writer]) { thread_stats[tuple->curr_writer] = 1; } @@ -347,6 +349,13 @@ void TxExecutor::unlockWrite(int thid, Tuple *tuple) { } } - +bool TxExecutor::checkRd(int thid, Tuple *tuple) { + for (int i = 0; iwaitRd.size(); i++) { + if (tuple->waitRd[i].second == thid) { + return true; + } + } + return false; +} From e6aa8e6994cc7701549676fc0e2303abdebe97a1 Mon Sep 17 00:00:00 2001 From: tngngn Date: Wed, 11 Jan 2023 20:33:17 +0900 Subject: [PATCH 10/14] add CAS, still segmentation fault --- plor/build/.ninja_deps | Bin 34528 -> 34528 bytes plor/build/.ninja_log | 14 +++---- plor/build/CMakeFiles/CMakeError.log | 18 ++++----- plor/build/CMakeFiles/CMakeOutput.log | 56 +++++++++++++------------- plor/include/transaction.hh | 6 +++ plor/include/tuple.hh | 4 +- plor/transaction.cc | 54 +++++++++++++------------ 7 files changed, 79 insertions(+), 73 deletions(-) diff --git a/plor/build/.ninja_deps b/plor/build/.ninja_deps index 1f1e6caa6019c18fd2a8bbcf86320d5c835d8ec7..945917eed352804a5c6757e6de4f9fe77df4c73a 100644 GIT binary patch delta 155 zcmaFR%k-d^X@iZfp!Vj^XKveCiZe1WFfaiz^W=|V+M6qMMTFUQPZzj#+jjFL2RAV` zMqQ4lK=!?`ee7(v;^mm`*lu1F_e_G#o_!e`klk1Qh@DN^MuY>%E~^(~W}G^?&_$SU zH_*U6Ks*g-`gF$4T}`VPCr_xhnOxB#GWkG_#N-c=ER)x?9sgc delta 148 zcmaFR%k-d^X@iZf;M$zGtvL*q;*1Oo3`{`GJo#go_T~y*5n;B2yPi$WVc0y$!A*=U zm-E{^Ap2g}K6W_u_UB-o}ceX$S7?kj)9&Nlyxcy<}X=CXP*=FJ$CGYk|aA8E ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/cc7olj34.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccONa3KO.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -182,7 +182,7 @@ Parsed CXX implicit link information from above output: arg [-znow] ==> ignore arg [-zrelro] ==> ignore arg [-o] ==> ignore - arg [cmTC_f8c20] ==> ignore + arg [cmTC_cd855] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore @@ -194,7 +194,7 @@ Parsed CXX implicit link information from above output: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] - arg [CMakeFiles/cmTC_f8c20.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [CMakeFiles/cmTC_cd855.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore arg [-lstdc++] ==> lib [stdc++] arg [-lm] ==> lib [m] arg [-lgcc_s] ==> lib [gcc_s] @@ -220,16 +220,16 @@ Parsed CXX implicit link information from above output: Determining if the include file pthread.h exists passed with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_8df9f && [1/2] Building CXX object CMakeFiles/cmTC_8df9f.dir/CheckIncludeFile.cxx.o -[2/2] Linking CXX executable cmTC_8df9f +Run Build Command(s):/usr/local/bin/ninja cmTC_bb135 && [1/2] Building CXX object CMakeFiles/cmTC_bb135.dir/CheckIncludeFile.cxx.o +[2/2] Linking CXX executable cmTC_bb135 Determining if the function pthread_create exists in the pthread passed with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_7e2da && [1/2] Building CXX object CMakeFiles/cmTC_7e2da.dir/CheckFunctionExists.cxx.o -[2/2] Linking CXX executable cmTC_7e2da +Run Build Command(s):/usr/local/bin/ninja cmTC_42531 && [1/2] Building CXX object CMakeFiles/cmTC_42531.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_42531 diff --git a/plor/include/transaction.hh b/plor/include/transaction.hh index 82981599..fca533e2 100644 --- a/plor/include/transaction.hh +++ b/plor/include/transaction.hh @@ -32,6 +32,8 @@ public: char write_val_[VAL_SIZE]; char return_val_[VAL_SIZE]; + std::mutex mtx; + TxExecutor(int thid, Result *sres) : thid_(thid), sres_(sres) { read_set_.reserve(FLAGS_max_ope); write_set_.reserve(FLAGS_max_ope); @@ -66,6 +68,10 @@ public: bool checkRd(int thid, Tuple *tuple); + void mtx_get(); + + void mtx_release(); + // inline diff --git a/plor/include/tuple.hh b/plor/include/tuple.hh index 22c951b3..2611afec 100644 --- a/plor/include/tuple.hh +++ b/plor/include/tuple.hh @@ -13,9 +13,7 @@ class Tuple { public: alignas(CACHE_LINE_SIZE) RWLock lock_; char val_[VAL_SIZE]; - int curr_writer = 0; - //int readers[224] = {0}; - //int writers[224] = {0}; + atomic curr_writer = 0; std::vector> waitRd; std::vector> waitWr; Tuple() { diff --git a/plor/transaction.cc b/plor/transaction.cc index c1832c65..c956c349 100644 --- a/plor/transaction.cc +++ b/plor/transaction.cc @@ -6,6 +6,7 @@ #include #include +#include #include "../include/backoff.hh" #include "../include/debug.hh" @@ -110,6 +111,8 @@ void TxExecutor::commit() { } } + this->status_ = TransactionStatus::committed; + /** * Phase 2: release read locks */ @@ -133,13 +136,7 @@ void TxExecutor::commit() { //Release locks. //unlockList(); - - FINISH_COMMIT: - /** - * Clean-up local read/write set. - */ - read_set_.clear(); - write_set_.clear(); +FINISH_COMMIT: return; } @@ -234,18 +231,17 @@ void TxExecutor::write(uint64_t key) { sort(tuple->waitWr.begin(), tuple->waitWr.end()); // @task: need to use CAS for this - while (1) { - if (tuple->curr_writer == 0) { - tuple->curr_writer == this->thid_; - } else { - while (tuple->curr_writer != this->thid_) { - if (thread_timestamp[this->thid_] < thread_timestamp[tuple->curr_writer]) { - thread_stats[tuple->curr_writer] = 1; - } - if (thread_stats[this->thid_] == 1) goto FINISH_WRITE; + int expected, desired; + expected = 0; + desired = this->thid_; + if (!tuple->curr_writer.compare_exchange_weak(expected,desired)) { + while (tuple->curr_writer != this->thid_) { + if (thread_timestamp[this->thid_] < thread_timestamp[tuple->curr_writer]) { + thread_stats[tuple->curr_writer] = 1; } + if (thread_stats[this->thid_] == 1) goto FINISH_WRITE; } - } + } memcpy(tuple->val_, write_val_, VAL_SIZE); @@ -288,16 +284,15 @@ void TxExecutor::readWrite(uint64_t key) { sort(tuple->waitWr.begin(), tuple->waitWr.end()); // @task: need to use CAS for this - while (1) { - if (tuple->curr_writer == 0) { - tuple->curr_writer == this->thid_; - } else { - while (tuple->curr_writer != this->thid_) { - if (thread_timestamp[this->thid_] < thread_timestamp[tuple->curr_writer]) { - thread_stats[tuple->curr_writer] = 1; - } - if (thread_stats[this->thid_] == 1) goto FINISH_WRITE; + int expected, desired; + expected = 0; + desired = this->thid_; + if (!tuple->curr_writer.compare_exchange_weak(expected,desired)) { + while (tuple->curr_writer != this->thid_) { + if (thread_timestamp[this->thid_] < thread_timestamp[tuple->curr_writer]) { + thread_stats[tuple->curr_writer] = 1; } + if (thread_stats[this->thid_] == 1) goto FINISH_WRITE; } } @@ -358,4 +353,11 @@ bool TxExecutor::checkRd(int thid, Tuple *tuple) { return false; } +void TxExecutor::mtx_get() { + mtx.lock(); +} + +void TxExecutor::mtx_release() { + mtx.unlock(); +} From e436b2c952ffcc799f65fceba9da868cd2645eae Mon Sep 17 00:00:00 2001 From: tngngn Date: Thu, 12 Jan 2023 09:33:02 +0900 Subject: [PATCH 11/14] check git push --- plor/transaction.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plor/transaction.cc b/plor/transaction.cc index c956c349..e6ae3987 100644 --- a/plor/transaction.cc +++ b/plor/transaction.cc @@ -360,4 +360,5 @@ void TxExecutor::mtx_get() { void TxExecutor::mtx_release() { mtx.unlock(); } - + +// check git push \ No newline at end of file From 2d3f69101d0198ed43668689024396c5ce346a8d Mon Sep 17 00:00:00 2001 From: tngngn Date: Tue, 17 Jan 2023 00:40:27 +0900 Subject: [PATCH 12/14] bug at commit phase 1 --- plor/build/.ninja_deps | Bin 34528 -> 33676 bytes plor/build/.ninja_log | 14 +++---- plor/build/CMakeCache.txt | 2 +- plor/build/CMakeFiles/CMakeError.log | 18 ++++----- plor/build/CMakeFiles/CMakeOutput.log | 56 +++++++++++++------------- plor/build/build.ninja | 34 ++++++++-------- plor/build/cmake_install.cmake | 2 +- plor/build/rules.ninja | 6 +-- plor/include/transaction.hh | 2 + plor/ss2pl.cc | 37 ++++++++++------- plor/transaction.cc | 34 ++++++++++------ 11 files changed, 112 insertions(+), 93 deletions(-) diff --git a/plor/build/.ninja_deps b/plor/build/.ninja_deps index 945917eed352804a5c6757e6de4f9fe77df4c73a..a0f370834151beaa3d62a3df48d8b2e8d803f79c 100644 GIT binary patch delta 8805 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 ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/ccONa3KO.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/cccgBz7h.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -182,7 +182,7 @@ Parsed CXX implicit link information from above output: arg [-znow] ==> ignore arg [-zrelro] ==> ignore arg [-o] ==> ignore - arg [cmTC_cd855] ==> ignore + arg [cmTC_2e501] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore @@ -194,7 +194,7 @@ Parsed CXX implicit link information from above output: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] - arg [CMakeFiles/cmTC_cd855.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [CMakeFiles/cmTC_2e501.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore arg [-lstdc++] ==> lib [stdc++] arg [-lm] ==> lib [m] arg [-lgcc_s] ==> lib [gcc_s] @@ -220,16 +220,16 @@ Parsed CXX implicit link information from above output: Determining if the include file pthread.h exists passed with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_bb135 && [1/2] Building CXX object CMakeFiles/cmTC_bb135.dir/CheckIncludeFile.cxx.o -[2/2] Linking CXX executable cmTC_bb135 +Run Build Command(s):/usr/local/bin/ninja cmTC_d89b4 && [1/2] Building CXX object CMakeFiles/cmTC_d89b4.dir/CheckIncludeFile.cxx.o +[2/2] Linking CXX executable cmTC_d89b4 Determining if the function pthread_create exists in the pthread passed with the following output: Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/local/bin/ninja cmTC_42531 && [1/2] Building CXX object CMakeFiles/cmTC_42531.dir/CheckFunctionExists.cxx.o -[2/2] Linking CXX executable cmTC_42531 +Run Build Command(s):/usr/local/bin/ninja cmTC_471da && [1/2] Building CXX object CMakeFiles/cmTC_471da.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_471da diff --git a/plor/build/build.ninja b/plor/build/build.ninja index bfb97acd..5a947fd4 100644 --- a/plor/build/build.ninja +++ b/plor/build/build.ninja @@ -12,7 +12,7 @@ # ============================================================================= # Project: ccbench_ss2pl -# Configurations: Release +# Configurations: Debug # ============================================================================= ############################################# @@ -24,7 +24,7 @@ ninja_required_version = 1.5 ############################################# # Set configuration variable for custom commands. -CONFIGURATION = Release +CONFIGURATION = Debug # ============================================================================= # Include auxiliary files. @@ -64,57 +64,57 @@ build edit_cache: phony CMakeFiles/edit_cache.util ############################################# # Order-only phony target for ss2pl.exe -build cmake_object_order_depends_target_ss2pl.exe_Release: phony || CMakeFiles/ss2pl.exe.dir +build cmake_object_order_depends_target_ss2pl.exe_Debug: phony || CMakeFiles/ss2pl.exe.dir -build CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Release /home/tngngn/ccbench/common/result.cc || cmake_object_order_depends_target_ss2pl.exe_Release +build CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Debug /home/tngngn/ccbench/common/result.cc || cmake_object_order_depends_target_ss2pl.exe_Debug DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 DEP_FILE = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o.d - FLAGS = -O3 -DNDEBUG -std=c++17 + FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address -std=c++17 OBJECT_DIR = CMakeFiles/ss2pl.exe.dir OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ TARGET_PDB = ss2pl.exe.pdb -build CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Release /home/tngngn/ccbench/common/util.cc || cmake_object_order_depends_target_ss2pl.exe_Release +build CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Debug /home/tngngn/ccbench/common/util.cc || cmake_object_order_depends_target_ss2pl.exe_Debug DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 DEP_FILE = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o.d - FLAGS = -O3 -DNDEBUG -std=c++17 + FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address -std=c++17 OBJECT_DIR = CMakeFiles/ss2pl.exe.dir OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ TARGET_PDB = ss2pl.exe.pdb -build CMakeFiles/ss2pl.exe.dir/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../result.cc || cmake_object_order_depends_target_ss2pl.exe_Release +build CMakeFiles/ss2pl.exe.dir/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Debug ../result.cc || cmake_object_order_depends_target_ss2pl.exe_Debug DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 DEP_FILE = CMakeFiles/ss2pl.exe.dir/result.cc.o.d - FLAGS = -O3 -DNDEBUG -std=c++17 + FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address -std=c++17 OBJECT_DIR = CMakeFiles/ss2pl.exe.dir OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ TARGET_PDB = ss2pl.exe.pdb -build CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../ss2pl.cc || cmake_object_order_depends_target_ss2pl.exe_Release +build CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o: CXX_COMPILER__ss2pl.2eexe_Debug ../ss2pl.cc || cmake_object_order_depends_target_ss2pl.exe_Debug DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 DEP_FILE = CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o.d - FLAGS = -O3 -DNDEBUG -std=c++17 + FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address -std=c++17 OBJECT_DIR = CMakeFiles/ss2pl.exe.dir OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ TARGET_PDB = ss2pl.exe.pdb -build CMakeFiles/ss2pl.exe.dir/transaction.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../transaction.cc || cmake_object_order_depends_target_ss2pl.exe_Release +build CMakeFiles/ss2pl.exe.dir/transaction.cc.o: CXX_COMPILER__ss2pl.2eexe_Debug ../transaction.cc || cmake_object_order_depends_target_ss2pl.exe_Debug DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 DEP_FILE = CMakeFiles/ss2pl.exe.dir/transaction.cc.o.d - FLAGS = -O3 -DNDEBUG -std=c++17 + FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address -std=c++17 OBJECT_DIR = CMakeFiles/ss2pl.exe.dir OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ TARGET_PDB = ss2pl.exe.pdb -build CMakeFiles/ss2pl.exe.dir/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../util.cc || cmake_object_order_depends_target_ss2pl.exe_Release +build CMakeFiles/ss2pl.exe.dir/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Debug ../util.cc || cmake_object_order_depends_target_ss2pl.exe_Debug DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 DEP_FILE = CMakeFiles/ss2pl.exe.dir/util.cc.o.d - FLAGS = -O3 -DNDEBUG -std=c++17 + FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address -std=c++17 OBJECT_DIR = CMakeFiles/ss2pl.exe.dir OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ @@ -128,8 +128,8 @@ build CMakeFiles/ss2pl.exe.dir/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Release ../u ############################################# # Link the executable ss2pl.exe -build ss2pl.exe: CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Release CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o CMakeFiles/ss2pl.exe.dir/result.cc.o CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o CMakeFiles/ss2pl.exe.dir/transaction.cc.o CMakeFiles/ss2pl.exe.dir/util.cc.o | /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a - FLAGS = -O3 -DNDEBUG +build ss2pl.exe: CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Debug CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o CMakeFiles/ss2pl.exe.dir/result.cc.o CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o CMakeFiles/ss2pl.exe.dir/transaction.cc.o CMakeFiles/ss2pl.exe.dir/util.cc.o | /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a + FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address LINK_LIBRARIES = /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a -lpthread OBJECT_DIR = CMakeFiles/ss2pl.exe.dir POST_BUILD = : diff --git a/plor/build/cmake_install.cmake b/plor/build/cmake_install.cmake index e7f0f2e0..42ab8b02 100644 --- a/plor/build/cmake_install.cmake +++ b/plor/build/cmake_install.cmake @@ -12,7 +12,7 @@ if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") else() - set(CMAKE_INSTALL_CONFIG_NAME "Release") + set(CMAKE_INSTALL_CONFIG_NAME "Debug") endif() message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") endif() diff --git a/plor/build/rules.ninja b/plor/build/rules.ninja index 319144c7..83415e80 100644 --- a/plor/build/rules.ninja +++ b/plor/build/rules.ninja @@ -7,7 +7,7 @@ # ============================================================================= # Project: ccbench_ss2pl -# Configurations: Release +# Configurations: Debug # ============================================================================= # ============================================================================= @@ -22,7 +22,7 @@ rule CUSTOM_COMMAND ############################################# # Rule for compiling CXX files. -rule CXX_COMPILER__ss2pl.2eexe_Release +rule CXX_COMPILER__ss2pl.2eexe_Debug depfile = $DEP_FILE deps = gcc command = /usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in @@ -32,7 +32,7 @@ rule CXX_COMPILER__ss2pl.2eexe_Release ############################################# # Rule for linking CXX executable. -rule CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Release +rule CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Debug command = $PRE_LINK && /usr/bin/c++ $FLAGS $LINK_FLAGS $in -o $TARGET_FILE $LINK_PATH $LINK_LIBRARIES && $POST_BUILD description = Linking CXX executable $TARGET_FILE restat = $RESTAT diff --git a/plor/include/transaction.hh b/plor/include/transaction.hh index fca533e2..0389b847 100644 --- a/plor/include/transaction.hh +++ b/plor/include/transaction.hh @@ -56,6 +56,8 @@ public: void readWrite(uint64_t key); + bool validationPhase(); + void commit(); void abort(); diff --git a/plor/ss2pl.cc b/plor/ss2pl.cc index 2cecd1b2..da82bbe4 100644 --- a/plor/ss2pl.cc +++ b/plor/ss2pl.cc @@ -63,41 +63,48 @@ void worker(size_t thid, char &ready, const bool &start, const bool &quit) { if (loadAcquire(quit)) break; if (thid == 0) leaderBackoffWork(backoff, SS2PLResult); + NNN; trans.begin(); for (auto itr = trans.pro_set_.begin(); itr != trans.pro_set_.end(); ++itr) { + NNN; if ((*itr).ope_ == Ope::READ) { + NNN; trans.read((*itr).key_); } else if ((*itr).ope_ == Ope::WRITE) { + NNN; trans.write((*itr).key_); } else if ((*itr).ope_ == Ope::READ_MODIFY_WRITE) { + NNN; trans.readWrite((*itr).key_); } else { ERR; } + NNN; if (thread_stats[thid] == 1) { trans.status_ = TransactionStatus::aborted; trans.abort(); goto RETRY; } - } - - trans.commit(); - - if (thread_stats[thid] == 1) { - trans.status_ = TransactionStatus::aborted; - trans.abort(); - goto RETRY; - } - /** - * local_commit_counts is used at ../include/backoff.hh to calcurate about - * backoff. - */ - storeRelease(myres.local_commit_counts_, - loadAcquire(myres.local_commit_counts_) + 1); + NNN; + if (trans.validationPhase()) { + NNN; + trans.commit(); + /** + * local_commit_counts is used at ../include/backoff.hh to calcurate about + * backoff. + */ + storeRelease(myres.local_commit_counts_, + loadAcquire(myres.local_commit_counts_) + 1); + } else { + NNN; + trans.abort(); + ++myres.local_abort_counts_; + goto RETRY; + } } return; diff --git a/plor/transaction.cc b/plor/transaction.cc index e6ae3987..a5841749 100644 --- a/plor/transaction.cc +++ b/plor/transaction.cc @@ -89,13 +89,18 @@ void TxExecutor::abort() { * @brief success termination of transaction. * @return void */ -void TxExecutor::commit() { +// change to validate +bool TxExecutor::validationPhase() { Tuple *tuple; +#if ADD_ANALYSIS + std::uint64_t start = rdtscp(); +#endif + /** * Phase 1: detect read-write conflicts */ - + NNN; for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { tuple = (*itr).rcdptr_; tuple->waitRd.emplace_back(-1,-1); @@ -105,17 +110,30 @@ void TxExecutor::commit() { } else { // checkRd while (checkRd(tuple->waitRd[i].second, tuple)) { - if (thread_stats[this->thid_] == 1) goto FINISH_COMMIT; + if (thread_stats[this->thid_] == 1) { + this->status_ = TransactionStatus::aborted; + return false; + } } } } } + NNN; + // goto Phase 3 +#if ADD_ANALYSIS + sres_->local_vali_latency_ += rdtscp() - start; +#endif this->status_ = TransactionStatus::committed; + return true; +} +void TxExecutor::commit() { + Tuple *tuple; /** * Phase 2: release read locks */ + NNN; for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) { tuple = (*itr).rcdptr_; unlockRead(this->thid_, tuple); @@ -125,7 +143,7 @@ void TxExecutor::commit() { /** * Phase 3: commit and release write locks */ - + NNN; for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { tuple = (*itr).rcdptr_; // update payload. @@ -133,12 +151,6 @@ void TxExecutor::commit() { unlockWrite(this->thid_, tuple); //(*itr).rcdptr_->writers[this->thid_] = -1; } - - //Release locks. - //unlockList(); -FINISH_COMMIT: - - return; } /** @@ -360,5 +372,3 @@ void TxExecutor::mtx_get() { void TxExecutor::mtx_release() { mtx.unlock(); } - -// check git push \ No newline at end of file From 466cd7a8e4b68025394834a5bd50f7785b5a8b32 Mon Sep 17 00:00:00 2001 From: tngngn Date: Tue, 17 Jan 2023 17:11:28 +0900 Subject: [PATCH 13/14] the only thing that works: read-only txn (poorly) --- plor/build/.ninja_deps | Bin 33676 -> 0 bytes plor/build/.ninja_log | 8 - plor/build/CMakeCache.txt | 473 ------------ plor/build/CMakeDoxyfile.in | 280 -------- plor/build/CMakeDoxygenDefaults.cmake | 672 ------------------ .../CMakeFiles/3.17.0/CMakeCXXCompiler.cmake | 88 --- .../3.17.0/CMakeDetermineCompilerABI_CXX.bin | Bin 16560 -> 0 bytes .../build/CMakeFiles/3.17.0/CMakeSystem.cmake | 15 - .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 660 ----------------- plor/build/CMakeFiles/CMakeError.log | 50 -- plor/build/CMakeFiles/CMakeOutput.log | 235 ------ .../CheckFunctionExists.cxx | 28 - plor/build/CMakeFiles/TargetDirectories.txt | 3 - plor/build/CMakeFiles/cmake.check_cache | 1 - plor/build/build.ninja | 186 ----- plor/build/cmake_install.cmake | 49 -- plor/build/rules.ninja | 64 -- plor/ss2pl.cc | 1 + plor/transaction.cc | 40 +- 19 files changed, 23 insertions(+), 2830 deletions(-) delete mode 100644 plor/build/.ninja_deps delete mode 100644 plor/build/.ninja_log delete mode 100644 plor/build/CMakeCache.txt delete mode 100644 plor/build/CMakeDoxyfile.in delete mode 100644 plor/build/CMakeDoxygenDefaults.cmake delete mode 100644 plor/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake delete mode 100755 plor/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin delete mode 100644 plor/build/CMakeFiles/3.17.0/CMakeSystem.cmake delete mode 100644 plor/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp delete mode 100644 plor/build/CMakeFiles/CMakeError.log delete mode 100644 plor/build/CMakeFiles/CMakeOutput.log delete mode 100644 plor/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx delete mode 100644 plor/build/CMakeFiles/TargetDirectories.txt delete mode 100644 plor/build/CMakeFiles/cmake.check_cache delete mode 100644 plor/build/build.ninja delete mode 100644 plor/build/cmake_install.cmake delete mode 100644 plor/build/rules.ninja diff --git a/plor/build/.ninja_deps b/plor/build/.ninja_deps deleted file mode 100644 index a0f370834151beaa3d62a3df48d8b2e8d803f79c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33676 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 diff --git a/plor/build/CMakeFiles/3.17.0/CMakeSystem.cmake b/plor/build/CMakeFiles/3.17.0/CMakeSystem.cmake deleted file mode 100644 index 0fd1f759..00000000 --- a/plor/build/CMakeFiles/3.17.0/CMakeSystem.cmake +++ /dev/null @@ -1,15 +0,0 @@ -set(CMAKE_HOST_SYSTEM "Linux-5.4.0-113-generic") -set(CMAKE_HOST_SYSTEM_NAME "Linux") -set(CMAKE_HOST_SYSTEM_VERSION "5.4.0-113-generic") -set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") - - - -set(CMAKE_SYSTEM "Linux-5.4.0-113-generic") -set(CMAKE_SYSTEM_NAME "Linux") -set(CMAKE_SYSTEM_VERSION "5.4.0-113-generic") -set(CMAKE_SYSTEM_PROCESSOR "x86_64") - -set(CMAKE_CROSSCOMPILING "FALSE") - -set(CMAKE_SYSTEM_LOADED 1) diff --git a/plor/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp b/plor/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp deleted file mode 100644 index 69cfdba6..00000000 --- a/plor/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp +++ /dev/null @@ -1,660 +0,0 @@ -/* This source file must have a .cpp extension so that all C++ compilers - recognize the extension without flags. Borland does not know .cxx for - example. */ -#ifndef __cplusplus -# error "A C compiler has been selected for C++." -#endif - - -/* Version number components: V=Version, R=Revision, P=Patch - Version date components: YYYY=Year, MM=Month, DD=Day */ - -#if defined(__COMO__) -# define COMPILER_ID "Comeau" - /* __COMO_VERSION__ = VRR */ -# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) -# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) - -#elif defined(__INTEL_COMPILER) || defined(__ICC) -# define COMPILER_ID "Intel" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# if defined(__GNUC__) -# define SIMULATE_ID "GNU" -# endif - /* __INTEL_COMPILER = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) -# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) -# if defined(__INTEL_COMPILER_UPDATE) -# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) -# else -# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) -# endif -# if defined(__INTEL_COMPILER_BUILD_DATE) - /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ -# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) -# endif -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif -# if defined(__GNUC__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) -# elif defined(__GNUG__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) -# endif -# if defined(__GNUC_MINOR__) -# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) -# endif -# if defined(__GNUC_PATCHLEVEL__) -# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif - -#elif defined(__PATHCC__) -# define COMPILER_ID "PathScale" -# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) -# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) -# if defined(__PATHCC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) -# endif - -#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) -# define COMPILER_ID "Embarcadero" -# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) -# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) -# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) - -#elif defined(__BORLANDC__) -# define COMPILER_ID "Borland" - /* __BORLANDC__ = 0xVRR */ -# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) -# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) - -#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 -# define COMPILER_ID "Watcom" - /* __WATCOMC__ = VVRR */ -# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) -# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) -# if (__WATCOMC__ % 10) > 0 -# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) -# endif - -#elif defined(__WATCOMC__) -# define COMPILER_ID "OpenWatcom" - /* __WATCOMC__ = VVRP + 1100 */ -# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) -# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) -# if (__WATCOMC__ % 10) > 0 -# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) -# endif - -#elif defined(__SUNPRO_CC) -# define COMPILER_ID "SunPro" -# if __SUNPRO_CC >= 0x5100 - /* __SUNPRO_CC = 0xVRRP */ -# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) -# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) -# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) -# else - /* __SUNPRO_CC = 0xVRP */ -# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) -# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) -# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) -# endif - -#elif defined(__HP_aCC) -# define COMPILER_ID "HP" - /* __HP_aCC = VVRRPP */ -# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) -# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) -# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) - -#elif defined(__DECCXX) -# define COMPILER_ID "Compaq" - /* __DECCXX_VER = VVRRTPPPP */ -# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) -# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) -# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) - -#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) -# define COMPILER_ID "zOS" - /* __IBMCPP__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) - -#elif defined(__ibmxl__) && defined(__clang__) -# define COMPILER_ID "XLClang" -# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) -# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) -# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) -# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) - - -#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 -# define COMPILER_ID "XL" - /* __IBMCPP__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) - -#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 -# define COMPILER_ID "VisualAge" - /* __IBMCPP__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) - -#elif defined(__PGI) -# define COMPILER_ID "PGI" -# define COMPILER_VERSION_MAJOR DEC(__PGIC__) -# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) -# if defined(__PGIC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) -# endif - -#elif defined(_CRAYC) -# define COMPILER_ID "Cray" -# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) -# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) - -#elif defined(__TI_COMPILER_VERSION__) -# define COMPILER_ID "TI" - /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ -# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) -# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) -# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) - -#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) -# define COMPILER_ID "Fujitsu" - -#elif defined(__ghs__) -# define COMPILER_ID "GHS" -/* __GHS_VERSION_NUMBER = VVVVRP */ -# ifdef __GHS_VERSION_NUMBER -# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) -# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) -# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) -# endif - -#elif defined(__SCO_VERSION__) -# define COMPILER_ID "SCO" - -#elif defined(__ARMCC_VERSION) && !defined(__clang__) -# define COMPILER_ID "ARMCC" -#if __ARMCC_VERSION >= 1000000 - /* __ARMCC_VERSION = VRRPPPP */ - # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) - # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) - # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) -#else - /* __ARMCC_VERSION = VRPPPP */ - # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) - # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) - # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) -#endif - - -#elif defined(__clang__) && defined(__apple_build_version__) -# define COMPILER_ID "AppleClang" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# define COMPILER_VERSION_MAJOR DEC(__clang_major__) -# define COMPILER_VERSION_MINOR DEC(__clang_minor__) -# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif -# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) - -#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) -# define COMPILER_ID "ARMClang" - # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) - # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) - # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) -# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) - -#elif defined(__clang__) -# define COMPILER_ID "Clang" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# define COMPILER_VERSION_MAJOR DEC(__clang_major__) -# define COMPILER_VERSION_MINOR DEC(__clang_minor__) -# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif - -#elif defined(__GNUC__) || defined(__GNUG__) -# define COMPILER_ID "GNU" -# if defined(__GNUC__) -# define COMPILER_VERSION_MAJOR DEC(__GNUC__) -# else -# define COMPILER_VERSION_MAJOR DEC(__GNUG__) -# endif -# if defined(__GNUC_MINOR__) -# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) -# endif -# if defined(__GNUC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif - -#elif defined(_MSC_VER) -# define COMPILER_ID "MSVC" - /* _MSC_VER = VVRR */ -# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) -# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) -# if defined(_MSC_FULL_VER) -# if _MSC_VER >= 1400 - /* _MSC_FULL_VER = VVRRPPPPP */ -# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) -# else - /* _MSC_FULL_VER = VVRRPPPP */ -# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) -# endif -# endif -# if defined(_MSC_BUILD) -# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) -# endif - -#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) -# define COMPILER_ID "ADSP" -#if defined(__VISUALDSPVERSION__) - /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ -# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) -# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) -# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) -#endif - -#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) -# define COMPILER_ID "IAR" -# if defined(__VER__) && defined(__ICCARM__) -# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) -# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) -# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) -# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) -# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) -# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) -# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) -# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) -# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) -# endif - - -/* These compilers are either not known or too old to define an - identification macro. Try to identify the platform and guess that - it is the native compiler. */ -#elif defined(__hpux) || defined(__hpua) -# define COMPILER_ID "HP" - -#else /* unknown compiler */ -# define COMPILER_ID "" -#endif - -/* Construct the string literal in pieces to prevent the source from - getting matched. Store it in a pointer rather than an array - because some compilers will just produce instructions to fill the - array rather than assigning a pointer to a static array. */ -char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; -#ifdef SIMULATE_ID -char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; -#endif - -#ifdef __QNXNTO__ -char const* qnxnto = "INFO" ":" "qnxnto[]"; -#endif - -#if defined(__CRAYXE) || defined(__CRAYXC) -char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; -#endif - -#define STRINGIFY_HELPER(X) #X -#define STRINGIFY(X) STRINGIFY_HELPER(X) - -/* Identify known platforms by name. */ -#if defined(__linux) || defined(__linux__) || defined(linux) -# define PLATFORM_ID "Linux" - -#elif defined(__CYGWIN__) -# define PLATFORM_ID "Cygwin" - -#elif defined(__MINGW32__) -# define PLATFORM_ID "MinGW" - -#elif defined(__APPLE__) -# define PLATFORM_ID "Darwin" - -#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) -# define PLATFORM_ID "Windows" - -#elif defined(__FreeBSD__) || defined(__FreeBSD) -# define PLATFORM_ID "FreeBSD" - -#elif defined(__NetBSD__) || defined(__NetBSD) -# define PLATFORM_ID "NetBSD" - -#elif defined(__OpenBSD__) || defined(__OPENBSD) -# define PLATFORM_ID "OpenBSD" - -#elif defined(__sun) || defined(sun) -# define PLATFORM_ID "SunOS" - -#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) -# define PLATFORM_ID "AIX" - -#elif defined(__hpux) || defined(__hpux__) -# define PLATFORM_ID "HP-UX" - -#elif defined(__HAIKU__) -# define PLATFORM_ID "Haiku" - -#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) -# define PLATFORM_ID "BeOS" - -#elif defined(__QNX__) || defined(__QNXNTO__) -# define PLATFORM_ID "QNX" - -#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) -# define PLATFORM_ID "Tru64" - -#elif defined(__riscos) || defined(__riscos__) -# define PLATFORM_ID "RISCos" - -#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) -# define PLATFORM_ID "SINIX" - -#elif defined(__UNIX_SV__) -# define PLATFORM_ID "UNIX_SV" - -#elif defined(__bsdos__) -# define PLATFORM_ID "BSDOS" - -#elif defined(_MPRAS) || defined(MPRAS) -# define PLATFORM_ID "MP-RAS" - -#elif defined(__osf) || defined(__osf__) -# define PLATFORM_ID "OSF1" - -#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) -# define PLATFORM_ID "SCO_SV" - -#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) -# define PLATFORM_ID "ULTRIX" - -#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) -# define PLATFORM_ID "Xenix" - -#elif defined(__WATCOMC__) -# if defined(__LINUX__) -# define PLATFORM_ID "Linux" - -# elif defined(__DOS__) -# define PLATFORM_ID "DOS" - -# elif defined(__OS2__) -# define PLATFORM_ID "OS2" - -# elif defined(__WINDOWS__) -# define PLATFORM_ID "Windows3x" - -# else /* unknown platform */ -# define PLATFORM_ID -# endif - -#elif defined(__INTEGRITY) -# if defined(INT_178B) -# define PLATFORM_ID "Integrity178" - -# else /* regular Integrity */ -# define PLATFORM_ID "Integrity" -# endif - -#else /* unknown platform */ -# define PLATFORM_ID - -#endif - -/* For windows compilers MSVC and Intel we can determine - the architecture of the compiler being used. This is because - the compilers do not have flags that can change the architecture, - but rather depend on which compiler is being used -*/ -#if defined(_WIN32) && defined(_MSC_VER) -# if defined(_M_IA64) -# define ARCHITECTURE_ID "IA64" - -# elif defined(_M_X64) || defined(_M_AMD64) -# define ARCHITECTURE_ID "x64" - -# elif defined(_M_IX86) -# define ARCHITECTURE_ID "X86" - -# elif defined(_M_ARM64) -# define ARCHITECTURE_ID "ARM64" - -# elif defined(_M_ARM) -# if _M_ARM == 4 -# define ARCHITECTURE_ID "ARMV4I" -# elif _M_ARM == 5 -# define ARCHITECTURE_ID "ARMV5I" -# else -# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) -# endif - -# elif defined(_M_MIPS) -# define ARCHITECTURE_ID "MIPS" - -# elif defined(_M_SH) -# define ARCHITECTURE_ID "SHx" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__WATCOMC__) -# if defined(_M_I86) -# define ARCHITECTURE_ID "I86" - -# elif defined(_M_IX86) -# define ARCHITECTURE_ID "X86" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) -# if defined(__ICCARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__ICCRX__) -# define ARCHITECTURE_ID "RX" - -# elif defined(__ICCRH850__) -# define ARCHITECTURE_ID "RH850" - -# elif defined(__ICCRL78__) -# define ARCHITECTURE_ID "RL78" - -# elif defined(__ICCRISCV__) -# define ARCHITECTURE_ID "RISCV" - -# elif defined(__ICCAVR__) -# define ARCHITECTURE_ID "AVR" - -# elif defined(__ICC430__) -# define ARCHITECTURE_ID "MSP430" - -# elif defined(__ICCV850__) -# define ARCHITECTURE_ID "V850" - -# elif defined(__ICC8051__) -# define ARCHITECTURE_ID "8051" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__ghs__) -# if defined(__PPC64__) -# define ARCHITECTURE_ID "PPC64" - -# elif defined(__ppc__) -# define ARCHITECTURE_ID "PPC" - -# elif defined(__ARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__x86_64__) -# define ARCHITECTURE_ID "x64" - -# elif defined(__i386__) -# define ARCHITECTURE_ID "X86" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif -#else -# define ARCHITECTURE_ID -#endif - -/* Convert integer to decimal digit literals. */ -#define DEC(n) \ - ('0' + (((n) / 10000000)%10)), \ - ('0' + (((n) / 1000000)%10)), \ - ('0' + (((n) / 100000)%10)), \ - ('0' + (((n) / 10000)%10)), \ - ('0' + (((n) / 1000)%10)), \ - ('0' + (((n) / 100)%10)), \ - ('0' + (((n) / 10)%10)), \ - ('0' + ((n) % 10)) - -/* Convert integer to hex digit literals. */ -#define HEX(n) \ - ('0' + ((n)>>28 & 0xF)), \ - ('0' + ((n)>>24 & 0xF)), \ - ('0' + ((n)>>20 & 0xF)), \ - ('0' + ((n)>>16 & 0xF)), \ - ('0' + ((n)>>12 & 0xF)), \ - ('0' + ((n)>>8 & 0xF)), \ - ('0' + ((n)>>4 & 0xF)), \ - ('0' + ((n) & 0xF)) - -/* Construct a string literal encoding the version number components. */ -#ifdef COMPILER_VERSION_MAJOR -char const info_version[] = { - 'I', 'N', 'F', 'O', ':', - 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', - COMPILER_VERSION_MAJOR, -# ifdef COMPILER_VERSION_MINOR - '.', COMPILER_VERSION_MINOR, -# ifdef COMPILER_VERSION_PATCH - '.', COMPILER_VERSION_PATCH, -# ifdef COMPILER_VERSION_TWEAK - '.', COMPILER_VERSION_TWEAK, -# endif -# endif -# endif - ']','\0'}; -#endif - -/* Construct a string literal encoding the internal version number. */ -#ifdef COMPILER_VERSION_INTERNAL -char const info_version_internal[] = { - 'I', 'N', 'F', 'O', ':', - 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', - 'i','n','t','e','r','n','a','l','[', - COMPILER_VERSION_INTERNAL,']','\0'}; -#endif - -/* Construct a string literal encoding the version number components. */ -#ifdef SIMULATE_VERSION_MAJOR -char const info_simulate_version[] = { - 'I', 'N', 'F', 'O', ':', - 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', - SIMULATE_VERSION_MAJOR, -# ifdef SIMULATE_VERSION_MINOR - '.', SIMULATE_VERSION_MINOR, -# ifdef SIMULATE_VERSION_PATCH - '.', SIMULATE_VERSION_PATCH, -# ifdef SIMULATE_VERSION_TWEAK - '.', SIMULATE_VERSION_TWEAK, -# endif -# endif -# endif - ']','\0'}; -#endif - -/* Construct the string literal in pieces to prevent the source from - getting matched. Store it in a pointer rather than an array - because some compilers will just produce instructions to fill the - array rather than assigning a pointer to a static array. */ -char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; -char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; - - - - -#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L -# if defined(__INTEL_CXX11_MODE__) -# if defined(__cpp_aggregate_nsdmi) -# define CXX_STD 201402L -# else -# define CXX_STD 201103L -# endif -# else -# define CXX_STD 199711L -# endif -#elif defined(_MSC_VER) && defined(_MSVC_LANG) -# define CXX_STD _MSVC_LANG -#else -# define CXX_STD __cplusplus -#endif - -const char* info_language_dialect_default = "INFO" ":" "dialect_default[" -#if CXX_STD > 201703L - "20" -#elif CXX_STD >= 201703L - "17" -#elif CXX_STD >= 201402L - "14" -#elif CXX_STD >= 201103L - "11" -#else - "98" -#endif -"]"; - -/*--------------------------------------------------------------------------*/ - -int main(int argc, char* argv[]) -{ - int require = 0; - require += info_compiler[argc]; - require += info_platform[argc]; -#ifdef COMPILER_VERSION_MAJOR - require += info_version[argc]; -#endif -#ifdef COMPILER_VERSION_INTERNAL - require += info_version_internal[argc]; -#endif -#ifdef SIMULATE_ID - require += info_simulate[argc]; -#endif -#ifdef SIMULATE_VERSION_MAJOR - require += info_simulate_version[argc]; -#endif -#if defined(__CRAYXE) || defined(__CRAYXC) - require += info_cray[argc]; -#endif - require += info_language_dialect_default[argc]; - (void)argv; - return require; -} diff --git a/plor/build/CMakeFiles/CMakeError.log b/plor/build/CMakeFiles/CMakeError.log deleted file mode 100644 index 6da3603a..00000000 --- a/plor/build/CMakeFiles/CMakeError.log +++ /dev/null @@ -1,50 +0,0 @@ -Performing C++ SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output: -Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp - -Run Build Command(s):/usr/local/bin/ninja cmTC_22441 && [1/2] Building CXX object CMakeFiles/cmTC_22441.dir/src.cxx.o -[2/2] Linking CXX executable cmTC_22441 -FAILED: cmTC_22441 -: && /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD CMakeFiles/cmTC_22441.dir/src.cxx.o -o cmTC_22441 && : -/usr/bin/ld: CMakeFiles/cmTC_22441.dir/src.cxx.o: in function `main': -src.cxx:(.text+0x46): undefined reference to `pthread_create' -/usr/bin/ld: src.cxx:(.text+0x52): undefined reference to `pthread_detach' -/usr/bin/ld: src.cxx:(.text+0x5e): undefined reference to `pthread_cancel' -/usr/bin/ld: src.cxx:(.text+0x6f): undefined reference to `pthread_join' -collect2: error: ld returned 1 exit status -ninja: build stopped: subcommand failed. - - -Source file was: -#include - -void* test_func(void* data) -{ - return data; -} - -int main(void) -{ - pthread_t thread; - pthread_create(&thread, NULL, test_func, NULL); - pthread_detach(thread); - pthread_cancel(thread); - pthread_join(thread, NULL); - pthread_atfork(NULL, NULL, NULL); - pthread_exit(NULL); - - return 0; -} - -Determining if the function pthread_create exists in the pthreads failed with the following output: -Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp - -Run Build Command(s):/usr/local/bin/ninja cmTC_bac22 && [1/2] Building CXX object CMakeFiles/cmTC_bac22.dir/CheckFunctionExists.cxx.o -[2/2] Linking CXX executable cmTC_bac22 -FAILED: cmTC_bac22 -: && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_bac22.dir/CheckFunctionExists.cxx.o -o cmTC_bac22 -lpthreads && : -/usr/bin/ld: -lpthreads が見つかりません -collect2: error: ld returned 1 exit status -ninja: build stopped: subcommand failed. - - - diff --git a/plor/build/CMakeFiles/CMakeOutput.log b/plor/build/CMakeFiles/CMakeOutput.log deleted file mode 100644 index 291b714c..00000000 --- a/plor/build/CMakeFiles/CMakeOutput.log +++ /dev/null @@ -1,235 +0,0 @@ -The system is: Linux - 5.4.0-113-generic - x86_64 -Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. -Compiler: /usr/bin/c++ -Build flags: -Id flags: - -The output was: -0 - - -Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" - -The CXX compiler identification is GNU, found in "/home/tngngn/ccbench/plor/build/CMakeFiles/3.17.0/CompilerIdCXX/a.out" - -Determining if the CXX compiler works passed with the following output: -Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp - -Run Build Command(s):/usr/local/bin/ninja cmTC_3e064 && [1/2] Building CXX object CMakeFiles/cmTC_3e064.dir/testCXXCompiler.cxx.o -[2/2] Linking CXX executable cmTC_3e064 - - - -Detecting CXX compiler ABI info compiled with the following output: -Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp - -Run Build Command(s):/usr/local/bin/ninja cmTC_2e501 && [1/2] Building CXX object CMakeFiles/cmTC_2e501.dir/CMakeCXXCompilerABI.cpp.o -Using built-in specs. -COLLECT_GCC=/usr/bin/c++ -OFFLOAD_TARGET_NAMES=nvptx-none:hsa -OFFLOAD_TARGET_DEFAULT=1 -Target: x86_64-linux-gnu -Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu -Thread model: posix -gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_2e501.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_2e501.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccnTUS81.s -GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) - compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP - -GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 -ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9" -ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" -ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed" -ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include" -#include "..." search starts here: -#include <...> search starts here: - /usr/include/c++/9 - /usr/include/x86_64-linux-gnu/c++/9 - /usr/include/c++/9/backward - /usr/lib/gcc/x86_64-linux-gnu/9/include - /usr/local/include - /usr/include/x86_64-linux-gnu - /usr/include -End of search list. -GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) - compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP - -GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 -Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0 -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_2e501.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - as -v --64 -o CMakeFiles/cmTC_2e501.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccnTUS81.s -GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34 -COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ -LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_2e501.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' -[2/2] Linking CXX executable cmTC_2e501 -Using built-in specs. -COLLECT_GCC=/usr/bin/c++ -COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -OFFLOAD_TARGET_NAMES=nvptx-none:hsa -OFFLOAD_TARGET_DEFAULT=1 -Target: x86_64-linux-gnu -Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu -Thread model: posix -gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) -COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ -LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_2e501' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/cccgBz7h.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_2e501 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_2e501.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_2e501' '-shared-libgcc' '-mtune=generic' '-march=x86-64' - - - -Parsed CXX implicit include dir info from above output: rv=done - found start of include info - found start of implicit include info - add: [/usr/include/c++/9] - add: [/usr/include/x86_64-linux-gnu/c++/9] - add: [/usr/include/c++/9/backward] - add: [/usr/lib/gcc/x86_64-linux-gnu/9/include] - add: [/usr/local/include] - add: [/usr/include/x86_64-linux-gnu] - add: [/usr/include] - end of search list found - collapse include dir [/usr/include/c++/9] ==> [/usr/include/c++/9] - collapse include dir [/usr/include/x86_64-linux-gnu/c++/9] ==> [/usr/include/x86_64-linux-gnu/c++/9] - collapse include dir [/usr/include/c++/9/backward] ==> [/usr/include/c++/9/backward] - collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/9/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/9/include] - collapse include dir [/usr/local/include] ==> [/usr/local/include] - collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu] - collapse include dir [/usr/include] ==> [/usr/include] - implicit include dirs: [/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include] - - -Parsed CXX implicit link information from above output: - link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] - ignore line: [Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp] - ignore line: [] - ignore line: [Run Build Command(s):/usr/local/bin/ninja cmTC_2e501 && [1/2] Building CXX object CMakeFiles/cmTC_2e501.dir/CMakeCXXCompilerABI.cpp.o] - ignore line: [Using built-in specs.] - ignore line: [COLLECT_GCC=/usr/bin/c++] - ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] - ignore line: [OFFLOAD_TARGET_DEFAULT=1] - ignore line: [Target: x86_64-linux-gnu] - ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] - ignore line: [Thread model: posix] - ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_2e501.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_2e501.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccnTUS81.s] - ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] - ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] - ignore line: [] - ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] - ignore line: [ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9"] - ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"] - ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed"] - ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include"] - ignore line: [#include "..." search starts here:] - ignore line: [#include <...> search starts here:] - ignore line: [ /usr/include/c++/9] - ignore line: [ /usr/include/x86_64-linux-gnu/c++/9] - ignore line: [ /usr/include/c++/9/backward] - ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/include] - ignore line: [ /usr/local/include] - ignore line: [ /usr/include/x86_64-linux-gnu] - ignore line: [ /usr/include] - ignore line: [End of search list.] - ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] - ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] - ignore line: [] - ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] - ignore line: [Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_2e501.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_2e501.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccnTUS81.s] - ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34] - ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] - ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_2e501.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - ignore line: [[2/2] Linking CXX executable cmTC_2e501] - ignore line: [Using built-in specs.] - ignore line: [COLLECT_GCC=/usr/bin/c++] - ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] - ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] - ignore line: [OFFLOAD_TARGET_DEFAULT=1] - ignore line: [Target: x86_64-linux-gnu] - ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] - ignore line: [Thread model: posix] - ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] - ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] - ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_2e501' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] - link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/cccgBz7h.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_2e501 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_2e501.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] - arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore - arg [-plugin] ==> ignore - arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore - arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/cccgBz7h.res] ==> ignore - arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore - arg [-plugin-opt=-pass-through=-lgcc] ==> ignore - arg [-plugin-opt=-pass-through=-lc] ==> ignore - arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore - arg [-plugin-opt=-pass-through=-lgcc] ==> ignore - arg [--build-id] ==> ignore - arg [--eh-frame-hdr] ==> ignore - arg [-m] ==> ignore - arg [elf_x86_64] ==> ignore - arg [--hash-style=gnu] ==> ignore - arg [--as-needed] ==> ignore - arg [-dynamic-linker] ==> ignore - arg [/lib64/ld-linux-x86-64.so.2] ==> ignore - arg [-pie] ==> ignore - arg [-znow] ==> ignore - arg [-zrelro] ==> ignore - arg [-o] ==> ignore - arg [cmTC_2e501] ==> ignore - arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore - arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore - arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore - arg [-L/usr/lib/gcc/x86_64-linux-gnu/9] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9] - arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] - arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] - arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] - arg [-L/lib/../lib] ==> dir [/lib/../lib] - arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] - arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] - arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] - arg [CMakeFiles/cmTC_2e501.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore - arg [-lstdc++] ==> lib [stdc++] - arg [-lm] ==> lib [m] - arg [-lgcc_s] ==> lib [gcc_s] - arg [-lgcc] ==> lib [gcc] - arg [-lc] ==> lib [c] - arg [-lgcc_s] ==> lib [gcc_s] - arg [-lgcc] ==> lib [gcc] - arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o] ==> ignore - arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] ==> ignore - collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9] ==> [/usr/lib/gcc/x86_64-linux-gnu/9] - collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] - collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> [/usr/lib] - collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] - collapse library dir [/lib/../lib] ==> [/lib] - collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] - collapse library dir [/usr/lib/../lib] ==> [/usr/lib] - collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> [/usr/lib] - implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc] - implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] - implicit fwks: [] - - -Determining if the include file pthread.h exists passed with the following output: -Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp - -Run Build Command(s):/usr/local/bin/ninja cmTC_d89b4 && [1/2] Building CXX object CMakeFiles/cmTC_d89b4.dir/CheckIncludeFile.cxx.o -[2/2] Linking CXX executable cmTC_d89b4 - - - -Determining if the function pthread_create exists in the pthread passed with the following output: -Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp - -Run Build Command(s):/usr/local/bin/ninja cmTC_471da && [1/2] Building CXX object CMakeFiles/cmTC_471da.dir/CheckFunctionExists.cxx.o -[2/2] Linking CXX executable cmTC_471da - - - diff --git a/plor/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx b/plor/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx deleted file mode 100644 index 13435e07..00000000 --- a/plor/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx +++ /dev/null @@ -1,28 +0,0 @@ -#ifdef CHECK_FUNCTION_EXISTS - -# ifdef __cplusplus -extern "C" -# endif - char - CHECK_FUNCTION_EXISTS(void); -# ifdef __CLASSIC_C__ -int main() -{ - int ac; - char* av[]; -# else -int main(int ac, char* av[]) -{ -# endif - CHECK_FUNCTION_EXISTS(); - if (ac > 1000) { - return *av[0]; - } - return 0; -} - -#else /* CHECK_FUNCTION_EXISTS */ - -# error "CHECK_FUNCTION_EXISTS has to specify the function" - -#endif /* CHECK_FUNCTION_EXISTS */ diff --git a/plor/build/CMakeFiles/TargetDirectories.txt b/plor/build/CMakeFiles/TargetDirectories.txt deleted file mode 100644 index 10364580..00000000 --- a/plor/build/CMakeFiles/TargetDirectories.txt +++ /dev/null @@ -1,3 +0,0 @@ -/home/tngngn/ccbench/plor/build/CMakeFiles/rebuild_cache.dir -/home/tngngn/ccbench/plor/build/CMakeFiles/edit_cache.dir -/home/tngngn/ccbench/plor/build/CMakeFiles/ss2pl.exe.dir diff --git a/plor/build/CMakeFiles/cmake.check_cache b/plor/build/CMakeFiles/cmake.check_cache deleted file mode 100644 index 3dccd731..00000000 --- a/plor/build/CMakeFiles/cmake.check_cache +++ /dev/null @@ -1 +0,0 @@ -# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/plor/build/build.ninja b/plor/build/build.ninja deleted file mode 100644 index 5a947fd4..00000000 --- a/plor/build/build.ninja +++ /dev/null @@ -1,186 +0,0 @@ -# CMAKE generated file: DO NOT EDIT! -# Generated by "Ninja" Generator, CMake Version 3.17 - -# This file contains all the build statements describing the -# compilation DAG. - -# ============================================================================= -# Write statements declared in CMakeLists.txt: -# -# Which is the root file. -# ============================================================================= - -# ============================================================================= -# Project: ccbench_ss2pl -# Configurations: Debug -# ============================================================================= - -############################################# -# Minimal version of Ninja required by this file - -ninja_required_version = 1.5 - - -############################################# -# Set configuration variable for custom commands. - -CONFIGURATION = Debug -# ============================================================================= -# Include auxiliary files. - - -############################################# -# Include rules file. - -include rules.ninja - - -############################################# -# Utility command for rebuild_cache - -build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND - COMMAND = cd /home/tngngn/ccbench/plor/build && /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/plor -B/home/tngngn/ccbench/plor/build - DESC = Running CMake to regenerate build system... - pool = console - restat = 1 - -build rebuild_cache: phony CMakeFiles/rebuild_cache.util - - -############################################# -# Utility command for edit_cache - -build CMakeFiles/edit_cache.util: CUSTOM_COMMAND - COMMAND = cd /home/tngngn/ccbench/plor/build && /usr/local/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. - DESC = No interactive CMake dialog available... - restat = 1 - -build edit_cache: phony CMakeFiles/edit_cache.util - -# ============================================================================= -# Object build statements for EXECUTABLE target ss2pl.exe - - -############################################# -# Order-only phony target for ss2pl.exe - -build cmake_object_order_depends_target_ss2pl.exe_Debug: phony || CMakeFiles/ss2pl.exe.dir - -build CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Debug /home/tngngn/ccbench/common/result.cc || cmake_object_order_depends_target_ss2pl.exe_Debug - DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 - DEP_FILE = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o.d - FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address -std=c++17 - OBJECT_DIR = CMakeFiles/ss2pl.exe.dir - OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ - TARGET_PDB = ss2pl.exe.pdb - -build CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Debug /home/tngngn/ccbench/common/util.cc || cmake_object_order_depends_target_ss2pl.exe_Debug - DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 - DEP_FILE = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o.d - FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address -std=c++17 - OBJECT_DIR = CMakeFiles/ss2pl.exe.dir - OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ - TARGET_PDB = ss2pl.exe.pdb - -build CMakeFiles/ss2pl.exe.dir/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Debug ../result.cc || cmake_object_order_depends_target_ss2pl.exe_Debug - DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 - DEP_FILE = CMakeFiles/ss2pl.exe.dir/result.cc.o.d - FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address -std=c++17 - OBJECT_DIR = CMakeFiles/ss2pl.exe.dir - OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ - TARGET_PDB = ss2pl.exe.pdb - -build CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o: CXX_COMPILER__ss2pl.2eexe_Debug ../ss2pl.cc || cmake_object_order_depends_target_ss2pl.exe_Debug - DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 - DEP_FILE = CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o.d - FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address -std=c++17 - OBJECT_DIR = CMakeFiles/ss2pl.exe.dir - OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ - TARGET_PDB = ss2pl.exe.pdb - -build CMakeFiles/ss2pl.exe.dir/transaction.cc.o: CXX_COMPILER__ss2pl.2eexe_Debug ../transaction.cc || cmake_object_order_depends_target_ss2pl.exe_Debug - DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 - DEP_FILE = CMakeFiles/ss2pl.exe.dir/transaction.cc.o.d - FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address -std=c++17 - OBJECT_DIR = CMakeFiles/ss2pl.exe.dir - OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ - TARGET_PDB = ss2pl.exe.pdb - -build CMakeFiles/ss2pl.exe.dir/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Debug ../util.cc || cmake_object_order_depends_target_ss2pl.exe_Debug - DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 - DEP_FILE = CMakeFiles/ss2pl.exe.dir/util.cc.o.d - FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address -std=c++17 - OBJECT_DIR = CMakeFiles/ss2pl.exe.dir - OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ - TARGET_PDB = ss2pl.exe.pdb - - -# ============================================================================= -# Link build statements for EXECUTABLE target ss2pl.exe - - -############################################# -# Link the executable ss2pl.exe - -build ss2pl.exe: CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Debug CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o CMakeFiles/ss2pl.exe.dir/result.cc.o CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o CMakeFiles/ss2pl.exe.dir/transaction.cc.o CMakeFiles/ss2pl.exe.dir/util.cc.o | /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a - FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address - LINK_LIBRARIES = /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a -lpthread - OBJECT_DIR = CMakeFiles/ss2pl.exe.dir - POST_BUILD = : - PRE_LINK = : - TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ - TARGET_FILE = ss2pl.exe - TARGET_PDB = ss2pl.exe.pdb - -# ============================================================================= -# Target aliases. - -# ============================================================================= -# Folder targets. - -# ============================================================================= - -############################################# -# Folder: /home/tngngn/ccbench/plor/build - -build all: phony ss2pl.exe - -# ============================================================================= -# Built-in targets - - -############################################# -# Re-run CMake if any of its inputs changed. - -build build.ninja: RERUN_CMAKE | ../CMakeLists.txt /home/tngngn/ccbench/cmake/CompileOptions.cmake /home/tngngn/ccbench/cmake/Findgflags.cmake /home/tngngn/ccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx - pool = console - - -############################################# -# A missing CMake input file is not an error. - -build ../CMakeLists.txt /home/tngngn/ccbench/cmake/CompileOptions.cmake /home/tngngn/ccbench/cmake/Findgflags.cmake /home/tngngn/ccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx: phony - - -############################################# -# Clean all the built files. - -build clean: CLEAN - - -############################################# -# Print all primary targets available. - -build help: HELP - - -############################################# -# Make the all target the default. - -default all diff --git a/plor/build/cmake_install.cmake b/plor/build/cmake_install.cmake deleted file mode 100644 index 42ab8b02..00000000 --- a/plor/build/cmake_install.cmake +++ /dev/null @@ -1,49 +0,0 @@ -# Install script for directory: /home/tngngn/ccbench/plor - -# Set the install prefix -if(NOT DEFINED CMAKE_INSTALL_PREFIX) - set(CMAKE_INSTALL_PREFIX "/usr/local") -endif() -string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") - -# Set the install configuration name. -if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) - if(BUILD_TYPE) - string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" - CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") - else() - set(CMAKE_INSTALL_CONFIG_NAME "Debug") - endif() - message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") -endif() - -# Set the component getting installed. -if(NOT CMAKE_INSTALL_COMPONENT) - if(COMPONENT) - message(STATUS "Install component: \"${COMPONENT}\"") - set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") - else() - set(CMAKE_INSTALL_COMPONENT) - endif() -endif() - -# Install shared libraries without execute permission? -if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) - set(CMAKE_INSTALL_SO_NO_EXE "1") -endif() - -# Is this installation the result of a crosscompile? -if(NOT DEFINED CMAKE_CROSSCOMPILING) - set(CMAKE_CROSSCOMPILING "FALSE") -endif() - -if(CMAKE_INSTALL_COMPONENT) - set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") -else() - set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") -endif() - -string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT - "${CMAKE_INSTALL_MANIFEST_FILES}") -file(WRITE "/home/tngngn/ccbench/plor/build/${CMAKE_INSTALL_MANIFEST}" - "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/plor/build/rules.ninja b/plor/build/rules.ninja deleted file mode 100644 index 83415e80..00000000 --- a/plor/build/rules.ninja +++ /dev/null @@ -1,64 +0,0 @@ -# CMAKE generated file: DO NOT EDIT! -# Generated by "Ninja" Generator, CMake Version 3.17 - -# This file contains all the rules used to get the outputs files -# built from the input files. -# It is included in the main 'build.ninja'. - -# ============================================================================= -# Project: ccbench_ss2pl -# Configurations: Debug -# ============================================================================= -# ============================================================================= - -############################################# -# Rule for running custom commands. - -rule CUSTOM_COMMAND - command = $COMMAND - description = $DESC - - -############################################# -# Rule for compiling CXX files. - -rule CXX_COMPILER__ss2pl.2eexe_Debug - depfile = $DEP_FILE - deps = gcc - command = /usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in - description = Building CXX object $out - - -############################################# -# Rule for linking CXX executable. - -rule CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Debug - command = $PRE_LINK && /usr/bin/c++ $FLAGS $LINK_FLAGS $in -o $TARGET_FILE $LINK_PATH $LINK_LIBRARIES && $POST_BUILD - description = Linking CXX executable $TARGET_FILE - restat = $RESTAT - - -############################################# -# Rule for re-running cmake. - -rule RERUN_CMAKE - command = /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/plor -B/home/tngngn/ccbench/plor/build - description = Re-running CMake... - generator = 1 - - -############################################# -# Rule for cleaning all built files. - -rule CLEAN - command = /usr/local/bin/ninja $FILE_ARG -t clean $TARGETS - description = Cleaning all built files... - - -############################################# -# Rule for printing all primary targets available. - -rule HELP - command = /usr/local/bin/ninja -t targets - description = All primary targets available: - diff --git a/plor/ss2pl.cc b/plor/ss2pl.cc index da82bbe4..385f1616 100644 --- a/plor/ss2pl.cc +++ b/plor/ss2pl.cc @@ -101,6 +101,7 @@ void worker(size_t thid, char &ready, const bool &start, const bool &quit) { loadAcquire(myres.local_commit_counts_) + 1); } else { NNN; + trans.status_ = TransactionStatus::aborted; trans.abort(); ++myres.local_abort_counts_; goto RETRY; diff --git a/plor/transaction.cc b/plor/transaction.cc index a5841749..f1eb1014 100644 --- a/plor/transaction.cc +++ b/plor/transaction.cc @@ -92,33 +92,35 @@ void TxExecutor::abort() { // change to validate bool TxExecutor::validationPhase() { - Tuple *tuple; #if ADD_ANALYSIS std::uint64_t start = rdtscp(); #endif - + + NNN; + if (thread_stats[this->thid_] == 1) { + return false; + } /** * Phase 1: detect read-write conflicts */ + NNN; for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { - tuple = (*itr).rcdptr_; - tuple->waitRd.emplace_back(-1,-1); - for (int i=0; iwaitRd.size(); i++) { - if (thread_timestamp[this->thid_] < thread_timestamp[tuple->waitRd[i].second]) { - thread_stats[tuple->waitRd[i].second] = 1; + (*itr).rcdptr_->waitRd.emplace_back(-1,-1); + for (int i=0; i<(*itr).rcdptr_->waitRd.size(); i++) { + if (thread_timestamp[this->thid_] < (*itr).rcdptr_->waitRd[i].first) { + thread_stats[(*itr).rcdptr_->waitRd[i].second] = 1; } else { // checkRd - while (checkRd(tuple->waitRd[i].second, tuple)) { + while (checkRd((*itr).rcdptr_->waitRd[i].second, (*itr).rcdptr_)) { if (thread_stats[this->thid_] == 1) { - this->status_ = TransactionStatus::aborted; return false; } } } } } - + NNN; // goto Phase 3 #if ADD_ANALYSIS @@ -129,14 +131,12 @@ bool TxExecutor::validationPhase() { } void TxExecutor::commit() { - Tuple *tuple; /** * Phase 2: release read locks */ NNN; for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) { - tuple = (*itr).rcdptr_; - unlockRead(this->thid_, tuple); + unlockRead(this->thid_, (*itr).rcdptr_); //(*itr).rcdptr_->readers[this->thid_] = -1; } @@ -145,12 +145,15 @@ void TxExecutor::commit() { */ NNN; for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { - tuple = (*itr).rcdptr_; // update payload. memcpy((*itr).rcdptr_->val_, write_val_, VAL_SIZE); - unlockWrite(this->thid_, tuple); + unlockWrite(this->thid_, (*itr).rcdptr_); //(*itr).rcdptr_->writers[this->thid_] = -1; } + + NNN; + read_set_.clear(); + write_set_.clear(); } /** @@ -192,7 +195,7 @@ void TxExecutor::read(uint64_t key) { */ /** PLOR */ - read_set_.emplace_back(key, tuple, tuple->val_); + tuple->waitRd.emplace_back(thread_timestamp[this->thid_], this->thid_); // pure, no commit priority yet @@ -203,6 +206,7 @@ void TxExecutor::read(uint64_t key) { } if (thread_stats[this->thid_] == 1) goto FINISH_READ; } + read_set_.emplace_back(key, tuple, tuple->val_); FINISH_READ: @@ -238,7 +242,7 @@ void TxExecutor::write(uint64_t key) { #endif /** PLOR */ - write_set_.emplace_back(key, tuple); + tuple->waitWr.emplace_back(thread_timestamp[this->thid_],this->thid_); sort(tuple->waitWr.begin(), tuple->waitWr.end()); @@ -291,7 +295,7 @@ void TxExecutor::readWrite(uint64_t key) { #endif /** PLOR */ - write_set_.emplace_back(key, tuple); + tuple->waitWr.emplace_back(thread_timestamp[this->thid_], this->thid_); sort(tuple->waitWr.begin(), tuple->waitWr.end()); From aaf2788acbc5c1dd36bcaaf26f0c04fc5bde892c Mon Sep 17 00:00:00 2001 From: tngngn Date: Fri, 20 Jan 2023 16:07:38 +0900 Subject: [PATCH 14/14] add mutex --- plor/build/.ninja_deps | Bin 0 -> 33676 bytes plor/build/.ninja_log | 8 + plor/build/CMakeCache.txt | 473 ++++++++++++ plor/build/CMakeDoxyfile.in | 280 ++++++++ plor/build/CMakeDoxygenDefaults.cmake | 672 ++++++++++++++++++ .../CMakeFiles/3.17.0/CMakeCXXCompiler.cmake | 88 +++ .../3.17.0/CMakeDetermineCompilerABI_CXX.bin | Bin 0 -> 16560 bytes .../build/CMakeFiles/3.17.0/CMakeSystem.cmake | 15 + .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 660 +++++++++++++++++ plor/build/CMakeFiles/CMakeError.log | 50 ++ plor/build/CMakeFiles/CMakeOutput.log | 235 ++++++ .../CheckFunctionExists.cxx | 28 + plor/build/CMakeFiles/TargetDirectories.txt | 3 + plor/build/CMakeFiles/cmake.check_cache | 1 + plor/build/build.ninja | 186 +++++ plor/build/cmake_install.cmake | 49 ++ plor/build/rules.ninja | 64 ++ plor/include/transaction.hh | 2 + plor/ss2pl.cc | 1 + plor/transaction.cc | 239 ++++++- 20 files changed, 3023 insertions(+), 31 deletions(-) create mode 100644 plor/build/.ninja_deps create mode 100644 plor/build/.ninja_log create mode 100644 plor/build/CMakeCache.txt create mode 100644 plor/build/CMakeDoxyfile.in create mode 100644 plor/build/CMakeDoxygenDefaults.cmake create mode 100644 plor/build/CMakeFiles/3.17.0/CMakeCXXCompiler.cmake create mode 100755 plor/build/CMakeFiles/3.17.0/CMakeDetermineCompilerABI_CXX.bin create mode 100644 plor/build/CMakeFiles/3.17.0/CMakeSystem.cmake create mode 100644 plor/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp create mode 100644 plor/build/CMakeFiles/CMakeError.log create mode 100644 plor/build/CMakeFiles/CMakeOutput.log create mode 100644 plor/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx create mode 100644 plor/build/CMakeFiles/TargetDirectories.txt create mode 100644 plor/build/CMakeFiles/cmake.check_cache create mode 100644 plor/build/build.ninja create mode 100644 plor/build/cmake_install.cmake create mode 100644 plor/build/rules.ninja diff --git a/plor/build/.ninja_deps b/plor/build/.ninja_deps new file mode 100644 index 0000000000000000000000000000000000000000..d542fa511b837f8f0f348e6f5fb7203cb0fb0cd4 GIT binary patch literal 33676 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 literal 0 HcmV?d00001 diff --git a/plor/build/CMakeFiles/3.17.0/CMakeSystem.cmake b/plor/build/CMakeFiles/3.17.0/CMakeSystem.cmake new file mode 100644 index 00000000..0fd1f759 --- /dev/null +++ b/plor/build/CMakeFiles/3.17.0/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-5.4.0-113-generic") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "5.4.0-113-generic") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Linux-5.4.0-113-generic") +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_VERSION "5.4.0-113-generic") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/plor/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp b/plor/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 00000000..69cfdba6 --- /dev/null +++ b/plor/build/CMakeFiles/3.17.0/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,660 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_dialect_default = "INFO" ":" "dialect_default[" +#if CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} diff --git a/plor/build/CMakeFiles/CMakeError.log b/plor/build/CMakeFiles/CMakeError.log new file mode 100644 index 00000000..8c7c05a0 --- /dev/null +++ b/plor/build/CMakeFiles/CMakeError.log @@ -0,0 +1,50 @@ +Performing C++ SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output: +Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_8b75b && [1/2] Building CXX object CMakeFiles/cmTC_8b75b.dir/src.cxx.o +[2/2] Linking CXX executable cmTC_8b75b +FAILED: cmTC_8b75b +: && /usr/bin/c++ -DCMAKE_HAVE_LIBC_PTHREAD CMakeFiles/cmTC_8b75b.dir/src.cxx.o -o cmTC_8b75b && : +/usr/bin/ld: CMakeFiles/cmTC_8b75b.dir/src.cxx.o: in function `main': +src.cxx:(.text+0x46): undefined reference to `pthread_create' +/usr/bin/ld: src.cxx:(.text+0x52): undefined reference to `pthread_detach' +/usr/bin/ld: src.cxx:(.text+0x5e): undefined reference to `pthread_cancel' +/usr/bin/ld: src.cxx:(.text+0x6f): undefined reference to `pthread_join' +collect2: error: ld returned 1 exit status +ninja: build stopped: subcommand failed. + + +Source file was: +#include + +void* test_func(void* data) +{ + return data; +} + +int main(void) +{ + pthread_t thread; + pthread_create(&thread, NULL, test_func, NULL); + pthread_detach(thread); + pthread_cancel(thread); + pthread_join(thread, NULL); + pthread_atfork(NULL, NULL, NULL); + pthread_exit(NULL); + + return 0; +} + +Determining if the function pthread_create exists in the pthreads failed with the following output: +Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_3ef10 && [1/2] Building CXX object CMakeFiles/cmTC_3ef10.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_3ef10 +FAILED: cmTC_3ef10 +: && /usr/bin/c++ -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_3ef10.dir/CheckFunctionExists.cxx.o -o cmTC_3ef10 -lpthreads && : +/usr/bin/ld: -lpthreads が見つかりません +collect2: error: ld returned 1 exit status +ninja: build stopped: subcommand failed. + + + diff --git a/plor/build/CMakeFiles/CMakeOutput.log b/plor/build/CMakeFiles/CMakeOutput.log new file mode 100644 index 00000000..f864931a --- /dev/null +++ b/plor/build/CMakeFiles/CMakeOutput.log @@ -0,0 +1,235 @@ +The system is: Linux - 5.4.0-113-generic - x86_64 +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: /usr/bin/c++ +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" + +The CXX compiler identification is GNU, found in "/home/tngngn/ccbench/plor/build/CMakeFiles/3.17.0/CompilerIdCXX/a.out" + +Determining if the CXX compiler works passed with the following output: +Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_7ae25 && [1/2] Building CXX object CMakeFiles/cmTC_7ae25.dir/testCXXCompiler.cxx.o +[2/2] Linking CXX executable cmTC_7ae25 + + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_65551 && [1/2] Building CXX object CMakeFiles/cmTC_65551.dir/CMakeCXXCompilerABI.cpp.o +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_65551.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_65551.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccTzP65O.s +GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9" +ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include" +#include "..." search starts here: +#include <...> search starts here: + /usr/include/c++/9 + /usr/include/x86_64-linux-gnu/c++/9 + /usr/include/c++/9/backward + /usr/lib/gcc/x86_64-linux-gnu/9/include + /usr/local/include + /usr/include/x86_64-linux-gnu + /usr/include +End of search list. +GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_65551.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + as -v --64 -o CMakeFiles/cmTC_65551.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccTzP65O.s +GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34 +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_65551.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +[2/2] Linking CXX executable cmTC_65551 +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_65551' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccG31XZ4.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_65551 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_65551.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_65551' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/usr/include/c++/9] + add: [/usr/include/x86_64-linux-gnu/c++/9] + add: [/usr/include/c++/9/backward] + add: [/usr/lib/gcc/x86_64-linux-gnu/9/include] + add: [/usr/local/include] + add: [/usr/include/x86_64-linux-gnu] + add: [/usr/include] + end of search list found + collapse include dir [/usr/include/c++/9] ==> [/usr/include/c++/9] + collapse include dir [/usr/include/x86_64-linux-gnu/c++/9] ==> [/usr/include/x86_64-linux-gnu/c++/9] + collapse include dir [/usr/include/c++/9/backward] ==> [/usr/include/c++/9/backward] + collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/9/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/9/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/local/bin/ninja cmTC_65551 && [1/2] Building CXX object CMakeFiles/cmTC_65551.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_65551.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_65551.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccTzP65O.s] + ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9"] + ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/include/c++/9] + ignore line: [ /usr/include/x86_64-linux-gnu/c++/9] + ignore line: [ /usr/include/c++/9/backward] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/include/x86_64-linux-gnu] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_65551.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_65551.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccTzP65O.s] + ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_65551.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [[2/2] Linking CXX executable cmTC_65551] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_65551' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccG31XZ4.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_65551 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_65551.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccG31XZ4.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--as-needed] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-o] ==> ignore + arg [cmTC_65551] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] + arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] + arg [CMakeFiles/cmTC_65551.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] ==> ignore + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9] ==> [/usr/lib/gcc/x86_64-linux-gnu/9] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> [/usr/lib] + implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc] + implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] + implicit fwks: [] + + +Determining if the include file pthread.h exists passed with the following output: +Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_945c4 && [1/2] Building CXX object CMakeFiles/cmTC_945c4.dir/CheckIncludeFile.cxx.o +[2/2] Linking CXX executable cmTC_945c4 + + + +Determining if the function pthread_create exists in the pthread passed with the following output: +Change Dir: /home/tngngn/ccbench/plor/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/local/bin/ninja cmTC_4c1d8 && [1/2] Building CXX object CMakeFiles/cmTC_4c1d8.dir/CheckFunctionExists.cxx.o +[2/2] Linking CXX executable cmTC_4c1d8 + + + diff --git a/plor/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx b/plor/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx new file mode 100644 index 00000000..13435e07 --- /dev/null +++ b/plor/build/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx @@ -0,0 +1,28 @@ +#ifdef CHECK_FUNCTION_EXISTS + +# ifdef __cplusplus +extern "C" +# endif + char + CHECK_FUNCTION_EXISTS(void); +# ifdef __CLASSIC_C__ +int main() +{ + int ac; + char* av[]; +# else +int main(int ac, char* av[]) +{ +# endif + CHECK_FUNCTION_EXISTS(); + if (ac > 1000) { + return *av[0]; + } + return 0; +} + +#else /* CHECK_FUNCTION_EXISTS */ + +# error "CHECK_FUNCTION_EXISTS has to specify the function" + +#endif /* CHECK_FUNCTION_EXISTS */ diff --git a/plor/build/CMakeFiles/TargetDirectories.txt b/plor/build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 00000000..10364580 --- /dev/null +++ b/plor/build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +/home/tngngn/ccbench/plor/build/CMakeFiles/rebuild_cache.dir +/home/tngngn/ccbench/plor/build/CMakeFiles/edit_cache.dir +/home/tngngn/ccbench/plor/build/CMakeFiles/ss2pl.exe.dir diff --git a/plor/build/CMakeFiles/cmake.check_cache b/plor/build/CMakeFiles/cmake.check_cache new file mode 100644 index 00000000..3dccd731 --- /dev/null +++ b/plor/build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/plor/build/build.ninja b/plor/build/build.ninja new file mode 100644 index 00000000..5a947fd4 --- /dev/null +++ b/plor/build/build.ninja @@ -0,0 +1,186 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.17 + +# This file contains all the build statements describing the +# compilation DAG. + +# ============================================================================= +# Write statements declared in CMakeLists.txt: +# +# Which is the root file. +# ============================================================================= + +# ============================================================================= +# Project: ccbench_ss2pl +# Configurations: Debug +# ============================================================================= + +############################################# +# Minimal version of Ninja required by this file + +ninja_required_version = 1.5 + + +############################################# +# Set configuration variable for custom commands. + +CONFIGURATION = Debug +# ============================================================================= +# Include auxiliary files. + + +############################################# +# Include rules file. + +include rules.ninja + + +############################################# +# Utility command for rebuild_cache + +build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/plor/build && /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/plor -B/home/tngngn/ccbench/plor/build + DESC = Running CMake to regenerate build system... + pool = console + restat = 1 + +build rebuild_cache: phony CMakeFiles/rebuild_cache.util + + +############################################# +# Utility command for edit_cache + +build CMakeFiles/edit_cache.util: CUSTOM_COMMAND + COMMAND = cd /home/tngngn/ccbench/plor/build && /usr/local/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. + DESC = No interactive CMake dialog available... + restat = 1 + +build edit_cache: phony CMakeFiles/edit_cache.util + +# ============================================================================= +# Object build statements for EXECUTABLE target ss2pl.exe + + +############################################# +# Order-only phony target for ss2pl.exe + +build cmake_object_order_depends_target_ss2pl.exe_Debug: phony || CMakeFiles/ss2pl.exe.dir + +build CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Debug /home/tngngn/ccbench/common/result.cc || cmake_object_order_depends_target_ss2pl.exe_Debug + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o.d + FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Debug /home/tngngn/ccbench/common/util.cc || cmake_object_order_depends_target_ss2pl.exe_Debug + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o.d + FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/result.cc.o: CXX_COMPILER__ss2pl.2eexe_Debug ../result.cc || cmake_object_order_depends_target_ss2pl.exe_Debug + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/result.cc.o.d + FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o: CXX_COMPILER__ss2pl.2eexe_Debug ../ss2pl.cc || cmake_object_order_depends_target_ss2pl.exe_Debug + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o.d + FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/transaction.cc.o: CXX_COMPILER__ss2pl.2eexe_Debug ../transaction.cc || cmake_object_order_depends_target_ss2pl.exe_Debug + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/transaction.cc.o.d + FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + +build CMakeFiles/ss2pl.exe.dir/util.cc.o: CXX_COMPILER__ss2pl.2eexe_Debug ../util.cc || cmake_object_order_depends_target_ss2pl.exe_Debug + DEFINES = -DADD_ANALYSIS=0 -DBACK_OFF=0 -DBOOST_ALL_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DDLR1 -DKEY_SIZE=8 -DKEY_SORT=0 -DMASSTREE_USE=1 -DVAL_SIZE=4 + DEP_FILE = CMakeFiles/ss2pl.exe.dir/util.cc.o.d + FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address -std=c++17 + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + OBJECT_FILE_DIR = CMakeFiles/ss2pl.exe.dir + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_PDB = ss2pl.exe.pdb + + +# ============================================================================= +# Link build statements for EXECUTABLE target ss2pl.exe + + +############################################# +# Link the executable ss2pl.exe + +build ss2pl.exe: CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Debug CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/result.cc.o CMakeFiles/ss2pl.exe.dir/home/tngngn/ccbench/common/util.cc.o CMakeFiles/ss2pl.exe.dir/result.cc.o CMakeFiles/ss2pl.exe.dir/ss2pl.cc.o CMakeFiles/ss2pl.exe.dir/transaction.cc.o CMakeFiles/ss2pl.exe.dir/util.cc.o | /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a + FLAGS = -g -fno-omit-frame-pointer -fsanitize=address -fno-sanitize=alignment -fno-sanitize-recover=address + LINK_LIBRARIES = /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libgflags.so ../../third_party/mimalloc/out/release/libmimalloc.a ../../third_party/masstree/libkohler_masstree_json.a -lpthread + OBJECT_DIR = CMakeFiles/ss2pl.exe.dir + POST_BUILD = : + PRE_LINK = : + TARGET_COMPILE_PDB = CMakeFiles/ss2pl.exe.dir/ + TARGET_FILE = ss2pl.exe + TARGET_PDB = ss2pl.exe.pdb + +# ============================================================================= +# Target aliases. + +# ============================================================================= +# Folder targets. + +# ============================================================================= + +############################################# +# Folder: /home/tngngn/ccbench/plor/build + +build all: phony ss2pl.exe + +# ============================================================================= +# Built-in targets + + +############################################# +# Re-run CMake if any of its inputs changed. + +build build.ninja: RERUN_CMAKE | ../CMakeLists.txt /home/tngngn/ccbench/cmake/CompileOptions.cmake /home/tngngn/ccbench/cmake/Findgflags.cmake /home/tngngn/ccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx + pool = console + + +############################################# +# A missing CMake input file is not an error. + +build ../CMakeLists.txt /home/tngngn/ccbench/cmake/CompileOptions.cmake /home/tngngn/ccbench/cmake/Findgflags.cmake /home/tngngn/ccbench/cmake/Findglog.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake /usr/local/share/cmake-3.17/Modules/CMakeCXXCompiler.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeCXXCompilerABI.cpp /usr/local/share/cmake-3.17/Modules/CMakeCXXInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /usr/local/share/cmake-3.17/Modules/CMakeCommonLanguageInclude.cmake /usr/local/share/cmake-3.17/Modules/CMakeCompilerIdDetection.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompileFeatures.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerABI.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineCompilerId.cmake /usr/local/share/cmake-3.17/Modules/CMakeDetermineSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeFindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/CMakeGenericSystem.cmake /usr/local/share/cmake-3.17/Modules/CMakeInitializeConfigs.cmake /usr/local/share/cmake-3.17/Modules/CMakeLanguageInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeNinjaFindMake.cmake /usr/local/share/cmake-3.17/Modules/CMakePackageConfigHelpers.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitIncludeInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeParseImplicitLinkInfo.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystem.cmake.in /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInformation.cmake /usr/local/share/cmake-3.17/Modules/CMakeSystemSpecificInitialize.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake /usr/local/share/cmake-3.17/Modules/CMakeTestCompilerCommon.cmake /usr/local/share/cmake-3.17/Modules/CheckCXXSourceCompiles.cmake /usr/local/share/cmake-3.17/Modules/CheckFunctionExists.c /usr/local/share/cmake-3.17/Modules/CheckIncludeFile.cxx.in /usr/local/share/cmake-3.17/Modules/CheckIncludeFileCXX.cmake /usr/local/share/cmake-3.17/Modules/CheckLibraryExists.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ADSP-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMCC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/ARMClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/AppleClang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Borland-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/CMakeCommonCompilerMacros.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Clang-DetermineCompilerInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Cray-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Embarcadero-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Fujitsu-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GHS-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU-FindBinUtils.cmake /usr/local/share/cmake-3.17/Modules/Compiler/GNU.cmake /usr/local/share/cmake-3.17/Modules/Compiler/HP-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IAR-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Intel-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/MSVC-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/NVIDIA-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PGI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/PathScale-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SCO-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/TI-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/Watcom-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XL-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake /usr/local/share/cmake-3.17/Modules/FindBoost.cmake /usr/local/share/cmake-3.17/Modules/FindDoxygen.cmake /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake /usr/local/share/cmake-3.17/Modules/FindPackageMessage.cmake /usr/local/share/cmake-3.17/Modules/FindThreads.cmake /usr/local/share/cmake-3.17/Modules/GNUInstallDirs.cmake /usr/local/share/cmake-3.17/Modules/Internal/CMakeCheckCompilerFlag.cmake /usr/local/share/cmake-3.17/Modules/Internal/FeatureTesting.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-Determine-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU-CXX.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux-GNU.cmake /usr/local/share/cmake-3.17/Modules/Platform/Linux.cmake /usr/local/share/cmake-3.17/Modules/Platform/UnixPaths.cmake /usr/local/share/cmake-3.17/Modules/WriteBasicConfigVersionFile.cmake CMakeCache.txt CMakeFiles/3.17.0/CMakeCXXCompiler.cmake CMakeFiles/3.17.0/CMakeSystem.cmake CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx: phony + + +############################################# +# Clean all the built files. + +build clean: CLEAN + + +############################################# +# Print all primary targets available. + +build help: HELP + + +############################################# +# Make the all target the default. + +default all diff --git a/plor/build/cmake_install.cmake b/plor/build/cmake_install.cmake new file mode 100644 index 00000000..42ab8b02 --- /dev/null +++ b/plor/build/cmake_install.cmake @@ -0,0 +1,49 @@ +# Install script for directory: /home/tngngn/ccbench/plor + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Debug") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "/home/tngngn/ccbench/plor/build/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/plor/build/rules.ninja b/plor/build/rules.ninja new file mode 100644 index 00000000..83415e80 --- /dev/null +++ b/plor/build/rules.ninja @@ -0,0 +1,64 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Ninja" Generator, CMake Version 3.17 + +# This file contains all the rules used to get the outputs files +# built from the input files. +# It is included in the main 'build.ninja'. + +# ============================================================================= +# Project: ccbench_ss2pl +# Configurations: Debug +# ============================================================================= +# ============================================================================= + +############################################# +# Rule for running custom commands. + +rule CUSTOM_COMMAND + command = $COMMAND + description = $DESC + + +############################################# +# Rule for compiling CXX files. + +rule CXX_COMPILER__ss2pl.2eexe_Debug + depfile = $DEP_FILE + deps = gcc + command = /usr/bin/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in + description = Building CXX object $out + + +############################################# +# Rule for linking CXX executable. + +rule CXX_EXECUTABLE_LINKER__ss2pl.2eexe_Debug + command = $PRE_LINK && /usr/bin/c++ $FLAGS $LINK_FLAGS $in -o $TARGET_FILE $LINK_PATH $LINK_LIBRARIES && $POST_BUILD + description = Linking CXX executable $TARGET_FILE + restat = $RESTAT + + +############################################# +# Rule for re-running cmake. + +rule RERUN_CMAKE + command = /usr/local/bin/cmake --regenerate-during-build -S/home/tngngn/ccbench/plor -B/home/tngngn/ccbench/plor/build + description = Re-running CMake... + generator = 1 + + +############################################# +# Rule for cleaning all built files. + +rule CLEAN + command = /usr/local/bin/ninja $FILE_ARG -t clean $TARGETS + description = Cleaning all built files... + + +############################################# +# Rule for printing all primary targets available. + +rule HELP + command = /usr/local/bin/ninja -t targets + description = All primary targets available: + diff --git a/plor/include/transaction.hh b/plor/include/transaction.hh index 0389b847..6bedf0db 100644 --- a/plor/include/transaction.hh +++ b/plor/include/transaction.hh @@ -74,6 +74,8 @@ public: void mtx_release(); + //void unlockList(); + // inline diff --git a/plor/ss2pl.cc b/plor/ss2pl.cc index 385f1616..463f839c 100644 --- a/plor/ss2pl.cc +++ b/plor/ss2pl.cc @@ -34,6 +34,7 @@ long long int central_timestamp = 0; void worker(size_t thid, char &ready, const bool &start, const bool &quit) { + Result &myres = std::ref(SS2PLResult[thid]); Xoroshiro128Plus rnd; rnd.init(); diff --git a/plor/transaction.cc b/plor/transaction.cc index f1eb1014..5d2293ef 100644 --- a/plor/transaction.cc +++ b/plor/transaction.cc @@ -58,10 +58,24 @@ inline SetElement *TxExecutor::searchWriteSet(uint64_t key) { * @return void */ void TxExecutor::abort() { + /** * Release locks */ - //unlockList(); + + for (auto itr = r_lock_list_.begin(); itr != r_lock_list_.end(); ++itr) + (*itr)->r_unlock(); + + for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) { + unlockRead(this->thid_, (*itr).rcdptr_); + } + + for (auto itr = w_lock_list_.begin(); itr != w_lock_list_.end(); ++itr) + (*itr)->w_unlock(); + + for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { + unlockWrite(this->thid_, (*itr).rcdptr_); + } /** * Clean-up local read/write set. @@ -95,15 +109,16 @@ bool TxExecutor::validationPhase() { #if ADD_ANALYSIS std::uint64_t start = rdtscp(); #endif - - NNN; + + if (thread_stats[this->thid_] == 1) { return false; } /** - * Phase 1: detect read-write conflicts - */ + * Phase 1: detect read-write conflicts + */ + //wait> NNN; for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { (*itr).rcdptr_->waitRd.emplace_back(-1,-1); @@ -112,21 +127,24 @@ bool TxExecutor::validationPhase() { thread_stats[(*itr).rcdptr_->waitRd[i].second] = 1; } else { // checkRd + NNN; while (checkRd((*itr).rcdptr_->waitRd[i].second, (*itr).rcdptr_)) { + NNN; if (thread_stats[this->thid_] == 1) { - return false; + break; } + return false; } } } } - NNN; // goto Phase 3 #if ADD_ANALYSIS sres_->local_vali_latency_ += rdtscp() - start; #endif this->status_ = TransactionStatus::committed; + NNN; return true; } @@ -134,21 +152,27 @@ void TxExecutor::commit() { /** * Phase 2: release read locks */ + + for (auto itr = r_lock_list_.begin(); itr != r_lock_list_.end(); ++itr) + (*itr)->r_unlock(); + NNN; for (auto itr = read_set_.begin(); itr != read_set_.end(); ++itr) { unlockRead(this->thid_, (*itr).rcdptr_); - //(*itr).rcdptr_->readers[this->thid_] = -1; } /** * Phase 3: commit and release write locks */ + + for (auto itr = w_lock_list_.begin(); itr != w_lock_list_.end(); ++itr) + (*itr)->w_unlock(); + NNN; for (auto itr = write_set_.begin(); itr != write_set_.end(); ++itr) { // update payload. memcpy((*itr).rcdptr_->val_, write_val_, VAL_SIZE); unlockWrite(this->thid_, (*itr).rcdptr_); - //(*itr).rcdptr_->writers[this->thid_] = -1; } NNN; @@ -171,7 +195,6 @@ void TxExecutor::read(uint64_t key) { #if ADD_ANALYSIS uint64_t start = rdtscp(); #endif // ADD_ANALYSIS - /** * read-own-writes or re-read from local read set. */ @@ -194,12 +217,12 @@ void TxExecutor::read(uint64_t key) { * Write-Read (WR) conflict */ + /** + * @c task: check readlockAcquire bamboo + */ /** PLOR */ - + /* tuple->waitRd.emplace_back(thread_timestamp[this->thid_], this->thid_); - - // pure, no commit priority yet - // need checkRd while (checkRd(-1, tuple)) { if (tuple->curr_writer > 0 && thread_timestamp[this->thid_] < thread_timestamp[tuple->curr_writer]) { thread_stats[tuple->curr_writer] = 1; @@ -207,6 +230,29 @@ void TxExecutor::read(uint64_t key) { if (thread_stats[this->thid_] == 1) goto FINISH_READ; } read_set_.emplace_back(key, tuple, tuple->val_); + */ + NNN; + while (1) { + if (tuple->lock_.r_trylock()) { + r_lock_list_.emplace_back(&tuple->lock_); + read_set_.emplace_back(key, tuple, tuple->val_); + break; + } + else { + tuple->waitRd.emplace_back(thread_timestamp[this->thid_], this->thid_); + while (checkRd(-1, tuple)) { + if (tuple->curr_writer > 0 && thread_timestamp[this->thid_] < thread_timestamp[tuple->curr_writer]) { + thread_stats[tuple->curr_writer] = 1; + } + if (thread_stats[this->thid_] == 1) goto FINISH_READ; + } + read_set_.emplace_back(key, tuple, tuple->val_); + } + } + + NNN; + r_lock_list_.emplace_back(&tuple->lock_); + read_set_.emplace_back(key, tuple, tuple->val_); FINISH_READ: @@ -227,6 +273,7 @@ void TxExecutor::write(uint64_t key) { #endif // if it already wrote the key object once. + if (searchWriteSet(key)) goto FINISH_WRITE; /** * Search tuple from data structure. @@ -242,11 +289,9 @@ void TxExecutor::write(uint64_t key) { #endif /** PLOR */ - + /* tuple->waitWr.emplace_back(thread_timestamp[this->thid_],this->thid_); sort(tuple->waitWr.begin(), tuple->waitWr.end()); - - // @task: need to use CAS for this int expected, desired; expected = 0; desired = this->thid_; @@ -258,14 +303,66 @@ void TxExecutor::write(uint64_t key) { if (thread_stats[this->thid_] == 1) goto FINISH_WRITE; } } + */ + + for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { + if ((*rItr).key_ == key) { // hit + while (1) { + if (!(*rItr).rcdptr_->lock_.tryupgrade()) { + if (thread_timestamp[this->thid_] < thread_timestamp[tuple->curr_writer]) { + thread_stats[tuple->curr_writer] = 1; + } + if (thread_stats[this->thid_] == 1) goto FINISH_WRITE; + } else { + break; + } + } + + // upgrade success + // remove old element of read lock list. + for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); + ++lItr) { + if (*lItr == &((*rItr).rcdptr_->lock_)) { + write_set_.emplace_back(key, (*rItr).rcdptr_); + w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); + r_lock_list_.erase(lItr); + break; + } + } + + read_set_.erase(rItr); + goto FINISH_WRITE; + } + } + + NNN; + while (1) { + if (!tuple->lock_.w_trylock()) { + tuple->waitWr.emplace_back(thread_timestamp[this->thid_],this->thid_); + sort(tuple->waitWr.begin(), tuple->waitWr.end()); + int expected, desired; + expected = 0; + desired = this->thid_; + if (!tuple->curr_writer.compare_exchange_weak(expected,desired)) { + while (tuple->curr_writer != this->thid_) { + if (thread_timestamp[this->thid_] < thread_timestamp[tuple->curr_writer]) { + thread_stats[tuple->curr_writer] = 1; + } + if (thread_stats[this->thid_] == 1) goto FINISH_WRITE; + } + } + } else { + break; + } + } - memcpy(tuple->val_, write_val_, VAL_SIZE); /** * Register the contents to write lock list and write set. */ - //tuple->writers[thid_] = 1; - //w_lock_list_.emplace_back(&tuple->lock_); + NNN; + memcpy(tuple->val_, write_val_, VAL_SIZE); + w_lock_list_.emplace_back(&tuple->lock_); write_set_.emplace_back(key, tuple); FINISH_WRITE: @@ -280,6 +377,7 @@ void TxExecutor::write(uint64_t key) { */ void TxExecutor::readWrite(uint64_t key) { // if it already wrote the key object once. + if (searchWriteSet(key)) goto FINISH_WRITE; /** * Search tuple from data structure. @@ -295,14 +393,13 @@ void TxExecutor::readWrite(uint64_t key) { #endif /** PLOR */ - + /* tuple->waitWr.emplace_back(thread_timestamp[this->thid_], this->thid_); sort(tuple->waitWr.begin(), tuple->waitWr.end()); - - // @task: need to use CAS for this int expected, desired; expected = 0; desired = this->thid_; + if (!tuple->curr_writer.compare_exchange_weak(expected,desired)) { while (tuple->curr_writer != this->thid_) { if (thread_timestamp[this->thid_] < thread_timestamp[tuple->curr_writer]) { @@ -311,16 +408,67 @@ void TxExecutor::readWrite(uint64_t key) { if (thread_stats[this->thid_] == 1) goto FINISH_WRITE; } } + */ + + for (auto rItr = read_set_.begin(); rItr != read_set_.end(); ++rItr) { + if ((*rItr).key_ == key) { // hit + while (1) { + if (!(*rItr).rcdptr_->lock_.tryupgrade()) { + if (thread_timestamp[this->thid_] < thread_timestamp[tuple->curr_writer]) { + thread_stats[tuple->curr_writer] = 1; + } + if (thread_stats[this->thid_] == 1) goto FINISH_WRITE; + } else { + break; + } + } + + // upgrade success + // remove old element of read lock list. + for (auto lItr = r_lock_list_.begin(); lItr != r_lock_list_.end(); + ++lItr) { + if (*lItr == &((*rItr).rcdptr_->lock_)) { + write_set_.emplace_back(key, (*rItr).rcdptr_); + w_lock_list_.emplace_back(&(*rItr).rcdptr_->lock_); + r_lock_list_.erase(lItr); + break; + } + } + + read_set_.erase(rItr); + goto FINISH_WRITE; + } + } + + while (1) { + if (!tuple->lock_.w_trylock()) { + tuple->waitWr.emplace_back(thread_timestamp[this->thid_],this->thid_); + sort(tuple->waitWr.begin(), tuple->waitWr.end()); + int expected, desired; + expected = 0; + desired = this->thid_; + if (!tuple->curr_writer.compare_exchange_weak(expected,desired)) { + while (tuple->curr_writer != this->thid_) { + if (thread_timestamp[this->thid_] < thread_timestamp[tuple->curr_writer]) { + thread_stats[tuple->curr_writer] = 1; + } + if (thread_stats[this->thid_] == 1) goto FINISH_WRITE; + } + } + } else { + break; + } + } - // read payload - memcpy(this->return_val_, tuple->val_, VAL_SIZE); - // finish read. - memcpy(tuple->val_, write_val_, VAL_SIZE); /** * Register the contents to write lock list and write set. */ - //w_lock_list_.emplace_back(&tuple->lock_); + // read payload + memcpy(this->return_val_, tuple->val_, VAL_SIZE); + // finish read. + memcpy(tuple->val_, write_val_, VAL_SIZE); + w_lock_list_.emplace_back(&tuple->lock_); write_set_.emplace_back(key, tuple); FINISH_WRITE: @@ -328,24 +476,28 @@ void TxExecutor::readWrite(uint64_t key) { } void TxExecutor::unlockRead(int thid, Tuple *tuple) { + mtx_get(); int j; + NNN; for (int i=0; iwaitRd.size(); i++) { if (tuple->waitRd[i].second == thid) { j = i; break; } } - tuple->waitRd.erase(tuple->waitRd.begin()+j); + tuple->waitRd.erase(tuple->waitRd.begin()+j); //THIS IS THE BUG + mtx_release(); } void TxExecutor::unlockWrite(int thid, Tuple *tuple) { - + mtx_get(); /* @task: * tuple->waitWr.pop_front(); * remove exclusive signifier in read set * turn the lock to the oldest waiter(writer) */ - int j; + int j, k; + NNN; for (int i=0; iwaitWr.size(); i++) { if (tuple->waitWr[i].second == thid) { j = i; @@ -354,19 +506,30 @@ void TxExecutor::unlockWrite(int thid, Tuple *tuple) { } tuple->waitWr.erase(tuple->waitWr.begin()+j); + NNN; if (tuple->curr_writer == thid) { // remove exclusive signifier in read set + for (int i=0; iwaitRd.size(); i++) { + if (tuple->waitRd[i].second == -1) { + k = i; + break; + } + } + tuple->waitRd.erase(tuple->waitRd.begin()+k); tuple->curr_writer = tuple->waitWr[0].second; } + mtx_release(); } bool TxExecutor::checkRd(int thid, Tuple *tuple) { + mtx_get(); for (int i = 0; iwaitRd.size(); i++) { if (tuple->waitRd[i].second == thid) { return true; } } return false; + mtx_release(); } void TxExecutor::mtx_get() { @@ -376,3 +539,17 @@ void TxExecutor::mtx_get() { void TxExecutor::mtx_release() { mtx.unlock(); } + +void TxExecutor::unlockList() { + for (auto itr = r_lock_list_.begin(); itr != r_lock_list_.end(); ++itr) + (*itr)->r_unlock(); + + for (auto itr = w_lock_list_.begin(); itr != w_lock_list_.end(); ++itr) + (*itr)->w_unlock(); + + /** + * Clean-up local lock set. + */ + r_lock_list_.clear(); + w_lock_list_.clear(); +} \ No newline at end of file