#! /bin/bash -l
### Set name.
#SBATCH --job-name=j220601-rubiks-refactored-02-start
### Redirect stdout and stderr.
#SBATCH --output=slurm.log
#SBATCH --error=slurm.err
### Let later steps append their logs to the output and error files.
#SBATCH --open-mode=append
### Set partition.
#SBATCH --partition=infai_2
### Set quality-of-service group.
#SBATCH --qos=normal
### Set memory limit.
#SBATCH --mem-per-cpu=3872M
### Number of tasks.
#SBATCH --array=1-1005
### Adjustment to priority ([-2147483645, 2147483645]).
#SBATCH --nice=5000
### Send mail? Mail type can be e.g. NONE, END, FAIL, ARRAY_TASKS.
#SBATCH --mail-type=NONE
#SBATCH --mail-user=
### Extra options.
## (not used)



# Set a soft memory limit to guard against the cgroup mechanism failing (see SlurmEnvironment docs).
ulimit -Sv 3885629


declare -a SHUFFLED_TASK_IDS=(176 835 532 828 585 98 599 789 71 306 4 730 501 587 648 932 724 353 871 497 341 486 819 680 80 153 697 533 609 554 712 232 227 954 196 864 731 209 738 657 444 433 830 678 849 898 728 167 578 198 372 931 708 345 809 576 661 488 773 358 136 752 15 979 7 984 218 703 783 584 406 349 258 449 194 981 603 55 1001 401 806 695 293 590 350 718 989 845 375 844 945 357 95 942 253 546 606 861 664 201 778 777 68 699 370 155 179 220 930 73 418 588 49 343 891 649 498 224 480 76 211 93 273 354 110 757 750 987 965 654 561 123 639 641 552 620 786 866 525 507 929 180 390 469 59 877 882 677 560 627 780 523 904 412 967 758 1 947 116 54 593 991 856 792 440 774 732 936 943 517 884 326 631 817 611 559 937 39 607 233 881 64 148 840 156 231 365 465 478 280 11 770 846 961 601 572 800 84 126 308 322 299 723 340 254 225 892 417 305 152 34 36 727 134 972 973 742 825 928 962 581 634 337 878 629 647 41 776 420 63 887 811 912 918 858 494 662 424 615 378 230 769 289 761 756 177 960 339 751 32 934 794 3 419 410 996 610 622 42 617 503 363 526 907 325 862 625 487 323 142 888 713 446 364 120 642 521 452 435 29 899 628 359 510 226 505 422 393 332 272 744 81 74 519 13 112 119 707 540 582 741 577 317 403 781 109 1004 277 361 75 785 391 408 219 45 759 735 476 228 291 838 541 745 44 223 366 239 766 843 917 914 990 94 822 453 818 377 889 579 855 77 983 926 279 441 829 940 90 640 958 969 12 8 385 915 805 379 88 235 837 292 701 263 946 706 125 21 875 569 342 613 530 193 464 344 229 529 383 564 894 500 23 467 286 395 285 282 952 726 679 135 255 2 368 214 47 693 217 798 935 206 971 60 948 544 244 346 333 698 651 466 659 711 199 43 865 665 61 539 213 159 903 978 86 351 669 549 804 686 826 870 33 133 216 951 767 897 689 886 122 178 910 17 553 815 906 909 600 130 169 782 251 632 203 643 832 995 976 900 10 210 831 714 99 205 257 851 181 302 834 397 25 187 186 591 185 247 548 320 923 722 537 970 275 281 138 836 183 938 147 570 655 536 638 248 852 163 944 371 162 330 105 813 563 414 586 431 19 608 982 87 841 171 96 666 660 645 495 974 993 367 768 636 833 821 896 101 374 692 456 795 925 174 303 646 656 685 524 52 550 749 868 69 595 542 687 238 496 30 489 998 411 384 867 753 748 283 437 980 635 461 715 1000 630 545 719 312 352 129 335 614 430 35 528 580 70 771 118 992 890 650 589 195 704 463 739 941 883 755 451 816 565 696 567 558 413 324 1002 902 675 236 396 473 977 85 939 427 810 222 27 262 911 729 297 765 535 389 788 551 245 956 775 543 434 460 331 256 215 574 360 859 869 115 294 144 426 336 407 512 556 311 964 243 173 264 429 511 527 260 423 470 141 705 197 482 376 779 681 596 671 259 691 605 57 986 347 683 270 265 975 658 454 793 221 121 436 380 22 502 716 151 288 104 170 702 949 762 184 319 20 113 266 571 28 416 721 668 690 249 443 717 242 518 801 355 740 547 447 315 131 240 621 807 246 62 37 318 820 327 612 633 743 438 300 432 475 150 522 515 127 103 362 709 725 747 274 908 799 409 40 490 124 667 394 241 51 592 999 298 108 879 329 485 313 154 842 483 157 1005 538 808 399 268 597 307 953 566 276 146 83 885 506 557 404 172 787 733 31 450 927 598 66 508 626 985 644 287 143 369 950 754 250 301 382 520 471 415 458 814 484 175 18 827 100 38 474 269 309 295 200 616 619 9 46 594 824 764 618 905 387 189 338 168 504 421 398 720 637 737 388 575 5 823 6 963 91 957 78 694 797 966 278 573 386 901 763 652 682 304 847 922 874 472 107 784 316 457 653 373 267 796 997 161 516 102 428 204 111 348 208 139 873 459 850 968 919 623 160 24 117 321 290 790 710 857 491 791 207 182 252 234 334 16 191 562 477 672 736 802 190 212 674 58 402 760 448 381 149 676 166 26 445 848 140 192 876 481 392 425 602 145 803 271 261 237 400 310 468 82 880 439 853 114 531 442 188 314 568 734 493 405 499 860 893 933 92 534 53 688 284 959 700 624 913 14 202 988 56 863 455 924 164 812 509 916 673 920 684 67 79 72 479 89 955 1003 772 514 604 583 746 839 165 895 670 128 854 921 356 65 872 137 296 513 555 328 492 50 663 132 994 462 158 106 97 48)

function print_run_dir {
    local RUN_ID=${SHUFFLED_TASK_IDS[$1 - 1]}
    let "LOWER=((RUN_ID - 1) / 100) * 100 + 1"
    let "UPPER=((RUN_ID + 100 - 1) / 100) * 100"
    printf "runs-%05d-%05d/%05d" $LOWER $UPPER $RUN_ID
}

RUN_DIR=$(print_run_dir $SLURM_ARRAY_TASK_ID)

cd "../220601-rubiks-refactored/$RUN_DIR"

(
"/infai/buecle01/.venv-rubiks-cube/bin/python" run
RETCODE=$?
if [[ $RETCODE != 0 ]]; then
    >&2 echo "The run script finished with exit code $RETCODE"
fi
) > driver.log 2> driver.err

# Delete empty driver files.
if [[ ! -s driver.log ]]; then
    rm driver.log
fi
if [[ ! -s driver.err ]]; then
    rm driver.err
fi
