专栏首页Rust语言学习交流【Rust日报】 2019-05-28:使用WASI对区块链进行通用计算

【Rust日报】 2019-05-28:使用WASI对区块链进行通用计算

「嵌入式」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 Threads
BabelStream
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 Threads
BabelStream
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这两个库有什么区别?优缺点?哪个库更有机会被机器学习和科学计算领域应用?

评论摘要:

  1. Ndarray和nalgebra针对两个不同的问题域。
  2. Ndarray和nalgebra重复的部分只是线性代数系统,而nalgebra更侧重于线性代数系统,但仅限于1D向量和2D矩阵。
  3. Ndarray类似于numpy,适用于n维数据处理。
  4. 一旦Rust的const generics功能稳定以后,这两个库将深受影响,也许将来会有更多的功能重叠。
  5. nalgebra是纯Rust的,ndarray有一个OpenBLAS后端。所以在性能上,一些程序可能ndarray执行的更好(纯Rust实现的有待优化)。
  6. 如果是用于工程和数学目的,nalgebra是迄今为止最好的选择。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

本文分享自微信公众号 - Rust语言学习交流(rust-china),作者:张汉东

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【Rust日报】2019-11-25 - 2048游戏Rust实现版本

    这是一个Rust实现的2048游戏,运行在终端。除了标准的用户输入,AI还可以用来执行这些动作。这个人工智能利用expectiminimax算法在每一步中推荐最...

    MikeLoveRust
  • 【Rust日报】 2020-07-03 Google的Android將使用Rust

    https://immunant.com/blog/2020/06/kernel_modules/

    MikeLoveRust
  • 【Rust日报】 2019-05-24:Rust 1.35.0 稳定版发布

    一個好用的工具,讓你可以快速的編譯執行单个rust文件,并且可以支持第三方crate。不再需要把整個編譯项目目錄创建好

    MikeLoveRust
  • WINHEX之从数据恢复到删盘跑路

    WINHEX是一款用于查看和编辑底层十六进制数据的软件。我们可以利用这个软件修改文件格式数据,从而达到数据恢复的效果。

    徐焱
  • 工业机器人常用电机驱动系统的分类

    机器人电动伺服驱动系统是利用各种电动机产生的力矩和力,直接或间接地驱动机器人本体以获得机器人的各种运动的执行机构。

    机器人网
  • 工业机器人常用电机驱动系统的分类

    机器人电动伺服驱动系统是利用各种电动机产生的力矩和力,直接或间接地驱动机器人本体以获得机器人的各种运动的执行机构。 ? 对工业机器人关节驱动的电动机,要求有最大...

    机器人网
  • 第七天、判断三角形的类型

        根据输入的三角形的三条边判断三角形的类型,并输出它的面积和类型。 C代码: /*第七天、判断三角形的类型*/ #include <stdio.h> ...

    Jack_Cui
  • lodash源码分析之自减的两种形式

    本文为读 lodash 源码的第六篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash

    对角另一面
  • lodash源码分析之自减的两种形式

    这个世界需要一个特定的恶人,可以供人们指名道姓,千夫所指:“全都怪你”。 ——村上春树《当我谈跑步时我谈些什么》 本文为读 lodash 源码的第六篇,后续...

    对角另一面
  • 三极管做电源开关时,选型一定注意饱和压降的影响

    三极管做电源开关的应用场景很多,设计时要根据通流能力及饱和压降选取不同类型的三极管,比如如下电路的三极管,选取的型号为2N3906,此三极管的 集电极连续电流2...

    Winter_world

扫码关注云+社区

领取腾讯云代金券