CUDA编程优化Float16精度的atomicAdd

NLP中词嵌入(embedding)是非常重要的一环,embedding算子在反向计算时不同的线程会写入同一个结果,面对这类写冲突问题,高效的多线程计算必然要无锁化设计。而NVIDIA的加速卡本身支持了atomicAdd等原子计算。

当我们使用较低精度在一些训推任务中量化加速模型时(如:FP16精度),CUDA底层会调用诸如 atomicAdd(half*, half) 这类原子指令。但是当前的硬件对这条指令的支持不够好,所以我们需要借助一些内存对齐的技术以应用效率更高的 atomicAdd(half2*, half2) 指令。本文重点讲述如何利用软件来弥补硬件的缺陷这样的实例。

Read More

Introducing 'Smart Intermediate Representation' -- An Open Sourced Compiler Framework for Smart Contract

Background

Smart Intermediate Representation (hereinafter referred to as SIR) is a smart contract compiler framework independently developed by Ant Group. Paired with high-performance runtime, it is applied to the WASM ecosystem. On a mission of compiling multi-target and multi-scenario smart contracts more securely and reliablely, it is committed to providing a computing engine driven by IR, both on and off the chain.

Read More

世界上第一款防盗智能合约——ERC721G

自NFT流通以来,出现过多起被盗事件。主要有私钥被盗、钓鱼攻击等主要表现形式,在现有的案例中一经被盗很难被追回。追回的案例也大都需要被盗人二次出价,成本极高。在此TurtleCase Gang提出一种通用的技术解决方案,以便可以适配任何ERC721标准的合约,帮助NFT持有者共同守护财产安全。

Read More

DApp一日通——web3.js、Truffle与Dfinity篇

本文在Truffle框架的基础上给出一个可快速上手DApp的教程,并非工业化流程,其中对于真实的生产环境做了大量的精简,仅保留最关键的几个部分,对于初学者足以了解一个DApp的开发工作流程,但是对于工业级生产则远远不够。这里仅作为一个入门来一窥DApp的基本概念。

Read More

智能合约一日通——Solidity篇

比特币是中本聪(未必是个体,可能是一群人,人人都可能是中本聪)送给全世界的礼物,在过去的历史经验中,我们看到了其叹为观止的金融属性,但是作为一种创新我们除了看到其金融性质外,还有很多熟悉的事物值得被重新定义,从而探索出新的价值。就比如说:信任和验证。这也带来了在区块链上部署去中心可计算合约的可能性:Smart Contract。

Read More

从web 1.0到web 3.0

最近很忙,难得偷闲写一篇文章。感叹世界的变化真的很快,转眼间web 2.0以某种意想不到的方式开始陨落了,在人类历史中还未曾有如此迅速之变局,想必第一次工业革命也是持续了百年之久的。回忆起自己小时候,小学四年级的暑假,11岁,用 Frontpage 2000 亦或是 2002/03 制作了人生中第一个网站神英启蒙网(全文),那是典型的web 1.0时代的产物,只读。快20年了,现在已经处于web2到web3的大航海时代,是一种交割,也是一种新增量,未来必然是冒险家的乐园。

Read More