Improve PTX support discovery and make it optional.
This commit is contained in:
parent
cdd26cde58
commit
e42dfd9abb
1 changed files with 21 additions and 17 deletions
38
setup.py
38
setup.py
|
|
@ -34,6 +34,8 @@ def get_libs_and_objs(components):
|
||||||
objs.append(part)
|
objs.append(part)
|
||||||
return libs, objs
|
return libs, objs
|
||||||
|
|
||||||
|
def get_enabled_components():
|
||||||
|
return run_llvm_config(['--components']).split()
|
||||||
|
|
||||||
def get_llvm_version():
|
def get_llvm_version():
|
||||||
# get version number; treat it as fixed point
|
# get version number; treat it as fixed point
|
||||||
|
|
@ -66,32 +68,34 @@ if dynlink:
|
||||||
libs_core = ['LLVM-%d.%d' % llvm_version]
|
libs_core = ['LLVM-%d.%d' % llvm_version]
|
||||||
objs_core = []
|
objs_core = []
|
||||||
else:
|
else:
|
||||||
if sys.platform == 'win32':
|
enabled_components = set(get_enabled_components())
|
||||||
# XXX: If found, the PTX components are returned by llvm-config-win32.py,
|
ptx_components = set(['ptx',
|
||||||
# regardless of whether we ask for them. There should be a better way
|
|
||||||
# eventually.
|
|
||||||
print('PTX is included on Win32 at if found by llvm-config-win32.py')
|
|
||||||
ptx_components = []
|
|
||||||
elif llvm_version <= (3, 1): # select between PTX & NVPTX
|
|
||||||
print('Using PTX')
|
|
||||||
ptx_components = ['ptx',
|
|
||||||
'ptxasmprinter',
|
'ptxasmprinter',
|
||||||
'ptxcodegen',
|
'ptxcodegen',
|
||||||
'ptxdesc',
|
'ptxdesc',
|
||||||
'ptxinfo']
|
'ptxinfo'])
|
||||||
|
nvptx_components = set(['nvptx',
|
||||||
|
'nvptxasmprinter',
|
||||||
|
'nvptxcodegen',
|
||||||
|
'nvptxdesc',
|
||||||
|
'nvptxinfo'])
|
||||||
|
|
||||||
|
extra_components = []
|
||||||
|
if (nvptx_components & enabled_components) == nvptx_components:
|
||||||
|
print("Using NVPTX")
|
||||||
|
extra_components.extend(nvptx_components)
|
||||||
|
elif (ptx_components & enabled_components) == ptx_components:
|
||||||
|
print("Using PTX")
|
||||||
|
extra_components.extend(ptx_components)
|
||||||
else:
|
else:
|
||||||
print('Using NVPTX')
|
print("No CUDA support")
|
||||||
ptx_components = ['nvptx',
|
|
||||||
'nvptxasmprinter',
|
|
||||||
'nvptxcodegen',
|
|
||||||
'nvptxdesc',
|
|
||||||
'nvptxinfo']
|
|
||||||
libs_core, objs_core = get_libs_and_objs(
|
libs_core, objs_core = get_libs_and_objs(
|
||||||
['core', 'analysis', 'scalaropts', 'executionengine',
|
['core', 'analysis', 'scalaropts', 'executionengine',
|
||||||
'jit', 'native', 'interpreter', 'bitreader', 'bitwriter',
|
'jit', 'native', 'interpreter', 'bitreader', 'bitwriter',
|
||||||
'instrumentation', 'ipa', 'ipo', 'transformutils',
|
'instrumentation', 'ipa', 'ipo', 'transformutils',
|
||||||
'asmparser', 'linker', 'support', 'vectorize']
|
'asmparser', 'linker', 'support', 'vectorize']
|
||||||
+ ptx_components)
|
+ extra_components)
|
||||||
|
|
||||||
macros = [('__STDC_CONSTANT_MACROS', None),
|
macros = [('__STDC_CONSTANT_MACROS', None),
|
||||||
('__STDC_LIMIT_MACROS', None)]
|
('__STDC_LIMIT_MACROS', None)]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue