Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1# coding: utf-8
2"""
3Template to develop a python module using
4:epkg:`cython` and :epkg:`openmp`.
5"""
7__version__ = "0.1.2"
8__author__ = "Xavier Dupré"
11def check(verbose=1):
12 """
13 Runs a couple of functions to check the module is working.
15 :param verbose: 0 to hide the standout output
16 :return: list of dictionaries, result of each test
17 """
18 import pprint
19 import numpy
20 from .tutorial import pydot, cblas_ddot, cblas_sdot
21 from .tutorial.dot_cython import (
22 dot_product, ddot_cython_array,
23 ddot_cython_array_optim, ddot_array,
24 ddot_array_16, ddot_array_16_sse
25 )
26 from .tutorial.dot_cython import (
27 sdot_cython_array,
28 sdot_cython_array_optim, sdot_array,
29 sdot_array_16, sdot_array_16_sse
30 )
31 from .tools import measure_time
32 rows = []
34 # double
35 if verbose > 0:
36 print("\ndouble\n")
38 va = numpy.random.randn(100).astype(numpy.float64)
39 vb = numpy.random.randn(100).astype(numpy.float64)
40 fcts = [
41 ('pydot', pydot, 1),
42 ('numpy.dot', numpy.dot),
43 ('ddot', cblas_ddot),
44 ('dot_product', dot_product),
45 ('ddot_cython_array', ddot_cython_array),
46 ('ddot_cython_array_optim', ddot_cython_array_optim),
47 ('ddot_array', ddot_array),
48 ('ddot_array_16', ddot_array_16),
49 ('ddot_array_16_sse', ddot_array_16_sse),
50 ]
52 for tu in fcts:
53 name, fct = tu[:2]
54 ctx = {'va': va, 'vb': vb, 'fctdot': fct}
55 if len(tu) == 3:
56 res = measure_time('fctdot(va, vb)', ctx, repeat=tu[2])
57 else:
58 res = measure_time('fctdot(va, vb)', ctx)
59 res['name'] = name
60 if verbose > 0:
61 pprint.pprint(res)
62 rows.append(res)
64 # float
65 if verbose > 0:
66 print("\nfloat\n")
68 va = numpy.random.randn(100).astype(numpy.float32)
69 vb = numpy.random.randn(100).astype(numpy.float32)
70 fcts = [
71 ('pydot', pydot, 1),
72 ('numpy.dot', numpy.dot),
73 ('sdot', cblas_sdot),
74 ('sdot_cython_array', sdot_cython_array),
75 ('sdot_cython_array_optim', sdot_cython_array_optim),
76 ('sdot_array', sdot_array),
77 ('sdot_array_16', sdot_array_16),
78 ('sdot_array_16_sse', sdot_array_16_sse),
79 ]
81 for tu in fcts:
82 name, fct = tu[:2]
83 ctx = {'va': va, 'vb': vb, 'fctdot': fct}
84 if len(tu) == 3:
85 res = measure_time('fctdot(va, vb)', ctx, repeat=tu[2])
86 else:
87 res = measure_time('fctdot(va, vb)', ctx)
88 res['name'] = name
89 if verbose > 0:
90 pprint.pprint(res)
91 rows.append(res)
93 return rows