Skip to content

Commit 03fd588

Browse files
committed
Fix of getFPType import for newer daal4py, distances benchs change
1 parent 562e47d commit 03fd588

File tree

17 files changed

+161
-117
lines changed

17 files changed

+161
-117
lines changed

config_example.json

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,36 @@
9292
"algorithm": "svm",
9393
"dataset": [
9494
{
95-
"training": "synth_clsf_100000_100_2"
95+
"training": "synth_clsf_20000_100_2"
9696
},
9797
{
98-
"training": "synth_clsf_100000_100_5"
98+
"training": "synth_clsf_20000_100_5"
9999
}
100100
],
101-
"max-cache-size": [96],
101+
"max-cache-size": [4],
102102
"kernel": ["rbf"]
103+
},
104+
{
105+
"lib": ["xgboost"],
106+
"algorithm": "gbt",
107+
"dataset": [
108+
{
109+
"training": "synth_clsf_10000_100_2"
110+
}
111+
],
112+
"tree-method": ["hist"],
113+
"objective": ["binary:logistic"]
114+
},
115+
{
116+
"lib": ["xgboost"],
117+
"algorithm": "gbt",
118+
"dataset": [
119+
{
120+
"training": "synth_reg_10000_100"
121+
}
122+
],
123+
"tree-method": ["hist"],
124+
"objective": ["reg:squarederror"]
103125
}
104126
]
105127
}

cuml/bench.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def parse_args(parser, size=None, loop_types=(),
106106
parser.add_argument('--time-method', type=str, default='mean_min',
107107
choices=('box_filter', 'mean_min'),
108108
help='Method used for time mesurements')
109-
parser.add_argument('--n-meas', type=int, default=100,
109+
parser.add_argument('--box-filter-measurements', type=int, default=100,
110110
help='Maximum number of measurements in box filter')
111111
parser.add_argument('--inner-loops', default=100, type=int,
112112
help='Maximum inner loop iterations '
@@ -226,10 +226,10 @@ def measure_function_time(func, *args, params, **kwargs):
226226
inner_loops=params.inner_loops,
227227
goal_outer_loops=params.goal,
228228
time_limit=params.time_limit,
229-
verbose=params.verbose)
229+
verbose=params.verbose, **kwargs)
230230
else:
231231
return time_box_filter(func, *args, n_meas=params.n_meas,
232-
time_limit=params.time_limit)
232+
time_limit=params.time_limit, **kwargs)
233233

234234

235235
def time_box_filter(func, *args, n_meas, time_limit, **kwargs):
@@ -559,6 +559,7 @@ def print_output(library, algorithm, stages, columns, params, functions,
559559
if params.output_format == 'csv':
560560
output_csv(columns, params, functions, times, accuracies)
561561
elif params.output_format == 'json':
562+
output = []
562563
for i in range(len(stages)):
563564
result = gen_basic_dict(library, algorithm, stages[i], params,
564565
data[i], alg_instance, alg_params)
@@ -580,5 +581,13 @@ def print_output(library, algorithm, stages, columns, params, functions,
580581
result['algorithm_parameters']['init'] = 'random'
581582
if 'handle' in result['algorithm_parameters'].keys():
582583
del result['algorithm_parameters']['handle']
583-
print(json.dumps(result, indent=4),
584-
end=',\n' if i != len(stages) - 1 else '\n')
584+
output.append(result)
585+
print(json.dumps(output, indent=4))
586+
587+
588+
def import_fptype_getter():
589+
try:
590+
from daal4py.sklearn._utils import getFPType
591+
except:
592+
from daal4py.sklearn.utils import getFPType
593+
return getFPType

daal4py/bench.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def parse_args(parser, size=None, loop_types=(),
106106
parser.add_argument('--time-method', type=str, default='mean_min',
107107
choices=('box_filter', 'mean_min'),
108108
help='Method used for time mesurements')
109-
parser.add_argument('--n-meas', type=int, default=100,
109+
parser.add_argument('--box-filter-measurements', type=int, default=100,
110110
help='Maximum number of measurements in box filter')
111111
parser.add_argument('--inner-loops', default=100, type=int,
112112
help='Maximum inner loop iterations '
@@ -226,10 +226,10 @@ def measure_function_time(func, *args, params, **kwargs):
226226
inner_loops=params.inner_loops,
227227
goal_outer_loops=params.goal,
228228
time_limit=params.time_limit,
229-
verbose=params.verbose)
229+
verbose=params.verbose, **kwargs)
230230
else:
231231
return time_box_filter(func, *args, n_meas=params.n_meas,
232-
time_limit=params.time_limit)
232+
time_limit=params.time_limit, **kwargs)
233233

234234

235235
def time_box_filter(func, *args, n_meas, time_limit, **kwargs):
@@ -559,6 +559,7 @@ def print_output(library, algorithm, stages, columns, params, functions,
559559
if params.output_format == 'csv':
560560
output_csv(columns, params, functions, times, accuracies)
561561
elif params.output_format == 'json':
562+
output = []
562563
for i in range(len(stages)):
563564
result = gen_basic_dict(library, algorithm, stages[i], params,
564565
data[i], alg_instance, alg_params)
@@ -580,5 +581,13 @@ def print_output(library, algorithm, stages, columns, params, functions,
580581
result['algorithm_parameters']['init'] = 'random'
581582
if 'handle' in result['algorithm_parameters'].keys():
582583
del result['algorithm_parameters']['handle']
583-
print(json.dumps(result, indent=4),
584-
end=',\n' if i != len(stages) - 1 else '\n')
584+
output.append(result)
585+
print(json.dumps(output, indent=4))
586+
587+
588+
def import_fptype_getter():
589+
try:
590+
from daal4py.sklearn._utils import getFPType
591+
except:
592+
from daal4py.sklearn.utils import getFPType
593+
return getFPType

daal4py/dbscan.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@
33
# SPDX-License-Identifier: MIT
44

55
import argparse
6-
from bench import parse_args, measure_function_time, load_data, print_output
6+
from bench import (
7+
parse_args, measure_function_time, load_data, print_output,
8+
import_fptype_getter
9+
)
710
from daal4py import dbscan
8-
from daal4py.sklearn.utils import getFPType
11+
getFPType = import_fptype_getter()
12+
913

1014
parser = argparse.ArgumentParser(description='daal4py DBSCAN clustering '
1115
'benchmark')

daal4py/df_clsf.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
import argparse
66
from bench import (
77
parse_args, measure_function_time, load_data, print_output, accuracy_score,
8-
float_or_int
8+
float_or_int, import_fptype_getter
99
)
1010
import numpy as np
1111
from daal4py import (
1212
decision_forest_classification_training,
1313
decision_forest_classification_prediction, engines_mt2203
1414
)
15-
from daal4py.sklearn.utils import getFPType
15+
getFPType = import_fptype_getter()
1616

1717

1818
def df_clsf_fit(X, y, n_classes, n_trees=100, seed=12345,

daal4py/df_regr.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@
66
import argparse
77
from bench import (
88
parse_args, measure_function_time, load_data, print_output, rmse_score,
9-
float_or_int
9+
float_or_int, import_fptype_getter
1010
)
11-
from daal4py import decision_forest_regression_training, \
12-
decision_forest_regression_prediction, \
13-
engines_mt2203
14-
from daal4py.sklearn.utils import getFPType
11+
from daal4py import (
12+
decision_forest_regression_training,
13+
decision_forest_regression_prediction,
14+
engines_mt2203
15+
)
16+
getFPType = import_fptype_getter()
1517

1618

1719
def df_regr_fit(X, y, n_trees=100, seed=12345, n_features_per_node=0,

daal4py/distances.py

Lines changed: 24 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -4,50 +4,38 @@
44

55
import argparse
66
from bench import (
7-
parse_args, measure_function_time, print_header, print_row, load_data,
8-
gen_basic_dict
7+
parse_args, measure_function_time, print_output, load_data,
8+
import_fptype_getter
99
)
1010
import daal4py
11-
from daal4py.sklearn.utils import getFPType
11+
getFPType = import_fptype_getter()
1212

13-
parser = argparse.ArgumentParser(description='daal4py pairwise distances '
14-
'benchmark')
15-
parser.add_argument('--metrics', nargs='*', default=['cosine', 'correlation'],
16-
choices=('cosine', 'correlation'),
17-
help='Metrics to test for pairwise_distances')
18-
params = parse_args(parser, size=(1000, 150000), prefix='daal4py')
19-
20-
# Generate random data
21-
X, _, _, _ = load_data(params, generated_data=['X_train'], add_dtype=True)
22-
23-
columns = ('batch', 'arch', 'prefix', 'function', 'threads', 'dtype', 'size',
24-
'time')
2513

26-
if params.output_format == 'csv':
27-
print_header(columns, params)
14+
def compute_distances(pairwise_distances, X):
15+
algorithm = pairwise_distances(fptype=getFPType(X))
16+
return algorithm.compute(X)
2817

29-
for metric in params.metrics:
30-
pairwise_distances = getattr(daal4py, f'{metric}_distance')
3118

32-
def test_distances(pairwise_distances, X):
33-
algorithm = pairwise_distances(fptype=getFPType(X))
34-
return algorithm.compute(X)
19+
parser = argparse.ArgumentParser(description='daal4py pairwise distances '
20+
'benchmark')
21+
parser.add_argument('--metric', default='cosine',
22+
choices=['cosine', 'correlation'],
23+
help='Metric to test for pairwise distances')
24+
params = parse_args(parser, size=(1000, 150000))
3525

36-
time, _ = measure_function_time(
37-
test_distances, pairwise_distances, X, params=params)
26+
# Load data
27+
X, _, _, _ = load_data(params, generated_data=['X_train'], add_dtype=True)
3828

39-
if params.output_format == 'csv':
40-
print_row(columns, params, function=metric.capitalize(), time=time)
41-
elif params.output_format == 'json':
42-
import json
29+
pairwise_distances = getattr(daal4py, f'{params.metric}_distance')
4330

44-
result = gen_basic_dict('daal4py', 'distances', 'computation',
45-
params, X)
31+
time, _ = measure_function_time(
32+
compute_distances, pairwise_distances, X, params=params)
4633

47-
result.update({
48-
'metric': metric,
49-
'time[s]': time
50-
})
34+
columns = ('batch', 'arch', 'prefix', 'function', 'threads', 'dtype', 'size',
35+
'time')
5136

52-
print(json.dumps(result, indent=4),
53-
end=',\n' if metric != params.metrics[-1] else '\n')
37+
print_output(library='daal4py', algorithm='distances', stages=['computation'],
38+
columns=columns, params=params,
39+
functions=[params.metric.capitalize()], times=[time],
40+
accuracy_type=None, accuracies=[None], data=[X],
41+
alg_params={'metric': params.metric})

daal4py/kmeans.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@
44

55
import argparse
66
from bench import (
7-
parse_args, measure_function_time, load_data, print_output
7+
parse_args, measure_function_time, load_data, print_output,
8+
import_fptype_getter
89
)
9-
from daal4py import kmeans
10-
from daal4py.sklearn.utils import getFPType
1110
import numpy as np
11+
from daal4py import kmeans
12+
getFPType = import_fptype_getter()
13+
1214

1315
parser = argparse.ArgumentParser(description='daal4py K-Means clustering '
1416
'benchmark')

daal4py/linear.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44

55
import argparse
66
from bench import (
7-
parse_args, measure_function_time, load_data, print_output, rmse_score
7+
parse_args, measure_function_time, load_data, print_output, rmse_score,
8+
import_fptype_getter
89
)
910
from daal4py import linear_regression_training, linear_regression_prediction
10-
from daal4py.sklearn.utils import getFPType
11+
getFPType = import_fptype_getter()
1112

1213

1314
parser = argparse.ArgumentParser(description='daal4py linear regression '

daal4py/log_reg.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44

55
import argparse
66
from bench import (
7-
parse_args, measure_function_time, load_data, print_output, accuracy_score
7+
parse_args, measure_function_time, load_data, print_output, accuracy_score,
8+
import_fptype_getter
89
)
910
import numpy as np
1011
import daal4py
1112
from daal4py import math_logistic, math_softmax
12-
from daal4py.sklearn.utils import getFPType, make2d
13+
from daal4py.sklearn.utils import make2d
1314
import scipy.optimize
15+
getFPType = import_fptype_getter()
1416

1517
_logistic_loss = daal4py.optimization_solver_logistic_loss
1618
_cross_entropy_loss = daal4py.optimization_solver_cross_entropy_loss

0 commit comments

Comments
 (0)