forked from ProjectQ-Framework/ProjectQ
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgraph_effect_of_qubit_ids.sh
More file actions
executable file
·127 lines (111 loc) · 4.75 KB
/
graph_effect_of_qubit_ids.sh
File metadata and controls
executable file
·127 lines (111 loc) · 4.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
NUM_QUBITS=20
MIN_NUM_QUBIT_IDS=5
MAX_NUM_QUBIT_IDS=5
#echo "\n\n---------- Removing time_comparison.txt ----------\n\n"
rm time_comparison.txt
#echo "\n\n---------- Compiling with G++----------\n\n"
#g++ --std=c++11 gen_state_vec.cpp -o gen_state_vec.o || exit 1
g++ --std=c++11 gen_source_matrix.cpp -o gen_source_matrix.o || exit 1
g++ -g --std=c++11 projectq_kernel_nointrin_runner.cpp -o projectq_kernel_nointrin_runner.o -I./projectq/backends/_sim/_cppkernels/nointrin/ || exit 1
g++ -g --std=c++11 -mavx projectq_kernel_intrin_runner.cpp -o projectq_kernel_intrin_runner.o -I./projectq/backends/_sim/_cppkernels/intrin/ || exit 1
#echo "\n\n---------- Compiling with NVCC----------\n\n"
#nvcc --std=c++11 kernel1.cu -o kernel1.o || exit 1
#nvcc --std=c++11 kernel2.cu -o kernel2.o || exit 1
#nvcc --std=c++11 kernel3.cu -o kernel3.o || exit 1
#nvcc --std=c++11 kernel4.cu -o kernel4.o || exit 1
nvcc --std=c++11 -O3 kernel5.cu -o kernel5.o || exit 1
for ((NUM_QUBIT_IDS=$MIN_NUM_QUBIT_IDS; NUM_QUBIT_IDS<=$MAX_NUM_QUBIT_IDS; NUM_QUBIT_IDS++));
do
for ((QUBIT4=4; QUBIT4<$NUM_QUBITS; QUBIT4++));
do
QUBIT3=$(($QUBIT4 - 1))
QUBIT2=$(($QUBIT4 - 2))
QUBIT1=$(($QUBIT4 - 3))
QUBIT0=$(($QUBIT4 - 4))
if [ $NUM_QUBIT_IDS -eq 1 ]
then
echo "NUM_QUBITS: $NUM_QUBITS QUBIT0: $QUBIT0" >> time_comparison.txt
echo "NUM_QUBITS: $NUM_QUBITS QUBIT0: $QUBIT0"
fi
if [ $NUM_QUBIT_IDS -eq 2 ]
then
echo "NUM_QUBITS: $NUM_QUBITS QUBIT1: $QUBIT1 QUBIT0: $QUBIT0" >> time_comparison.txt
echo "NUM_QUBITS: $NUM_QUBITS QUBIT1: $QUBIT1 QUBIT0: $QUBIT0"
fi
if [ $NUM_QUBIT_IDS -eq 3 ]
then
echo "NUM_QUBITS: $NUM_QUBITS QUBIT2: $QUBIT2 QUBIT1: $QUBIT1 QUBIT0: $QUBIT0" >> time_comparison.txt
echo "NUM_QUBITS: $NUM_QUBITS QUBIT2: $QUBIT2 QUBIT1: $QUBIT1 QUBIT0: $QUBIT0"
fi
if [ $NUM_QUBIT_IDS -eq 4 ]
then
echo "NUM_QUBITS: $NUM_QUBITS QUBIT3: $QUBIT3 QUBIT2: $QUBIT2 QUBIT1: $QUBIT1 QUBIT0: $QUBIT0" >> time_comparison.txt
echo "NUM_QUBITS: $NUM_QUBITS QUBIT3: $QUBIT3 QUBIT2: $QUBIT2 QUBIT1: $QUBIT1 QUBIT0: $QUBIT0"
fi
if [ $NUM_QUBIT_IDS -eq 5 ]
then
echo "NUM_QUBITS: $NUM_QUBITS QUBIT4: $QUBIT4 QUBIT3: $QUBIT3 QUBIT2: $QUBIT2 QUBIT1: $QUBIT1 QUBIT0: $QUBIT0" >> time_comparison.txt
echo "NUM_QUBITS: $NUM_QUBITS QUBIT4: $QUBIT4 QUBIT3: $QUBIT3 QUBIT2: $QUBIT2 QUBIT1: $QUBIT1 QUBIT0: $QUBIT0"
fi
#echo "\n\n---------- Generating truth ----------\n\n"
#./gen_state_vec.o $NUM_QUBITS || exit 1
#~/Python-3.8.1/python3.8 source_generate.py $NUM_QUBIT_IDS
./gen_source_matrix.o $NUM_QUBIT_IDS || exit 1
if [ $NUM_QUBIT_IDS -eq 1 ]
then
./projectq_kernel_nointrin_runner.o $NUM_QUBITS $NUM_QUBIT_IDS $QUBIT0 || exit 1
./projectq_kernel_intrin_runner.o $NUM_QUBITS $NUM_QUBIT_IDS $QUBIT0 || exit 1
fi
if [ $NUM_QUBIT_IDS -eq 2 ]
then
./projectq_kernel_nointrin_runner.o $NUM_QUBITS $NUM_QUBIT_IDS $QUBIT1 $QUBIT0 || exit 1
./projectq_kernel_intrin_runner.o $NUM_QUBITS $NUM_QUBIT_IDS $QUBIT1 $QUBIT0 || exit 1
fi
if [ $NUM_QUBIT_IDS -eq 3 ]
then
./projectq_kernel_nointrin_runner.o $NUM_QUBITS $NUM_QUBIT_IDS $QUBIT2 $QUBIT1 $QUBIT0 || exit 1
./projectq_kernel_intrin_runner.o $NUM_QUBITS $NUM_QUBIT_IDS $QUBIT2 $QUBIT1 $QUBIT0 || exit 1
fi
if [ $NUM_QUBIT_IDS -eq 4 ]
then
./projectq_kernel_nointrin_runner.o $NUM_QUBITS $NUM_QUBIT_IDS $QUBIT3 $QUBIT2 $QUBIT1 $QUBIT0 || exit 1
./projectq_kernel_intrin_runner.o $NUM_QUBITS $NUM_QUBIT_IDS $QUBIT3 $QUBIT2 $QUBIT1 $QUBIT0 || exit 1
fi
if [ $NUM_QUBIT_IDS -eq 5 ]
then
./projectq_kernel_nointrin_runner.o $NUM_QUBITS $NUM_QUBIT_IDS $QUBIT4 $QUBIT3 $QUBIT2 $QUBIT1 $QUBIT0 || exit 1
./projectq_kernel_intrin_runner.o $NUM_QUBITS $NUM_QUBIT_IDS $QUBIT4 $QUBIT3 $QUBIT2 $QUBIT1 $QUBIT0 || exit 1
fi
#echo "\n\n---------- Running job on GPU ----------\n\n"
#--wait allows bash to wait for it to be done
if [ $NUM_QUBIT_IDS -eq 1 ]
then
sbatch --wait run_on_gpu.sh $NUM_QUBITS $NUM_QUBIT_IDS $QUBIT0
fi
if [ $NUM_QUBIT_IDS -eq 2 ]
then
sbatch --wait run_on_gpu.sh $NUM_QUBITS $NUM_QUBIT_IDS $QUBIT0 $QUBIT1
fi
if [ $NUM_QUBIT_IDS -eq 3 ]
then
sbatch --wait run_on_gpu.sh $NUM_QUBITS $NUM_QUBIT_IDS $QUBIT0 $QUBIT1 $QUBIT2
fi
if [ $NUM_QUBIT_IDS -eq 4 ]
then
sbatch --wait run_on_gpu.sh $NUM_QUBITS $NUM_QUBIT_IDS $QUBIT0 $QUBIT1 $QUBIT2 $QUBIT3
fi
if [ $NUM_QUBIT_IDS -eq 5 ]
then
sbatch --wait run_on_gpu.sh $NUM_QUBITS $NUM_QUBIT_IDS $QUBIT0 $QUBIT1 $QUBIT2 $QUBIT3 $QUBIT4
fi
#bash command
wait
#echo "\n\n---------- Job Done ----------\n\n"
#echo "\n\n---------- Copying log file ----------\n\n"
cp ~/570_job* slurm_job_output/
rm ~/570_job*
#echo "\n\n---------- Comparing output ----------\n\n"
#~/Python-3.8.1/python3.8 compare_outputs.py
cp time_comparison.txt ./data/graph_data_qubitid_magnitude.txt
done
done