「嵌入式」Hawk-Rust系列:树莓派相机的驱动
#RaspberryPi
Raspberry Pi提供了一组GPIO(通用输入/输出)引脚,允许您控制用于物理计算的电子组件并探索物联网(IoT)。 相机模块是Raspberry Pi的绝佳配件,它允许用户拍摄静态照片并以全高清录制视频。
HAWK是一个基于Rust的图像识别项目,它通过使用RFID卡进行用户识别和Image进行用户验证来实现双因素身份验证。本文展示了如何使用Rust程序触发树莓派的摄像头。
- Read More
- hawk
使用WASI对区块链进行通用计算
#wasi
本文来自于OasisLabs,介绍了WASI(Web Assembly System Interface )在区块链上的应用。目前Oasis平台的技术架构目前正在围绕WASM、WASI和区块链来实施。
(OasisLabs是来自加州大学伯克利分校的Dawn Song教授和同事们创立的区块链项目,基于区块链和可信硬件想构建高性能的可信云平台。)
为什么他们想把WASI用于区块链?
WASI用于区块链的目标是利用围绕WASI快速发展的社区和基础设施。 与创建另一个Wasm接口的替代方法相比,WASI允许区块链开发人员利用更广泛的开发人员社区的资源。 通过这种方式,可以想象未来区块链将成为云开发人员工具箱中的另一个工具。
OasisLabs团队还专门提交了一个区块链WASI的RFC,想做成适合区块链上下文的WASI标注扩展。
- Read More
- Blockchain WASI RFC
Rust vs C++ : 基于36核CPU的并行性能测试
#cpp #rayon
有人针对Rust/Rayon(Rust实现的多线程并发库)和C++/OpenMP(c++的类似于rayon的库)在36核的机器上进行了性能测试。
Rust 36个线程:
Running on 36 ThreadsBabelStream
Version: 0.5
Implmentation: Rust
Running kernels 100 times
Precision: double
Array size: 268.4 MB (=0.3 GB)
Total size: 805.3 MB (=0.8 GB)
Function Mbytes/sec Min (sec) Max Average
Copy 50552.817 0.01062 0.02924 0.01143
Mul 39680.038 0.01353 0.01510 0.01443
Add 45828.953 0.01757 0.01874 0.01820
Triad 41769.002 0.01928 0.02206 0.02029
Dot 43584.260 0.01232 0.01327 0.01273
CPP/OMP 36个线程:
Running on 36 ThreadsBabelStream
Version: 3.4
Implementation: OpenMP
Running kernels 100 times
Precision: double
Array size: 268.4 MB (=0.3 GB)
Total size: 805.3 MB (=0.8 GB)
Function MBytes/sec Min (sec) Max Average
Copy 87745.870 0.00612 0.00710 0.00684
Mul 79315.382 0.00677 0.00762 0.00736
Add 89995.047 0.00895 0.01029 0.00992
Triad 91574.889 0.00879 0.01012 0.00975
Dot 118144.442 0.00454 0.00504 0.00490
对于这个结果,可以看看Reddit讨论贴里的一些反馈。评论区有一半的人都认为Rust之所以慢,是因为rayon目前不支持NUMA感知(Numa aware)的原因。无论是Rust语言,还是Rayon目前都不支持该功能,除非等内存分配器稳定下来再做打算。
(NUMA 用于 x86 和 IBM® POWER® 体系结构平台上的多处理器系统。在具有 NUMA 特性的系统中,每个处理器都具有可用的本地内存,也可以访问分配给其他处理器的内存。对本地内存的内存访问速度更快。NUMA 节点是相互紧密联系的处理器和内存的集合。 在节点内的内存访问速度比在节点外更快。如果程序能够感知NUMA,那就相关计算资源,将会被放置到一个不同的物理NUMA节点。尽管仍旧在两个NUMA节点之间扩展,但资源使用将会得到优化。)
但未可知OpenMP的测试代码是否利用了NUMA感知来提升性能,但OpenMP好像是支持NUMA(不确定)。
- Reddit 讨论
- 相关代码
- rayon issues: Schedulling should be NUMA aware
- 介绍NUMA的一篇文章
「讨论」ndarray vs nalgebra
#ml #statistical_computing
该贴针对此问题展开讨论:ndarray和nalgebra这两个库有什么区别?优缺点?哪个库更有机会被机器学习和科学计算领域应用?
评论摘要:
Reddit讨论
vecmerge:提供了方便合并Vec的宏
#vec
fn concat(a: i32, b: i32, c: Vec<i32>, d: i32, e: i32, f: i32) -> Vec<i32> {vecmerge!([a,b] + c + [d,e,f])
}
vecmerge
支持Rust的多种方式
#Rust
如果你想支持Rust的发展,有很多方法可以支持Rust:
- 贡献代码。
- 写文档、书、博客、视频等。
- 在论坛,Stack Overflow,Reddit,Matrix或Discord上回答问题。
- 财务支持。
尤其是财务支持,可以帮助补偿这些重点贡献人员的时间,使得开源更具可持续性。如果你愿意,可以查看Aaron发起的捐助人员列表。
- Read More
- Aaron发起的捐助人员列表
「系列」 使用Rust创建静态文件服务器 Part 2
#Http
Read More
日报订阅地址:
独立日报订阅地址:
- Telgram Channel
- 阿里云语雀订阅
- Steemit
- GitHub
社区学习交流平台订阅:
- Rust.cc论坛: 支持rss
- Rust Force: 支持rss
- 微信公众号:Rust语言学习交流