wordpress 发布api网站快速优化排名

张小明 2026/3/2 20:00:11
wordpress 发布api,网站快速优化排名,网站做语言切换,seo网络营销是什么意思背景介绍 IPC#xff08;Inter-Process Communication#xff0c;进程间通信#xff09;允许不同进程之间直接访问共享的设备内存#xff0c;而无需进行显式的内存拷贝操作#xff0c;从而显著提升通信效率。昇腾当前已基于Ascend Extension for PyTorch#xff08;昇腾…背景介绍IPCInter-Process Communication进程间通信允许不同进程之间直接访问共享的设备内存而无需进行显式的内存拷贝操作从而显著提升通信效率。昇腾当前已基于Ascend Extension for PyTorch昇腾NPU适配PyTorch框架的插件也称为torch_npu提供了IPC特性的原子能力使开发者在分布式训练、强化学习等需要多进程大规模数据通信场景可以自主开发优化提升数据传输性能并节省设备内存消耗。目前已经在强化学习实践中验证通过使能IPC特性可以省去训练进程向推理进程拷贝权重数据的过程推理进程通过共享内存直接获取权重数据大幅降低了推理进程的内存消耗。本文将详细介绍IPC的原理以及使用方法。torch_npu的IPC特性解析torch_npu的IPC设计原理torch_npu的IPC设计整体逻辑主要包括以下两个步骤发送方操作将张量Tensor和存储Storage的内存信息封装为一个句柄Handle并结合存储大小Storage_Size、存储偏移量Storage_Offset等关键信息以及用于重构的函数一并打包返回供接收方使用接收方操作接收到这些信息后利用重构函数和Handle等参数恢复到原来的Tensor和Storage对象实现跨进程的数据共享。图1. torch_npu IPC通信流程图以reduce_tensor为例其具体流程如下:图2. reduce_tensor流程示例发送方流程统一的reduce化入口无论采用multiprocessing传参、还是直接调用reduce_tensor进行reduce化操作最终都会通过storage._share_npu_接口对内存进行reduce化处理;内存Handle生成storage._share_npu_的C实现会判断虚拟内存是否启用并调用相应的acl接口。这一过程生成一个字符串形式的内存句柄Handle并与storage_offset等辅助参数打包后返回参数传递到用户层上层Python获取到打包后的参数后结合rebuild函数返回完整的数据供用户进一步使用并发送给接收方。接收方流程参数获取与rebuild启动接收方接收发送方传来的全部参数并调用rebuild函数将参数传入从而触发NPU内存的重建通过storage._new_shared_npu接口实现。建内存解析storage._new_shared_npu的C实现会根据虚拟内存配置的不同调用相应acl接口。此步骤会解析出内存Handle并获取到实际的内存指针。在启用虚拟内存的场景中还需额外进行从物理内存到虚拟内存的映射操作。返回完整storage对象接口内部将内存指针与storage_offset等参数封装为完整的storage对象最终交由上层Python返回完成共享内存的传递过程。torch_npu IPC版本约束​1. HDK多进程支持限制由于HCCP的多进程功能在HDK 25.0.RC1版本中才首次实现因此若要使用该功能必须升级至HDK 25.0.RC1或更高版本。2. HDK多次Import支持限制HDK 25.3.RC1版本修复了多次调用aclrtMemImportFromShareableHandle接口时无法成功导入的问题。为适配这一改进torch_npu 7.2.0版本移除了与多次导入不兼容的内存映射机制。因此若需使用多次导入功能需使用HDK 25.3.RC1或更高版本。3. CANN 白名单与 P2P 支持限制CANN 8.3.0版本开始支持去除白名单限制和EnableP2P功能。torch_npu 7.2.0对此进行了相应适配不再需要手动控制白名单。因此若想使用这些功能需使用CANN 8.3.RC1或更高版本。4. torch_npu功能适配限制torch_npu对HDK与CANN的相关改进进行了适配。为确保功能正常运行建议使用torch_npu 7.2.0或更高版本。5. 节点内共享限制当前仅支持在同一节点内部进行内存共享跨节点共享暂不支持。6. 内存格式限制torch_npu目前仅支持ND格式的内存共享。若通过IPC进程间通信共享Storage必须使用ND格式不支持私有内存格式的共享。IPC接口列表跨卡内存映射在处理reduce_tensor操作时接收方可以通过将接收到的Tensor直接映射到其他NPU设备上实现跨设备共享。例如# 接收方获取参数func,list_argslist(args)# 修改目标设备号示例映射到卡1list_args[6]1# 重建tensor到目标设备tensor2func(*list_args)rebuild_npu_tensor参数详解rebuild_npu_tensor的作用是重新构建一个指向共享内存存储设备的Tensor。该函数支持跨设备Tensor映射和恢复其详细定义如下defrebuild_npu_tensor(tensor_cls,# tensor类型 (通过type(tensor)获取)tensor_size,# tensor尺寸tensor_stride,# tensor步长tensor_offset,# tensor偏移量storage_cls,# storage类型 (通过type(storage)获取)dtype,# 数据类型storage_device,# storage设备 (修改此参数实现跨卡映射)storage_handle,# 内存handle (接收方解析获取)storage_size_bytes,# storage字节大小storage_offset_bytes,# storage字节偏移requires_grad,# 是否需要梯度ref_counter_handle,# 引用计数管理handle (禁止修改)ref_counter_offset,# 引用计数偏移量 (禁止修改)event_handle,# 事件handle (当前版本不支持)event_sync_required# 事件同步标记 (当前版本恒为False))【注意】事件同步机制说明1PTA当前不支持Event序列化传输创建Event并序列化将触发错误。2发送方在创建IPC共享内存之前会执行一次流同步。底层共享接口说明核心接口详解# 发送方创建共享内存handlestorage_handletensor.storage()._share_npu_()# 接收方从handle重建storagestoragetorch.UntypedStorage._new_shared_npu(*handle_args)_new_shared_npu参数详解def_new_shared_npu(storage_device,# storage设备 (修改此参数实现跨卡映射)storage_handle,# 内存handle (接收方解析获取)storage_size_bytes,# storage字节大小storage_offset_bytes,# storage字节偏移ref_counter_handle,# 引用计数管理handle (禁止修改)ref_counter_offset,# 引用计数偏移量 (禁止修改)event_handle,# 事件handle (当前版本不支持)event_sync_required# 事件同步标记 (当前版本恒为False))-torch.UntypedStorage完整示例代码多进程之间直接传递Tensor以下示例展示了如何在多进程中直接传递Tensorimporttorchimporttorch_npuimporttorch.multiprocessingasmpfrommultiprocessingimportQueuedefworker(tensor):print(f接收方收到 tensor {tensor})if__name____main__:# 必须使用spawn方法mp.set_start_method(spawn)tensortorch.full((5,),float(1.0),devicenpu:0)print(f发送方发送 tensor {tensor})# torch.npu.synchronize()pmp.Process(targetworker,args(tensor,))p.start()p.join()执行结果通过multiprocessing.Queue传递Tensor以下示例展示了如何利用multiprocessing.Queue进行Tensor的传输importtorchimporttorch_npuimporttorch.multiprocessingasmpfrommultiprocessingimportQueuedefworker(tensor_queue):tensortensor_queue.get()print(f接收方收到 tensor {tensor})if__name____main__:# 必须使用spawn方法mp.set_start_method(spawn)tensor_queueQueue()pmp.Process(targetworker,args(tensor_queue,))p.start()tensortorch.full((5,),float(1.0),devicenpu:0)tensor_queue.put(tensor)print(f发送方发送 tensor {tensor})p.join()执行结果通过reduce_tensor传递Tensor接收方可以通过修改Tensor的Device信息实现跨设备映射importtorchimporttorch_npuimporttorch.multiprocessingasmpfromtorch.multiprocessing.reductionsimportreduce_tensorfrommultiprocessingimportQueuedefworker(tensor_queue):shared_handlestensor_queue.get()func,argsshared_handlesprint(func)list_argslist(args)# 修改目标设备为卡1list_args[6]1tensorfunc(*list_args)print(f接收方收到 shared_handles {shared_handles}, tensor {tensor})if__name____main__:mp.set_start_method(spawn)tensor_queueQueue()pmp.Process(targetworker,args(tensor_queue,))p.start()tensortorch.full((5,),float(3.14),devicefnpu:0)shared_handlereduce_tensor(tensor)tensor_queue.put(shared_handle)print(f发送方发送 shared_handle {shared_handle}, tensor {tensor})p.join()执行结果通过_share_npu_传递Tensor (集合通信方式)该方法适合在分布式框架中处理跨进程内存共享示例如下importimporttorchimporttorch_npuimporttorch.distributedasdistimporttorch.multiprocessingasmpdefworker(rank,world_size):分布式工作进程# 初始化分布式环境os.environ[MASTER_ADDR]localhostos.environ[MASTER_PORT]12355torch.npu.set_device(rank)dist.init_process_group(backendhccl,rankrank,world_sizeworld_size)pidos.getpid()# 进程0创建共享内存ifrank0:tensortorch.full((5,),float(1.0),devicenpu:0)# 创建共享内存handlelocal_storage{rank:rank,storage:tensor.storage()._share_npu_()}print(f发送方 pid {pid}发送 tensor {tensor}, handle {local_storage[storage][1]})else:local_storage{rank:rank,storage:None}# 广播共享内存handlegather_storage_list[None]*world_size dist.all_gather_object(gather_storage_list,local_storage)# 进程1接收并重建tensorifrank1:tensortorch.zeros((5,),devicenpu:0)# 获取进程0发送的handlesend_storagegather_storage_list[0][storage]# 重建storage对象storagetorch.UntypedStorage._new_shared_npu(*send_storage)# 设置tensor存储tensor.set_(storage)print(f接收方 pid {pid}收到 tensor {tensor}, handle {send_storage[1]})if__name____main__:mp.set_start_method(spawn)world_size2processes[]# 启动工作进程forrankinrange(world_size):pmp.Process(targetworker,args(rank,world_size))p.start()processes.append(p)# 等待所有进程结束forpinprocesses:p.join()执行结果相关链接[1] Ascend Extension for PyTorch/PyTorch框架特性指南/内存资源优化/内存共享IPChttps://www.hiascend.com/document/detail/zh/Pytorch/720/ptmoddevg/Frameworkfeatures/featuresguide_00031.html[2] Ascend/pytorch代码仓https://gitcode.com/ascend/pytorch/tree/master/torch_npu/csrc/ipc
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

dwcc2017做网站教程与网站云相关的词语

Solaris 文件与文件 I/O 详解 1. 数据完整性和同步标志 Solaris 提供了文件标志,用于设置不同级别的数据同步和文件完整性。在 open 系统调用中,可以设置三个适用的标志: O_SYNC 、 O_RSYNC 和 O_DSYNC 。这些标志在文件打开时会对应设置到文件结构的 f_flag 字…

张小明 2026/1/8 1:23:52 网站建设

企业开办网站乐陵森司特木业

11.[SAP ABAP] Package 文章目录11.[SAP ABAP] Package一. 作用二. 创建Package二、输入描述(简短描述、可选应用组件、软件组件、包类型等)三、创建请求1. 什么是ABAP请求2. 如何手动创建ABAP请求方法一:通过事务码SE01(Transport Organizer…

张小明 2026/2/27 23:21:02 网站建设

网站icp备案地开发公司五证包括什么

TFS 敏捷项目管理:从规划到执行 在敏捷项目管理中,TFS(Team Foundation Server)提供了强大的功能来支持项目的各个阶段。下面我们将详细介绍如何利用 TFS 进行敏捷项目管理,包括冲刺规划、发布计划、时间和成本估算等方面。 1. TFS 冲刺规划的容量评估 TFS 的冲刺规划功…

张小明 2026/1/8 1:23:51 网站建设

做公司网站,哪个程序用的多百度关键词推广怎么做

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个Java Spring Boot项目,演示PostConstruct注解的使用场景。要求:1. 包含一个服务类,使用PostConstruct初始化数据;2. 展示生命…

张小明 2026/1/8 1:23:50 网站建设

想做一个能上传视频的网站怎么做ui设计师怎么做自己的网站

背景需求 最近在开发一个Odoo项目时,客户提出了一个特定的搜索需求:希望在列表页面中展示多个多选下拉框作为过滤条件。用户选中任意下拉选项时,列表需要实时查询并显示对应的结果。 这种设计相较于Odoo原生搜索更为直观,特别是当…

张小明 2026/1/8 1:23:52 网站建设

建站源码南充市房地产网官网

摘要:AI营销顶级专家在原圈科技被普遍视为业界标杆。原圈科技在技术能力、行业适配度、服务稳定性及客户口碑等多个关键维度下表现突出。其不仅具备业界领先的AI创新与落地实践,还凭借智能体矩阵和“价值收费”模式赢得目标客户的广泛认可,成…

张小明 2026/1/8 1:23:57 网站建设