2 linmuchuiyang linmuchuiyang 于 2014.04.30 16:17 提问

cudaHostAlloc分配的内存如何在CPU段进行赋值

double a;
cudaHostAlloc((void
*)&a,sizeof(double),cudaHostAllocWriteCombined|cudaHostAllocMapped|cudaHostAllocPortable);
a[0]=10.0;
当我用如上的方式进行页锁定内存分配之后进行赋值的时候,为何编译器总会提示段错误?有没有办法对上述的也锁定内存在CPU段进行初始化。后面的cudaHostAllocDefault参数之类的换了又换也没有解决。

1个回答

qq_30543001
qq_30543001   2016.05.05 10:41

你说的问题我好像写过,可以用的!我截图给你看!!图片说明

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
CUDA下在Host端分配的几种内存模式
平时我们使用的内存都是Pageable(交换页)的,而另一个模式就是Pinned(Page-locked),实质是强制让系统在物理内存中完成内存申请和释放的工作,不参与页交换,从而提高系统效率,需要使用cudaHostAlloc和cudaFreeHost来分配和释放。   优点   1、带宽更高   2、内核处理和内存拷贝可同时进行   3、可以内存映射(mapped)
cudaMallocHost函数详解
在CUDA2.2以下,仅提供cudaMallocHost函数用于分配页锁定内存,与C语言函数malloc分配分页内存相对应。 而从CUDA2.2开始,页锁定内存增加三种新的类型用于主机多线程的portable,用于高效写回write-combined以及零拷贝的mapping,用cudaHostAlloc进行分配,其中采用四个可选参数标志用以指定使用何种特性: cudaHostAllocDef
CUDA内存分配
内存分配详解  http://blog.163.com/liulijuan_llj/blog/static/177843275201153102339612/
编译时赋初值和分配内存?
所谓编译期间分配内存指的是静态分配空间(相对于new动态申请空间),包括全局变量和静态变量(包括一些特别复杂的常量),他们所以需要的空间大小可以明确的计算出来,并且不会再改变,因此他们可以直接存放在特定的节里(并且包含初始化的值),程序运行时也是直接将这个节添加到特定的段中,不必在程序运行期间使用额外的代码来产生这些变量。其实在运行期间再看“变量”这个概念就不再具备编译期间那么多属性了(诸如名称、
内存为什么要分段? 分成多少种段? 段与段寄存器的区别?
1.内存为什么要分段? 分成多少种段? 段与段寄存器的区别? 8086CPU有20根地址线,最大可寻址内存空间为1MB。而8086的寄存器只有16位,指令指针(IP)和变址寄存器(SI、DI)也是16位的。用16位的地址寻址1MB空间是不可能的。所以就要把内存分段,也就是把1MB空间分为若干个段,每段不超过64KB,在8086中设置4个16位的段寄存器,用于管理4种段:CS是代码
CUDA使用二级指针表示二维数组
首先看下我们在CPU上是如何用二级指针表示二维数组的,其实就两点:一是用一级指针保存数据,二是用二级指针去按行索引数据位置。关于一级指针和二级指针的内存分配这里不讲了,注意数据类型就可以了。 代码做了相关说明,应该比较好理解: #define Row 8 #define Col 4 //声明Row个行指针: cpuA cpuA+0 cpuA+1 cpuA+Row int
malloc函数进行内存分配是在什么阶段?
程序占用三种类型的内存:静态内存、栈内存、堆内存; 静态内存: 用来保存局部static对象、类static数据成员以及定义在任何函数之外的变量 栈内存: 用来保存定义在函数内的非static对象。分配在静态内存或栈内存中的对象由编译器自动创建和销毁。对于栈对象,仅在其定义的程序块运行时才存在;static对象在使用之前分配,在程序结束时销毁。堆内存: 在程序运行时分配。动态对象的生存周期
Java程序运行时,没有赋值的基本类型变量会在内存中分配空间吗?
基本类型的变量如果是临时变量,只要定义了,就会分配内存空间,不管是否被赋值;如果是作为对象的属性出现,只要该对象不实例化,就不会分配内存空间。一个完整的Java程序运行过程会涉及以下内存区域:1、寄存器:JVM内部虚拟寄存器,存取速度非常快,程序不可控制。2、 栈:保存局部变量的值,包括: 1)用来保存基本数据类型的值; 2)保存类的实例,即堆区对象的引用(指针) 3)也可以用来
docker高级应用之cpu与内存资源限制
之前介绍过如何使用ovs的qos技术对docker容器做网络资源限制,本次介绍如何使用docker本身的参数进行cpu与内存资源限制。默认docker本身提供在创建容器的时候,进行内存、swap、cpu限制,但使用起来就得有些技巧需要注意,具体如下:1、内存限制默认docker内存限制可以使用-m参数进行限制,但如果仅-m参数,不添加其他,那么内存限制不会限制死,比如你-m 256m内存,那么容器...
SQL Server 2008 R2 CPU 和 内存 最大优化 分配
微软SQL Server 2008 R2中的资源分配方式与SQL Server 2005中的方式相比是一种完全不同的过程。利用资源控制器,在SQL Server 2008 R2中解决方案供应商有切实可用的方法管理CPU和内存。  资源消耗是长期以来困扰使用SQL Server的解决方案供应商的基本问题之一。任何服务器,不管它是物理的还是虚拟的,供处置的CPU和内存池都是有限的。过去,这一简单的事实给SQL Server带来许多麻烦,因为它通常是资源非常敏感的应用。  如果服务器上只托管了唯一一个数据库的话,