dmlc / dgl

Python package built to ease deep learning on graph, on top of existing DL frameworks.
http://dgl.ai
Apache License 2.0
13.55k stars 3.01k forks source link

DGL built from source in Windows 11 (CUDA 12.1, PyTorch 2.3.0): Cannot find DGL C++ graphbolt library. #7477

Closed chuanwise closed 3 months ago

chuanwise commented 4 months ago

📚 Documentation

Exception thrown when I import dgl:

Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "D:\programs\anaconda3\envs\ai\Lib\site-packages\dgl-2.3-py3.11-win-amd64.egg\dgl\__init__.py", line 16, in <module>
    from . import (
  File "D:\programs\anaconda3\envs\ai\Lib\site-packages\dgl-2.3-py3.11-win-amd64.egg\dgl\dataloading\__init__.py", line 13, in <module>
    from .dataloader import *
  File "D:\programs\anaconda3\envs\ai\Lib\site-packages\dgl-2.3-py3.11-win-amd64.egg\dgl\dataloading\dataloader.py", line 27, in <module>
    from ..distributed import DistGraph
  File "D:\programs\anaconda3\envs\ai\Lib\site-packages\dgl-2.3-py3.11-win-amd64.egg\dgl\distributed\__init__.py", line 5, in <module>
    from .dist_graph import DistGraph, DistGraphServer, edge_split, node_split
  File "D:\programs\anaconda3\envs\ai\Lib\site-packages\dgl-2.3-py3.11-win-amd64.egg\dgl\distributed\dist_graph.py", line 12, in <module>
    from .. import backend as F, graphbolt as gb, heterograph_index
  File "D:\programs\anaconda3\envs\ai\Lib\site-packages\dgl-2.3-py3.11-win-amd64.egg\dgl\graphbolt\__init__.py", line 36, in <module>
    load_graphbolt()
  File "D:\programs\anaconda3\envs\ai\Lib\site-packages\dgl-2.3-py3.11-win-amd64.egg\dgl\graphbolt\__init__.py", line 26, in load_graphbolt
    raise FileNotFoundError(
FileNotFoundError: Cannot find DGL C++ graphbolt library at D:\programs\anaconda3\envs\ai\Lib\site-packages\dgl-2.3-py3.11-win-amd64.egg\dgl\graphbolt\graphbolt_pytorch_2.3.0.dll

After I built and installed DGL from sources in my Windows 11 (CUDA 12.1, PyTorch 2.3.0, Visual Studio 2019).

Here is the outputs of tree in site-packages/dgl-2.3-py3.11-win-amd64.egg:

.
├── EGG-INFO
│   ├── PKG-INFO
│   ├── SOURCES.txt
│   ├── dependency_links.txt
│   ├── native_libs.txt
│   ├── not-zip-safe
│   ├── requires.txt
│   └── top_level.txt
└── dgl
    ├── __init__.py
    ├── _api_internal.py
    ├── _ffi
    │   ├── __init__.py
    │   ├── _ctypes
    │   │   ├── __init__.py
    │   │   ├── function.py
    │   │   ├── ndarray.py
    │   │   ├── object.py
    │   │   └── types.py
    │   ├── _cy2
    │   │   └── __init__.py
    │   ├── _cy3
    │   │   └── __init__.py
    │   ├── base.py
    │   ├── capi.py
    │   ├── function.py
    │   ├── libinfo.py
    │   ├── ndarray.py
    │   ├── object.py
    │   ├── object_generic.py
    │   ├── runtime_ctypes.py
    │   └── streams.py
    ├── _sparse_ops.py
    ├── backend
    │   ├── __init__.py
    │   ├── backend.py
    │   ├── mxnet
    │   │   ├── __init__.py
    │   │   ├── sparse.py
    │   │   ├── sparse_optim.py
    │   │   └── tensor.py
    │   ├── pytorch
    │   │   ├── __init__.py
    │   │   ├── sparse.py
    │   │   └── tensor.py
    │   ├── set_default_backend.py
    │   └── tensorflow
    │       ├── __init__.py
    │       ├── sparse.py
    │       ├── sparse_optim.py
    │       └── tensor.py
    ├── base.py
    ├── batch.py
    ├── container.py
    ├── convert.py
    ├── core.py
    ├── cuda
    │   ├── __init__.py
    │   ├── gpu_cache.py
    │   └── nccl.py
    ├── data
    │   ├── __init__.py
    │   ├── actor.py
    │   ├── adapter.py
    │   ├── bitcoinotc.py
    │   ├── citation_graph.py
    │   ├── cluster.py
    │   ├── csv_dataset.py
    │   ├── csv_dataset_base.py
    │   ├── dgl_dataset.py
    │   ├── fakenews.py
    │   ├── flickr.py
    │   ├── fraud.py
    │   ├── gdelt.py
    │   ├── geom_gcn.py
    │   ├── gindt.py
    │   ├── gnn_benchmark.py
    │   ├── graph_serialize.py
    │   ├── heterograph_serialize.py
    │   ├── heterophilous_graphs.py
    │   ├── icews18.py
    │   ├── karate.py
    │   ├── knowledge_graph.py
    │   ├── lrgb.py
    │   ├── minigc.py
    │   ├── movielens.py
    │   ├── pattern.py
    │   ├── ppi.py
    │   ├── qm7b.py
    │   ├── qm9.py
    │   ├── qm9_edge.py
    │   ├── rdf.py
    │   ├── reddit.py
    │   ├── sbm.py
    │   ├── superpixel.py
    │   ├── synthetic.py
    │   ├── tensor_serialize.py
    │   ├── tree.py
    │   ├── tu.py
    │   ├── utils.py
    │   ├── wikics.py
    │   ├── yelp.py
    │   └── zinc.py
    ├── dataloading
    │   ├── __init__.py
    │   ├── base.py
    │   ├── cluster_gcn.py
    │   ├── dataloader.py
    │   ├── dist_dataloader.py
    │   ├── graphsaint.py
    │   ├── labor_sampler.py
    │   ├── negative_sampler.py
    │   ├── neighbor_sampler.py
    │   ├── shadow.py
    │   └── spot_target.py
    ├── dgl.dll
    ├── distgnn
    │   ├── __init__.py
    │   ├── partition
    │   │   ├── __init__.py
    │   │   └── libra_partition.py
    │   └── tools
    │       ├── __init__.py
    │       └── tools.py
    ├── distributed
    │   ├── __init__.py
    │   ├── constants.py
    │   ├── dist_context.py
    │   ├── dist_dataloader.py
    │   ├── dist_graph.py
    │   ├── dist_tensor.py
    │   ├── graph_partition_book.py
    │   ├── graph_services.py
    │   ├── id_map.py
    │   ├── kvstore.py
    │   ├── nn
    │   │   ├── __init__.py
    │   │   ├── mxnet
    │   │   │   └── __init__.py
    │   │   ├── pytorch
    │   │   │   ├── __init__.py
    │   │   │   └── sparse_emb.py
    │   │   └── tensorflow
    │   │       └── __init__.py
    │   ├── optim
    │   │   ├── __init__.py
    │   │   ├── mxnet
    │   │   │   └── __init__.py
    │   │   ├── pytorch
    │   │   │   ├── __init__.py
    │   │   │   ├── sparse_optim.py
    │   │   │   └── utils.py
    │   │   └── tensorflow
    │   │       └── __init__.py
    │   ├── partition.py
    │   ├── role.py
    │   ├── rpc.py
    │   ├── rpc_client.py
    │   ├── rpc_server.py
    │   ├── server_state.py
    │   ├── shared_mem_utils.py
    │   └── standalone_kvstore.py
    ├── frame.py
    ├── function
    │   ├── __init__.py
    │   ├── base.py
    │   ├── message.py
    │   └── reducer.py
    ├── generators.py
    ├── geometry
    │   ├── __init__.py
    │   ├── capi.py
    │   ├── edge_coarsening.py
    │   └── fps.py
    ├── global_config.py
    ├── graph_index.py
    ├── graphbolt
    │   ├── __init__.py
    │   ├── base.py
    │   ├── dataloader.py
    │   ├── dataset.py
    │   ├── feature_fetcher.py
    │   ├── feature_store.py
    │   ├── impl
    │   │   ├── __init__.py
    │   │   ├── basic_feature_store.py
    │   │   ├── fused_csc_sampling_graph.py
    │   │   ├── gpu_cache.py
    │   │   ├── gpu_cached_feature.py
    │   │   ├── in_subgraph_sampler.py
    │   │   ├── legacy_dataset.py
    │   │   ├── neighbor_sampler.py
    │   │   ├── ondisk_dataset.py
    │   │   ├── ondisk_metadata.py
    │   │   ├── sampled_subgraph_impl.py
    │   │   ├── temporal_neighbor_sampler.py
    │   │   ├── torch_based_feature_store.py
    │   │   └── uniform_negative_sampler.py
    │   ├── internal
    │   │   ├── __init__.py
    │   │   ├── datapipe_utils.py
    │   │   ├── item_sampler_utils.py
    │   │   ├── sample_utils.py
    │   │   └── utils.py
    │   ├── item_sampler.py
    │   ├── itemset.py
    │   ├── minibatch.py
    │   ├── minibatch_transformer.py
    │   ├── negative_sampler.py
    │   ├── sampled_subgraph.py
    │   ├── sampling_graph.py
    │   ├── subgraph_sampler.py
    │   └── utils.py
    ├── heterograph.py
    ├── heterograph_index.py
    ├── homophily.py
    ├── init.py
    ├── label_informativeness.py
    ├── logging.py
    ├── merge.py
    ├── mpops
    │   ├── __init__.py
    │   ├── edgewise.py
    │   ├── fused.py
    │   └── nodewise.py
    ├── multiprocessing
    │   ├── __init__.py
    │   └── pytorch.py
    ├── ndarray.py
    ├── nn
    │   ├── __init__.py
    │   ├── functional
    │   │   └── __init__.py
    │   ├── mxnet
    │   │   ├── __init__.py
    │   │   ├── conv
    │   │   │   ├── __init__.py
    │   │   │   ├── agnnconv.py
    │   │   │   ├── appnpconv.py
    │   │   │   ├── chebconv.py
    │   │   │   ├── densechebconv.py
    │   │   │   ├── densegraphconv.py
    │   │   │   ├── densesageconv.py
    │   │   │   ├── edgeconv.py
    │   │   │   ├── gatconv.py
    │   │   │   ├── gatedgraphconv.py
    │   │   │   ├── ginconv.py
    │   │   │   ├── gmmconv.py
    │   │   │   ├── graphconv.py
    │   │   │   ├── nnconv.py
    │   │   │   ├── relgraphconv.py
    │   │   │   ├── sageconv.py
    │   │   │   ├── sgconv.py
    │   │   │   └── tagconv.py
    │   │   ├── glob.py
    │   │   ├── hetero.py
    │   │   ├── softmax.py
    │   │   └── utils.py
    │   ├── pytorch
    │   │   ├── __init__.py
    │   │   ├── conv
    │   │   │   ├── __init__.py
    │   │   │   ├── agnnconv.py
    │   │   │   ├── appnpconv.py
    │   │   │   ├── atomicconv.py
    │   │   │   ├── cfconv.py
    │   │   │   ├── chebconv.py
    │   │   │   ├── cugraph_base.py
    │   │   │   ├── cugraph_gatconv.py
    │   │   │   ├── cugraph_relgraphconv.py
    │   │   │   ├── cugraph_sageconv.py
    │   │   │   ├── densechebconv.py
    │   │   │   ├── densegraphconv.py
    │   │   │   ├── densesageconv.py
    │   │   │   ├── dgnconv.py
    │   │   │   ├── dotgatconv.py
    │   │   │   ├── edgeconv.py
    │   │   │   ├── edgegatconv.py
    │   │   │   ├── egatconv.py
    │   │   │   ├── egnnconv.py
    │   │   │   ├── gatconv.py
    │   │   │   ├── gatedgcnconv.py
    │   │   │   ├── gatedgraphconv.py
    │   │   │   ├── gatv2conv.py
    │   │   │   ├── gcn2conv.py
    │   │   │   ├── ginconv.py
    │   │   │   ├── gineconv.py
    │   │   │   ├── gmmconv.py
    │   │   │   ├── graphconv.py
    │   │   │   ├── grouprevres.py
    │   │   │   ├── hgtconv.py
    │   │   │   ├── nnconv.py
    │   │   │   ├── pnaconv.py
    │   │   │   ├── relgraphconv.py
    │   │   │   ├── sageconv.py
    │   │   │   ├── sgconv.py
    │   │   │   ├── tagconv.py
    │   │   │   └── twirlsconv.py
    │   │   ├── explain
    │   │   │   ├── __init__.py
    │   │   │   ├── gnnexplainer.py
    │   │   │   ├── pgexplainer.py
    │   │   │   └── subgraphx.py
    │   │   ├── factory.py
    │   │   ├── glob.py
    │   │   ├── gt
    │   │   │   ├── __init__.py
    │   │   │   ├── biased_mha.py
    │   │   │   ├── degree_encoder.py
    │   │   │   ├── egt.py
    │   │   │   ├── graphormer.py
    │   │   │   ├── lap_pos_encoder.py
    │   │   │   ├── path_encoder.py
    │   │   │   └── spatial_encoder.py
    │   │   ├── hetero.py
    │   │   ├── linear.py
    │   │   ├── link
    │   │   │   ├── __init__.py
    │   │   │   ├── edgepred.py
    │   │   │   ├── transe.py
    │   │   │   └── transr.py
    │   │   ├── network_emb.py
    │   │   ├── softmax.py
    │   │   ├── sparse_emb.py
    │   │   └── utils.py
    │   └── tensorflow
    │       ├── __init__.py
    │       ├── conv
    │       │   ├── __init__.py
    │       │   ├── appnpconv.py
    │       │   ├── chebconv.py
    │       │   ├── densechebconv.py
    │       │   ├── edgeconv.py
    │       │   ├── gatconv.py
    │       │   ├── ginconv.py
    │       │   ├── graphconv.py
    │       │   ├── relgraphconv.py
    │       │   ├── sageconv.py
    │       │   └── sgconv.py
    │       ├── glob.py
    │       ├── hetero.py
    │       ├── softmax.py
    │       └── utils.py
    ├── ops
    │   ├── __init__.py
    │   ├── edge_softmax.py
    │   ├── gather_mm.py
    │   ├── sddmm.py
    │   ├── segment.py
    │   └── spmm.py
    ├── optim
    │   ├── __init__.py
    │   ├── mxnet
    │   │   └── __init__.py
    │   ├── pytorch
    │   │   ├── __init__.py
    │   │   └── sparse_optim.py
    │   └── tensorflow
    │       └── __init__.py
    ├── partition.py
    ├── propagate.py
    ├── random.py
    ├── readout.py
    ├── sampling
    │   ├── __init__.py
    │   ├── labor.py
    │   ├── negative.py
    │   ├── neighbor.py
    │   ├── node2vec_randomwalk.py
    │   ├── pinsage.py
    │   ├── randomwalks.py
    │   └── utils.py
    ├── sparse
    │   ├── __init__.py
    │   ├── broadcast.py
    │   ├── elementwise_op.py
    │   ├── elementwise_op_sp.py
    │   ├── matmul.py
    │   ├── reduction.py
    │   ├── sddmm.py
    │   ├── softmax.py
    │   ├── sparse_matrix.py
    │   ├── unary_op.py
    │   └── utils.py
    ├── storages
    │   ├── __init__.py
    │   ├── base.py
    │   ├── numpy.py
    │   ├── pytorch_tensor.py
    │   └── tensor.py
    ├── subgraph.py
    ├── transforms
    │   ├── __init__.py
    │   ├── functional.py
    │   ├── module.py
    │   └── to_block.py
    ├── traversal.py
    ├── udf.py
    ├── utils
    │   ├── __init__.py
    │   ├── checks.py
    │   ├── data.py
    │   ├── exception.py
    │   ├── filter.py
    │   ├── internal.py
    │   ├── pin_memory.py
    │   └── shared_mem.py
    └── view.py

53 directories, 355 files
benjaminnNgo commented 4 months ago

Hey! I am having the same problem. If you have any insight, I would really appreciate that.

chuanwise commented 4 months ago

Hey! I am having the same problem. If you have any insight, I would really appreciate that.

I build DGL to install it in Windows, because the Get Started page gave me install commands of CPU versions even if CUDA and Pip is selected (see https://github.com/dmlc/dgl/issues/7476).

But I found that if you use Conda to install, DGL with CUDA version will be installed.

benjaminnNgo commented 4 months ago

It works. Thank you so much.

github-actions[bot] commented 3 months ago

This issue has been automatically marked as stale due to lack of activity. It will be closed if no further activity occurs. Thank you