# Auto-generated benchmark workflow
# 63 tasks, 10 chains, max depth 7

import time

onstart:
    with open("benchmark_start.txt", "w") as f:
        f.write(str(time.time()))

onsuccess:
    with open("benchmark_end.txt", "w") as f:
        f.write(str(time.time()))

rule all:
    input: "results/final.txt"

rule source:
    output: "results/source.txt"
    threads: 1
    resources: mem_mb=512
    shell: "sleep 1 && echo 'source' > {output}"

rule chain0_step0:
    input: "results/source.txt"
    output: "results/chain0_step0.txt"
    threads: 3
    resources: mem_mb=3072
    shell: "sleep 3 && echo 'chain0_step0' > {output}"

rule chain0_step1:
    input: "results/chain0_step0.txt"
    output: "results/chain0_step1.txt"
    threads: 3
    resources: mem_mb=3072
    shell: "sleep 2 && echo 'chain0_step1' > {output}"

rule chain0_step2:
    input: "results/chain0_step1.txt"
    output: "results/chain0_step2.txt"
    threads: 3
    resources: mem_mb=3072
    shell: "sleep 2 && echo 'chain0_step2' > {output}"

rule chain1_step0:
    input: "results/source.txt"
    output: "results/chain1_step0.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 3 && echo 'chain1_step0' > {output}"

rule chain1_step1:
    input: "results/chain1_step0.txt"
    output: "results/chain1_step1.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 2 && echo 'chain1_step1' > {output}"

rule chain1_step2:
    input: "results/chain1_step1.txt"
    output: "results/chain1_step2.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 2 && echo 'chain1_step2' > {output}"

rule chain1_step3:
    input: "results/chain1_step2.txt"
    output: "results/chain1_step3.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 2 && echo 'chain1_step3' > {output}"

rule chain1_step4:
    input: "results/chain1_step3.txt"
    output: "results/chain1_step4.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 3 && echo 'chain1_step4' > {output}"

rule chain1_step5:
    input: "results/chain1_step4.txt"
    output: "results/chain1_step5.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 3 && echo 'chain1_step5' > {output}"

rule chain1_step6:
    input: "results/chain1_step5.txt"
    output: "results/chain1_step6.txt"
    threads: 3
    resources: mem_mb=3072
    shell: "sleep 2 && echo 'chain1_step6' > {output}"

rule chain2_step0:
    input: "results/source.txt"
    output: "results/chain2_step0.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 2 && echo 'chain2_step0' > {output}"

rule chain2_step1:
    input: "results/chain2_step0.txt"
    output: "results/chain2_step1.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 1 && echo 'chain2_step1' > {output}"

rule chain2_step2:
    input: "results/chain2_step1.txt"
    output: "results/chain2_step2.txt"
    threads: 1
    resources: mem_mb=1024
    shell: "sleep 2 && echo 'chain2_step2' > {output}"

rule chain2_step3:
    input: "results/chain2_step2.txt"
    output: "results/chain2_step3.txt"
    threads: 1
    resources: mem_mb=1024
    shell: "sleep 1 && echo 'chain2_step3' > {output}"

rule chain3_step0:
    input: "results/source.txt"
    output: "results/chain3_step0.txt"
    threads: 1
    resources: mem_mb=1024
    shell: "sleep 2 && echo 'chain3_step0' > {output}"

rule chain3_step1:
    input: "results/chain3_step0.txt"
    output: "results/chain3_step1.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 2 && echo 'chain3_step1' > {output}"

rule chain3_step2:
    input: "results/chain3_step1.txt"
    output: "results/chain3_step2.txt"
    threads: 1
    resources: mem_mb=1024
    shell: "sleep 2 && echo 'chain3_step2' > {output}"

rule chain3_step3:
    input: "results/chain3_step2.txt"
    output: "results/chain3_step3.txt"
    threads: 1
    resources: mem_mb=1024
    shell: "sleep 2 && echo 'chain3_step3' > {output}"

rule chain3_step4:
    input: "results/chain3_step3.txt"
    output: "results/chain3_step4.txt"
    threads: 1
    resources: mem_mb=1024
    shell: "sleep 2 && echo 'chain3_step4' > {output}"

rule chain3_step5:
    input: "results/chain3_step4.txt"
    output: "results/chain3_step5.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 1 && echo 'chain3_step5' > {output}"

rule chain4_step0:
    input: "results/source.txt"
    output: "results/chain4_step0.txt"
    threads: 1
    resources: mem_mb=1024
    shell: "sleep 1 && echo 'chain4_step0' > {output}"

rule chain4_step1:
    input: "results/chain4_step0.txt"
    output: "results/chain4_step1.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 1 && echo 'chain4_step1' > {output}"

rule chain4_step2:
    input: "results/chain4_step1.txt"
    output: "results/chain4_step2.txt"
    threads: 1
    resources: mem_mb=1024
    shell: "sleep 1 && echo 'chain4_step2' > {output}"

rule chain5_step0:
    input: "results/source.txt"
    output: "results/chain5_step0.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 2 && echo 'chain5_step0' > {output}"

rule chain5_step1:
    input: "results/chain5_step0.txt"
    output: "results/chain5_step1.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 1 && echo 'chain5_step1' > {output}"

rule chain5_step2:
    input: "results/chain5_step1.txt"
    output: "results/chain5_step2.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 2 && echo 'chain5_step2' > {output}"

rule chain5_step3:
    input: "results/chain5_step2.txt"
    output: "results/chain5_step3.txt"
    threads: 1
    resources: mem_mb=1024
    shell: "sleep 2 && echo 'chain5_step3' > {output}"

rule chain5_step4:
    input: "results/chain5_step3.txt"
    output: "results/chain5_step4.txt"
    threads: 1
    resources: mem_mb=1024
    shell: "sleep 1 && echo 'chain5_step4' > {output}"

rule chain5_step5:
    input: "results/chain5_step4.txt"
    output: "results/chain5_step5.txt"
    threads: 1
    resources: mem_mb=1024
    shell: "sleep 1 && echo 'chain5_step5' > {output}"

rule chain6_step0:
    input: "results/source.txt"
    output: "results/chain6_step0.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 2 && echo 'chain6_step0' > {output}"

rule chain6_step1:
    input: "results/chain6_step0.txt"
    output: "results/chain6_step1.txt"
    threads: 1
    resources: mem_mb=1024
    shell: "sleep 2 && echo 'chain6_step1' > {output}"

rule chain6_step2:
    input: "results/chain6_step1.txt"
    output: "results/chain6_step2.txt"
    threads: 1
    resources: mem_mb=1024
    shell: "sleep 1 && echo 'chain6_step2' > {output}"

rule chain6_step3:
    input: "results/chain6_step2.txt"
    output: "results/chain6_step3.txt"
    threads: 1
    resources: mem_mb=1024
    shell: "sleep 2 && echo 'chain6_step3' > {output}"

rule chain6_step4:
    input: "results/chain6_step3.txt"
    output: "results/chain6_step4.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 2 && echo 'chain6_step4' > {output}"

rule chain6_step5:
    input: "results/chain6_step4.txt"
    output: "results/chain6_step5.txt"
    threads: 1
    resources: mem_mb=1024
    shell: "sleep 1 && echo 'chain6_step5' > {output}"

rule chain7_step0:
    input: "results/source.txt"
    output: "results/chain7_step0.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 1 && echo 'chain7_step0' > {output}"

rule chain7_step1:
    input: "results/chain7_step0.txt"
    output: "results/chain7_step1.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 2 && echo 'chain7_step1' > {output}"

rule chain7_step2:
    input: "results/chain7_step1.txt"
    output: "results/chain7_step2.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 1 && echo 'chain7_step2' > {output}"

rule chain7_step3:
    input: "results/chain7_step2.txt"
    output: "results/chain7_step3.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 1 && echo 'chain7_step3' > {output}"

rule chain7_step4:
    input: "results/chain7_step3.txt"
    output: "results/chain7_step4.txt"
    threads: 1
    resources: mem_mb=1024
    shell: "sleep 2 && echo 'chain7_step4' > {output}"

rule chain7_step5:
    input: "results/chain7_step4.txt"
    output: "results/chain7_step5.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 2 && echo 'chain7_step5' > {output}"

rule chain7_step6:
    input: "results/chain7_step5.txt"
    output: "results/chain7_step6.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 1 && echo 'chain7_step6' > {output}"

rule chain8_step0:
    input: "results/source.txt"
    output: "results/chain8_step0.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 1 && echo 'chain8_step0' > {output}"

rule chain8_step1:
    input: "results/chain8_step0.txt"
    output: "results/chain8_step1.txt"
    threads: 1
    resources: mem_mb=1024
    shell: "sleep 1 && echo 'chain8_step1' > {output}"

rule chain8_step2:
    input: "results/chain8_step1.txt"
    output: "results/chain8_step2.txt"
    threads: 1
    resources: mem_mb=1024
    shell: "sleep 1 && echo 'chain8_step2' > {output}"

rule chain8_step3:
    input: "results/chain8_step2.txt"
    output: "results/chain8_step3.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 1 && echo 'chain8_step3' > {output}"

rule chain9_step0:
    input: "results/source.txt"
    output: "results/chain9_step0.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 2 && echo 'chain9_step0' > {output}"

rule chain9_step1:
    input: "results/chain9_step0.txt"
    output: "results/chain9_step1.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 1 && echo 'chain9_step1' > {output}"

rule chain9_step2:
    input: "results/chain9_step1.txt"
    output: "results/chain9_step2.txt"
    threads: 1
    resources: mem_mb=1024
    shell: "sleep 2 && echo 'chain9_step2' > {output}"

rule chain9_step3:
    input: "results/chain9_step2.txt"
    output: "results/chain9_step3.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 1 && echo 'chain9_step3' > {output}"

rule chain9_step4:
    input: "results/chain9_step3.txt"
    output: "results/chain9_step4.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 2 && echo 'chain9_step4' > {output}"

rule chain9_step5:
    input: "results/chain9_step4.txt"
    output: "results/chain9_step5.txt"
    threads: 1
    resources: mem_mb=1024
    shell: "sleep 2 && echo 'chain9_step5' > {output}"

rule join1:
    input: "results/chain0_step2.txt", "results/chain1_step6.txt"
    output: "results/join1.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 3 && echo 'join1' > {output}"

rule join2:
    input: "results/chain2_step3.txt", "results/chain3_step5.txt"
    output: "results/join2.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 2 && echo 'join2' > {output}"

rule join3:
    input: "results/chain4_step2.txt", "results/chain5_step5.txt"
    output: "results/join3.txt"
    threads: 3
    resources: mem_mb=2048
    shell: "sleep 2 && echo 'join3' > {output}"

rule join4:
    input: "results/chain6_step5.txt", "results/chain7_step6.txt"
    output: "results/join4.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 3 && echo 'join4' > {output}"

rule join5:
    input: "results/chain8_step3.txt", "results/chain9_step5.txt"
    output: "results/join5.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 2 && echo 'join5' > {output}"

rule merge_all:
    input: "results/join1.txt", "results/join2.txt", "results/join3.txt", "results/join4.txt", "results/join5.txt"
    output: "results/merge_all.txt"
    threads: 4
    resources: mem_mb=4096
    shell: "sleep 3 && echo 'merge_all' > {output}"

rule post0:
    input: "results/merge_all.txt"
    output: "results/post0.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 2 && echo 'post0' > {output}"

rule post1:
    input: "results/merge_all.txt"
    output: "results/post1.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 2 && echo 'post1' > {output}"

rule post2:
    input: "results/merge_all.txt"
    output: "results/post2.txt"
    threads: 2
    resources: mem_mb=2048
    shell: "sleep 2 && echo 'post2' > {output}"

rule final:
    input: "results/post0.txt", "results/post1.txt", "results/post2.txt"
    output: "results/final.txt"
    threads: 1
    resources: mem_mb=512
    shell: "sleep 1 && echo 'final' > {output}"
