mirror of
https://github.com/dmlc/dgl.git
synced 2026-06-04 19:44:23 +08:00
* Auto fix update-version * Auto fix setup.py * Auto fix update-version * Auto fix setup.py * [Doc] Change random.py to random_partition.py in guide on distributed partition pipeline (#4438) * Update distributed-preprocessing.rst * Update Co-authored-by: Ubuntu <ubuntu@ip-172-31-9-26.ap-northeast-1.compute.internal> * fix unpinning when tensoradaptor is not available (#4450) * [Doc] fix print issue in tutorial (#4459) * [Example][Refactor] Refactor RGCN example (#4327) * Refactor full graph entity classification * Refactor rgcn with sampling * README update * Update * Results update * Respect default setting of self_loop=false in entity.py * Update * Update README * Update for multi-gpu * Update * [doc] fix invalid link in user guide (#4468) * [Example] directional_GSN for ogbg-molpcba (#4405) * version-1 * version-2 * version-3 * update examples/README * Update .gitignore * update performance in README, delete scripts * 1st approving review * 2nd approving review Co-authored-by: Mufei Li <mufeili1996@gmail.com> * Clarify the message name, which is 'm'. (#4462) Co-authored-by: Ubuntu <ubuntu@ip-172-31-34-29.ap-northeast-1.compute.internal> Co-authored-by: Rhett Ying <85214957+Rhett-Ying@users.noreply.github.com> * [Refactor] Auto fix view.py. (#4461) Co-authored-by: Ubuntu <ubuntu@ip-172-31-34-29.ap-northeast-1.compute.internal> Co-authored-by: Minjie Wang <wmjlyjemaine@gmail.com> * [Example] SEAL for OGBL (#4291) * [Example] SEAL for OGBL * update index * update * fix readme typo * add seal sampler * modify set ops * prefetch * efficiency test * update * optimize * fix ScatterAdd dtype issue * update sampler style * update Co-authored-by: Quan Gan <coin2028@hotmail.com> * [CI] use https instead of http (#4488) * [BugFix] fix crash due to incorrect dtype in dgl.to_block() (#4487) * [BugFix] fix crash due to incorrect dtype in dgl.to_block() * fix test failure in TF * [Feature] Make TensorAdapter Stream Aware (#4472) * Allocate tensors in DGL's current stream * make tensoradaptor stream-aware * replace TAemtpy with cpu allocator * fix typo * try fix cpu allocation * clean header * redirect AllocDataSpace as well * resolve comments * [Build][Doc] Specify the sphinx version (#4465) Co-authored-by: Minjie Wang <wmjlyjemaine@gmail.com> * reformat * reformat * Auto fix update-version * Auto fix setup.py * reformat * reformat Co-authored-by: Ubuntu <ubuntu@ip-172-31-34-29.ap-northeast-1.compute.internal> Co-authored-by: Rhett Ying <85214957+Rhett-Ying@users.noreply.github.com> Co-authored-by: Mufei Li <mufeili1996@gmail.com> Co-authored-by: Ubuntu <ubuntu@ip-172-31-9-26.ap-northeast-1.compute.internal> Co-authored-by: Xin Yao <xiny@nvidia.com> Co-authored-by: Chang Liu <chang.liu@utexas.edu> Co-authored-by: Zhiteng Li <55398076+ZHITENGLI@users.noreply.github.com> Co-authored-by: Minjie Wang <wmjlyjemaine@gmail.com> Co-authored-by: rudongyu <ru_dongyu@outlook.com> Co-authored-by: Quan Gan <coin2028@hotmail.com>
225 lines
6.5 KiB
Python
225 lines
6.5 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
import sys
|
|
import os
|
|
import platform
|
|
import sysconfig
|
|
import shutil
|
|
import glob
|
|
|
|
from setuptools import find_packages
|
|
from setuptools.dist import Distribution
|
|
|
|
# need to use distutils.core for correct placement of cython dll
|
|
if '--inplace' in sys.argv:
|
|
from distutils.core import setup
|
|
from distutils.extension import Extension
|
|
else:
|
|
from setuptools import setup
|
|
from setuptools.extension import Extension
|
|
|
|
|
|
class BinaryDistribution(Distribution):
|
|
def has_ext_modules(self):
|
|
return True
|
|
|
|
|
|
CURRENT_DIR = os.path.dirname(__file__)
|
|
|
|
|
|
def get_lib_path():
|
|
"""Get library path, name and version"""
|
|
# We can not import `libinfo.py` in setup.py directly since __init__.py
|
|
# Will be invoked which introduces dependences
|
|
libinfo_py = os.path.join(CURRENT_DIR, './dgl/_ffi/libinfo.py')
|
|
libinfo = {'__file__': libinfo_py}
|
|
exec(
|
|
compile(open(libinfo_py, "rb").read(), libinfo_py, 'exec'),
|
|
libinfo,
|
|
libinfo)
|
|
version = libinfo['__version__']
|
|
|
|
lib_path = libinfo['find_lib_path']()
|
|
libs = [lib_path[0]]
|
|
|
|
return libs, version
|
|
|
|
|
|
def get_ta_lib_pattern():
|
|
if sys.platform.startswith('linux'):
|
|
ta_lib_pattern = 'libtensoradapter_*.so'
|
|
elif sys.platform.startswith('darwin'):
|
|
ta_lib_pattern = 'libtensoradapter_*.dylib'
|
|
elif sys.platform.startswith('win'):
|
|
ta_lib_pattern = 'tensoradapter_*.dll'
|
|
else:
|
|
raise NotImplementedError('Unsupported system: %s' % sys.platform)
|
|
return ta_lib_pattern
|
|
|
|
|
|
LIBS, VERSION = get_lib_path()
|
|
BACKENDS = ['pytorch']
|
|
TA_LIB_PATTERN = get_ta_lib_pattern()
|
|
|
|
|
|
def cleanup():
|
|
# Wheel cleanup
|
|
try:
|
|
os.remove("MANIFEST.in")
|
|
except BaseException:
|
|
pass
|
|
|
|
for path in LIBS:
|
|
_, libname = os.path.split(path)
|
|
try:
|
|
os.remove(os.path.join("dgl", libname))
|
|
except BaseException:
|
|
pass
|
|
for backend in BACKENDS:
|
|
for ta_path in glob.glob(
|
|
os.path.join(
|
|
CURRENT_DIR,
|
|
"dgl",
|
|
"tensoradapter",
|
|
backend,
|
|
TA_LIB_PATTERN)):
|
|
try:
|
|
os.remove(ta_path)
|
|
except BaseException:
|
|
pass
|
|
|
|
|
|
def config_cython():
|
|
"""Try to configure cython and return cython configuration"""
|
|
if sys.platform.startswith('win'):
|
|
print("WARNING: Cython is not supported on Windows, will compile without cython module")
|
|
return []
|
|
sys_cflags = sysconfig.get_config_var("CFLAGS")
|
|
|
|
if "i386" in sys_cflags and "x86_64" in sys_cflags:
|
|
print(
|
|
"WARNING: Cython library may not be compiled correctly with both i386 and x64")
|
|
return []
|
|
try:
|
|
from Cython.Build import cythonize
|
|
# from setuptools.extension import Extension
|
|
if sys.version_info >= (3, 0):
|
|
subdir = "_cy3"
|
|
else:
|
|
subdir = "_cy2"
|
|
ret = []
|
|
path = "dgl/_ffi/_cython"
|
|
library_dirs = ['dgl', '../build/Release', '../build']
|
|
libraries = ['dgl']
|
|
for fn in os.listdir(path):
|
|
if not fn.endswith(".pyx"):
|
|
continue
|
|
ret.append(Extension(
|
|
"dgl._ffi.%s.%s" % (subdir, fn[:-4]),
|
|
["dgl/_ffi/_cython/%s" % fn],
|
|
include_dirs=["../include/",
|
|
"../third_party/dmlc-core/include",
|
|
"../third_party/dlpack/include",
|
|
],
|
|
library_dirs=library_dirs,
|
|
libraries=libraries,
|
|
language="c++"))
|
|
return cythonize(ret, force=True)
|
|
except ImportError:
|
|
print("WARNING: Cython is not installed, will compile without cython module")
|
|
return []
|
|
|
|
|
|
include_libs = False
|
|
wheel_include_libs = False
|
|
if "bdist_wheel" in sys.argv or os.getenv('CONDA_BUILD'):
|
|
wheel_include_libs = True
|
|
elif "clean" in sys.argv:
|
|
cleanup()
|
|
else:
|
|
include_libs = True
|
|
|
|
setup_kwargs = {}
|
|
|
|
# For bdist_wheel only
|
|
if wheel_include_libs:
|
|
with open("MANIFEST.in", "w") as fo:
|
|
for path in LIBS:
|
|
shutil.copy(path, os.path.join(CURRENT_DIR, 'dgl'))
|
|
dir_, libname = os.path.split(path)
|
|
fo.write("include dgl/%s\n" % libname)
|
|
|
|
for backend in BACKENDS:
|
|
for ta_path in glob.glob(
|
|
os.path.join(
|
|
dir_,
|
|
"tensoradapter",
|
|
backend,
|
|
TA_LIB_PATTERN)):
|
|
ta_name = os.path.basename(ta_path)
|
|
os.makedirs(
|
|
os.path.join(
|
|
CURRENT_DIR,
|
|
'dgl',
|
|
'tensoradapter',
|
|
backend),
|
|
exist_ok=True)
|
|
shutil.copy(
|
|
os.path.join(dir_, 'tensoradapter', backend, ta_name),
|
|
os.path.join(CURRENT_DIR, 'dgl', 'tensoradapter', backend))
|
|
fo.write(
|
|
"include dgl/tensoradapter/%s/%s\n" %
|
|
(backend, ta_name))
|
|
|
|
setup_kwargs = {
|
|
"include_package_data": True
|
|
}
|
|
|
|
# For source tree setup
|
|
# Conda build also includes the binary library
|
|
if include_libs:
|
|
rpath = [os.path.relpath(path, CURRENT_DIR) for path in LIBS]
|
|
data_files = [('dgl', rpath)]
|
|
for path in LIBS:
|
|
for backend in BACKENDS:
|
|
data_files.append((
|
|
'dgl/tensoradapter/%s' % backend,
|
|
glob.glob(os.path.join(
|
|
os.path.dirname(os.path.relpath(path, CURRENT_DIR)),
|
|
'tensoradapter', backend, TA_LIB_PATTERN))))
|
|
setup_kwargs = {
|
|
"include_package_data": True,
|
|
"data_files": data_files
|
|
}
|
|
|
|
setup(
|
|
name='dgl' + os.getenv('DGL_PACKAGE_SUFFIX', ''),
|
|
version=VERSION,
|
|
description='Deep Graph Library',
|
|
zip_safe=False,
|
|
maintainer='DGL Team',
|
|
maintainer_email='wmjlyjemaine@gmail.com',
|
|
packages=find_packages(),
|
|
install_requires=[
|
|
'numpy>=1.14.0',
|
|
'scipy>=1.1.0',
|
|
'networkx>=2.1',
|
|
'requests>=2.19.0',
|
|
'tqdm',
|
|
'psutil>=5.8.0',
|
|
],
|
|
url='https://github.com/dmlc/dgl',
|
|
distclass=BinaryDistribution,
|
|
ext_modules=config_cython(),
|
|
classifiers=[
|
|
'Development Status :: 3 - Alpha',
|
|
'Programming Language :: Python :: 3',
|
|
'License :: OSI Approved :: Apache Software License',
|
|
],
|
|
license='APACHE',
|
|
**setup_kwargs
|
|
)
|
|
|
|
if wheel_include_libs:
|
|
cleanup()
|