CANN Runtime随机数生成示例
Launch Random Number Sample【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime概述本示例展示了如何使用 CANN Runtime 的aclrtRandomNumAsyncAPI 生成随机数。支持多种随机数分布类型和数据类型用于满足不同场景下的随机数生成需求。产品支持情况本样例在以下产品上的支持情况如下产品是否支持Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√编译运行环境安装详情以及运行详情请见example目录下的README。运行步骤如下# ${install_root} 替换为 CANN 安装根目录默认安装在/usr/local/Ascend目录 source ${install_root}/cann/set_env.sh export ASCEND_INSTALL_PATH${install_root}/cann # 编译运行 bash run.shCANN RUNTIME API在该Sample中涉及的关键功能点及其关键接口如下所示初始化调用aclInit接口初始化AscendCL配置。调用aclFinalize接口实现AscendCL去初始化。Device管理调用aclrtSetDevice接口指定用于运算的Device。调用aclrtResetDeviceForce接口强制复位当前运算的Device回收Device上的资源。Stream管理调用aclrtCreateStream接口创建Stream。调用aclrtSynchronizeStream接口阻塞等待Stream上任务执行完成。内存管理调用aclrtMalloc接口申请Device上的输出缓冲区和随机数计数器缓冲区。调用aclrtFree接口释放Device上的内存。数据传输调用aclrtMemcpy接口将生成的随机数拷贝回Host侧进行检查。随机数任务执行调用aclrtRandomNumAsync接口异步下发随机数任务生成uniform、normal等分布结果以及 dropout bitmask。核心 APIaclrtRandomNumAsyncaclError aclrtRandomNumAsync( const aclrtRandomNumTaskInfo* taskInfo, // 随机数任务信息 aclrtStream stream, // Stream void* reserve // 预留字段 );aclrtRandomNumTaskInfo 结构体typedef struct { aclDataType dataType; aclrtRandomNumFuncParaInfo randomNumFuncParaInfo; void *randomParaAddr; void *randomResultAddr; void *randomCounterAddr; aclrtRandomParaInfo randomSeed; aclrtRandomParaInfo randomNum; uint8_t rsv[10]; } aclrtRandomNumTaskInfo;随机数生成类型1. 均匀分布 (Uniform Distribution)支持的数据类型浮点类型:ACL_FLOAT,ACL_FLOAT16,ACL_BF16整数类型:ACL_INT32,ACL_INT64,ACL_UINT32,ACL_UINT64函数类型标识:ACL_RT_RANDOM_NUM_FUNC_TYPE_UNIFORM_DIS参数说明min: 最小值max: 最大值2. 正态分布 (Normal Distribution)支持的数据类型ACL_FLOAT,ACL_FLOAT16,ACL_BF16函数类型标识:ACL_RT_RANDOM_NUM_FUNC_TYPE_NORMAL_DIS参数说明mean: 均值stddev: 标准差3. 截断正态分布 (Truncated Normal Distribution)支持的数据类型ACL_FLOAT,ACL_FLOAT16,ACL_BF16函数类型标识:ACL_RT_RANDOM_NUM_FUNC_TYPE_TRUNCATED_NORMAL_DIS参数说明mean: 均值stddev: 标准差4. Dropout Bitmask 生成用于生成随机失活Dropout的 bit mask支持按比例生成。函数类型标识:ACL_RT_RANDOM_NUM_FUNC_TYPE_DROPOUT_BITMASK参数说明:ratio: dropout比例 支持数据类型ACL_FLOAT,ACL_FLOAT16,ACL_BF16随机数算法算法特性Philox4_32_10- 支持所有分布类型- Counter 为 128bit需要 16Byte 存储内存要求Counter 内存: 固定 16 字节任意字节对齐地址即可输出内存: 根据数据类型和随机数数量动态分配参数内存: 均值、标准差、范围等参数可使用立即值或设备内存已知issue暂无【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考