#高阶 #接口 #可扩展 #线性代数 #exascale #离散化 #ceed

libceed

libCEED的高层接口 - 由ECP协同设计中心CEED开发的用于高效高阶离散化的库

4个版本 (破坏性更新)

0.12.0 2023年11月1日
0.11.0 2022年12月24日
0.9.0 2021年7月7日
0.8.0 2021年5月28日

#55 in 科学

BSD-2-Clause

2MB
30K SLoC

C 17K SLoC // 0.3% comments C++ 10K SLoC // 0.2% comments Rust 2.5K SLoC // 0.1% comments CUDA 134 SLoC // 0.3% comments

libceed:高效、可扩展的离散化

GitHub Actions Documentation

此包提供了一个到libCEED的接口,libCEED是一个用于可扩展的基于元素的偏微分方程和相关计算问题的性能可移植库。该公式是代数的,旨在轻量级且易于在高级抽象中实现。有关libCEED用户手册接口概念和大量示例的详细信息。

libCEED operator decomposition

使用方法

要从Rust包调用libCEED,可以使用以下Cargo.toml

[dependencies]
libceed = "0.12.0"

对于libCEED Rust绑定的开发版本,使用以下Cargo.toml

[dependencies]
libceed = { git = "https://github.com/CEED/libCEED", branch = "main" }
extern crate libceed;

fn main() -> libceed::Result<()> {
    let ceed = libceed::Ceed::init("/cpu/self/ref");
    let xc = ceed.vector_from_slice(&[0., 0.5, 1.0])?;
    let xs = xc.view()?;
    assert_eq!(xs[..], [0., 0.5, 1.0]);
    Ok(())
}

此包为每个对象提供模块,但它们通常像上面的向量一样从Ceed对象创建。传递给Ceed::init的资源字符串用于识别“后端”,包括算法策略和硬件,如NVIDIA和AMD GPU。有关更多信息,请参阅libCEED文档

示例

libCEED的示例可以在libCEED仓库下的examples/rust目录中找到。

文档

此包使用katexit在文档中渲染方程。要启用katexit并本地构建文档,请使用

cargo doc --features=katexit

许可证:BSD-2-Clause

贡献

libceed包在libCEED仓库中开发。有关详细信息,请参阅贡献指南

依赖关系

~1.2–3MB
~69K SLoC