зеркало из https://github.com/microsoft/DeepSpeed.git
aio: test link against libaio using distutils (#1247)
This commit is contained in:
Родитель
6ba9628970
Коммит
6ec84967ed
|
@ -50,10 +50,14 @@ class AsyncIOBuilder(OpBuilder):
|
|||
return ['-laio']
|
||||
|
||||
def is_compatible(self):
|
||||
aio_libraries = ['libaio-dev']
|
||||
aio_compatible = self.libraries_installed(aio_libraries)
|
||||
# Check for the existence of libaio by using distutils
|
||||
# to compile and link a test program that calls io_submit,
|
||||
# which is a function provided by libaio that is used in the async_io op.
|
||||
# If needed, one can define -I and -L entries in CFLAGS and LDFLAGS
|
||||
# respectively to specify the directories for libaio.h and libaio.so.
|
||||
aio_compatible = self.has_function('io_submit', ('aio', ))
|
||||
if not aio_compatible:
|
||||
self.warning(
|
||||
f"{self.NAME} requires the libraries: {aio_libraries} but are missing. Can be fixed by: `apt install libaio-dev`."
|
||||
f"{self.NAME} requires libaio but it is missing. Can be fixed by: `apt install libaio-dev`."
|
||||
)
|
||||
return super().is_compatible() and aio_compatible
|
||||
|
|
|
@ -7,6 +7,7 @@ import time
|
|||
import importlib
|
||||
from pathlib import Path
|
||||
import subprocess
|
||||
import distutils.ccompiler
|
||||
from abc import ABC, abstractmethod
|
||||
|
||||
YELLOW = '\033[93m'
|
||||
|
@ -160,6 +161,10 @@ class OpBuilder(ABC):
|
|||
valid = valid or result.wait() == 0
|
||||
return valid
|
||||
|
||||
def has_function(self, funcname, libraries):
|
||||
compiler = distutils.ccompiler.new_compiler()
|
||||
return compiler.has_function(funcname, libraries=libraries)
|
||||
|
||||
def strip_empty_entries(self, args):
|
||||
'''
|
||||
Drop any empty strings from the list of compile and link flags
|
||||
|
|
Загрузка…
Ссылка в новой задаче