Sophie

Sophie

distrib > Mageia > 2 > i586 > media > nonfree-release > by-pkgid > f86555c654b1f4a4c7ccf47789979868 > files > 876

nvidia-cuda-toolkit-devel-4.2.9-2.mga2.nonfree.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>NVIDIA CUDA Library: cudaHostAlloc</title>
<link href="customdoxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.8 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
  <div class="navpath"><a class="el" href="group__CUDART__MEMORY.html">Memory Management</a>
  </div>
<table cellspacing="0" cellpadding="0" border="0">
  <tr>
   <td valign="top">
      <div class="navtab">
        <table>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g9822e18349b1a7b91f45e8bea158720d.html#g9822e18349b1a7b91f45e8bea158720d">cudaArrayGetInfo</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_gb17fef862d4d1fefb9dba35bd62a187e.html#gb17fef862d4d1fefb9dba35bd62a187e">cudaFree</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g87eb9f7a50c1f43aee18bdcfde3f4340.html#g87eb9f7a50c1f43aee18bdcfde3f4340">cudaFreeArray</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_gedaeb2708ad3f74d5b417ee1874ec84a.html#gedaeb2708ad3f74d5b417ee1874ec84a">cudaFreeHost</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g2db2376f8fb4203df2fa9e104e16978e.html#g2db2376f8fb4203df2fa9e104e16978e">cudaGetSymbolAddress</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g8423ddbee69126e5507178f1567b05f1.html#g8423ddbee69126e5507178f1567b05f1">cudaGetSymbolSize</a></td></tr>
          <tr><td class="navtab"><a class="qindexHL" href="group__CUDART__MEMORY_g15a3871f15f8c38f5b7190946845758c.html#g15a3871f15f8c38f5b7190946845758c">cudaHostAlloc</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_ga475419a9b21a66036029d5001ea908c.html#ga475419a9b21a66036029d5001ea908c">cudaHostGetDevicePointer</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_gebe2eb6246522d683325c41c65ff427c.html#gebe2eb6246522d683325c41c65ff427c">cudaHostGetFlags</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g36b9fe28f547f28d23742e8c7cd18141.html#g36b9fe28f547f28d23742e8c7cd18141">cudaHostRegister</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_gc07b1312c60ca36c118e2ed71b192afe.html#gc07b1312c60ca36c118e2ed71b192afe">cudaHostUnregister</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_gc63ffd93e344b939d6399199d8b12fef.html#gc63ffd93e344b939d6399199d8b12fef">cudaMalloc</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g04a7553c90322aef32f8544d5c356a10.html#g04a7553c90322aef32f8544d5c356a10">cudaMalloc3D</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g4a8473bad5109b6cf1794b4154cc3e0d.html#g4a8473bad5109b6cf1794b4154cc3e0d">cudaMalloc3DArray</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_gf0689399573bd8a922351aae4d040349.html#gf0689399573bd8a922351aae4d040349">cudaMallocArray</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g9f93d9600f4504e0d637ceb43c91ebad.html#g9f93d9600f4504e0d637ceb43c91ebad">cudaMallocHost</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g80d689bc903792f906e49be4a0b6d8db.html#g80d689bc903792f906e49be4a0b6d8db">cudaMallocPitch</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g48efa06b81cc031b2aa6fdc2e9930741.html#g48efa06b81cc031b2aa6fdc2e9930741">cudaMemcpy</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g17f3a55e8c9aef5f90b67cdf22851375.html#g17f3a55e8c9aef5f90b67cdf22851375">cudaMemcpy2D</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_gf8948b8a08e0a07eb7b9087a0b7112b5.html#gf8948b8a08e0a07eb7b9087a0b7112b5">cudaMemcpy2DArrayToArray</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_gedfe4cb63f692bde9dcbfc9a74d9a70c.html#gedfe4cb63f692bde9dcbfc9a74d9a70c">cudaMemcpy2DAsync</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g96eddd33b321e91d6fb1b9f337bf5a47.html#g96eddd33b321e91d6fb1b9f337bf5a47">cudaMemcpy2DFromArray</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g97d8bb906a67e3d8949ce7b8a22339ad.html#g97d8bb906a67e3d8949ce7b8a22339ad">cudaMemcpy2DFromArrayAsync</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g1cc6e4eb2a5e0cd2bebbc8ebb4b6c46f.html#g1cc6e4eb2a5e0cd2bebbc8ebb4b6c46f">cudaMemcpy2DToArray</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g8603102f7fcacec84a90bc7de6f1c0ac.html#g8603102f7fcacec84a90bc7de6f1c0ac">cudaMemcpy2DToArrayAsync</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_gc1372614eb614f4689fbb82b4692d30a.html#gc1372614eb614f4689fbb82b4692d30a">cudaMemcpy3D</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g6ee90dad01ae562e08405ce8131bbdc5.html#g6ee90dad01ae562e08405ce8131bbdc5">cudaMemcpy3DAsync</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g2897b87e2e827cb1eb439ad00681dd90.html#g2897b87e2e827cb1eb439ad00681dd90">cudaMemcpy3DPeer</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g6dcdbe4854c6743e5086ab7805469cd9.html#g6dcdbe4854c6743e5086ab7805469cd9">cudaMemcpy3DPeerAsync</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_gd4fe90634d880eff1c37d98d31667638.html#gd4fe90634d880eff1c37d98d31667638">cudaMemcpyArrayToArray</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g732efed5ab5cb184c920a21eb36e8ce4.html#g732efed5ab5cb184c920a21eb36e8ce4">cudaMemcpyAsync</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g1620c76fb3337df8dc7186fd88f40b1a.html#g1620c76fb3337df8dc7186fd88f40b1a">cudaMemcpyFromArray</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_gab04836288a17fba1d25e782eeba4d1c.html#gab04836288a17fba1d25e782eeba4d1c">cudaMemcpyFromArrayAsync</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g4c9806709c42dc214a4b4ad8f53c9417.html#g4c9806709c42dc214a4b4ad8f53c9417">cudaMemcpyFromSymbol</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_gf9d3f125f642cc52a3956a7a166c5440.html#gf9d3f125f642cc52a3956a7a166c5440">cudaMemcpyFromSymbolAsync</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g046702971bc5a66d9bc6000682a6d844.html#g046702971bc5a66d9bc6000682a6d844">cudaMemcpyPeer</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g8ff91443cbf4bb9334bec897ac7d6691.html#g8ff91443cbf4bb9334bec897ac7d6691">cudaMemcpyPeerAsync</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g06db36948e3ccda65d1adf3529420696.html#g06db36948e3ccda65d1adf3529420696">cudaMemcpyToArray</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_gb31b93fd9791e2303d8b18d8488436d3.html#gb31b93fd9791e2303d8b18d8488436d3">cudaMemcpyToArrayAsync</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_gf268fa2004636b6926fdcd3189152a14.html#gf268fa2004636b6926fdcd3189152a14">cudaMemcpyToSymbol</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_gdccfec28709fbef22da701a4e619c1ac.html#gdccfec28709fbef22da701a4e619c1ac">cudaMemcpyToSymbolAsync</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_gd5d6772f4b2f3355078ecd6059e6aa74.html#gd5d6772f4b2f3355078ecd6059e6aa74">cudaMemGetInfo</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_ge07c97b96efd09abaeb3ca3b5f8da4ee.html#ge07c97b96efd09abaeb3ca3b5f8da4ee">cudaMemset</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g2b3248e96aaba2241796e113d1798db3.html#g2b3248e96aaba2241796e113d1798db3">cudaMemset2D</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g231613b675c00ba22b0546ff7a8dba03.html#g231613b675c00ba22b0546ff7a8dba03">cudaMemset2DAsync</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g35171e821992f71d3c50f17032e079dc.html#g35171e821992f71d3c50f17032e079dc">cudaMemset3D</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g8d85383f93c169992ba00d37bb0759a6.html#g8d85383f93c169992ba00d37bb0759a6">cudaMemset3DAsync</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g8b8a9a93a551167acff173f384fda09d.html#g8b8a9a93a551167acff173f384fda09d">cudaMemsetAsync</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g6ce5d637817b7693f6c2601aef21a294.html#g6ce5d637817b7693f6c2601aef21a294">make_cudaExtent</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g47a7d89a9b1361212ac4ac3998670e0d.html#g47a7d89a9b1361212ac4ac3998670e0d">make_cudaPitchedPtr</a></td></tr>
          <tr><td class="navtab"><a class="qindex" href="group__CUDART__MEMORY_g4b92d505f9e7fd353d467fd404d31a83.html#g4b92d505f9e7fd353d467fd404d31a83">make_cudaPos</a></td></tr>
        </table>
      </div>
   </td>
   <td valign="top">
<a class="anchor" name="g15a3871f15f8c38f5b7190946845758c"></a><!-- doxytag: member="cuda_runtime_api.h::cudaHostAlloc" ref="g15a3871f15f8c38f5b7190946845758c" args="(void **pHost, size_t size, unsigned int flags)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__CUDART__TYPES_gf599e5b8b829ce7db0f5216928f6ecb6.html#gf599e5b8b829ce7db0f5216928f6ecb6">cudaError_t</a> cudaHostAlloc           </td>
          <td>(</td>
          <td class="paramtype">void **&nbsp;</td>
          <td class="paramname"> <em>pHost</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>flags</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Allocates <code>size</code> bytes of host memory that is page-locked and accessible to the device. The driver tracks the virtual memory ranges allocated with this function and automatically accelerates calls to functions such as <a class="el" href="group__CUDART__MEMORY_g48efa06b81cc031b2aa6fdc2e9930741.html#g48efa06b81cc031b2aa6fdc2e9930741" title="Copies data between host and device.">cudaMemcpy()</a>. Since the memory can be accessed directly by the device, it can be read or written with much higher bandwidth than pageable memory obtained with functions such as malloc(). Allocating excessive amounts of pinned memory may degrade system performance, since it reduces the amount of memory available to the system for paging. As a result, this function is best used sparingly to allocate staging areas for data exchange between host and device.<p>
The <code>flags</code> parameter enables different options to be specified that affect the allocation, as follows.<ul>
<li><a class="el" href="group__CUDART__TYPES_g1e00f7734325eb38d75f3ffeae6acac8.html#g1e00f7734325eb38d75f3ffeae6acac8">cudaHostAllocDefault</a>: This flag's value is defined to be 0 and causes <a class="el" href="group__CUDART__MEMORY_g15a3871f15f8c38f5b7190946845758c.html#g15a3871f15f8c38f5b7190946845758c" title="Allocates page-locked memory on the host.">cudaHostAlloc()</a> to emulate <a class="el" href="group__CUDART__MEMORY_g9f93d9600f4504e0d637ceb43c91ebad.html#g9f93d9600f4504e0d637ceb43c91ebad" title="Allocates page-locked memory on the host.">cudaMallocHost()</a>.</li><li><a class="el" href="group__CUDART__TYPES_gc46ce76be41cf79774331cc8cfceb52b.html#gc46ce76be41cf79774331cc8cfceb52b">cudaHostAllocPortable</a>: The memory returned by this call will be considered as pinned memory by all CUDA contexts, not just the one that performed the allocation.</li><li><a class="el" href="group__CUDART__TYPES_g01e600c738b962c8f973dda7708f7a70.html#g01e600c738b962c8f973dda7708f7a70">cudaHostAllocMapped</a>: Maps the allocation into the CUDA address space. The device pointer to the memory may be obtained by calling <a class="el" href="group__CUDART__MEMORY_ga475419a9b21a66036029d5001ea908c.html#ga475419a9b21a66036029d5001ea908c" title="Passes back device pointer of mapped host memory allocated by cudaHostAlloc() or...">cudaHostGetDevicePointer()</a>.</li><li><a class="el" href="group__CUDART__TYPES_g3a7db37d02ce0b2350067ab639ef321c.html#g3a7db37d02ce0b2350067ab639ef321c">cudaHostAllocWriteCombined</a>: Allocates the memory as write-combined (WC). WC memory can be transferred across the PCI Express bus more quickly on some system configurations, but cannot be read efficiently by most CPUs. WC memory is a good option for buffers that will be written by the CPU and read by the device via mapped pinned memory or host-&gt;device transfers.</li></ul>
<p>
All of these flags are orthogonal to one another: a developer may allocate memory that is portable, mapped and/or write-combined with no restrictions.<p>
<a class="el" href="group__CUDART__DEVICE_g18074e885b4d89f5a0fe1beab589e0c8.html#g18074e885b4d89f5a0fe1beab589e0c8" title="Sets flags to be used for device executions.">cudaSetDeviceFlags()</a> must have been called with the <a class="el" href="group__CUDART__TYPES_g3762be9cccdd809a4ca128354fd134b0.html#g3762be9cccdd809a4ca128354fd134b0">cudaDeviceMapHost</a> flag in order for the <a class="el" href="group__CUDART__TYPES_g01e600c738b962c8f973dda7708f7a70.html#g01e600c738b962c8f973dda7708f7a70">cudaHostAllocMapped</a> flag to have any effect.<p>
The <a class="el" href="group__CUDART__TYPES_g01e600c738b962c8f973dda7708f7a70.html#g01e600c738b962c8f973dda7708f7a70">cudaHostAllocMapped</a> flag may be specified on CUDA contexts for devices that do not support mapped pinned memory. The failure is deferred to <a class="el" href="group__CUDART__MEMORY_ga475419a9b21a66036029d5001ea908c.html#ga475419a9b21a66036029d5001ea908c" title="Passes back device pointer of mapped host memory allocated by cudaHostAlloc() or...">cudaHostGetDevicePointer()</a> because the memory may be mapped into other CUDA contexts via the <a class="el" href="group__CUDART__TYPES_gc46ce76be41cf79774331cc8cfceb52b.html#gc46ce76be41cf79774331cc8cfceb52b">cudaHostAllocPortable</a> flag.<p>
Memory allocated by this function must be freed with <a class="el" href="group__CUDART__MEMORY_gedaeb2708ad3f74d5b417ee1874ec84a.html#gedaeb2708ad3f74d5b417ee1874ec84a" title="Frees page-locked memory.">cudaFreeHost()</a>.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pHost</em>&nbsp;</td><td>- Device pointer to allocated memory </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>- Requested allocation size in bytes </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>- Requested properties of allocated memory</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd><a class="el" href="group__CUDART__TYPES_g3f51e3575c2178246db0a94a430e0038.html#gg3f51e3575c2178246db0a94a430e0038e355f04607d824883b4a50662830d591">cudaSuccess</a>, <a class="el" href="group__CUDART__TYPES_g3f51e3575c2178246db0a94a430e0038.html#gg3f51e3575c2178246db0a94a430e0038f210f50ae7f17f655e0504929606add9">cudaErrorMemoryAllocation</a> </dd></dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Note that this function may also return error codes from previous, asynchronous launches.</dd></dl>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__CUDART__DEVICE_g18074e885b4d89f5a0fe1beab589e0c8.html#g18074e885b4d89f5a0fe1beab589e0c8" title="Sets flags to be used for device executions.">cudaSetDeviceFlags</a>, <a class="el" href="group__CUDART__MEMORY_g9f93d9600f4504e0d637ceb43c91ebad.html#g9f93d9600f4504e0d637ceb43c91ebad">cudaMallocHost (C API)</a>, <a class="el" href="group__CUDART__MEMORY_gedaeb2708ad3f74d5b417ee1874ec84a.html#gedaeb2708ad3f74d5b417ee1874ec84a" title="Frees page-locked memory.">cudaFreeHost</a> </dd></dl>

</div>
</div><p>
    </td>
  </tr>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>
Generated by Doxygen for NVIDIA CUDA Library &nbsp;<a
href="http://www.nvidia.com/cuda"><img src="nvidia_logo.jpg" alt="NVIDIA" align="middle" border="0" height="80"></a></small></address>
</body>
</html>