graphlearn_torch/python/utils/build_glt.py (116 lines of code) (raw):

import os import platform import shutil import subprocess from torch.utils.cpp_extension import CppExtension def glt_v6d_ext_module( name: str, root_path: str, ): include_dirs = [] library_dirs = [] libraries = [] extra_cxx_flags = [] include_dirs.append(root_path) # We assume that glt_v6d is built in graphscope environment if 'GRAPHSCOPE_HOME' in os.environ: include_dirs.append(os.environ['GRAPHSCOPE_HOME'] + '/include' + '/vineyard') include_dirs.append(os.environ['GRAPHSCOPE_HOME'] + '/include' + '/vineyard/contrib') include_dirs.append(os.environ['GRAPHSCOPE_HOME'] + '/include') library_dirs.append(os.environ['GRAPHSCOPE_HOME'] + '/lib') if platform.system() == 'Darwin': homebrew_prefix = subprocess.check_output([shutil.which('brew'), '--prefix']) \ .decode('utf-8', errors='ignore').strip() include_dirs.append(os.path.join(homebrew_prefix, 'include')) include_dirs.append(os.path.join(homebrew_prefix, 'include', 'vineyard')) include_dirs.append(os.path.join(homebrew_prefix, 'include', 'vineyard', 'contrib')) library_dirs.append(os.path.join(homebrew_prefix, 'lib')) if platform.system() == "Linux": include_dirs.append('/usr/lib/x86_64-linux-gnu/openmpi/include') library_dirs.append('/usr/local/lib') libraries.append('pthread') libraries.append('mpi') libraries.append('glog') libraries.append('vineyard_basic') libraries.append('vineyard_client') libraries.append('vineyard_graph') libraries.append('vineyard_io') extra_cxx_flags.append('-std=c++17') sources = [os.path.join(root_path, 'graphlearn_torch/python/py_export_v6d.cc')] import glob sources += glob.glob( os.path.join(root_path, 'graphlearn_torch/v6d/**.cc'), recursive=True ) extra_link_args = [] define_macros = [('WITH_VINEYARD', 'ON')] undef_macros = [] return CppExtension( name, sources, extra_link_args=extra_link_args, include_dirs=include_dirs, library_dirs=library_dirs, libraries=libraries, extra_compile_args={ 'cxx': extra_cxx_flags, }, define_macros=define_macros, undef_macros=undef_macros, ) def glt_ext_module( name: str, root_path: str, with_cuda: bool = False, release: bool = False ): include_dirs = [] library_dirs = [] libraries = [] extra_cxx_flags = [] extra_link_args = [] define_macros = [] undef_macros = [] include_dirs.append(root_path) if with_cuda: include_dirs.append('/usr/local/cuda' + '/include') library_dirs.append('/usr/local/cuda' + 'lib64') extra_cxx_flags.append('-std=c++17') sources = [os.path.join(root_path, 'graphlearn_torch/python/py_export_glt.cc')] import glob sources += glob.glob( os.path.join(root_path, 'graphlearn_torch/csrc/**/**.cc'), recursive=True ) if with_cuda: sources += glob.glob( os.path.join(root_path, 'graphlearn_torch/csrc/**/**.cu'), recursive=True ) if with_cuda: define_macros.append(('WITH_CUDA', 'ON')) else: undef_macros.append(('WITH_CUDA')) if release: nvcc_flags = [ '-O3', '--expt-extended-lambda', '-lnuma', '-arch=sm_50', '-gencode=arch=compute_50,code=sm_50', '-gencode=arch=compute_52,code=sm_52', '-gencode=arch=compute_60,code=sm_60', '-gencode=arch=compute_61,code=sm_61', '-gencode=arch=compute_70,code=sm_70', '-gencode=arch=compute_75,code=sm_75', '-gencode=arch=compute_75,code=compute_75' ] else: nvcc_flags = ['-O3', '--expt-extended-lambda', '-lnuma'] return CppExtension( name, sources, extra_link_args=extra_link_args, include_dirs=include_dirs, library_dirs=library_dirs, libraries=libraries, extra_compile_args={ 'cxx': extra_cxx_flags, 'nvcc': nvcc_flags, }, define_macros=define_macros, undef_macros=undef_macros, )