C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化注意到一个现象:写入花的时间似乎是读取的 2 倍? • 而且写入的同时读取,和单单写入的时间是一样的? • 似乎写入一个数组的同时也会读取这个数组,造成两倍带宽 ? 写入的粒度太小造成不必要的读取 • 这是因为缓存和内存通信的最小单位是缓存行: 64 字节。 • 当 CPU 试图写入 4 字节时,因为剩下的 60 字节没有改变,缓存不知道 CPU 接下来会不会用到那 60 字节,因此他只好从内存读取完整的 64 字节,修改其中的 com/2015/10/morton-ordering/ 第 9 章:多核下的缓存 伪共享( false sharing ) • 需要注意,如果多个核心同时访问的地址非常接 近,这时候会变得很慢! • 这是因为 CPU 之间通信的最小单位也是 缓存行 ( 64 字节),如果两个核心访问到了的同一缓存 行,假设一个核心修改了该缓存行的前 32 字节, 另一个修改了后 32 字节,同时写回的话,结果要 么是只有前 320 码力 | 147 页 | 18.88 MB | 1 年前3
基于 Rust Arrow Flight 的物联网和时序数据传输及转换工具 霍琳贺异步数据结构 • 使用异步锁和异步 Channel 。 • 使用 spawn_blocking 提交耗时任务 • C FFI 调用时,要关注上下文的线程安全性。 • 多个运行时之间使用 Channel 通信,降低锁使用范围。 Tokio - Graceful Stop • futures::future::Abortable 可用于短路一个 stream • tokio_util::sync::CancellationToken0 码力 | 29 页 | 2.26 MB | 1 年前3
应用 waPC (rust) 做软件测试工具/ image / chart Webassembly Procedures Call waPC 协议标准化了本机代码调用 WebAssembly 和 WebAssembly 调用本机代码的通信 (messaging) 和 错误处理 (error handling) 。 什么是 waPC? WASM 外部函数 接口 FFI Input type Return type Platform0 码力 | 30 页 | 2.50 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程__global__ 修饰的就是核函数。 没有反应?同步一下! • 然而如果直接编译运行刚刚那段代码,是不会打印出 Hello, world! 的。 • 这是因为 GPU 和 CPU 之间的通信,为了高效,是异 步的。也就是 CPU 调用 kernel<<<1, 1>>>() 后,并不 会立即在 GPU 上执行完毕,再返回。实际上只是把 kernel 这个任务推送到 GPU 的执行队列上,然后立即0 码力 | 142 页 | 13.52 MB | 1 年前3
共 4 条
- 1













