25
25
26
26
27
27
cimport _mkl_service as mkl
28
- from enum import IntEnum
29
-
30
-
31
- class enums (IntEnum ):
32
- # MKL Function Domains Constants
33
- MKL_DOMAIN_BLAS = mkl.MKL_DOMAIN_BLAS
34
- MKL_DOMAIN_FFT = mkl.MKL_DOMAIN_FFT
35
- MKL_DOMAIN_VML = mkl.MKL_DOMAIN_VML
36
- MKL_DOMAIN_PARDISO = mkl.MKL_DOMAIN_PARDISO
37
- MKL_DOMAIN_ALL = mkl.MKL_DOMAIN_ALL
38
-
39
- # MKL Peak Memory Usage Constants
40
- MKL_PEAK_MEM_ENABLE = mkl.MKL_PEAK_MEM_ENABLE
41
- MKL_PEAK_MEM_DISABLE = mkl.MKL_PEAK_MEM_DISABLE
42
- MKL_PEAK_MEM = mkl.MKL_PEAK_MEM
43
- MKL_PEAK_MEM_RESET = mkl.MKL_PEAK_MEM_RESET
44
-
45
- # CNR Control Constants
46
- MKL_CBWR_AUTO = mkl.MKL_CBWR_AUTO
47
- MKL_CBWR_COMPATIBLE = mkl.MKL_CBWR_COMPATIBLE
48
- MKL_CBWR_SSE2 = mkl.MKL_CBWR_SSE2
49
- MKL_CBWR_SSE3 = mkl.MKL_CBWR_SSE3
50
- MKL_CBWR_SSSE3 = mkl.MKL_CBWR_SSSE3
51
- MKL_CBWR_SSE4_1 = mkl.MKL_CBWR_SSE4_1
52
- MKL_CBWR_SSE4_2 = mkl.MKL_CBWR_SSE4_2
53
- MKL_CBWR_AVX = mkl.MKL_CBWR_AVX
54
- MKL_CBWR_AVX2 = mkl.MKL_CBWR_AVX2
55
- MKL_CBWR_AVX512_MIC = mkl.MKL_CBWR_AVX512_MIC
56
- MKL_CBWR_AVX512 = mkl.MKL_CBWR_AVX512_MIC
57
- MKL_CBWR_BRANCH = mkl.MKL_CBWR_BRANCH
58
- MKL_CBWR_ALL = mkl.MKL_CBWR_ALL
59
- MKL_CBWR_SUCCESS = mkl.MKL_CBWR_SUCCESS
60
- MKL_CBWR_BRANCH_OFF = mkl.MKL_CBWR_BRANCH_OFF
61
- MKL_CBWR_ERR_INVALID_INPUT = mkl.MKL_CBWR_ERR_INVALID_INPUT
62
- MKL_CBWR_ERR_UNSUPPORTED_BRANCH = mkl.MKL_CBWR_ERR_UNSUPPORTED_BRANCH
63
- MKL_CBWR_ERR_MODE_CHANGE_FAILURE = mkl.MKL_CBWR_ERR_MODE_CHANGE_FAILURE
64
-
65
- # ISA Constants
66
- MKL_ENABLE_AVX512_MIC_E1 = mkl.MKL_ENABLE_AVX512_MIC_E1
67
- MKL_ENABLE_AVX512 = mkl.MKL_ENABLE_AVX512
68
- MKL_ENABLE_AVX512_MIC = mkl.MKL_ENABLE_AVX512_MIC
69
- MKL_ENABLE_AVX2 = mkl.MKL_ENABLE_AVX2
70
- MKL_ENABLE_AVX = mkl.MKL_ENABLE_AVX
71
- MKL_ENABLE_SSE4_2 = mkl.MKL_ENABLE_SSE4_2
72
-
73
- # MPI Implementation Constants
74
- MKL_BLACS_CUSTOM = mkl.MKL_BLACS_CUSTOM
75
- MKL_BLACS_MSMPI = mkl.MKL_BLACS_MSMPI
76
- MKL_BLACS_INTELMPI = mkl.MKL_BLACS_INTELMPI
77
- MKL_BLACS_MPICH2 = mkl.MKL_BLACS_MPICH2
78
-
79
- # unsigned int vmlSetMode(unsigned int mode)
80
- # In
81
- VML_HA = mkl.VML_HA
82
- VML_LA = mkl.VML_LA
83
- VML_EP = mkl.VML_EP
84
- VML_FTZDAZ_ON = mkl.VML_FTZDAZ_ON
85
- VML_FTZDAZ_OFF = mkl.VML_FTZDAZ_OFF
86
- VML_ERRMODE_IGNORE = mkl.VML_ERRMODE_IGNORE
87
- VML_ERRMODE_ERRNO = mkl.VML_ERRMODE_ERRNO
88
- VML_ERRMODE_STDERR = mkl.VML_ERRMODE_STDERR
89
- VML_ERRMODE_EXCEPT = mkl.VML_ERRMODE_EXCEPT
90
- VML_ERRMODE_CALLBACK = mkl.VML_ERRMODE_CALLBACK
91
- VML_ERRMODE_DEFAULT = mkl.VML_ERRMODE_DEFAULT
92
-
93
- # int vmlSetErrStatus(const MKL_INT status)
94
- # In
95
- VML_STATUS_OK = mkl.VML_STATUS_OK
96
- VML_STATUS_ACCURACYWARNING = mkl.VML_STATUS_ACCURACYWARNING
97
- VML_STATUS_BADSIZE = mkl.VML_STATUS_BADSIZE
98
- VML_STATUS_BADMEM = mkl.VML_STATUS_BADMEM
99
- VML_STATUS_ERRDOM = mkl.VML_STATUS_ERRDOM
100
- VML_STATUS_SING = mkl.VML_STATUS_SING
101
- VML_STATUS_OVERFLOW = mkl.VML_STATUS_OVERFLOW
102
- VML_STATUS_UNDERFLOW = mkl.VML_STATUS_UNDERFLOW
103
-
104
-
105
- def __str_or_enum_to_mkl_int (variable , possible_variables_dict ):
28
+
29
+
30
+ def __mkl_str_to_int (variable , possible_variables_dict ):
106
31
assert (variable is not None )
107
32
assert (possible_variables_dict is not None )
108
33
@@ -111,11 +36,6 @@ def __str_or_enum_to_mkl_int(variable, possible_variables_dict):
111
36
if variable_type is str :
112
37
assert (variable in possible_variables_dict.keys()), ' Variable: <' + str (variable) + ' > not in ' + str (possible_variables_dict)
113
38
mkl_variable = possible_variables_dict[variable]
114
- else :
115
- assert (issubclass (variable_type, IntEnum))
116
- assert (type (variable.value) is int )
117
- assert (variable.value in possible_variables_dict.values()), ' Variable: <' + str (variable) + ' > not in ' + str (possible_variables_dict)
118
- mkl_variable = variable.value
119
39
120
40
return mkl_variable
121
41
@@ -189,7 +109,7 @@ def domain_set_num_threads(num_threads, domain='all'):
189
109
}
190
110
assert (type (num_threads) is int )
191
111
assert (num_threads >= 0 )
192
- mkl_domain = __str_or_enum_to_mkl_int (domain, __variables[' input' ])
112
+ mkl_domain = __mkl_str_to_int (domain, __variables[' input' ])
193
113
194
114
mkl_status = mkl.mkl_domain_set_num_threads(num_threads, mkl_domain)
195
115
@@ -255,7 +175,7 @@ def domain_get_max_threads(domain='all'):
255
175
},
256
176
' output' : None ,
257
177
}
258
- mkl_domain = __str_or_enum_to_mkl_int (domain, __variables[' input' ])
178
+ mkl_domain = __mkl_str_to_int (domain, __variables[' input' ])
259
179
260
180
num_threads = mkl.mkl_domain_get_max_threads(mkl_domain)
261
181
@@ -380,7 +300,7 @@ def peak_mem_usage(mem_const):
380
300
},
381
301
' output' : None ,
382
302
}
383
- mkl_mem_const = __str_or_enum_to_mkl_int (mem_const, __variables[' input' ])
303
+ mkl_mem_const = __mkl_str_to_int (mem_const, __variables[' input' ])
384
304
385
305
memory_allocator = mkl.mkl_peak_mem_usage(mkl_mem_const)
386
306
@@ -444,7 +364,7 @@ def cbwr_set(branch=None):
444
364
mkl.MKL_CBWR_ERR_MODE_CHANGE_FAILURE: ' err_mode_change_failure' ,
445
365
},
446
366
}
447
- mkl_branch = __str_or_enum_to_mkl_int (branch, __variables[' input' ])
367
+ mkl_branch = __mkl_str_to_int (branch, __variables[' input' ])
448
368
449
369
mkl_status = mkl.mkl_cbwr_set(mkl_branch)
450
370
@@ -469,7 +389,7 @@ def cbwr_get(cnr_const=None):
469
389
},
470
390
}
471
391
__variables[' output' ].update({value: key for key, value in __mkl_cbwr_const.items()})
472
- mkl_cnr_const = __str_or_enum_to_mkl_int (cnr_const, __variables[' input' ])
392
+ mkl_cnr_const = __mkl_str_to_int (cnr_const, __variables[' input' ])
473
393
474
394
mkl_status = mkl.mkl_cbwr_get(mkl_cnr_const)
475
395
@@ -514,7 +434,7 @@ def enable_instructions(isa=None):
514
434
1 : ' success' ,
515
435
},
516
436
}
517
- mkl_isa = __str_or_enum_to_mkl_int (isa, __variables[' input' ])
437
+ mkl_isa = __mkl_str_to_int (isa, __variables[' input' ])
518
438
519
439
mkl_status = mkl.mkl_enable_instructions(mkl_isa)
520
440
@@ -586,7 +506,7 @@ def set_mpi(vendor, custom_library_name):
586
506
- 3 : ' MPI library cannot be set at this point' ,
587
507
},
588
508
}
589
- mkl_vendor = __str_or_enum_to_mkl_int (vendor, __variables[' input' ])
509
+ mkl_vendor = __mkl_str_to_int (vendor, __variables[' input' ])
590
510
591
511
cdef bytes c_bytes = custom_library_name.encode()
592
512
cdef char * c_string = c_bytes
@@ -634,9 +554,9 @@ def vml_set_mode(accuracy, ftzdaz, errmode):
634
554
__variables[' output' ][' accuracy' ].update({value: key for key, value in __mkl_vml_mode[' accuracy' ].items()})
635
555
__variables[' output' ][' ftzdaz' ].update({value: key for key, value in __mkl_vml_mode[' ftzdaz' ].items()})
636
556
__variables[' output' ][' errmode' ].update({value: key for key, value in __mkl_vml_mode[' errmode' ].items()})
637
- mkl_accuracy = __str_or_enum_to_mkl_int (accuracy, __variables[' input' ][' accuracy' ])
638
- mkl_ftzdaz = __str_or_enum_to_mkl_int (ftzdaz, __variables[' input' ][' ftzdaz' ])
639
- mkl_errmode = __str_or_enum_to_mkl_int (errmode, __variables[' input' ][' errmode' ])
557
+ mkl_accuracy = __mkl_str_to_int (accuracy, __variables[' input' ][' accuracy' ])
558
+ mkl_ftzdaz = __mkl_str_to_int (ftzdaz, __variables[' input' ][' ftzdaz' ])
559
+ mkl_errmode = __mkl_str_to_int (errmode, __variables[' input' ][' errmode' ])
640
560
641
561
status = mkl.vmlSetMode(mkl_accuracy | mkl_ftzdaz | mkl_errmode)
642
562
@@ -693,7 +613,7 @@ def vml_set_err_status(status):
693
613
' output' : {},
694
614
}
695
615
__variables[' output' ].update({value: key for key, value in __mkl_vml_status.items()})
696
- mkl_status_in = __str_or_enum_to_mkl_int (status, __variables[' input' ])
616
+ mkl_status_in = __mkl_str_to_int (status, __variables[' input' ])
697
617
698
618
mkl_status_out = mkl.vmlSetErrStatus(mkl_status_in)
699
619
0 commit comments