Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
step = 1 + l // len(device_ids)
# Start process pool for multi-GPU request
if len(device_ids) > 1: # pragma: no cover
mp.set_start_method("spawn", force=True)
p = mp.Pool(processes=len(device_ids))
results = [None] * len(device_ids)
QT_fnames = []
QT_first_fnames = []
for idx, start in enumerate(range(0, l, step)):
stop = min(l, start + step)
QT, QT_first = _get_QT(start, T_A, T_B, m)
QT_fname = core.array_to_temp_file(QT)
QT_first_fname = core.array_to_temp_file(QT_first)
QT_fnames.append(QT_fname)
QT_first_fnames.append(QT_first_fname)
if len(device_ids) > 1 and idx < len(device_ids) - 1: # pragma: no cover
# Spawn and execute in child process for multi-GPU request
results[idx] = p.apply_async(
_gpu_stump,
(
T_A_fname,
T_B_fname,
m,
stop,
excl_zone,
M_T_fname,
Σ_T_fname,
logger.warning("Try setting `ignore_trivial = False`.")
# Swap T_A and T_B for GPU implementation
# This keeps the API identical to and compatible with `stumpy.stump`
tmp_T = T_A
T_A = T_B
T_B = tmp_T
n = T_B.shape[0]
k = T_A.shape[0] - m + 1
l = n - m + 1
excl_zone = int(np.ceil(m / 4)) # See Definition 3 and Figure 3
M_T, Σ_T = core.compute_mean_std(T_A, m)
μ_Q, σ_Q = core.compute_mean_std(T_B, m)
T_A_fname = core.array_to_temp_file(T_A)
T_B_fname = core.array_to_temp_file(T_B)
M_T_fname = core.array_to_temp_file(M_T)
Σ_T_fname = core.array_to_temp_file(Σ_T)
μ_Q_fname = core.array_to_temp_file(μ_Q)
σ_Q_fname = core.array_to_temp_file(σ_Q)
out = np.empty((k, 4), dtype=object)
if isinstance(device_id, int):
device_ids = [device_id]
else:
device_ids = device_id
profile: List[np.ndarray] = [None] * len(device_ids)
indices: List[np.ndarray] = [None] * len(device_ids)
tmp_T = T_A
T_A = T_B
T_B = tmp_T
n = T_B.shape[0]
k = T_A.shape[0] - m + 1
l = n - m + 1
excl_zone = int(np.ceil(m / 4)) # See Definition 3 and Figure 3
M_T, Σ_T = core.compute_mean_std(T_A, m)
μ_Q, σ_Q = core.compute_mean_std(T_B, m)
T_A_fname = core.array_to_temp_file(T_A)
T_B_fname = core.array_to_temp_file(T_B)
M_T_fname = core.array_to_temp_file(M_T)
Σ_T_fname = core.array_to_temp_file(Σ_T)
μ_Q_fname = core.array_to_temp_file(μ_Q)
σ_Q_fname = core.array_to_temp_file(σ_Q)
out = np.empty((k, 4), dtype=object)
if isinstance(device_id, int):
device_ids = [device_id]
else:
device_ids = device_id
profile: List[np.ndarray] = [None] * len(device_ids)
indices: List[np.ndarray] = [None] * len(device_ids)
for _id in device_ids:
with cuda.gpus[_id]:
if (
cuda.current_context().__class__.__name__ != "FakeCUDAContext"
# Swap T_A and T_B for GPU implementation
# This keeps the API identical to and compatible with `stumpy.stump`
tmp_T = T_A
T_A = T_B
T_B = tmp_T
n = T_B.shape[0]
k = T_A.shape[0] - m + 1
l = n - m + 1
excl_zone = int(np.ceil(m / 4)) # See Definition 3 and Figure 3
M_T, Σ_T = core.compute_mean_std(T_A, m)
μ_Q, σ_Q = core.compute_mean_std(T_B, m)
T_A_fname = core.array_to_temp_file(T_A)
T_B_fname = core.array_to_temp_file(T_B)
M_T_fname = core.array_to_temp_file(M_T)
Σ_T_fname = core.array_to_temp_file(Σ_T)
μ_Q_fname = core.array_to_temp_file(μ_Q)
σ_Q_fname = core.array_to_temp_file(σ_Q)
out = np.empty((k, 4), dtype=object)
if isinstance(device_id, int):
device_ids = [device_id]
else:
device_ids = device_id
profile: List[np.ndarray] = [None] * len(device_ids)
indices: List[np.ndarray] = [None] * len(device_ids)
for _id in device_ids:
with cuda.gpus[_id]:
device_μ_Q,
device_σ_Q,
k,
ignore_trivial,
excl_zone,
device_profile,
device_indices,
True,
)
profile = device_profile.copy_to_host()
indices = device_indices.copy_to_host()
profile = np.sqrt(profile)
profile_fname = core.array_to_temp_file(profile)
indices_fname = core.array_to_temp_file(indices)
return profile_fname, indices_fname
device_Σ_T,
device_μ_Q,
device_σ_Q,
k,
ignore_trivial,
excl_zone,
device_profile,
device_indices,
True,
)
profile = device_profile.copy_to_host()
indices = device_indices.copy_to_host()
profile = np.sqrt(profile)
profile_fname = core.array_to_temp_file(profile)
indices_fname = core.array_to_temp_file(indices)
return profile_fname, indices_fname
# Start process pool for multi-GPU request
if len(device_ids) > 1: # pragma: no cover
mp.set_start_method("spawn", force=True)
p = mp.Pool(processes=len(device_ids))
results = [None] * len(device_ids)
QT_fnames = []
QT_first_fnames = []
for idx, start in enumerate(range(0, l, step)):
stop = min(l, start + step)
QT, QT_first = _get_QT(start, T_A, T_B, m)
QT_fname = core.array_to_temp_file(QT)
QT_first_fname = core.array_to_temp_file(QT_first)
QT_fnames.append(QT_fname)
QT_first_fnames.append(QT_first_fname)
if len(device_ids) > 1 and idx < len(device_ids) - 1: # pragma: no cover
# Spawn and execute in child process for multi-GPU request
results[idx] = p.apply_async(
_gpu_stump,
(
T_A_fname,
T_B_fname,
m,
stop,
excl_zone,
M_T_fname,
Σ_T_fname,
QT_fname,
T_A = T_B
T_B = tmp_T
n = T_B.shape[0]
k = T_A.shape[0] - m + 1
l = n - m + 1
excl_zone = int(np.ceil(m / 4)) # See Definition 3 and Figure 3
M_T, Σ_T = core.compute_mean_std(T_A, m)
μ_Q, σ_Q = core.compute_mean_std(T_B, m)
T_A_fname = core.array_to_temp_file(T_A)
T_B_fname = core.array_to_temp_file(T_B)
M_T_fname = core.array_to_temp_file(M_T)
Σ_T_fname = core.array_to_temp_file(Σ_T)
μ_Q_fname = core.array_to_temp_file(μ_Q)
σ_Q_fname = core.array_to_temp_file(σ_Q)
out = np.empty((k, 4), dtype=object)
if isinstance(device_id, int):
device_ids = [device_id]
else:
device_ids = device_id
profile: List[np.ndarray] = [None] * len(device_ids)
indices: List[np.ndarray] = [None] * len(device_ids)
for _id in device_ids:
with cuda.gpus[_id]:
if (
cuda.current_context().__class__.__name__ != "FakeCUDAContext"
): # pragma: no cover
# Swap T_A and T_B for GPU implementation
# This keeps the API identical to and compatible with `stumpy.stump`
tmp_T = T_A
T_A = T_B
T_B = tmp_T
n = T_B.shape[0]
k = T_A.shape[0] - m + 1
l = n - m + 1
excl_zone = int(np.ceil(m / 4)) # See Definition 3 and Figure 3
M_T, Σ_T = core.compute_mean_std(T_A, m)
μ_Q, σ_Q = core.compute_mean_std(T_B, m)
T_A_fname = core.array_to_temp_file(T_A)
T_B_fname = core.array_to_temp_file(T_B)
M_T_fname = core.array_to_temp_file(M_T)
Σ_T_fname = core.array_to_temp_file(Σ_T)
μ_Q_fname = core.array_to_temp_file(μ_Q)
σ_Q_fname = core.array_to_temp_file(σ_Q)
out = np.empty((k, 4), dtype=object)
if isinstance(device_id, int):
device_ids = [device_id]
else:
device_ids = device_id
profile: List[np.ndarray] = [None] * len(device_ids)
indices: List[np.ndarray] = [None] * len(device_ids)
for _id in device_ids: