Skip to content

Commit 581217f

Browse files
Added example
1 parent 02a0d2f commit 581217f

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

mkl-service/examples/example.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# Copyright (c) 2018, Intel Corporation
2+
#
3+
# Redistribution and use in source and binary forms, with or without
4+
# modification, are permitted provided that the following conditions are met:
5+
#
6+
# * Redistributions of source code must retain the above copyright notice,
7+
# this list of conditions and the following disclaimer.
8+
# * Redistributions in binary form must reproduce the above copyright
9+
# notice, this list of conditions and the following disclaimer in the
10+
# documentation and/or other materials provided with the distribution.
11+
# * Neither the name of Intel Corporation nor the names of its contributors
12+
# may be used to endorse or promote products derived from this software
13+
# without specific prior written permission.
14+
#
15+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
19+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
22+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25+
26+
27+
import mkl_service as mkl
28+
import re
29+
30+
31+
def enable_best_instructions_set():
32+
for instructions_set in ['avx512', 'avx2', 'avx', 'sse4_2']:
33+
if mkl.enable_instructions(instructions_set) == 'success':
34+
result = instructions_set
35+
break
36+
else:
37+
result = 'error'
38+
39+
return result
40+
41+
42+
def is_max_supported_instructions_set(instructions_set):
43+
result = False
44+
if re.search(instructions_set.replace('4_2', '4.2'), mkl.get_version()['Processor'].decode(), re.IGNORECASE):
45+
result = True
46+
47+
return result
48+
49+
50+
if __name__ == '__main__':
51+
time_begin = mkl.dsecnd()
52+
print(mkl.get_version_string())
53+
54+
instructions_set = enable_best_instructions_set()
55+
print('Enable snstructions set: ' + str(instructions_set))
56+
57+
is_max = is_max_supported_instructions_set(instructions_set)
58+
print('Is the best supported instructions set: ' + str(is_max))
59+
60+
time_end = mkl.dsecnd()
61+
print('Execution time: ' + str(time_end - time_begin))

0 commit comments

Comments
 (0)