forked from NCAR/geocat-f2py
-
Notifications
You must be signed in to change notification settings - Fork 0
/
fast_test.py
113 lines (99 loc) · 2.17 KB
/
fast_test.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
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
# THIS IS A DEVELOPMENT PERFORMANCE TESTING CLASS, REMOVE WHEN NO LONGER NEEDED
import time
import dask
import dask.distributed as dd
from dask.array.core import map_blocks
import numpy as np
import xarray as xr
from geocat.f2py import (linint1, linint2, linint2pts)
def linint1_test():
xi = np.linspace(1, 10, 200)
xo = np.linspace(1, 10, 1000)
fi = np.linspace(1, 200, 200000).reshape((100, 10, 200))
# '''
chunks = {
'time': 1,
'alt': 1,
'lon': xi.shape,
}
# '''
fi = xr.DataArray(
fi,
coords={
'lon': xi,
},
dims=['time', 'alt', 'lon'],
).chunk(chunks)
fo = linint1(
fi,
xo,
)
def linint2_test():
xi = np.linspace(1, 10, 500)
yi = np.linspace(1, 10, 200)
xo = np.linspace(1, 10, 2000)
yo = np.linspace(1, 10, 1000)
fi = np.linspace(1, 200, 10000000).reshape((10, 10, 200, 500))
# '''
chunks = {
'time': 1,
'alt': 1,
'lat': yi.shape[0],
'lon': xi.shape[0],
}
# '''
#'''
fi = xr.DataArray(
fi,
coords={
'lat': yi,
'lon': xi,
},
dims=['time', 'alt', 'lat', 'lon'],
).chunk(chunks)
#'''
fo = linint2(
fi,
xo,
yo,
xi=xi,
yi=yi,
)
def linint2pts_test():
xi = np.linspace(1, 10, 100)
yi = np.linspace(1, 10, 100)
xo = np.linspace(1, 10, 500)
yo = np.linspace(1, 10, 500)
fi = np.linspace(1, 200, 10000000).reshape((100, 10, 100, 100))
#'''
chunks = {
'time': 1,
'alt': 1,
'lat': yi.shape,
'lon': xi.shape,
}
#'''
#'''
fi = xr.DataArray(
fi,
coords={
'lat': yi,
'lon': xi,
},
dims=['time', 'alt', 'lat', 'lon'],
).chunk(chunks)
#'''
fo = linint2pts(
fi,
xo,
yo,
)
if __name__ == '__main__':
cluster = dd.LocalCluster(n_workers=8, threads_per_worker=1)
print(cluster.dashboard_link)
client = dd.Client(cluster)
t0 = time.time()
fo = linint2_test()
t1 = time.time()
print(t1 - t0)
client.close()