-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdijk_seq.py
executable file
·81 lines (63 loc) · 1.56 KB
/
dijk_seq.py
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
import random
import time
globvar = 1
INT_MAX = 1000000000
N=16384
DEG=16
P=1
u=0
W = [[0 for x in range(DEG)] for x in range(N)]
W_index = [[0 for x in range(DEG)] for x in range(N)]
D = [0 for x in range(N)]
Q = [0 for x in range(N)]
def graph():
print 'Hello, world!'
global globvar
global W
global W_index
global P
global INT_MAX
global D
global Q
global u
for i in range(0,N):
for j in range(0,DEG):
W_index[i][j] = i+j
if W_index[i][j] >= N-1 :
W_index[i][j] = N-1
W[i][j] = random.randint(1, 10) + j
if i==j:
W[i][j]=0
#print W[i][j]
def array_init():
for i in range(0,N):
D[i] = INT_MAX
Q[i] = 1
D[0] = 0
def do_work():
local_count=N
u=0
while local_count!=0: #outer loop
min1 = INT_MAX
min_index1 = N-1
for j in range(0,DEG): #local_min
if(D[j] < min1 and Q[j]): #inner loop
min1 = D[j]
min_index1 = W_index[u][j]
#barrier
#if tid==0:
#barrier
u=min_index1
Q[u]=0
for i in range(0,DEG): #relax
if D[W_index[u][i]] > D[u] + W[u][i]:
D[W_index[u][i]] = D[u] + W[u][i];
local_count = local_count-1
def main():
graph()
array_init()
start_time = time.time()
do_work()
print time.time()-start_time,"seconds"
if __name__ == "__main__":
main()