|
12 | 12 | lapack_atlas_info
|
13 | 13 | blas_info
|
14 | 14 | lapack_info
|
| 15 | + openblas_info |
15 | 16 | blas_opt_info # usage recommended
|
16 | 17 | lapack_opt_info # usage recommended
|
17 | 18 | fftw_info,dfftw_info,sfftw_info
|
|
119 | 120 | import warnings
|
120 | 121 | from glob import glob
|
121 | 122 | from functools import reduce
|
122 |
| - |
123 | 123 | if sys.version_info[0] < 3:
|
124 | 124 | from ConfigParser import NoOptionError, ConfigParser
|
125 | 125 | else:
|
@@ -298,6 +298,7 @@ def get_info(name, notfound_action=0):
|
298 | 298 | 'lapack_atlas': lapack_atlas_info, # use lapack_opt instead
|
299 | 299 | 'lapack_atlas_threads': lapack_atlas_threads_info, # ditto
|
300 | 300 | 'mkl': mkl_info,
|
| 301 | + 'openblas': openblas_info, # use blas_opt instead |
301 | 302 | 'lapack_mkl': lapack_mkl_info, # use lapack_opt instead
|
302 | 303 | 'blas_mkl': blas_mkl_info, # use blas_opt instead
|
303 | 304 | 'x11': x11_info,
|
@@ -1366,7 +1367,22 @@ class lapack_opt_info(system_info):
|
1366 | 1367 |
|
1367 | 1368 | def calc_info(self):
|
1368 | 1369 |
|
1369 |
| - if sys.platform == 'darwin' and not os.environ.get('ATLAS', None): |
| 1370 | + openblas_info = get_info('openblas') |
| 1371 | + if openblas_info: |
| 1372 | + self.set_info(**openblas_info) |
| 1373 | + return |
| 1374 | + |
| 1375 | + lapack_mkl_info = get_info('lapack_mkl') |
| 1376 | + if lapack_mkl_info: |
| 1377 | + self.set_info(**lapack_mkl_info) |
| 1378 | + return |
| 1379 | + |
| 1380 | + atlas_info = get_info('atlas_threads') |
| 1381 | + if not atlas_info: |
| 1382 | + atlas_info = get_info('atlas') |
| 1383 | + |
| 1384 | + if sys.platform == 'darwin' and not atlas_info: |
| 1385 | + # Use the system lapack from Accelerate or vecLib under OSX |
1370 | 1386 | args = []
|
1371 | 1387 | link_args = []
|
1372 | 1388 | if get_platform()[-4:] == 'i386' or 'intel' in get_platform() or \
|
@@ -1394,14 +1410,6 @@ def calc_info(self):
|
1394 | 1410 | define_macros=[('NO_ATLAS_INFO', 3)])
|
1395 | 1411 | return
|
1396 | 1412 |
|
1397 |
| - lapack_mkl_info = get_info('lapack_mkl') |
1398 |
| - if lapack_mkl_info: |
1399 |
| - self.set_info(**lapack_mkl_info) |
1400 |
| - return |
1401 |
| - |
1402 |
| - atlas_info = get_info('atlas_threads') |
1403 |
| - if not atlas_info: |
1404 |
| - atlas_info = get_info('atlas') |
1405 | 1413 | #atlas_info = {} ## uncomment for testing
|
1406 | 1414 | need_lapack = 0
|
1407 | 1415 | need_blas = 0
|
@@ -1455,7 +1463,22 @@ class blas_opt_info(system_info):
|
1455 | 1463 |
|
1456 | 1464 | def calc_info(self):
|
1457 | 1465 |
|
1458 |
| - if sys.platform == 'darwin' and not os.environ.get('ATLAS', None): |
| 1466 | + blas_mkl_info = get_info('blas_mkl') |
| 1467 | + if blas_mkl_info: |
| 1468 | + self.set_info(**blas_mkl_info) |
| 1469 | + return |
| 1470 | + |
| 1471 | + openblas_info = get_info('openblas') |
| 1472 | + if openblas_info: |
| 1473 | + self.set_info(**openblas_info) |
| 1474 | + return |
| 1475 | + |
| 1476 | + atlas_info = get_info('atlas_blas_threads') |
| 1477 | + if not atlas_info: |
| 1478 | + atlas_info = get_info('atlas_blas') |
| 1479 | + |
| 1480 | + if sys.platform == 'darwin'and not atlas_info: |
| 1481 | + # Use the system BLAS from Accelerate or vecLib under OSX |
1459 | 1482 | args = []
|
1460 | 1483 | link_args = []
|
1461 | 1484 | if get_platform()[-4:] == 'i386' or 'intel' in get_platform() or \
|
@@ -1487,14 +1510,6 @@ def calc_info(self):
|
1487 | 1510 | define_macros=[('NO_ATLAS_INFO', 3)])
|
1488 | 1511 | return
|
1489 | 1512 |
|
1490 |
| - blas_mkl_info = get_info('blas_mkl') |
1491 |
| - if blas_mkl_info: |
1492 |
| - self.set_info(**blas_mkl_info) |
1493 |
| - return |
1494 |
| - |
1495 |
| - atlas_info = get_info('atlas_blas_threads') |
1496 |
| - if not atlas_info: |
1497 |
| - atlas_info = get_info('atlas_blas') |
1498 | 1513 | need_blas = 0
|
1499 | 1514 | info = {}
|
1500 | 1515 | if atlas_info:
|
@@ -1537,6 +1552,23 @@ def calc_info(self):
|
1537 | 1552 | self.set_info(**info)
|
1538 | 1553 |
|
1539 | 1554 |
|
| 1555 | +class openblas_info(blas_info): |
| 1556 | + section = 'openblas' |
| 1557 | + dir_env_var = 'OPENBLAS' |
| 1558 | + _lib_names = ['openblas'] |
| 1559 | + notfounderror = BlasNotFoundError |
| 1560 | + |
| 1561 | + def calc_info(self): |
| 1562 | + lib_dirs = self.get_lib_dirs() |
| 1563 | + |
| 1564 | + openblas_libs = self.get_libs('openblas_libs', self._lib_names) |
| 1565 | + info = self.check_libs(lib_dirs, openblas_libs, []) |
| 1566 | + if info is None: |
| 1567 | + return |
| 1568 | + info['language'] = 'f77' # XXX: is it generally true? |
| 1569 | + self.set_info(**info) |
| 1570 | + |
| 1571 | + |
1540 | 1572 | class blas_src_info(system_info):
|
1541 | 1573 | section = 'blas_src'
|
1542 | 1574 | dir_env_var = 'BLAS_SRC'
|
|
0 commit comments