共享CUDA内存

进程间共享

此功能仅限于Linux。

将设备阵列导出到另一个进程

使用CUDA IPC API,可以与同一台计算机上的另一个进程共享设备阵列。为此,请使用.get_ipc_handle()设备阵列上的方法获取一个IpcArrayHandle对象,该对象可以转移到另一个进程。

DeviceNDArray.get_ipc_handle()

返回一个IpcArrayHandle对象,该对象可以安全地序列化并传输到另一个进程以共享本地分配。

注意:此功能仅在Linux上可用。

numba.cuda.cudadrv.devicearray.IpcArrayHandleipc_handlearray_desc 

IPC阵列句柄可以序列化并转移到同一台计算机上的另一个进程,以共享GPU分配。

在目标进程上,使用.open()方法创建一个新的 DeviceNDArray对象,该对象共享来自原始进程的分配。要释放资源,请调用.close()方法。此后,目标将无法再使用共享数组对象。(注意:对资源的底层weakref现在已失效。)

该对象实现了上下文管理器接口,该接口自动调用 .open().close()方法:

with the_ipc_array_handle as ipc_array:
    # use ipc_array here as a normal gpu array object
    some_code(ipc_array)
# ipc_array is dead at this point

close()

关闭阵列的IPC句柄。

open()

返回一个共享原始进程分配的新DeviceNDArray。不得在原始过程中使用。

从另一个进程导入IPC内存

以下函数用于从另一个进程作为设备阵列打开IPC句柄。

cuda.open_ipc_arrayshapedtypestrides = Noneoffset = 0 

一个上下文管理器,它打开一个IPC句柄CUipcMemHandle),该句柄表示为一个字节序列(例如,字节,int元组),并将其表示为给定形状步幅dtype的数组,步幅可以省略。在那种情况下,假定它是一维C连续数组。

产生一个设备阵列。

上下文管理器退出时,IPC句柄将自动关闭。

共享CUDA内存的更多相关文章

  1. CUDA 内存统一分析

    CUDA 内存统一分析 关于CUDA 编程的基本知识,如何编写一个简单的程序,在内存中分配两个可供 GPU 访问的数字数组,然后将它们加在 GPU 上. 本文介绍内存统一,这使得分配和访问系统中任何处 ...

  2. clients(PV操作共享内核内存进行输入输出分屏) - server(进程间通信)模型实现

    1.拓扑结构 2.PV操作共享内核内存进行输入输出分屏 (1) int semop(int semid,struct sembuf *sops,size_t nsops): 功能描述 操作一个或一组信 ...

  3. CUDA学习笔记(三)——CUDA内存

    转自:http://blog.sina.com.cn/s/blog_48b9e1f90100fm5f.html 结合lec07_intro_cuda.pptx学习 内存类型 CGMA: Compute ...

  4. cuda内存总结

    1.shared memory __shared__ 声明为共享内存,将会保存在共享内存中  2.constant memory __constant__ 声明为常量内存,将会保存在常量内存中,常量内 ...

  5. go语言笔记——切片底层本质是共享数组内存!!!绝对不要用指针指向 slice切片本身已经是一个引用类型就是指针

    切片 切片(slice)是对数组一个连续片段的引用(该数组我们称之为相关数组,通常是匿名的),所以切片是一个引用类型(因此更类似于 C/C++ 中的数组类型,或者 Python 中的 list 类型) ...

  6. CUDA -- 内存分配

    CUDA可以认为是一个由软件和硬件构成的并行计算系统,其依赖于GPU的并行计算单元,CUDA有类C的API,方便程序编写.其依赖于CPU和GPU的异构体系,通过在CPU上串行执行环境初始化.内存分配. ...

  7. CUDA内存拷贝

    原文链接1.cudaMemcpy()<--> cudaMalloc()  //线性内存拷贝 1 //线性内存拷贝 2 cudaMalloc((void**)&dev_A, data ...

  8. 布客&#183;ApacheCN 翻译/校对/笔记整理活动进度公告 2020.1

    注意 请贡献者查看参与方式,然后直接在 ISSUE 中认领. 翻译/校对三个文档就可以申请当负责人,我们会把你拉进合伙人群.翻译/校对五个文档的贡献者,可以申请实习证明. 请私聊片刻(52981514 ...

  9. CUDA: 共享内存与同步

    CUDA C支持共享内存, 将CUDA C关键字__shared__添加到变量声明中,将使这个变量驻留在共享内存中.对在GPU上启动的每个线程块,CUDA C编译器都将创建该变量的一个副本.线程块中的 ...

随机推荐

  1. Mysql 8.0安装

    1. 下载安装包至/usr/local目录下 下载地址:https://cdn.mysql.com/Downloads/MySQL-8.0/mysql-8.0.16-el7-x86_64.tar.gz ...

  2. PHP正则匹配各种匹配方法

    平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用: 匹配数字 "^\d+$" //非负整数(正整数 + 0) "[1][1-9][0-9]$&q ...

  3. 技术面试问题汇总第002篇:猎豹移动反病毒工程师part2

    这次拿三个问题来讨论,是关于调试器的.因为对于反病毒工程师而言,类似于OllyDbg和IDA的使用方法是必须掌握的,但是在面试中又不太方便考察,所以只能对其快捷键或者调试器实现原理之类的问题进行提问. ...

  4. hdu1816 + POJ 2723开锁(二分+2sat)

    题意:      有m层门,我们在最外层,我们要一层一层的进,每一层上有两把锁,我们只要开启其中的一把们就会开,我们有n组钥匙,每组两把,我们只能用其中的一把,用完后第二把瞬间就会消失,问你最多能开到 ...

  5. drozer源码学习:app

    源码下载:https://github.com/mwrlabs/drozer:模块的源码位于src.drozer.modules,根据模块名来划分文件夹: app.auxiliary.exploit. ...

  6. Python电子书分享

    下载链接:链接:https://pan.baidu.com/s/1v004zaBfsEIF60oSgVq6sA 密码:i3aa 应用篇 下载链接:链接:https://pan.baidu.com/s/ ...

  7. 【Linux】在centos中使用命令安装redis

    1.前提centos能够上网 测试方式输入命令,有数据返回即可.如果则先配置centos网络连接. ping www.baidu.com 2.安装gcc 输入命令进行安装 yum install gc ...

  8. 最新.NET Core面试题汇总

    这几天给.neter们整理了26道.NET Core面试题,初衷也很简单,就是希望在面试的时候能够帮助到大家,减轻大家的负担和节省时间.对于没有跳槽打算的也可以复习一下相关知识点,就当是查缺补漏! 对 ...

  9. GPUImage移植总结

    项目github地址: aoce 我是去年年底才知道有GPUImage这个项目,以前也一直没有在移动平台开发过,但是我在win平台有编写一个类似的项目oeip(不要关注了,所有功能都移植或快移植到ao ...

  10. appium等待元素

    1.sleep()方法 Thread.sleep(60000)强制等待60s 2.隐式等待implicitlyWait() driver.manage().timeouts().implicitlyW ...