Skip to content

Commit ef619bc

Browse files
QR + computing_units
1 parent ba0d982 commit ef619bc

File tree

40 files changed

+1595
-28
lines changed

40 files changed

+1595
-28
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -175,3 +175,5 @@ dkms.conf
175175
# Ignore log files
176176
*.log
177177

178+
# Ignore virtual environments
179+
venv

Jenkinsfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def setGithubCommitStatus(state, description) {
1111

1212
pipeline {
1313
options {
14-
timeout(time: 3, unit: 'HOURS')
14+
timeout(time: 4, unit: 'HOURS')
1515
}
1616
agent {
1717
node {

dislib/__init__.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import os
22

33
from dislib.data.array import random_array, apply_along_axis, array, zeros, \
4-
full, identity
4+
full, identity, eye
55
from dislib.data.io import load_svmlight_file, load_npy_file, load_txt_file, \
66
load_mdcrd_file, save_txt
77
from dislib.math import kron, svd
@@ -27,7 +27,7 @@
2727
"Probably it was not installed with setup.py.\n%s" % e)
2828
__version__ = 'unknown'
2929

30-
__all__ = ['array', 'random_array', 'zeros', 'full', 'identity',
30+
__all__ = ['array', 'random_array', 'zeros', 'full', 'identity', 'eye',
3131
'load_txt_file', 'load_svmlight_file', 'load_npy_file',
3232
'load_mdcrd_file', 'save_txt',
3333
'apply_along_axis', 'kron', 'svd']

dislib/classification/csvm/base.py

+7
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import numpy as np
44
from pycompss.api.api import compss_delete_object
55
from pycompss.api.api import compss_wait_on
6+
from pycompss.api.constraint import constraint
67
from pycompss.api.parameter import COLLECTION_IN, Depth, Type
78
from pycompss.api.task import task
89
from scipy.sparse import hstack as hstack_sp
@@ -383,12 +384,14 @@ def _linear_kernel(x):
383384
return np.dot(x, x.T)
384385

385386

387+
@constraint(computing_units="${ComputingUnits}")
386388
@task(returns=1)
387389
def _gen_ids(n_samples):
388390
idx = [[uuid4().int] for _ in range(n_samples)]
389391
return np.array(idx)
390392

391393

394+
@constraint(computing_units="${ComputingUnits}")
392395
@task(x_list={Type: COLLECTION_IN, Depth: 2},
393396
y_list={Type: COLLECTION_IN, Depth: 2},
394397
id_list={Type: COLLECTION_IN, Depth: 2},
@@ -414,18 +417,21 @@ def _train(x_list, y_list, id_list, random_state, **params):
414417
return sv, sv_labels, sv_ids, clf
415418

416419

420+
@constraint(computing_units="${ComputingUnits}")
417421
@task(x_list={Type: COLLECTION_IN, Depth: 2}, returns=np.array)
418422
def _predict(x_list, clf):
419423
x = Array._merge_blocks(x_list)
420424
return clf.predict(x).reshape(-1, 1)
421425

422426

427+
@constraint(computing_units="${ComputingUnits}")
423428
@task(x_list={Type: COLLECTION_IN, Depth: 2}, returns=np.array)
424429
def _decision_function(x_list, clf):
425430
x = Array._merge_blocks(x_list)
426431
return clf.decision_function(x).reshape(-1, 1)
427432

428433

434+
@constraint(computing_units="${ComputingUnits}")
429435
@task(x_list={Type: COLLECTION_IN, Depth: 2},
430436
y_list={Type: COLLECTION_IN, Depth: 2}, returns=tuple)
431437
def _score(x_list, y_list, clf):
@@ -438,6 +444,7 @@ def _score(x_list, y_list, clf):
438444
return np.sum(equal), x.shape[0]
439445

440446

447+
@constraint(computing_units="${ComputingUnits}")
441448
@task(returns=float)
442449
def _merge_scores(*partials):
443450
total_correct = 0.

dislib/cluster/daura/base.py

+6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from itertools import chain
22

33
from pycompss.api.api import compss_wait_on
4+
from pycompss.api.constraint import constraint
45
from pycompss.api.parameter import COLLECTION_IN, INOUT
56
from pycompss.api.task import task
67
from sklearn.base import BaseEstimator
@@ -72,11 +73,13 @@ def fit_predict(self, distances):
7273
return clusters
7374

7475

76+
@constraint(computing_units="${ComputingUnits}")
7577
@task(returns=1)
7678
def _get_neighbors(block, start_col, cutoff):
7779
return [np.flatnonzero(r <= cutoff) + start_col for r in block]
7880

7981

82+
@constraint(computing_units="${ComputingUnits}")
8083
@task(row_blocks_neighbors=COLLECTION_IN, returns=1)
8184
def _merge_neighbors(row_blocks_neighbors, start_idx):
8285
row_neighs = [set(chain(*nb)) for nb in zip(*row_blocks_neighbors)]
@@ -85,6 +88,7 @@ def _merge_neighbors(row_blocks_neighbors, start_idx):
8588
return row_neighs
8689

8790

91+
@constraint(computing_units="${ComputingUnits}")
8892
@task(returns=1)
8993
def _find_candidate_cluster(row_neighbors, start_row):
9094
argmax = max(range(len(row_neighbors)),
@@ -94,11 +98,13 @@ def _find_candidate_cluster(row_neighbors, start_row):
9498
return cluster
9599

96100

101+
@constraint(computing_units="${ComputingUnits}")
97102
@task(candidates=COLLECTION_IN, returns=1)
98103
def _find_largest_cluster(candidates):
99104
return max(candidates, key=len)
100105

101106

107+
@constraint(computing_units="${ComputingUnits}")
102108
@task(row_neighbors=INOUT)
103109
def _remove_neighbors(row_neighbors, to_remove, start_row):
104110
for r in to_remove:

dislib/cluster/dbscan/base.py

+8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import numpy as np
22
from pycompss.api.api import compss_wait_on
3+
from pycompss.api.constraint import constraint
34
from pycompss.api.parameter import COLLECTION_IN, COLLECTION_OUT, \
45
Type, Depth
56
from pycompss.api.task import task
@@ -311,6 +312,7 @@ def _rearrange_labels(labels, indices, n_blocks):
311312
return sorted_blocks
312313

313314

315+
@constraint(computing_units="${ComputingUnits}")
314316
@task(mn={Type: COLLECTION_IN, Depth: 2},
315317
mx={Type: COLLECTION_IN, Depth: 2},
316318
returns=1)
@@ -331,6 +333,7 @@ def _generate_bins(mn, mx, dimensions, n_regions):
331333
return bins
332334

333335

336+
@constraint(computing_units="${ComputingUnits}")
334337
@task(blocks={Type: COLLECTION_IN, Depth: 2},
335338
samples_list={Type: COLLECTION_OUT},
336339
indices={Type: COLLECTION_OUT})
@@ -372,6 +375,7 @@ def _arrange_block(blocks, bins, dimensions, shape, samples_list, indices):
372375
indices[i] = sample_indices
373376

374377

378+
@constraint(computing_units="${ComputingUnits}")
375379
@task(indices=COLLECTION_IN,
376380
blocks=COLLECTION_OUT)
377381
def _rearrange_region(labels, indices, blocks):
@@ -389,6 +393,7 @@ def _rearrange_region(labels, indices, blocks):
389393
start = end
390394

391395

396+
@constraint(computing_units="${ComputingUnits}")
392397
@task(samples_list={Type: COLLECTION_IN}, returns=2)
393398
def _merge_samples(samples_list, sparse):
394399
if sparse:
@@ -399,6 +404,7 @@ def _merge_samples(samples_list, sparse):
399404
return samples, samples.shape[0]
400405

401406

407+
@constraint(computing_units="${ComputingUnits}")
402408
@task(labels_list=COLLECTION_IN, indices=COLLECTION_IN, returns=1)
403409
def _merge_labels(labels_list, indices):
404410
labels = np.vstack(labels_list)
@@ -409,6 +415,7 @@ def _merge_labels(labels_list, indices):
409415
return np.take(labels, idx).reshape(-1, 1)
410416

411417

418+
@constraint(computing_units="${ComputingUnits}")
412419
@task(returns=1)
413420
def _merge_dicts(*dicts):
414421
merged_dict = {}
@@ -419,6 +426,7 @@ def _merge_dicts(*dicts):
419426
return merged_dict
420427

421428

429+
@constraint(computing_units="${ComputingUnits}")
422430
@task(returns=1)
423431
def _get_connected_components(equiv):
424432
# Add inverse equivalences

dislib/cluster/dbscan/classes.py

+6
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from itertools import chain
44

55
import numpy as np
6+
from pycompss.api.constraint import constraint
67
from pycompss.api.task import task
78
from scipy.sparse import lil_matrix, vstack as vstack_sparse
89
from scipy.sparse.csgraph import connected_components
@@ -89,6 +90,7 @@ def update_labels(self, components):
8990
components)
9091

9192

93+
@constraint(computing_units="${ComputingUnits}")
9294
@task(returns=1)
9395
def _update_labels(labels_region, labels, components):
9496
components_map = {}
@@ -102,6 +104,7 @@ def _update_labels(labels_region, labels, components):
102104
return labels
103105

104106

107+
@constraint(computing_units="${ComputingUnits}")
105108
@task(returns=3)
106109
def _compute_equivalences(n_samples, region_ids, *starred_args):
107110
n_regions = len(region_ids)
@@ -143,6 +146,7 @@ def _compute_equivalences(n_samples, region_ids, *starred_args):
143146
return label_regions, labels, equiv
144147

145148

149+
@constraint(computing_units="${ComputingUnits}")
146150
@task(returns=4)
147151
def _compute_neighbours(epsilon, min_samples, begin_idx, end_idx, samples,
148152
sparse, *neigh_samples):
@@ -196,11 +200,13 @@ def _concatenate_samples(sparse, *samples):
196200
return vstack_sparse(samples)
197201

198202

203+
@constraint(computing_units="${ComputingUnits}")
199204
@task(returns=1)
200205
def _lists_to_array(*cp_list):
201206
return np.concatenate(cp_list)
202207

203208

209+
@constraint(computing_units="${ComputingUnits}")
204210
@task(returns=1)
205211
def _compute_cp_labels(core_points, *in_cp_neighs):
206212
core_ids = np.cumsum(core_points) - 1

dislib/cluster/gm/base.py

+18
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import numpy as np
44
from numpy.random.mtrand import RandomState
55
from pycompss.api.api import compss_wait_on, compss_delete_object
6+
from pycompss.api.constraint import constraint
67
from pycompss.api.parameter import Type, COLLECTION_IN, Depth
78
from pycompss.api.task import task
89
from scipy import linalg
@@ -541,6 +542,7 @@ def _initialize_parameters(self, x, random_state):
541542
compss_delete_object(resp_block)
542543

543544

545+
@constraint(computing_units="${ComputingUnits}")
544546
@task(x={Type: COLLECTION_IN, Depth: 2},
545547
resp={Type: COLLECTION_IN, Depth: 2},
546548
returns=1)
@@ -564,6 +566,7 @@ def _reduce_estimate_parameters(partials, arity):
564566
return _finalize_parameters(partials[0])
565567

566568

569+
@constraint(computing_units="${ComputingUnits}")
567570
@task(returns=1)
568571
def _merge_estimate_parameters(*partials_params):
569572
n_samples = sum(params[0] for params in partials_params)
@@ -572,6 +575,7 @@ def _merge_estimate_parameters(*partials_params):
572575
return n_samples, nk, means
573576

574577

578+
@constraint(computing_units="${ComputingUnits}")
575579
@task(returns=3)
576580
def _finalize_parameters(params):
577581
n_samples = params[0]
@@ -634,6 +638,7 @@ def _estimate_covariances(x, resp, nk, means, reg_covar, covar_type, arity):
634638
return finalize_covariances(covar_type, reg_covar, nk, means, partials[0])
635639

636640

641+
@constraint(computing_units="${ComputingUnits}")
637642
@task(x={Type: COLLECTION_IN, Depth: 2},
638643
resp={Type: COLLECTION_IN, Depth: 2},
639644
returns=1)
@@ -654,6 +659,7 @@ def _partial_covar_full(resp, x, means):
654659
return covariances
655660

656661

662+
@constraint(computing_units="${ComputingUnits}")
657663
@task(x={Type: COLLECTION_IN, Depth: 2},
658664
returns=1)
659665
def _partial_covar_tied(x):
@@ -665,6 +671,7 @@ def _partial_covar_tied(x):
665671
return avg_sample_2
666672

667673

674+
@constraint(computing_units="${ComputingUnits}")
668675
@task(x={Type: COLLECTION_IN, Depth: 2},
669676
resp={Type: COLLECTION_IN, Depth: 2},
670677
returns=1)
@@ -680,11 +687,13 @@ def _partial_covar_diag(resp, x, means):
680687
return avg_resp_sample_2 - 2 * avg_sample_means
681688

682689

690+
@constraint(computing_units="${ComputingUnits}")
683691
@task(returns=1)
684692
def _sum_covar_partials(*covar_partials):
685693
return sum(covar_partials)
686694

687695

696+
@constraint(computing_units="${ComputingUnits}")
688697
@task(returns=2)
689698
def _finalize_covar_full(covar_type, reg_covar, nk, covariances):
690699
n_components, n_features, _ = covariances.shape
@@ -695,6 +704,7 @@ def _finalize_covar_full(covar_type, reg_covar, nk, covariances):
695704
return covariances, precisions_chol
696705

697706

707+
@constraint(computing_units="${ComputingUnits}")
698708
@task(returns=2)
699709
def _finalize_covar_tied(covar_type, reg_covar, nk, means, covariances):
700710
avg_means2 = np.dot(nk * means.T, means)
@@ -705,6 +715,7 @@ def _finalize_covar_tied(covar_type, reg_covar, nk, means, covariances):
705715
return covariances, precisions_chol
706716

707717

718+
@constraint(computing_units="${ComputingUnits}")
708719
@task(returns=2)
709720
def _finalize_covar_diag(covar_type, reg_covar, nk, means, covariances):
710721
covariances /= nk[:, np.newaxis]
@@ -714,6 +725,7 @@ def _finalize_covar_diag(covar_type, reg_covar, nk, means, covariances):
714725
return covariances, precisions_chol
715726

716727

728+
@constraint(computing_units="${ComputingUnits}")
717729
@task(returns=2)
718730
def _finalize_covar_spherical(covar_type, reg_covar, nk, means, covariances):
719731
covariances /= nk[:, np.newaxis]
@@ -775,18 +787,21 @@ def _compute_precision_cholesky(covariances, covariance_type):
775787
return precisions_chol
776788

777789

790+
@constraint(computing_units="${ComputingUnits}")
778791
@task(returns=1)
779792
def _sum_log_prob_norm(*partials):
780793
total, count = map(sum, zip(*partials))
781794
return total, count
782795

783796

797+
@constraint(computing_units="${ComputingUnits}")
784798
@task(returns=1)
785799
def _finalize_sum_log_prob_norm(*partials):
786800
total, count = map(sum, zip(*partials))
787801
return total / count
788802

789803

804+
@constraint(computing_units="${ComputingUnits}")
790805
@task(x={Type: COLLECTION_IN, Depth: 2}, returns=2)
791806
def _estimate_responsibilities(x, weights, means, precisions_cholesky,
792807
covariance_type):
@@ -964,12 +979,14 @@ def _resp_argmax(resp):
964979
return pred
965980

966981

982+
@constraint(computing_units="${ComputingUnits}")
967983
@task(resp={Type: COLLECTION_IN, Depth: 2}, returns=1)
968984
def _partial_resp_argmax(resp):
969985
resp = Array._merge_blocks(resp)
970986
return resp.argmax(axis=1)[:, np.newaxis]
971987

972988

989+
@constraint(computing_units="${ComputingUnits}")
973990
@task(labels={Type: COLLECTION_IN, Depth: 2}, returns=1)
974991
def _resp_subset(labels, n_components):
975992
labels = Array._merge_blocks(labels).flatten()
@@ -979,6 +996,7 @@ def _resp_subset(labels, n_components):
979996
return resp_chunk
980997

981998

999+
@constraint(computing_units="${ComputingUnits}")
9821000
@task(returns=1)
9831001
def _random_resp_subset(n_samples, n_components, seed):
9841002
resp_chunk = RandomState(seed).rand(n_samples, n_components)

0 commit comments

Comments
 (0)