5 个版本
使用旧的 Rust 2015
0.0.33 | 2017年3月18日 |
---|---|
0.0.32 | 2017年3月16日 |
0.0.3 | 2017年3月16日 |
0.0.2 | 2017年2月15日 |
#374 在 科学
320KB
5K SLoC
parenchyma
Parenchyma 是从 Collenchyma (因此得名) 的一个硬分叉开始的,Collenchyma 是由 Autumn 团队 以及一群杰出的 贡献者 开发的一个可扩展的 HPC 框架。除了名称和整体设计外,这两个库在功能上相当不同(例如,自动同步(感谢 @alexandermorozov)和回退机制)。因此,在迁移之前,应仔细阅读文档,以免误用框架。如果不这样做,可能会导致 Parenchyma 开发者/贡献者不负责的不当行为。
许多用于文档目的的原始注释仍保留在代码库中,以及一些必要的添加/修改。
免责声明:Parenchyma 目前正在进行大规模的重构和改进。因此,原始 Collenchyma 项目中许多功能可能尚未在 Parenchyma 项目中可用。也可能有一些功能永远不会在 Parenchyma 项目中提供,因为目前正在考虑的不同方法可能比原始方法更好。
示例
Parenchyma 不包含任何扩展包。以下示例假设您已将 parenchyma
和 Parenchyma 扩展包 parenchyma-nn
添加到您的 Cargo 清单中。
extern crate parenchyma as pa;
extern crate parenchyma_nn as pann;
use pa::{Backend, BackendConfig, Native, OpenCL, SharedTensor};
use pa::HardwareKind::GPU;
use pann::NNPackage;
fn main() {
let ref native: Backend = Backend::new::<Native>().unwrap();
// Initialize an OpenCL or CUDA backend packaged with the NN extension.
let ref backend = {
let framework = OpenCL::new().unwrap();
let hardware = framework.available_hardware.clone();
let configuration = BackendConfig::<OpenCL, NNPackage>::new(framework, hardware, GPU);
Backend::try_from(configuration).unwrap()
};
let data: Vec<f64> = vec![3.5, 12.4, 0.5, 6.5];
let length = data.len();
// Initialize two `SharedTensor`s.
let ref x = SharedTensor::with(backend, length, data).unwrap();
let ref mut result = SharedTensor::new(length);
// Run the sigmoid operation, provided by the NN extension, on
// your OpenCL/CUDA enabled GPU (or CPU, which is possible through OpenCL)
backend.sigmoid(x, result).unwrap();
// Print the result: `[0.97068775, 0.9999959, 0.62245935, 0.9984988] shape=[4], strides=[1]`
println!("{:?}", result.read(native).unwrap().as_native().unwrap());
}
许可证
双许可
- Apache 许可证 2.0(《LICENSE-APACHE》或 https://apache.ac.cn/licenses/LICENSE-2.0》)
- MIT 许可证(《LICENSE-MIT》或 http://opensource.org/licenses/MIT》)
依赖项
~2.5MB
~43K SLoC