Skip to content

Commit

Permalink
feat: replace NCCL with Aluminum (#7)
Browse files Browse the repository at this point in the history
BREAKING CHANGE: dependent on MPI now due to Aluminum
  • Loading branch information
liuhatry authored and NOBLES5E committed Sep 15, 2021
1 parent 4bbbe81 commit ad5cbd1
Show file tree
Hide file tree
Showing 7 changed files with 148 additions and 98 deletions.
4 changes: 4 additions & 0 deletions bagua-core/.gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[submodule "bagua-core-internal/third_party/Aluminum"]
path = bagua-core-internal/third_party/Aluminum
url = https://github.com/BaguaSys/Aluminum.git
branch = bagua
12 changes: 10 additions & 2 deletions bagua-core/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions bagua-core/bagua-core-internal/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ version = "0.13.2"

[build-dependencies]
shadow-rs = "0.5"
cmake = "0.1"
cpp_build = "0.5"
cc = "1.0"
cmd_lib = "1.0"
Expand Down
31 changes: 28 additions & 3 deletions bagua-core/bagua-core-internal/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ fn main() {
.opt_level(3)
.include("cpp/include")
.include("third_party/cub-1.8.0")
.include("../../bagua/.data/include")
.include("../python/bagua_core/.data/include")
.flag("-std=c++14")
.flag("-cudart=shared");
for sm in supported_sms {
Expand All @@ -28,18 +28,43 @@ fn main() {
.file("kernels/bagua_kernels.cu")
.compile("libbagua_kernels.a");

let third_party_path = std::env::current_dir().unwrap();
let bagua_data_path = std::env::current_dir().unwrap();
let third_party_path = third_party_path.join("third_party");
let bagua_data_path = bagua_data_path.join("../python/bagua_core/.data");
let _al_builder = cmake::Config::new("third_party/Aluminum")
.define("ALUMINUM_ENABLE_NCCL", "YES")
.define("CUB_INCLUDE_PATH", third_party_path.join("cub-1.8.0"))
.define("NCCL_LIBRARY", bagua_data_path.join("lib/libnccl.so"))
.define("NCCL_INCLUDE_PATH", bagua_data_path.join("include"))
.define("BUILD_SHARED_LIBS", "off")
.out_dir(bagua_data_path.as_path().to_str().unwrap())
.always_configure(true)
.build();

let mut cpp_builder = cpp_build::Config::new();
cpp_builder.include(format!("{}/include", cuda_home));
cpp_builder.include("cpp/include");
cpp_builder.include("../../bagua/.data/include");
let mpi_include_dirs = cmd_lib::run_fun!(bash -c "mpicxx --showme:incdirs").unwrap();
let mpi_include_dirs: Vec<&str> = mpi_include_dirs.split(' ').collect();
for mpi_include_dir in mpi_include_dirs.iter() {
cpp_builder.include(mpi_include_dir);
}
cpp_builder.include(third_party_path.join("cub-1.8.0"));
cpp_builder.include(bagua_data_path.join("include"));
cpp_builder.build("src/lib.rs");

println!(
"cargo:rustc-link-search=native={}",
format!("{}/lib64", cuda_home)
);

println!("cargo:rustc-link-search=../bagua/.data/lib");
println!(
"cargo:rustc-link-search={}",
bagua_data_path.join("lib").as_path().to_str().unwrap()
);
println!("cargo:rustc-link-lib=static=Al");
println!("cargo:rustc-link-lib=mpi");
println!("cargo:rustc-link-lib=nccl");
println!("cargo:rustc-link-lib=cudart");
println!("cargo:rustc-link-lib=nvrtc");
Expand Down
Loading

0 comments on commit ad5cbd1

Please sign in to comment.