Skip to content
Merged
13 changes: 12 additions & 1 deletion parallel-orch/node.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,14 @@
import analysis

STATE_LOG = '[STATE_LOG] '
OVERHEAD_LOG = '[OVERHEAD_LOG] '

def state_log(s):
logging.info(STATE_LOG + s)

def overhead_log(s):
logging.info(OVERHEAD_LOG + s)

class NodeState(Enum):
INIT = auto()
READY = auto()
Expand Down Expand Up @@ -526,13 +530,15 @@ def parse_env(content):
return conflict_exists

def kill_children(self):
overhead_log(f"KILL|{self.cnid}")
assert self.state in [NodeState.EXECUTING, NodeState.SPEC_EXECUTING]
process = self.exec_ctxt.process
try:
os.killpg(process.pid, signal.SIGKILL)
except ProcessLookupError:
pass
process.wait()
overhead_log(f"KILL_END|{self.cnid}")

## ##
## Transition Functions ##
Expand Down Expand Up @@ -568,8 +574,9 @@ def reset_to_ready(self, spec_pre_env: str = None):
# TODO: make this more sophisticated
if self.state in [NodeState.EXECUTING, NodeState.SPEC_EXECUTING]:
self.kill_children()

overhead_log(f"DELETE_SANDBOX|{self.cnid}")
util.delete_sandbox(self.exec_ctxt.sandbox_dir)
overhead_log(f"DELETE_SANDBOX_END|{self.cnid}")
self.exec_ctxt = None
self.exec_result = None
if spec_pre_env is not None:
Expand Down Expand Up @@ -615,7 +622,9 @@ def commit_frontier_execution(self):
self.trace_fd = None
self.trace_ctx = None
self.update_loop_list_context()
overhead_log(f"COMMIT|{self.cnid}")
executor.commit_workspace(self.exec_ctxt.sandbox_dir)
overhead_log(f"COMMIT_END|{self.cnid}")
# util.delete_sandbox(self.exec_ctxt.sandbox_dir)
self.state = NodeState.COMMITTED
self.trace_state()
Expand All @@ -635,7 +644,9 @@ def finish_spec_execution(self):

def commit_speculated(self):
assert self.state == NodeState.SPECULATED
overhead_log(f"COMMIT|{self.cnid}")
executor.commit_workspace(self.exec_ctxt.sandbox_dir)
overhead_log(f"COMMIT_END|{self.cnid}")
# util.delete_sandbox(self.exec_ctxt.sandbox_dir)
self.state = NodeState.COMMITTED
self.trace_state()
Expand Down
6 changes: 6 additions & 0 deletions parallel-orch/partial_program_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,17 @@

PROG_LOG = '[PROG_LOG] '
EVENT_LOG = '[EVENT_LOG] '
OVERHEAD_LOG = '[OVERHEAD_LOG] '

def event_log(s):
logging.info(EVENT_LOG + s)

def progress_log(s):
logging.info(PROG_LOG + s)

def overhead_log(s):
logging.info(OVERHEAD_LOG + s)

def simulate_loop_iter_env(env, var, loop_list_context, loop_iters):
loop_list = loop_list_context.get_top()
try:
Expand Down Expand Up @@ -401,7 +405,9 @@ def valid(self):

def fetch_fs_actions(self):
for node in self.get_executing_normal_and_spec_nodes():
overhead_log(f"TRACE_FETCHING|{node.cnid}")
node.gather_fs_actions()
overhead_log(f"TRACE_FETCHING_END|{node.cnid}")

def _has_fs_deps(self, concrete_node_id: ConcreteNodeId):
node_of_interest : ConcreteNode = self.get_concrete_node(concrete_node_id)
Expand Down
6 changes: 6 additions & 0 deletions report/benchmarks/bio4/large/setup
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/bash

export PASH_SPEC_TOP=${PASH_SPEC_TOP:-$(git rev-parse --show-toplevel --show-superproject-working-tree)}
export BIODIR="${PASH_SPEC_TOP}/report/benchmarks/bio4"
$BIODIR/setup.sh large/list

5 changes: 5 additions & 0 deletions report/benchmarks/bio4/medium/setup
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/bash

export PASH_SPEC_TOP=${PASH_SPEC_TOP:-$(git rev-parse --show-toplevel --show-superproject-working-tree)}
export BIODIR="${PASH_SPEC_TOP}/report/benchmarks/bio4"
$BIODIR/setup.sh medium/list
2 changes: 0 additions & 2 deletions report/benchmarks/bio4/setup.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
#!/bin/bash

set -e

export PATH=$PATH:$HOME/.local/bin
export PASH_SPEC_TOP=${PASH_SPEC_TOP:-$(git rev-parse --show-toplevel --show-superproject-working-tree)}

Expand Down
5 changes: 5 additions & 0 deletions report/benchmarks/bio4/small/setup
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/bash

export PASH_SPEC_TOP=${PASH_SPEC_TOP:-$(git rev-parse --show-toplevel --show-superproject-working-tree)}
export BIODIR="${PASH_SPEC_TOP}/report/benchmarks/bio4"
$BIODIR/setup.sh small/list
Empty file modified report/benchmarks/dgsh/run
100644 → 100755
Empty file.
22 changes: 22 additions & 0 deletions report/benchmarks/dgsh/run_all.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/bin/bash

export PATH=$PATH:$HOME/.local/bin
export PASH_SPEC_TOP=${PASH_SPEC_TOP:-$(git rev-parse --show-toplevel --show-superproject-working-tree)}
export PASH_TOP=${PASH_TOP:-$PASH_SPEC_TOP/deps/pash}

output_dir="$PASH_SPEC_TOP/report/output/dgsh"
download_dir="$PASH_SPEC_TOP/report/resources/dgsh"
result_dir="$PASH_SPEC_TOP/results/dgsh"

./run --target sh-only
rm -rf /tmp/*
mkdir -p $result_dir/base
mv $output_dir/* $result_dir/base

for window in 0 5 10 20 40
do
./run --target hs-only --window $window
rm -rf /tmp/*
mkdir -p $output_dir/$result_dir
mv $output_dir/* $result_dir/$window
done
File renamed without changes.
17 changes: 17 additions & 0 deletions report/benchmarks/max_temp/max_temp_optimal.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash

## This is used to test against the optimal parallel ordering (theoretical best)

for year in $(seq $FROM $TO); do
(
echo "Processing year: $year"
find "$RESOURCE_DIR/$year" -type f -name '*.gz' -print0 | xargs -0 -I{} sh -c 'gunzip -c "{}" >> "$RESOURCE_DIR/$year.txt"'

# Process in parallel
cut -c 89-92 "$RESOURCE_DIR/$year.txt" | grep -v 999 | sort -rn | head -n1 &
cut -c 89-92 "$RESOURCE_DIR/$year.txt" | grep -v 999 | sort -n | head -n1 &
cut -c 89-92 "$RESOURCE_DIR/$year.txt" | grep -v 999 | awk '{ total += $1; count++ } END { print total/count }' &
wait
) &
done
wait
27 changes: 27 additions & 0 deletions report/benchmarks/max_temp/run_all.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/bin/bash

export PASH_SPEC_TOP=${PASH_SPEC_TOP:-$(git rev-parse --show-toplevel --show-superproject-working-tree)}

output_dir="$PASH_SPEC_TOP/report/output/max_temp" # Adjust the path as necessary
download_dir="$PASH_SPEC_TOP/report/resources/max_temp"
result_dir="$PASH_SPEC_TOP/results/max_temp"
echo $output_dir
echo $download_dir
echo $result_dir

rm -f $download_dir/*.txt

./run --target sh-only
rm $download_dir/*.txt
mkdir -p $result_dir/base/
mv $output_dir/* $result_dir/base/

for window in 40 30 20 10 0
do
./run --target hs-only --window $window
rm $download_dir/*.txt
rm -rf /tmp/*
mkdir -p $result_dir/$window
mv $output_dir/* $result_dir/$window
done

File renamed without changes.
24 changes: 24 additions & 0 deletions report/benchmarks/max_temp/setup.1.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/bash

export PATH=$PATH:$HOME/.local/bin
export PASH_SPEC_TOP=${PASH_SPEC_TOP:-$(git rev-parse --show-toplevel --show-superproject-working-tree)}
export PASH_TOP=${PASH_TOP:-$PASH_SPEC_TOP/deps/pash}

download_dir="$PASH_SPEC_TOP/report/resources/max_temp" # Adjust the path as necessary


# Loop through the years from 2000 to 2018
for year in {1901..1901}; do
# Create the URL for the specific year
url="ftp://ftp.ncdc.noaa.gov/pub/data/noaa/$year"

# Create a temporary directory for each year
mkdir -p "$download_dir/$year"
mkdir -p $year

# Download files from the current year's directory
lftp -c "open '$url' && mirror --parallel=5 --verbose . '$year'"

mv "$year" "$download_dir/$year"

done
45 changes: 20 additions & 25 deletions report/benchmarks/unix_50/full.sh
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
#!/bin/bash

IN1=$IN/100M-1.txt
IN2=$IN/100M-2.txt
IN3=$IN/100M-3.txt
IN4=$IN/100M-4.txt
IN5=$IN/100M-5.txt
IN6=$IN/100M-6.txt
IN7=$IN/100M-7.txt
IN8=$IN/100M-8.txt
IN91=$IN/100M-9.1.txt
IN92=$IN/100M-9.2.txt
IN93=$IN/100M-9.3.txt
IN94=$IN/100M-9.4.txt
IN95=$IN/100M-9.5.txt
IN96=$IN/100M-9.6.txt
IN97=$IN/100M-9.7.txt
IN98=$IN/100M-9.8.txt
IN99=$IN/100M-9.9.txt
IN10=$IN/100M-10.txt
IN11=$IN/100M-11.txt
IN12=$IN/100M-12.txt
IN1=$IN/1G-1.txt
IN2=$IN/1G-2.txt
IN3=$IN/1G-3.txt
IN4=$IN/1G-4.txt
IN5=$IN/1G-5.txt
IN6=$IN/1G-6.txt
IN7=$IN/1G-7.txt
IN8=$IN/1G-8.txt
IN91=$IN/1G-9.1.txt
IN92=$IN/1G-9.2.txt
IN93=$IN/1G-9.3.txt
IN94=$IN/1G-9.4.txt
IN95=$IN/1G-9.5.txt
IN96=$IN/1G-9.6.txt
IN97=$IN/1G-9.7.txt
IN98=$IN/1G-9.8.txt
IN99=$IN/1G-9.9.txt
IN10=$IN/1G-10.txt
IN11=$IN/1G-11.txt
IN12=$IN/1G-12.txt

#1.sh 1.0: extract the last name
cat $IN1 | cut -d ' ' -f 2
Expand Down Expand Up @@ -128,8 +128,3 @@ cat $IN11 | grep 'UNIX' | cut -f 1

#36.sh 11.2: most repeated first name in the list?
cat $IN11 | cut -f 2 | cut -d ' ' -f 1 | sort | uniq -c | sort -nr | head -n 1 | fmt -w1 | sed 1d


# # 12.1: transform this list of instructions such that if the snake follows the
# # new instructions top to bottom, it ends on the location of the apple.
# cat $IN12 > /dev/null
20 changes: 20 additions & 0 deletions report/benchmarks/unix_50/run_all.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
export PATH=$PATH:$HOME/.local/bin
export PASH_SPEC_TOP=${PASH_SPEC_TOP:-$(git rev-parse --show-toplevel --show-superproject-working-tree)}
export PASH_TOP=${PASH_TOP:-$PASH_SPEC_TOP/deps/pash}

output_dir="$PASH_SPEC_TOP/report/output/unix_50"
download_dir="$PASH_SPEC_TOP/report/resources/unix_50"
result_dir="$PASH_SPEC_TOP/results/unix_50"

./run --target sh-only
rm -rf /tmp/*
mkdir -p $result_dir/base
mv $output_dir/* $result_dir/base

for window in 0 10 20 30 40
do
./run --target hs-only --window $window
rm -rf /tmp/*
mkdir -p $result_dir/$window
mv $output_dir/* $result_dir/$window
done
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,6 @@ for i in ${inputs[@]}; do
if [[ ! -f "$inflate_size-$i.txt" ]]; then
$inflate "$i.txt" 10M
$inflate "10M-$i.txt" $inflate_size &
# $inflate "100M-10M-$i.txt" 1G

# mv "1G-100M-10M-$i.txt" "1G-$i.txt"
fi
done
wait
Expand Down