]> git.somenet.org - pub/astra/parallel.git/blob - openmp/merge/generate_random.sh
hillis: implemented partial prefix sums algorithm
[pub/astra/parallel.git] / openmp / merge / generate_random.sh
1 #!/bin/bash
2
3 function pwait() {
4         while [ $(jobs -r | wc -l) -gt 0 ];
5         do
6                 sleep 1
7         done
8 }
9
10 # 10 ^ x values
11 X=7
12 NULLEN=""
13 PUNKTE="."
14 for i in $(seq `expr $X - 1`);
15 do
16         NULLEN="${NULLEN}0"
17         PUNKTE="${PUNKTE}."
18 done
19 VALUES="1${NULLEN}"
20
21 BATCH=`expr \( $X \* $VALUES \) / 2`
22
23 echo "${VALUES} values"
24 echo "Batch: ${BATCH}"
25
26 echo "generating numbers (1)"
27 echo $(date)
28 tr -dc 0-9 < /dev/urandom | head -c"${BATCH}" | sed 's/\('$PUNKTE'\)/\1\n/g' > unsorted1a &
29 tr -dc 0-9 < /dev/urandom | head -c"${BATCH}" | sed 's/\('$PUNKTE'\)/\1\n/g' > unsorted1b &
30 pwait
31 echo "generating numbers (2)"
32 echo $(date)
33 tr -dc 0-9 < /dev/urandom | head -c"${BATCH}" | sed 's/\('$PUNKTE'\)/\1\n/g' > unsorted2a &
34 tr -dc 0-9 < /dev/urandom | head -c"${BATCH}" | sed 's/\('$PUNKTE'\)/\1\n/g' > unsorted2b &
35 pwait
36
37 echo "removing empty lines"
38 echo $(date)
39 rm -f unsorted1 unsorted2
40 sed '/^$/d' unsorted1a >> unsorted1
41 sed '/^$/d' unsorted1b >> unsorted1
42 sed '/^$/d' unsorted2a >> unsorted2
43 sed '/^$/d' unsorted2b >> unsorted2
44 rm -f unsorted1a unsorted1b unsorted2a unsorted2b
45
46 echo "formatting numlist"
47 echo $(date)
48 cat unsorted1 | sort -n | sed -e ':a;N;$!ba;s/\n/,/g' -e 's/^/,/' -e 's/,[0]*/,/g' -e 's/^,/\tint a[] = {/' -e 's/{,/{0,/' -e 's/$/,-1};/' >numlist1.c &
49 cat unsorted2 | sort -n | sed -e ':a;N;$!ba;s/\n/,/g' -e 's/^/,/' -e 's/,[0]*/,/g' -e 's/^,/\tint b[] = {/' -e 's/{,/{0,/' -e 's/$/,-1};/' >numlist2.c &
50 pwait
51 rm -f unsorted1 unsorted2
52
53 rm -f numlist.h
54 echo "#define LISTSIZE ${VALUES}" >> numlist.h
55 echo "extern int a["`expr ${VALUES} + 1`"];" >> numlist.h
56 echo "extern int b["`expr ${VALUES} + 1`"];" >> numlist.h
57
58 rm -f numlist.c
59 cat numlist1.c >> numlist.c
60 cat numlist2.c >> numlist.c
61 rm -f numlist1.c numlist2.c
62
63 echo "Done."
64 echo $(date)
65