blob: f733e0e97439378023dc196c4a10dc95df638496 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en" data-content_root="" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
<title>CUDA support &#8212; Apache Arrow v17.0.0.dev52</title>
<script data-cfasync="false">
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
</script>
<!-- Loaded before other Sphinx assets -->
<link href="../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../../_static/copybutton.css" />
<link rel="stylesheet" type="text/css" href="../../_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css" />
<link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css" />
<!-- Pre-loaded scripts that we'll load fully later -->
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
<script src="../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/sphinx_highlight.js"></script>
<script src="../../_static/clipboard.min.js"></script>
<script src="../../_static/copybutton.js"></script>
<script src="../../_static/design-tabs.js"></script>
<script>DOCUMENTATION_OPTIONS.pagename = 'cpp/api/cuda';</script>
<script>
DOCUMENTATION_OPTIONS.theme_version = '0.15.2';
DOCUMENTATION_OPTIONS.theme_switcher_json_url = '/docs/_static/versions.json';
DOCUMENTATION_OPTIONS.theme_switcher_version_match = 'dev/';
DOCUMENTATION_OPTIONS.show_version_warning_banner = true;
</script>
<link rel="canonical" href="https://arrow.apache.org/docs/cpp/api/cuda.html" />
<link rel="icon" href="../../_static/favicon.ico"/>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Arrow Flight RPC" href="flight.html" />
<link rel="prev" title="File Formats" href="formats.html" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="docsearch:language" content="en"/>
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/* We explicitly disable cookie tracking to avoid privacy issues */
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '20']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
</head>
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
<div id="pst-scroll-pixel-helper"></div>
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
<i class="fa-solid fa-arrow-up"></i>
Back to top
</button>
<input type="checkbox"
class="sidebar-toggle"
name="__primary"
id="__primary"/>
<label class="overlay overlay-primary" for="__primary"></label>
<input type="checkbox"
class="sidebar-toggle"
name="__secondary"
id="__secondary"/>
<label class="overlay overlay-secondary" for="__secondary"></label>
<div class="search-button__wrapper">
<div class="search-button__overlay"></div>
<div class="search-button__search-container">
<form class="bd-search d-flex align-items-center"
action="../../search.html"
method="get">
<i class="fa-solid fa-magnifying-glass"></i>
<input type="search"
class="form-control"
name="q"
id="search-input"
placeholder="Search the docs ..."
aria-label="Search the docs ..."
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"/>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
</form></div>
</div>
<header class="bd-header navbar navbar-expand-lg bd-navbar">
<div class="bd-header__inner bd-page-width">
<label class="sidebar-toggle primary-toggle" for="__primary">
<span class="fa-solid fa-bars"></span>
</label>
<div class="col-lg-3 navbar-header-items__start">
<div class="navbar-item">
<a class="navbar-brand logo" href="../../index.html">
<img src="../../_static/arrow.png" class="logo__image only-light" alt="Apache Arrow v17.0.0.dev52 - Home"/>
<script>document.write(`<img src="../../_static/arrow-dark.png" class="logo__image only-dark" alt="Apache Arrow v17.0.0.dev52 - Home"/>`);</script>
</a></div>
</div>
<div class="col-lg-9 navbar-header-items">
<div class="me-auto navbar-header-items__center">
<div class="navbar-item">
<nav class="navbar-nav">
<ul class="bd-navbar-elements navbar-nav">
<li class="nav-item">
<a class="nav-link nav-internal" href="../../format/index.html">
Specifications
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-internal" href="../../developers/index.html">
Development
</a>
</li>
<li class="nav-item dropdown">
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
Implementations
</button>
<ul id="pst-nav-more-links" class="dropdown-menu">
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../c_glib/index.html">
C/GLib
</a>
</li>
<li class="nav-item current active">
<a class="nav-link dropdown-item nav-internal" href="../index.html">
C++
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/csharp/README.md">
C#
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://pkg.go.dev/github.com/apache/arrow/go/v17">
Go
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../java/index.html">
Java
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../js/index.html">
JavaScript
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/julia/">
Julia
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/matlab/README.md">
MATLAB
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/nanoarrow/">
nanoarrow
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../python/index.html">
Python
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../r/index.html">
R
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/ruby/README.md">
Ruby
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://docs.rs/crate/arrow/">
Rust
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../status.html">
Implementation Status
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/cpp/">
C++ cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/java/">
Java cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/py/">
Python cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/r/">
R cookbook
</a>
</li>
</ul>
</li>
</ul>
</nav></div>
</div>
<div class="navbar-header-items__end">
<div class="navbar-item navbar-persistent--container">
<script>
document.write(`
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
<span class="search-button__default-text">Search</span>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
</button>
`);
</script>
</div>
<div class="navbar-item">
<script>
document.write(`
<div class="version-switcher__container dropdown">
<button id="pst-version-switcher-button-2"
type="button"
class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle"
data-bs-toggle="dropdown"
aria-haspopup="listbox"
aria-controls="pst-version-switcher-list-2"
aria-label="Version switcher list"
>
Choose version <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div id="pst-version-switcher-list-2"
class="version-switcher__menu dropdown-menu list-group-flush py-0"
role="listbox" aria-labelledby="pst-version-switcher-button-2">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
`);
</script></div>
<div class="navbar-item">
<script>
document.write(`
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
</button>
`);
</script></div>
<div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
aria-label="Icon Links">
<li class="nav-item">
<a href="https://github.com/apache/arrow" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">GitHub</span></a>
</li>
<li class="nav-item">
<a href="https://twitter.com/ApacheArrow" title="X" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-x-twitter fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">X</span></a>
</li>
</ul></div>
</div>
</div>
<div class="navbar-persistent--mobile">
<script>
document.write(`
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
<span class="search-button__default-text">Search</span>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
</button>
`);
</script>
</div>
<label class="sidebar-toggle secondary-toggle" for="__secondary" tabindex="0">
<span class="fa-solid fa-outdent"></span>
</label>
</div>
</header>
<div class="bd-container">
<div class="bd-container__inner bd-page-width">
<div class="bd-sidebar-primary bd-sidebar">
<div class="sidebar-header-items sidebar-primary__section">
<div class="sidebar-header-items__center">
<div class="navbar-item">
<nav class="navbar-nav">
<ul class="bd-navbar-elements navbar-nav">
<li class="nav-item">
<a class="nav-link nav-internal" href="../../format/index.html">
Specifications
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-internal" href="../../developers/index.html">
Development
</a>
</li>
<li class="nav-item dropdown">
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
Implementations
</button>
<ul id="pst-nav-more-links-2" class="dropdown-menu">
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../c_glib/index.html">
C/GLib
</a>
</li>
<li class="nav-item current active">
<a class="nav-link dropdown-item nav-internal" href="../index.html">
C++
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/csharp/README.md">
C#
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://pkg.go.dev/github.com/apache/arrow/go/v17">
Go
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../java/index.html">
Java
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../js/index.html">
JavaScript
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/julia/">
Julia
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/matlab/README.md">
MATLAB
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/nanoarrow/">
nanoarrow
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../python/index.html">
Python
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../r/index.html">
R
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/ruby/README.md">
Ruby
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://docs.rs/crate/arrow/">
Rust
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../status.html">
Implementation Status
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/cpp/">
C++ cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/java/">
Java cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/py/">
Python cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/r/">
R cookbook
</a>
</li>
</ul>
</li>
</ul>
</nav></div>
</div>
<div class="sidebar-header-items__end">
<div class="navbar-item">
<script>
document.write(`
<div class="version-switcher__container dropdown">
<button id="pst-version-switcher-button-3"
type="button"
class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle"
data-bs-toggle="dropdown"
aria-haspopup="listbox"
aria-controls="pst-version-switcher-list-3"
aria-label="Version switcher list"
>
Choose version <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div id="pst-version-switcher-list-3"
class="version-switcher__menu dropdown-menu list-group-flush py-0"
role="listbox" aria-labelledby="pst-version-switcher-button-3">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
`);
</script></div>
<div class="navbar-item">
<script>
document.write(`
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
</button>
`);
</script></div>
<div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
aria-label="Icon Links">
<li class="nav-item">
<a href="https://github.com/apache/arrow" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">GitHub</span></a>
</li>
<li class="nav-item">
<a href="https://twitter.com/ApacheArrow" title="X" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-x-twitter fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">X</span></a>
</li>
</ul></div>
</div>
</div>
<div class="sidebar-primary-items__start sidebar-primary__section">
<div class="sidebar-primary-item">
<nav class="bd-docs-nav bd-links"
aria-label="Section Navigation">
<p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p>
<div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav">
<li class="toctree-l1 has-children"><a class="reference internal" href="../getting_started.html">Getting Started</a><input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-1"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../build_system.html">Using Arrow C++ in your own project</a></li>
<li class="toctree-l2"><a class="reference internal" href="../conventions.html">Conventions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorials/basic_arrow.html">Basic Arrow Data Structures</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorials/io_tutorial.html">Arrow File I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorials/compute_tutorial.html">Arrow Compute</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorials/datasets_tutorial.html">Arrow Datasets</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../user_guide.html">User Guide</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-2"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../overview.html">High-Level Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="../memory.html">Memory Management</a></li>
<li class="toctree-l2"><a class="reference internal" href="../arrays.html">Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="../datatypes.html">Data Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tables.html">Tabular Data</a></li>
<li class="toctree-l2"><a class="reference internal" href="../compute.html">Compute Functions</a></li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../gandiva.html">The Gandiva Expression Compiler</a><input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-3"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../gandiva/expr_projector_filter.html">Gandiva Expression, Projector, and Filter</a></li>
<li class="toctree-l3"><a class="reference internal" href="../gandiva/external_func.html">Gandiva External Functions Development Guide</a></li>
</ul>
</li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../streaming_execution.html">Acero: A C++ streaming execution engine</a><input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-4"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../acero/overview.html">Acero Overview</a></li>
<li class="toctree-l3"><a class="reference internal" href="../acero/user_guide.html">Acero User’s Guide</a></li>
<li class="toctree-l3"><a class="reference internal" href="../acero/substrait.html">Using Acero with Substrait</a></li>
<li class="toctree-l3"><a class="reference internal" href="../acero/developer_guide.html">Developer’s Guide</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../io.html">Input / output and filesystems</a></li>
<li class="toctree-l2"><a class="reference internal" href="../ipc.html">Reading and writing the Arrow IPC format</a></li>
<li class="toctree-l2"><a class="reference internal" href="../orc.html">Reading and Writing ORC files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../parquet.html">Reading and writing Parquet files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../csv.html">Reading and Writing CSV files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../json.html">Reading JSON files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../dataset.html">Tabular Datasets</a></li>
<li class="toctree-l2"><a class="reference internal" href="../flight.html">Arrow Flight RPC</a></li>
<li class="toctree-l2"><a class="reference internal" href="../gdb.html">Debugging code using Arrow</a></li>
<li class="toctree-l2"><a class="reference internal" href="../threading.html">Thread Management</a></li>
<li class="toctree-l2"><a class="reference internal" href="../opentelemetry.html">OpenTelemetry</a></li>
<li class="toctree-l2"><a class="reference internal" href="../env_vars.html">Environment Variables</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../examples/index.html">Examples</a><input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-5"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../examples/cmake_minimal_build.html">Minimal build using CMake</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/compute_and_write_example.html">Compute and Write CSV Example</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/dataset_documentation_example.html">Arrow Datasets example</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/dataset_skyhook_scan_example.html">Arrow Skyhook example</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/row_columnar_conversion.html">Row to columnar conversion</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/tuple_range_conversion.html">std::tuple-like ranges to Arrow</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/converting_recordbatch_to_tensor.html">Converting RecordBatch to Tensor</a></li>
</ul>
</li>
<li class="toctree-l1 current active has-children"><a class="reference internal" href="../api.html">API Reference</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-6"><i class="fa-solid fa-chevron-down"></i></label><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="support.html">Programming Support</a></li>
<li class="toctree-l2"><a class="reference internal" href="memory.html">Memory (management)</a></li>
<li class="toctree-l2"><a class="reference internal" href="thread.html">Thread (management)</a></li>
<li class="toctree-l2"><a class="reference internal" href="datatype.html">Data Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="array.html">Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="scalar.html">Scalars</a></li>
<li class="toctree-l2"><a class="reference internal" href="builder.html">Array Builders</a></li>
<li class="toctree-l2"><a class="reference internal" href="table.html">Two-dimensional Datasets</a></li>
<li class="toctree-l2"><a class="reference internal" href="c_abi.html">C Interfaces</a></li>
<li class="toctree-l2"><a class="reference internal" href="compute.html">Compute Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="acero.html">Streaming Execution (Acero)</a></li>
<li class="toctree-l2"><a class="reference internal" href="gandiva.html">Gandiva Expression Compiler</a></li>
<li class="toctree-l2"><a class="reference internal" href="tensor.html">Tensors</a></li>
<li class="toctree-l2"><a class="reference internal" href="utilities.html">Utilities</a></li>
<li class="toctree-l2"><a class="reference internal" href="async.html">Asynchronous programming</a></li>
<li class="toctree-l2"><a class="reference internal" href="io.html">Input / output</a></li>
<li class="toctree-l2"><a class="reference internal" href="ipc.html">Arrow IPC</a></li>
<li class="toctree-l2"><a class="reference internal" href="formats.html">File Formats</a></li>
<li class="toctree-l2 current active"><a class="current reference internal" href="#">CUDA support</a></li>
<li class="toctree-l2"><a class="reference internal" href="flight.html">Arrow Flight RPC</a></li>
<li class="toctree-l2"><a class="reference internal" href="flightsql.html">Arrow Flight SQL</a></li>
<li class="toctree-l2"><a class="reference internal" href="filesystem.html">Filesystems</a></li>
<li class="toctree-l2"><a class="reference internal" href="dataset.html">Dataset</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference external" href="https://arrow.apache.org/cookbook/cpp/">C++ cookbook</a></li>
</ul>
</div>
</nav></div>
</div>
<div class="sidebar-primary-items__end sidebar-primary__section">
</div>
<div id="rtd-footer-container"></div>
</div>
<main id="main-content" class="bd-main">
<div class="bd-content">
<div class="bd-article-container">
<div class="bd-header-article">
<div class="header-article-items header-article__inner">
<div class="header-article-items__start">
<div class="header-article-item">
<nav aria-label="Breadcrumb">
<ul class="bd-breadcrumbs">
<li class="breadcrumb-item breadcrumb-home">
<a href="../../index.html" class="nav-link" aria-label="Home">
<i class="fa-solid fa-home"></i>
</a>
</li>
<li class="breadcrumb-item"><a href="../index.html" class="nav-link">C++ Implementation</a></li>
<li class="breadcrumb-item"><a href="../api.html" class="nav-link">API Reference</a></li>
<li class="breadcrumb-item active" aria-current="page">CUDA support</li>
</ul>
</nav>
</div>
</div>
</div>
</div>
<div id="searchbox"></div>
<article class="bd-article">
<section id="cuda-support">
<h1>CUDA support<a class="headerlink" href="#cuda-support" title="Permalink to this heading">#</a></h1>
<section id="contexts">
<h2>Contexts<a class="headerlink" href="#contexts" title="Permalink to this heading">#</a></h2>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda17CudaDeviceManagerE">
<span id="_CPPv3N5arrow4cuda17CudaDeviceManagerE"></span><span id="_CPPv2N5arrow4cuda17CudaDeviceManagerE"></span><span id="arrow::cuda::CudaDeviceManager"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_manager"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CudaDeviceManager</span></span></span><a class="headerlink" href="#_CPPv4N5arrow4cuda17CudaDeviceManagerE" title="Permalink to this definition">#</a><br /></dt>
<dd><div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda17CudaDeviceManager9GetDeviceEi">
<span id="_CPPv3N5arrow4cuda17CudaDeviceManager9GetDeviceEi"></span><span id="_CPPv2N5arrow4cuda17CudaDeviceManager9GetDeviceEi"></span><span id="arrow::cuda::CudaDeviceManager::GetDevice__i"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_manager_1a058b9715b0e89cba4bad41bd0751e2c9"></span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda10CudaDeviceE" title="arrow::cuda::CudaDevice"><span class="n"><span class="pre">CudaDevice</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GetDevice</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">device_number</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda17CudaDeviceManager9GetDeviceEi" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Get a <a class="reference internal" href="#classarrow_1_1cuda_1_1_cuda_device"><span class="std std-ref">CudaDevice</span></a> instance for a particular device. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>device_number</strong><strong>[in]</strong> the CUDA device number </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda17CudaDeviceManager10GetContextEi">
<span id="_CPPv3N5arrow4cuda17CudaDeviceManager10GetContextEi"></span><span id="_CPPv2N5arrow4cuda17CudaDeviceManager10GetContextEi"></span><span id="arrow::cuda::CudaDeviceManager::GetContext__i"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_manager_1ad8e08e0964987873b48762cbf2e583b7"></span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda11CudaContextE" title="arrow::cuda::CudaContext"><span class="n"><span class="pre">CudaContext</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GetContext</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">device_number</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda17CudaDeviceManager10GetContextEi" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Get the CUDA driver context for a particular device. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>device_number</strong><strong>[in]</strong> the CUDA device number </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>cached context </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda17CudaDeviceManager16GetSharedContextEiPv">
<span id="_CPPv3N5arrow4cuda17CudaDeviceManager16GetSharedContextEiPv"></span><span id="_CPPv2N5arrow4cuda17CudaDeviceManager16GetSharedContextEiPv"></span><span id="arrow::cuda::CudaDeviceManager::GetSharedContext__i.voidP"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_manager_1ad9704d65a4001cf9caae5b345746aeab"></span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda11CudaContextE" title="arrow::cuda::CudaContext"><span class="n"><span class="pre">CudaContext</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GetSharedContext</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">device_number</span></span>, <span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">handle</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda17CudaDeviceManager16GetSharedContextEiPv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Get the shared CUDA driver context for a particular device. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>device_number</strong><strong>[in]</strong> the CUDA device number </p></li>
<li><p><strong>handle</strong><strong>[in]</strong> CUDA context handle created by another library </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>shared context </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda17CudaDeviceManager12AllocateHostEi7int64_t">
<span id="_CPPv3N5arrow4cuda17CudaDeviceManager12AllocateHostEi7int64_t"></span><span id="_CPPv2N5arrow4cuda17CudaDeviceManager12AllocateHostEi7int64_t"></span><span id="arrow::cuda::CudaDeviceManager::AllocateHost__i.int64_t"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_manager_1a1f28a70a715fbc23c6aedc7f621f7bea"></span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda14CudaHostBufferE" title="arrow::cuda::CudaHostBuffer"><span class="n"><span class="pre">CudaHostBuffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">AllocateHost</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">device_number</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda17CudaDeviceManager12AllocateHostEi7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Allocate host memory with fast access to given GPU device. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>device_number</strong><strong>[in]</strong> the CUDA device number </p></li>
<li><p><strong>nbytes</strong><strong>[in]</strong> number of bytes </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Host buffer or <a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda17CudaDeviceManager8FreeHostEPv7int64_t">
<span id="_CPPv3N5arrow4cuda17CudaDeviceManager8FreeHostEPv7int64_t"></span><span id="_CPPv2N5arrow4cuda17CudaDeviceManager8FreeHostEPv7int64_t"></span><span id="arrow::cuda::CudaDeviceManager::FreeHost__voidP.int64_t"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_manager_1ab1d79b1bfa5d3256f8c8005921ca573e"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">FreeHost</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda17CudaDeviceManager8FreeHostEPv7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Free host memory. </p>
<p>The given memory pointer must have been allocated with AllocateHost. </p>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda11CudaContextE">
<span id="_CPPv3N5arrow4cuda11CudaContextE"></span><span id="_CPPv2N5arrow4cuda11CudaContextE"></span><span id="arrow::cuda::CudaContext"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_context"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CudaContext</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">enable_shared_from_this</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda11CudaContextE" title="arrow::cuda::CudaContext"><span class="n"><span class="pre">CudaContext</span></span></a><span class="p"><span class="pre">&gt;</span></span><a class="headerlink" href="#_CPPv4N5arrow4cuda11CudaContextE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Object-oriented interface to the low-level CUDA driver API. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda11CudaContext8AllocateE7int64_t">
<span id="_CPPv3N5arrow4cuda11CudaContext8AllocateE7int64_t"></span><span id="_CPPv2N5arrow4cuda11CudaContext8AllocateE7int64_t"></span><span id="arrow::cuda::CudaContext::Allocate__int64_t"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_context_1afc03abd673b5eaac0dd7b0db792efcd0"></span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">unique_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda10CudaBufferE" title="arrow::cuda::CudaBuffer"><span class="n"><span class="pre">CudaBuffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Allocate</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda11CudaContext8AllocateE7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Allocate CUDA memory on GPU device for this context. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>nbytes</strong><strong>[in]</strong> number of bytes </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>the allocated buffer </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda11CudaContext4FreeEPv7int64_t">
<span id="_CPPv3N5arrow4cuda11CudaContext4FreeEPv7int64_t"></span><span id="_CPPv2N5arrow4cuda11CudaContext4FreeEPv7int64_t"></span><span id="arrow::cuda::CudaContext::Free__voidP.int64_t"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_context_1aa08710d029fe38ea3ec8ad065ffe50fa"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Free</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">device_ptr</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda11CudaContext4FreeEPv7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Release CUDA memory on GPU device for this context. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>device_ptr</strong><strong>[in]</strong> the buffer address </p></li>
<li><p><strong>nbytes</strong><strong>[in]</strong> number of bytes </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda11CudaContext4ViewEP7uint8_t7int64_t">
<span id="_CPPv3N5arrow4cuda11CudaContext4ViewEP7uint8_t7int64_t"></span><span id="_CPPv2N5arrow4cuda11CudaContext4ViewEP7uint8_t7int64_t"></span><span id="arrow::cuda::CudaContext::View__uint8_tP.int64_t"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_context_1a32f1e6f2fa80d1762ba9f559e14af27c"></span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda10CudaBufferE" title="arrow::cuda::CudaBuffer"><span class="n"><span class="pre">CudaBuffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">View</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda11CudaContext4ViewEP7uint8_t7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create a view of CUDA memory on GPU device of this context. </p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The caller is responsible for allocating and freeing the memory as well as ensuring that the memory belongs to the CUDA context that this <a class="reference internal" href="#classarrow_1_1cuda_1_1_cuda_context"><span class="std std-ref">CudaContext</span></a> instance holds. </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>data</strong><strong>[in]</strong> the starting device address </p></li>
<li><p><strong>nbytes</strong><strong>[in]</strong> number of bytes </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>the view buffer</p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda11CudaContext13OpenIpcBufferERK16CudaIpcMemHandle">
<span id="_CPPv3N5arrow4cuda11CudaContext13OpenIpcBufferERK16CudaIpcMemHandle"></span><span id="_CPPv2N5arrow4cuda11CudaContext13OpenIpcBufferERK16CudaIpcMemHandle"></span><span id="arrow::cuda::CudaContext::OpenIpcBuffer__CudaIpcMemHandleCR"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_context_1a6f8c1f0e4df6d368e36859d59f17dbf8"></span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda10CudaBufferE" title="arrow::cuda::CudaBuffer"><span class="n"><span class="pre">CudaBuffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">OpenIpcBuffer</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow4cuda16CudaIpcMemHandleE" title="arrow::cuda::CudaIpcMemHandle"><span class="n"><span class="pre">CudaIpcMemHandle</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">ipc_handle</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda11CudaContext13OpenIpcBufferERK16CudaIpcMemHandle" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Open existing CUDA IPC memory handle. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>ipc_handle</strong><strong>[in]</strong> opaque pointer to CUipcMemHandle (driver API) </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>a <a class="reference internal" href="#classarrow_1_1cuda_1_1_cuda_buffer"><span class="std std-ref">CudaBuffer</span></a> referencing the IPC segment </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda11CudaContext14CloseIpcBufferEP10CudaBuffer">
<span id="_CPPv3N5arrow4cuda11CudaContext14CloseIpcBufferEP10CudaBuffer"></span><span id="_CPPv2N5arrow4cuda11CudaContext14CloseIpcBufferEP10CudaBuffer"></span><span id="arrow::cuda::CudaContext::CloseIpcBuffer__CudaBufferP"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_context_1a3228bd973c2da795b1b916f81d3bd164"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CloseIpcBuffer</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv4N5arrow4cuda10CudaBufferE" title="arrow::cuda::CudaBuffer"><span class="n"><span class="pre">CudaBuffer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">buffer</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda11CudaContext14CloseIpcBufferEP10CudaBuffer" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Close memory mapped with IPC buffer. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>buffer</strong><strong>[in]</strong> a <a class="reference internal" href="#classarrow_1_1cuda_1_1_cuda_buffer"><span class="std std-ref">CudaBuffer</span></a> referencing </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda11CudaContext11SynchronizeEv">
<span id="_CPPv3N5arrow4cuda11CudaContext11SynchronizeEv"></span><span id="_CPPv2N5arrow4cuda11CudaContext11SynchronizeEv"></span><span id="arrow::cuda::CudaContext::Synchronize__void"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_context_1a80b22b35b08acac1c0a7b796932612c0"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Synchronize</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda11CudaContext11SynchronizeEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Block until the all device tasks are completed. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda11CudaContext6handleEv">
<span id="_CPPv3NK5arrow4cuda11CudaContext6handleEv"></span><span id="_CPPv2NK5arrow4cuda11CudaContext6handleEv"></span><span id="arrow::cuda::CudaContext::handleC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_context_1a6e96e4e5ef6abaecf3448d0f9563b34c"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">handle</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda11CudaContext6handleEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Expose CUDA context handle to other libraries. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda11CudaContext14memory_managerEv">
<span id="_CPPv3NK5arrow4cuda11CudaContext14memory_managerEv"></span><span id="_CPPv2NK5arrow4cuda11CudaContext14memory_managerEv"></span><span id="arrow::cuda::CudaContext::memory_managerC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_context_1ac1c28d2d0b1bb58a4aa07bf52f45945d"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda17CudaMemoryManagerE" title="arrow::cuda::CudaMemoryManager"><span class="n"><span class="pre">CudaMemoryManager</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">memory_manager</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda11CudaContext14memory_managerEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the default memory manager tied to this context’s device. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda11CudaContext6deviceEv">
<span id="_CPPv3NK5arrow4cuda11CudaContext6deviceEv"></span><span id="_CPPv2NK5arrow4cuda11CudaContext6deviceEv"></span><span id="arrow::cuda::CudaContext::deviceC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_context_1a3586821e56c60693f1eb67039298fdf4"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda10CudaDeviceE" title="arrow::cuda::CudaDevice"><span class="n"><span class="pre">CudaDevice</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">device</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda11CudaContext6deviceEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the device instance associated with this context. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda11CudaContext13device_numberEv">
<span id="_CPPv3NK5arrow4cuda11CudaContext13device_numberEv"></span><span id="_CPPv2NK5arrow4cuda11CudaContext13device_numberEv"></span><span id="arrow::cuda::CudaContext::device_numberC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_context_1ab5427be57b455cffa58b353ad8d6fdbf"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">device_number</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda11CudaContext13device_numberEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the logical device number. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda11CudaContext16GetDeviceAddressEP7uint8_t">
<span id="_CPPv3N5arrow4cuda11CudaContext16GetDeviceAddressEP7uint8_t"></span><span id="_CPPv2N5arrow4cuda11CudaContext16GetDeviceAddressEP7uint8_t"></span><span id="arrow::cuda::CudaContext::GetDeviceAddress__uint8_tP"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_context_1af242669d7f31c122547ab562b2a65e30"></span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">uintptr_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GetDeviceAddress</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">addr</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda11CudaContext16GetDeviceAddressEP7uint8_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the device address that is reachable from kernels running in the context. </p>
<p>
The device address is defined as a memory address accessible by device. While it is often a device memory address, it can be also a host memory address, for instance, when the memory is allocated as host memory (using cudaMallocHost or cudaHostAlloc) or as managed memory (using cudaMallocManaged) or the host memory is page-locked (using cudaHostRegister). </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>addr</strong><strong>[in]</strong> device or host memory address </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>the device address</p>
</dd>
</dl>
</dd></dl>
</div>
</dd></dl>
</section>
<section id="devices">
<h2>Devices<a class="headerlink" href="#devices" title="Permalink to this heading">#</a></h2>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda10CudaDeviceE">
<span id="_CPPv3N5arrow4cuda10CudaDeviceE"></span><span id="_CPPv2N5arrow4cuda10CudaDeviceE"></span><span id="arrow::cuda::CudaDevice"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CudaDevice</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><a class="headerlink" href="#_CPPv4N5arrow4cuda10CudaDeviceE" title="Permalink to this definition">#</a><br /></dt>
<dd><p><a class="reference internal" href="memory.html#classarrow_1_1_device"><span class="std std-ref">Device</span></a> implementation for CUDA. </p>
<p>Each <a class="reference internal" href="#classarrow_1_1cuda_1_1_cuda_device"><span class="std std-ref">CudaDevice</span></a> instance is tied to a particular CUDA device (identified by its logical device number). </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda10CudaDevice9type_nameEv">
<span id="_CPPv3NK5arrow4cuda10CudaDevice9type_nameEv"></span><span id="_CPPv2NK5arrow4cuda10CudaDevice9type_nameEv"></span><span id="arrow::cuda::CudaDevice::type_nameC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1a57b40c4ecf7bd25cc566c50be60da394"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">type_name</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda10CudaDevice9type_nameEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>A shorthand for this device’s type. </p>
<p>The returned value is different for each device class, but is the same for all instances of a given class. It can be used as a replacement for RTTI. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda10CudaDevice8ToStringEv">
<span id="_CPPv3NK5arrow4cuda10CudaDevice8ToStringEv"></span><span id="_CPPv2NK5arrow4cuda10CudaDevice8ToStringEv"></span><span id="arrow::cuda::CudaDevice::ToStringC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1ae741b9314ceb089df43cd9d3ea9a05c8"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ToString</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda10CudaDevice8ToStringEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>A human-readable description of the device. </p>
<p>The returned value should be detailed enough to distinguish between different instances, where necessary. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda10CudaDevice6EqualsERK6Device">
<span id="_CPPv3NK5arrow4cuda10CudaDevice6EqualsERK6Device"></span><span id="_CPPv2NK5arrow4cuda10CudaDevice6EqualsERK6Device"></span><span id="arrow::cuda::CudaDevice::Equals__DeviceCRC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1a632ead1002d4f6a198f9e2cc875afe18"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Equals</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="memory.html#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><span class="p"><span class="pre">&amp;</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda10CudaDevice6EqualsERK6Device" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Whether this instance points to the same device as another one. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda10CudaDevice22default_memory_managerEv">
<span id="_CPPv3N5arrow4cuda10CudaDevice22default_memory_managerEv"></span><span id="_CPPv2N5arrow4cuda10CudaDevice22default_memory_managerEv"></span><span id="arrow::cuda::CudaDevice::default_memory_manager"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1af55d521eca3e9be9962d3bce9ba03102"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow13MemoryManagerE" title="arrow::MemoryManager"><span class="n"><span class="pre">MemoryManager</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">default_memory_manager</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow4cuda10CudaDevice22default_memory_managerEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return a <a class="reference internal" href="memory.html#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a> instance tied to this device. </p>
<p>The returned instance uses default parameters for this device type’s <a class="reference internal" href="memory.html#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a> implementation. Some devices also allow constructing <a class="reference internal" href="memory.html#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a> instances with non-default parameters. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda10CudaDevice11device_typeEv">
<span id="_CPPv3NK5arrow4cuda10CudaDevice11device_typeEv"></span><span id="_CPPv2NK5arrow4cuda10CudaDevice11device_typeEv"></span><span id="arrow::cuda::CudaDevice::device_typeC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1a631303d5f948458324340b48de7c6685"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">DeviceAllocationType</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">device_type</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda10CudaDevice11device_typeEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the DeviceAllocationType of this device. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda10CudaDevice9device_idEv">
<span id="_CPPv3NK5arrow4cuda10CudaDevice9device_idEv"></span><span id="_CPPv2NK5arrow4cuda10CudaDevice9device_idEv"></span><span id="arrow::cuda::CudaDevice::device_idC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1a59cb05711c6a3d6ec76254e719fc71a9"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">device_id</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda10CudaDevice9device_idEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>A device ID to identify this device if there are multiple of this type. </p>
<p>If there is no “device_id” equivalent (such as for the main CPU device on non-numa systems) returns -1. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda10CudaDevice13device_numberEv">
<span id="_CPPv3NK5arrow4cuda10CudaDevice13device_numberEv"></span><span id="_CPPv2NK5arrow4cuda10CudaDevice13device_numberEv"></span><span id="arrow::cuda::CudaDevice::device_numberC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1afbde12a21ab99759801332997f1f39c6"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">device_number</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda10CudaDevice13device_numberEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the device logical number. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda10CudaDevice11device_nameEv">
<span id="_CPPv3NK5arrow4cuda10CudaDevice11device_nameEv"></span><span id="_CPPv2NK5arrow4cuda10CudaDevice11device_nameEv"></span><span id="arrow::cuda::CudaDevice::device_nameC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1a8e9ef59ab09a8eb774ba25c788f17e95"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">device_name</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda10CudaDevice11device_nameEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the GPU model name. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda10CudaDevice12total_memoryEv">
<span id="_CPPv3NK5arrow4cuda10CudaDevice12total_memoryEv"></span><span id="_CPPv2NK5arrow4cuda10CudaDevice12total_memoryEv"></span><span id="arrow::cuda::CudaDevice::total_memoryC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1ae1e25a912004c83bb6af55574a74da00"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">total_memory</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda10CudaDevice12total_memoryEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return total memory on this device. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda10CudaDevice6handleEv">
<span id="_CPPv3NK5arrow4cuda10CudaDevice6handleEv"></span><span id="_CPPv2NK5arrow4cuda10CudaDevice6handleEv"></span><span id="arrow::cuda::CudaDevice::handleC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1ab5ef7531f8a55cfa3589ad7b57f6a9bd"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">handle</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda10CudaDevice6handleEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return a raw CUDA device handle. </p>
<p>The returned value can be used to expose this device to other libraries. It should be interpreted as <code class="docutils literal notranslate"><span class="pre">CUdevice</span></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda10CudaDevice10GetContextEv">
<span id="_CPPv3N5arrow4cuda10CudaDevice10GetContextEv"></span><span id="_CPPv2N5arrow4cuda10CudaDevice10GetContextEv"></span><span id="arrow::cuda::CudaDevice::GetContext"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1a4ea5aa189076e2ec459611b98059edb8"></span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda11CudaContextE" title="arrow::cuda::CudaContext"><span class="n"><span class="pre">CudaContext</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GetContext</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda10CudaDevice10GetContextEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Get a CUDA driver context for this device. </p>
<p>The returned context is associated with the primary CUDA context for the device. This is the recommended way of getting a context for a device, as it allows interoperating transparently with any library using the primary CUDA context API. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda10CudaDevice16GetSharedContextEPv">
<span id="_CPPv3N5arrow4cuda10CudaDevice16GetSharedContextEPv"></span><span id="_CPPv2N5arrow4cuda10CudaDevice16GetSharedContextEPv"></span><span id="arrow::cuda::CudaDevice::GetSharedContext__voidP"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1a50b6040df34a45d76ac8a6436ecdc87d"></span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda11CudaContextE" title="arrow::cuda::CudaContext"><span class="n"><span class="pre">CudaContext</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GetSharedContext</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">handle</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda10CudaDevice16GetSharedContextEPv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Get a CUDA driver context for this device, using an existing handle. </p>
<p>The handle is not owned: it will not be released when the <a class="reference internal" href="#classarrow_1_1cuda_1_1_cuda_context"><span class="std std-ref">CudaContext</span></a> is destroyed. This function should only be used if you need interoperation with a library that uses a non-primary context.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>handle</strong><strong>[in]</strong> CUDA context handle created by another library </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda10CudaDevice18AllocateHostBufferE7int64_t">
<span id="_CPPv3N5arrow4cuda10CudaDevice18AllocateHostBufferE7int64_t"></span><span id="_CPPv2N5arrow4cuda10CudaDevice18AllocateHostBufferE7int64_t"></span><span id="arrow::cuda::CudaDevice::AllocateHostBuffer__int64_t"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1a19ff77c57f37d739cbb402a7a6cd23dc"></span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda14CudaHostBufferE" title="arrow::cuda::CudaHostBuffer"><span class="n"><span class="pre">CudaHostBuffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">AllocateHostBuffer</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda10CudaDevice18AllocateHostBufferE7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Allocate a host-residing, GPU-accessible buffer. </p>
<p>The buffer is allocated using this device’s primary context.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>size</strong><strong>[in]</strong> The buffer size in bytes </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda10CudaDevice10MakeStreamEj">
<span id="_CPPv3N5arrow4cuda10CudaDevice10MakeStreamEj"></span><span id="_CPPv2N5arrow4cuda10CudaDevice10MakeStreamEj"></span><span id="arrow::cuda::CudaDevice::MakeStream__unsigned-i"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1a23c0f7c893ab5a6a8bf00a4085f70710"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><span class="p"><span class="pre">::</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6Device6StreamE" title="arrow::Device::Stream"><span class="n"><span class="pre">Stream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">MakeStream</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">flags</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow4cuda10CudaDevice10MakeStreamEj" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create a CUstream wrapper in the current context. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda10CudaDevice10WrapStreamEPvN6Stream12release_fn_tE">
<span id="_CPPv3N5arrow4cuda10CudaDevice10WrapStreamEPvN6Stream12release_fn_tE"></span><span id="_CPPv2N5arrow4cuda10CudaDevice10WrapStreamEPvN6Stream12release_fn_tE"></span><span id="arrow::cuda::CudaDevice::WrapStream__voidP.Stream::release_fn_t"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1ae267beb23ce4c7c53de23ac2d149be3c"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><span class="p"><span class="pre">::</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6Device6StreamE" title="arrow::Device::Stream"><span class="n"><span class="pre">Stream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WrapStream</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">device_stream</span></span>, <a class="reference internal" href="#_CPPv4N5arrow4cuda10CudaDevice6StreamE" title="arrow::cuda::CudaDevice::Stream"><span class="n"><span class="pre">Stream</span></span></a><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">release_fn_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">release_fn</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow4cuda10CudaDevice10WrapStreamEPvN6Stream12release_fn_tE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Wrap a pointer to an existing stream. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>device_stream</strong> – passed in stream (should be a CUstream*) </p></li>
<li><p><strong>release_fn</strong> – destructor to free the stream. <code class="docutils literal notranslate"><span class="pre">nullptr</span></code> may be passed to indicate there is no destruction/freeing necessary. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda10CudaDevice4MakeEi">
<span id="_CPPv3N5arrow4cuda10CudaDevice4MakeEi"></span><span id="_CPPv2N5arrow4cuda10CudaDevice4MakeEi"></span><span id="arrow::cuda::CudaDevice::Make__i"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1a79f4b445a02561642f489b977fe4b6e9"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda10CudaDeviceE" title="arrow::cuda::CudaDevice"><span class="n"><span class="pre">CudaDevice</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Make</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">device_number</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda10CudaDevice4MakeEi" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return a <a class="reference internal" href="#classarrow_1_1cuda_1_1_cuda_device"><span class="std std-ref">CudaDevice</span></a> instance for a particular device. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>device_number</strong><strong>[in]</strong> the CUDA device number </p>
</dd>
</dl>
</dd></dl>
</div>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda10CudaDevice6StreamE">
<span id="_CPPv3N5arrow4cuda10CudaDevice6StreamE"></span><span id="_CPPv2N5arrow4cuda10CudaDevice6StreamE"></span><span id="arrow::cuda::CudaDevice::Stream"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1_1_stream"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Stream</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><span class="p"><span class="pre">::</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6Device6StreamE" title="arrow::Device::Stream"><span class="n"><span class="pre">Stream</span></span></a><a class="headerlink" href="#_CPPv4N5arrow4cuda10CudaDevice6StreamE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>EXPERIMENTAL: Wrapper for CUstreams. </p>
<p>Does not <em>own</em> the CUstream object which must be separately constructed and freed using cuStreamCreate and cuStreamDestroy (or equivalent). Default construction will use the cuda default stream, and does not allow construction from literal 0 or nullptr. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda10CudaDevice6Stream9WaitEventERKN6Device9SyncEventE">
<span id="_CPPv3N5arrow4cuda10CudaDevice6Stream9WaitEventERKN6Device9SyncEventE"></span><span id="_CPPv2N5arrow4cuda10CudaDevice6Stream9WaitEventERKN6Device9SyncEventE"></span><span id="arrow::cuda::CudaDevice::Stream::WaitEvent__Device::SyncEventCR"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1_1_stream_1a4441e72374728818f29728c33c977052"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WaitEvent</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="memory.html#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><span class="p"><span class="pre">::</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6Device9SyncEventE" title="arrow::Device::SyncEvent"><span class="n"><span class="pre">SyncEvent</span></span></a><span class="p"><span class="pre">&amp;</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow4cuda10CudaDevice6Stream9WaitEventERKN6Device9SyncEventE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Make the stream wait on the provided event. </p>
<p>Tells the stream that it should wait until the synchronization event is completed without blocking the CPU. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda10CudaDevice6Stream11SynchronizeEv">
<span id="_CPPv3NK5arrow4cuda10CudaDevice6Stream11SynchronizeEv"></span><span id="_CPPv2NK5arrow4cuda10CudaDevice6Stream11SynchronizeEv"></span><span id="arrow::cuda::CudaDevice::Stream::SynchronizeC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1_1_stream_1a204b6f4d47ff6adaa7866fc00a8e6093"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Synchronize</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda10CudaDevice6Stream11SynchronizeEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Blocks the current thread until a stream’s remaining tasks are completed. </p>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda10CudaDevice9SyncEventE">
<span id="_CPPv3N5arrow4cuda10CudaDevice9SyncEventE"></span><span id="_CPPv2N5arrow4cuda10CudaDevice9SyncEventE"></span><span id="arrow::cuda::CudaDevice::SyncEvent"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1_1_sync_event"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SyncEvent</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><span class="p"><span class="pre">::</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6Device9SyncEventE" title="arrow::Device::SyncEvent"><span class="n"><span class="pre">SyncEvent</span></span></a><a class="headerlink" href="#_CPPv4N5arrow4cuda10CudaDevice9SyncEventE" title="Permalink to this definition">#</a><br /></dt>
<dd><div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda10CudaDevice9SyncEvent4WaitEv">
<span id="_CPPv3N5arrow4cuda10CudaDevice9SyncEvent4WaitEv"></span><span id="_CPPv2N5arrow4cuda10CudaDevice9SyncEvent4WaitEv"></span><span id="arrow::cuda::CudaDevice::SyncEvent::Wait"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1_1_sync_event_1a6494868d86bf12d4609126cfc4171082"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Wait</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow4cuda10CudaDevice9SyncEvent4WaitEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Block until the sync event is marked completed. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda10CudaDevice9SyncEvent6RecordERKN6Device6StreamE">
<span id="_CPPv3N5arrow4cuda10CudaDevice9SyncEvent6RecordERKN6Device6StreamE"></span><span id="_CPPv2N5arrow4cuda10CudaDevice9SyncEvent6RecordERKN6Device6StreamE"></span><span id="arrow::cuda::CudaDevice::SyncEvent::Record__Device::StreamCR"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_device_1_1_sync_event_1a708bc65ff1eefacce2641ad453f18503"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Record</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="memory.html#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><span class="p"><span class="pre">::</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6Device6StreamE" title="arrow::Device::Stream"><span class="n"><span class="pre">Stream</span></span></a><span class="p"><span class="pre">&amp;</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow4cuda10CudaDevice9SyncEvent6RecordERKN6Device6StreamE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Record the wrapped event on the stream. </p>
<p>Once the stream completes the tasks previously added to it, it will trigger the event. </p>
</dd></dl>
</div>
</dd></dl>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda17CudaMemoryManagerE">
<span id="_CPPv3N5arrow4cuda17CudaMemoryManagerE"></span><span id="_CPPv2N5arrow4cuda17CudaMemoryManagerE"></span><span id="arrow::cuda::CudaMemoryManager"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_memory_manager"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CudaMemoryManager</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow13MemoryManagerE" title="arrow::MemoryManager"><span class="n"><span class="pre">MemoryManager</span></span></a><a class="headerlink" href="#_CPPv4N5arrow4cuda17CudaMemoryManagerE" title="Permalink to this definition">#</a><br /></dt>
<dd><p><a class="reference internal" href="memory.html#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a> implementation for CUDA. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda17CudaMemoryManager15GetBufferReaderENSt10shared_ptrI6BufferEE">
<span id="_CPPv3N5arrow4cuda17CudaMemoryManager15GetBufferReaderENSt10shared_ptrI6BufferEE"></span><span id="_CPPv2N5arrow4cuda17CudaMemoryManager15GetBufferReaderENSt10shared_ptrI6BufferEE"></span><span id="arrow::cuda::CudaMemoryManager::GetBufferReader__std::shared_ptr:Buffer:"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_memory_manager_1afe4c971cfdbd8504e5e2a5c20c864d45"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="io.html#_CPPv4N5arrow2io16RandomAccessFileE" title="arrow::io::RandomAccessFile"><span class="n"><span class="pre">RandomAccessFile</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GetBufferReader</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">buf</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow4cuda17CudaMemoryManager15GetBufferReaderENSt10shared_ptrI6BufferEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create a RandomAccessFile to read a particular buffer. </p>
<p>The given buffer must be tied to this <a class="reference internal" href="memory.html#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a>.</p>
<p>See also the <a class="reference internal" href="memory.html#classarrow_1_1_buffer_1ae2eded44b1379542966cd441a49fe953"><span class="std std-ref">Buffer::GetReader</span></a> shorthand. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda17CudaMemoryManager15GetBufferWriterENSt10shared_ptrI6BufferEE">
<span id="_CPPv3N5arrow4cuda17CudaMemoryManager15GetBufferWriterENSt10shared_ptrI6BufferEE"></span><span id="_CPPv2N5arrow4cuda17CudaMemoryManager15GetBufferWriterENSt10shared_ptrI6BufferEE"></span><span id="arrow::cuda::CudaMemoryManager::GetBufferWriter__std::shared_ptr:Buffer:"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_memory_manager_1a1a3ac0ffa638a473c4616ef8cab3782b"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="io.html#_CPPv4N5arrow2io12OutputStreamE" title="arrow::io::OutputStream"><span class="n"><span class="pre">OutputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GetBufferWriter</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">buf</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow4cuda17CudaMemoryManager15GetBufferWriterENSt10shared_ptrI6BufferEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create a OutputStream to write to a particular buffer. </p>
<p>The given buffer must be mutable and tied to this <a class="reference internal" href="memory.html#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a>. The returned stream object writes into the buffer’s underlying memory (but it won’t resize it).</p>
<p>See also the <a class="reference internal" href="memory.html#classarrow_1_1_buffer_1a3131f10cde81c53e4d6615eb5e4850ec"><span class="std std-ref">Buffer::GetWriter</span></a> shorthand. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda17CudaMemoryManager14AllocateBufferE7int64_t">
<span id="_CPPv3N5arrow4cuda17CudaMemoryManager14AllocateBufferE7int64_t"></span><span id="_CPPv2N5arrow4cuda17CudaMemoryManager14AllocateBufferE7int64_t"></span><span id="arrow::cuda::CudaMemoryManager::AllocateBuffer__int64_t"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_memory_manager_1a293e7f8b5daaea734be45feb69d1b274"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">unique_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">AllocateBuffer</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow4cuda17CudaMemoryManager14AllocateBufferE7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Allocate a (mutable) <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a>. </p>
<p>The buffer will be allocated in the device’s memory. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda17CudaMemoryManager11cuda_deviceEv">
<span id="_CPPv3NK5arrow4cuda17CudaMemoryManager11cuda_deviceEv"></span><span id="_CPPv2NK5arrow4cuda17CudaMemoryManager11cuda_deviceEv"></span><span id="arrow::cuda::CudaMemoryManager::cuda_deviceC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_memory_manager_1a0a32036a408f28362ee697b4fbcef316"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda10CudaDeviceE" title="arrow::cuda::CudaDevice"><span class="n"><span class="pre">CudaDevice</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">cuda_device</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda17CudaMemoryManager11cuda_deviceEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The <a class="reference internal" href="#classarrow_1_1cuda_1_1_cuda_device"><span class="std std-ref">CudaDevice</span></a> instance tied to this <a class="reference internal" href="memory.html#classarrow_1_1_memory_manager"><span class="std std-ref">MemoryManager</span></a>. </p>
<p>This is a useful shorthand returning a concrete-typed pointer, avoiding having to cast the <code class="docutils literal notranslate"><a class="reference internal" href="memory.html#classarrow_1_1_memory_manager_1a5b5e7539c2b6a3dcec4ed283a314d4a1"><span class="std std-ref"><span class="pre">device()</span></span></a></code> result. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda17CudaMemoryManager19MakeDeviceSyncEventEv">
<span id="_CPPv3N5arrow4cuda17CudaMemoryManager19MakeDeviceSyncEventEv"></span><span id="_CPPv2N5arrow4cuda17CudaMemoryManager19MakeDeviceSyncEventEv"></span><span id="arrow::cuda::CudaMemoryManager::MakeDeviceSyncEvent"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_memory_manager_1a05455b061c09e355c3b82553321250a4"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><span class="p"><span class="pre">::</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6Device9SyncEventE" title="arrow::Device::SyncEvent"><span class="n"><span class="pre">SyncEvent</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">MakeDeviceSyncEvent</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow4cuda17CudaMemoryManager19MakeDeviceSyncEventEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Creates a wrapped CUevent. </p>
<p>Will call cuEventCreate and it will call cuEventDestroy internally when the event is destructed. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda17CudaMemoryManager19WrapDeviceSyncEventEPvN6Device9SyncEvent12release_fn_tE">
<span id="_CPPv3N5arrow4cuda17CudaMemoryManager19WrapDeviceSyncEventEPvN6Device9SyncEvent12release_fn_tE"></span><span id="_CPPv2N5arrow4cuda17CudaMemoryManager19WrapDeviceSyncEventEPvN6Device9SyncEvent12release_fn_tE"></span><span id="arrow::cuda::CudaMemoryManager::WrapDeviceSyncEvent__voidP.Device::SyncEvent::release_fn_t"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_memory_manager_1a1fab22166e507773656186d5f7f913a6"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><span class="p"><span class="pre">::</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6Device9SyncEventE" title="arrow::Device::SyncEvent"><span class="n"><span class="pre">SyncEvent</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WrapDeviceSyncEvent</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">sync_event</span></span>, <a class="reference internal" href="memory.html#_CPPv4N5arrow6DeviceE" title="arrow::Device"><span class="n"><span class="pre">Device</span></span></a><span class="p"><span class="pre">::</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6Device9SyncEventE" title="arrow::Device::SyncEvent"><span class="n"><span class="pre">SyncEvent</span></span></a><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">release_fn_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">release_sync_event</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow4cuda17CudaMemoryManager19WrapDeviceSyncEventEPvN6Device9SyncEvent12release_fn_tE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Wraps an existing event into a sync event. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>sync_event</strong> – the event to wrap, must be a CUevent* </p></li>
<li><p><strong>release_sync_event</strong> – a function to call during destruction, <code class="docutils literal notranslate"><span class="pre">nullptr</span></code> or a no-op function can be passed to indicate ownership is maintained externally </p></li>
</ul>
</dd>
</dl>
</dd></dl>
</div>
</dd></dl>
</section>
<section id="buffers">
<h2>Buffers<a class="headerlink" href="#buffers" title="Permalink to this heading">#</a></h2>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda10CudaBufferE">
<span id="_CPPv3N5arrow4cuda10CudaBufferE"></span><span id="_CPPv2N5arrow4cuda10CudaBufferE"></span><span id="arrow::cuda::CudaBuffer"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_buffer"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CudaBuffer</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><a class="headerlink" href="#_CPPv4N5arrow4cuda10CudaBufferE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>An Arrow buffer located on a GPU device. </p>
<p>Be careful using this in any Arrow code which may not be GPU-aware </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda10CudaBuffer10CopyToHostEK7int64_tK7int64_tPv">
<span id="_CPPv3NK5arrow4cuda10CudaBuffer10CopyToHostEK7int64_tK7int64_tPv"></span><span id="_CPPv2NK5arrow4cuda10CudaBuffer10CopyToHostEK7int64_tK7int64_tPv"></span><span id="arrow::cuda::CudaBuffer::CopyToHost__int64_tC.int64_tC.voidPC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_buffer_1a68ec37adb9fc33fb2dbc93b8591eb80b"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CopyToHost</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">position</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span>, <span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">out</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda10CudaBuffer10CopyToHostEK7int64_tK7int64_tPv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Copy memory from GPU device to CPU host. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>position</strong><strong>[in]</strong> start position inside buffer to copy bytes from </p></li>
<li><p><strong>nbytes</strong><strong>[in]</strong> number of bytes to copy </p></li>
<li><p><strong>out</strong><strong>[out]</strong> start address of the host memory area to copy to </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda10CudaBuffer12CopyFromHostEK7int64_tPKv7int64_t">
<span id="_CPPv3N5arrow4cuda10CudaBuffer12CopyFromHostEK7int64_tPKv7int64_t"></span><span id="_CPPv2N5arrow4cuda10CudaBuffer12CopyFromHostEK7int64_tPKv7int64_t"></span><span id="arrow::cuda::CudaBuffer::CopyFromHost__int64_tC.voidCP.int64_t"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_buffer_1a941397f8ec48d7578669dea25c601559"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CopyFromHost</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">position</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda10CudaBuffer12CopyFromHostEK7int64_tPKv7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Copy memory to device at position. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>position</strong><strong>[in]</strong> start position to copy bytes to </p></li>
<li><p><strong>data</strong><strong>[in]</strong> the host data to copy </p></li>
<li><p><strong>nbytes</strong><strong>[in]</strong> number of bytes to copy </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda10CudaBuffer14CopyFromDeviceEK7int64_tPKv7int64_t">
<span id="_CPPv3N5arrow4cuda10CudaBuffer14CopyFromDeviceEK7int64_tPKv7int64_t"></span><span id="_CPPv2N5arrow4cuda10CudaBuffer14CopyFromDeviceEK7int64_tPKv7int64_t"></span><span id="arrow::cuda::CudaBuffer::CopyFromDevice__int64_tC.voidCP.int64_t"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_buffer_1a41dfd69a882ea4fb138d8b25cc495cfe"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CopyFromDevice</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">position</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda10CudaBuffer14CopyFromDeviceEK7int64_tPKv7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Copy memory from device to device at position. </p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>It is assumed that both source and destination device memories have been allocated within the same context. </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>position</strong><strong>[in]</strong> start position inside buffer to copy bytes to </p></li>
<li><p><strong>data</strong><strong>[in]</strong> start address of the device memory area to copy from </p></li>
<li><p><strong>nbytes</strong><strong>[in]</strong> number of bytes to copy </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda10CudaBuffer21CopyFromAnotherDeviceERKNSt10shared_ptrI11CudaContextEEK7int64_tPKv7int64_t">
<span id="_CPPv3N5arrow4cuda10CudaBuffer21CopyFromAnotherDeviceERKNSt10shared_ptrI11CudaContextEEK7int64_tPKv7int64_t"></span><span id="_CPPv2N5arrow4cuda10CudaBuffer21CopyFromAnotherDeviceERKNSt10shared_ptrI11CudaContextEEK7int64_tPKv7int64_t"></span><span id="arrow::cuda::CudaBuffer::CopyFromAnotherDevice__std::shared_ptr:CudaContext:CR.int64_tC.voidCP.int64_t"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_buffer_1ad6338774ba17d06ccd9423e5dd4e61e9"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CopyFromAnotherDevice</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda11CudaContextE" title="arrow::cuda::CudaContext"><span class="n"><span class="pre">CudaContext</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">src_ctx</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">position</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda10CudaBuffer21CopyFromAnotherDeviceERKNSt10shared_ptrI11CudaContextEEK7int64_tPKv7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Copy memory from another device to device at position. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>src_ctx</strong><strong>[in]</strong> context of the source device memory </p></li>
<li><p><strong>position</strong><strong>[in]</strong> start position inside buffer to copy bytes to </p></li>
<li><p><strong>data</strong><strong>[in]</strong> start address of the another device memory area to copy from </p></li>
<li><p><strong>nbytes</strong><strong>[in]</strong> number of bytes to copy </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda10CudaBuffer12ExportForIpcEv">
<span id="_CPPv3N5arrow4cuda10CudaBuffer12ExportForIpcEv"></span><span id="_CPPv2N5arrow4cuda10CudaBuffer12ExportForIpcEv"></span><span id="arrow::cuda::CudaBuffer::ExportForIpc"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_buffer_1a5c19939d2fc3407ae9c1db13796f74d2"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda16CudaIpcMemHandleE" title="arrow::cuda::CudaIpcMemHandle"><span class="n"><span class="pre">CudaIpcMemHandle</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ExportForIpc</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda10CudaBuffer12ExportForIpcEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Expose this device buffer as IPC memory which can be used in other processes. </p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>After calling this function, this device memory will not be freed when the <a class="reference internal" href="#classarrow_1_1cuda_1_1_cuda_buffer"><span class="std std-ref">CudaBuffer</span></a> is destructed </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>Handle or <a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda10CudaBuffer10FromBufferENSt10shared_ptrI6BufferEE">
<span id="_CPPv3N5arrow4cuda10CudaBuffer10FromBufferENSt10shared_ptrI6BufferEE"></span><span id="_CPPv2N5arrow4cuda10CudaBuffer10FromBufferENSt10shared_ptrI6BufferEE"></span><span id="arrow::cuda::CudaBuffer::FromBuffer__std::shared_ptr:Buffer:"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_buffer_1a9312b866f5f679b9d037e4c49baf699b"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda10CudaBufferE" title="arrow::cuda::CudaBuffer"><span class="n"><span class="pre">CudaBuffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">FromBuffer</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">buffer</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda10CudaBuffer10FromBufferENSt10shared_ptrI6BufferEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Convert back generic buffer into <a class="reference internal" href="#classarrow_1_1cuda_1_1_cuda_buffer"><span class="std std-ref">CudaBuffer</span></a>. </p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This function returns an error if the buffer isn’t backed by GPU memory </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>buffer</strong><strong>[in]</strong> buffer to convert </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="#classarrow_1_1cuda_1_1_cuda_buffer"><span class="std std-ref">CudaBuffer</span></a> or <a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda14CudaHostBufferE">
<span id="_CPPv3N5arrow4cuda14CudaHostBufferE"></span><span id="_CPPv2N5arrow4cuda14CudaHostBufferE"></span><span id="arrow::cuda::CudaHostBuffer"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_host_buffer"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CudaHostBuffer</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow13MutableBufferE" title="arrow::MutableBuffer"><span class="n"><span class="pre">MutableBuffer</span></span></a><a class="headerlink" href="#_CPPv4N5arrow4cuda14CudaHostBufferE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Device-accessible CPU memory created using cudaHostAlloc. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda14CudaHostBuffer16GetDeviceAddressERKNSt10shared_ptrI11CudaContextEE">
<span id="_CPPv3N5arrow4cuda14CudaHostBuffer16GetDeviceAddressERKNSt10shared_ptrI11CudaContextEE"></span><span id="_CPPv2N5arrow4cuda14CudaHostBuffer16GetDeviceAddressERKNSt10shared_ptrI11CudaContextEE"></span><span id="arrow::cuda::CudaHostBuffer::GetDeviceAddress__std::shared_ptr:CudaContext:CR"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_host_buffer_1a303e7f6f0f02a585dd22f7056e9bdef1"></span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">uintptr_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GetDeviceAddress</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda11CudaContextE" title="arrow::cuda::CudaContext"><span class="n"><span class="pre">CudaContext</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">ctx</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda14CudaHostBuffer16GetDeviceAddressERKNSt10shared_ptrI11CudaContextEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return a device address the GPU can read this memory from. </p>
</dd></dl>
</div>
</dd></dl>
</section>
<section id="memory-input-output">
<h2>Memory Input / Output<a class="headerlink" href="#memory-input-output" title="Permalink to this heading">#</a></h2>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda16CudaBufferReaderE">
<span id="_CPPv3N5arrow4cuda16CudaBufferReaderE"></span><span id="_CPPv2N5arrow4cuda16CudaBufferReaderE"></span><span id="arrow::cuda::CudaBufferReader"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_buffer_reader"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CudaBufferReader</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">internal</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">RandomAccessFileConcurrencyWrapper</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda16CudaBufferReaderE" title="arrow::cuda::CudaBufferReader"><span class="n"><span class="pre">CudaBufferReader</span></span></a><span class="p"><span class="pre">&gt;</span></span><a class="headerlink" href="#_CPPv4N5arrow4cuda16CudaBufferReaderE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>File interface for zero-copy read from CUDA buffers. </p>
<p>CAUTION: reading to a <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> returns a <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> pointing to device memory. It will generally not be compatible with Arrow code expecting a buffer pointing to CPU memory. Reading to a raw pointer, though, copies device memory into the host memory pointed to. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda16CudaBufferReader6closedEv">
<span id="_CPPv3NK5arrow4cuda16CudaBufferReader6closedEv"></span><span id="_CPPv2NK5arrow4cuda16CudaBufferReader6closedEv"></span><span id="arrow::cuda::CudaBufferReader::closedC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_buffer_reader_1a0d572faa3e6b61d8df77b677549a6049"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">closed</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda16CudaBufferReader6closedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return whether the stream is closed. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda16CudaBufferReader18supports_zero_copyEv">
<span id="_CPPv3NK5arrow4cuda16CudaBufferReader18supports_zero_copyEv"></span><span id="_CPPv2NK5arrow4cuda16CudaBufferReader18supports_zero_copyEv"></span><span id="arrow::cuda::CudaBufferReader::supports_zero_copyC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_buffer_reader_1ab01cdb213d900351c43dba8078c81f10"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">supports_zero_copy</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda16CudaBufferReader18supports_zero_copyEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return true if InputStream is capable of zero copy <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> reads. </p>
<p>Zero copy reads imply the use of Buffer-returning <a class="reference internal" href="io.html#classarrow_1_1io_1_1_readable_1ab94d6d47006df39f6cf77c078a61b8d8"><span class="std std-ref">Read()</span></a> overloads. </p>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda16CudaBufferWriterE">
<span id="_CPPv3N5arrow4cuda16CudaBufferWriterE"></span><span id="_CPPv2N5arrow4cuda16CudaBufferWriterE"></span><span id="arrow::cuda::CudaBufferWriter"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_buffer_writer"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CudaBufferWriter</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">WritableFile</span></span><a class="headerlink" href="#_CPPv4N5arrow4cuda16CudaBufferWriterE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>File interface for writing to CUDA buffers, with optional buffering. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda16CudaBufferWriter5CloseEv">
<span id="_CPPv3N5arrow4cuda16CudaBufferWriter5CloseEv"></span><span id="_CPPv2N5arrow4cuda16CudaBufferWriter5CloseEv"></span><span id="arrow::cuda::CudaBufferWriter::Close"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_buffer_writer_1a0ea8c0db5348cb6c7a95581545708106"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Close</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow4cuda16CudaBufferWriter5CloseEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Close writer and flush buffered bytes to GPU. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda16CudaBufferWriter6closedEv">
<span id="_CPPv3NK5arrow4cuda16CudaBufferWriter6closedEv"></span><span id="_CPPv2NK5arrow4cuda16CudaBufferWriter6closedEv"></span><span id="arrow::cuda::CudaBufferWriter::closedC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_buffer_writer_1a505faef7022ad871885c9bcb43aa459b"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">closed</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda16CudaBufferWriter6closedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return whether the stream is closed. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda16CudaBufferWriter5FlushEv">
<span id="_CPPv3N5arrow4cuda16CudaBufferWriter5FlushEv"></span><span id="_CPPv2N5arrow4cuda16CudaBufferWriter5FlushEv"></span><span id="arrow::cuda::CudaBufferWriter::Flush"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_buffer_writer_1a5b1378916dcf383f54bbe22ae6519119"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Flush</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow4cuda16CudaBufferWriter5FlushEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Flush buffered bytes to GPU. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda16CudaBufferWriter5WriteEPKv7int64_t">
<span id="_CPPv3N5arrow4cuda16CudaBufferWriter5WriteEPKv7int64_t"></span><span id="_CPPv2N5arrow4cuda16CudaBufferWriter5WriteEPKv7int64_t"></span><span id="arrow::cuda::CudaBufferWriter::Write__voidCP.int64_t"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_buffer_writer_1a6f581e34f2ab08354be9ad8d2c0c5e7a"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Write</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow4cuda16CudaBufferWriter5WriteEPKv7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Write the given data to the stream. </p>
<p>This method always processes the bytes in full. Depending on the semantics of the stream, the data may be written out immediately, held in a buffer, or written asynchronously. In the case where the stream buffers the data, it will be copied. To avoid potentially large copies, use the Write variant that takes an owned <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda16CudaBufferWriter4TellEv">
<span id="_CPPv3NK5arrow4cuda16CudaBufferWriter4TellEv"></span><span id="_CPPv2NK5arrow4cuda16CudaBufferWriter4TellEv"></span><span id="arrow::cuda::CudaBufferWriter::TellC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_buffer_writer_1a86e76b4b887300f20d5a2046c59362af"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">int64_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Tell</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda16CudaBufferWriter4TellEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the position in this stream. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda16CudaBufferWriter13SetBufferSizeEK7int64_t">
<span id="_CPPv3N5arrow4cuda16CudaBufferWriter13SetBufferSizeEK7int64_t"></span><span id="_CPPv2N5arrow4cuda16CudaBufferWriter13SetBufferSizeEK7int64_t"></span><span id="arrow::cuda::CudaBufferWriter::SetBufferSize__int64_tC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_buffer_writer_1afe2b3f481f6dc35d292b2b808f5c4aae"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SetBufferSize</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">buffer_size</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda16CudaBufferWriter13SetBufferSizeEK7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Set CPU buffer size to limit calls to cudaMemcpy. </p>
<p>
By default writes are unbuffered </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>buffer_size</strong><strong>[in]</strong> the size of CPU buffer to allocate </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda16CudaBufferWriter11buffer_sizeEv">
<span id="_CPPv3NK5arrow4cuda16CudaBufferWriter11buffer_sizeEv"></span><span id="_CPPv2NK5arrow4cuda16CudaBufferWriter11buffer_sizeEv"></span><span id="arrow::cuda::CudaBufferWriter::buffer_sizeC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_buffer_writer_1a2a552698ce0327a211d7cc21ba44a7b6"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buffer_size</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda16CudaBufferWriter11buffer_sizeEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Returns size of host (CPU) buffer, 0 for unbuffered. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda16CudaBufferWriter18num_bytes_bufferedEv">
<span id="_CPPv3NK5arrow4cuda16CudaBufferWriter18num_bytes_bufferedEv"></span><span id="_CPPv2NK5arrow4cuda16CudaBufferWriter18num_bytes_bufferedEv"></span><span id="arrow::cuda::CudaBufferWriter::num_bytes_bufferedC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_buffer_writer_1aab6152a10e047d397137b5021e9a7292"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">num_bytes_buffered</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda16CudaBufferWriter18num_bytes_bufferedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Returns number of bytes buffered on host. </p>
</dd></dl>
</div>
</dd></dl>
</section>
<section id="ipc">
<h2>IPC<a class="headerlink" href="#ipc" title="Permalink to this heading">#</a></h2>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda16CudaIpcMemHandleE">
<span id="_CPPv3N5arrow4cuda16CudaIpcMemHandleE"></span><span id="_CPPv2N5arrow4cuda16CudaIpcMemHandleE"></span><span id="arrow::cuda::CudaIpcMemHandle"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_ipc_mem_handle"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CudaIpcMemHandle</span></span></span><a class="headerlink" href="#_CPPv4N5arrow4cuda16CudaIpcMemHandleE" title="Permalink to this definition">#</a><br /></dt>
<dd><div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow4cuda16CudaIpcMemHandle9SerializeEP10MemoryPool">
<span id="_CPPv3NK5arrow4cuda16CudaIpcMemHandle9SerializeEP10MemoryPool"></span><span id="_CPPv2NK5arrow4cuda16CudaIpcMemHandle9SerializeEP10MemoryPool"></span><span id="arrow::cuda::CudaIpcMemHandle::Serialize__MemoryPoolPC"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_ipc_mem_handle_1a246d35e548fbc369416dc6ce7764c25d"></span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Serialize</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="memory.html#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="memory.html#_CPPv4N5arrow19default_memory_poolEv" title="arrow::default_memory_pool"><span class="n"><span class="pre">default_memory_pool</span></span></a><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow4cuda16CudaIpcMemHandle9SerializeEP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Write <a class="reference internal" href="#classarrow_1_1cuda_1_1_cuda_ipc_mem_handle"><span class="std std-ref">CudaIpcMemHandle</span></a> to a <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a>. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>pool</strong><strong>[in]</strong> a <a class="reference internal" href="memory.html#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a> to allocate memory from </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> or <a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow4cuda16CudaIpcMemHandle10FromBufferEPKv">
<span id="_CPPv3N5arrow4cuda16CudaIpcMemHandle10FromBufferEPKv"></span><span id="_CPPv2N5arrow4cuda16CudaIpcMemHandle10FromBufferEPKv"></span><span id="arrow::cuda::CudaIpcMemHandle::FromBuffer__voidCP"></span><span class="target" id="classarrow_1_1cuda_1_1_cuda_ipc_mem_handle_1adea2ebfee68e8065ac6b81d66fa5f07d"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow4cuda16CudaIpcMemHandleE" title="arrow::cuda::CudaIpcMemHandle"><span class="n"><span class="pre">CudaIpcMemHandle</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">FromBuffer</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">opaque_handle</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow4cuda16CudaIpcMemHandle10FromBufferEPKv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create <a class="reference internal" href="#classarrow_1_1cuda_1_1_cuda_ipc_mem_handle"><span class="std std-ref">CudaIpcMemHandle</span></a> from opaque buffer (e.g. </p>
<p>from another process) </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>opaque_handle</strong><strong>[in]</strong> a CUipcMemHandle as a const void* </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Handle or <a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv420SerializeRecordBatchRK11RecordBatchP11CudaContext">
<span id="_CPPv320SerializeRecordBatchRK11RecordBatchP11CudaContext"></span><span id="_CPPv220SerializeRecordBatchRK11RecordBatchP11CudaContext"></span><span id="SerializeRecordBatch__RecordBatchCR.CudaContextP"></span><span class="target" id="group__cuda-ipc-functions_1ga1d251e8fccb9ad26d0988e4127c028dc"></span><span class="n"><span class="pre">Result</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">CudaBuffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SerializeRecordBatch</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">RecordBatch</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">batch</span></span>, <span class="n"><span class="pre">CudaContext</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">ctx</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv420SerializeRecordBatchRK11RecordBatchP11CudaContext" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Write record batch message to GPU device memory. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>batch</strong><strong>[in]</strong> record batch to write </p></li>
<li><p><strong>ctx</strong><strong>[in]</strong> <a class="reference internal" href="#classarrow_1_1cuda_1_1_cuda_context"><span class="std std-ref">CudaContext</span></a> to allocate device memory from </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="#classarrow_1_1cuda_1_1_cuda_buffer"><span class="std std-ref">CudaBuffer</span></a> or <a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv415ReadRecordBatchRKNSt10shared_ptrI6SchemaEEPKN3ipc14DictionaryMemoERKNSt10shared_ptrI10CudaBufferEEP10MemoryPool">
<span id="_CPPv315ReadRecordBatchRKNSt10shared_ptrI6SchemaEEPKN3ipc14DictionaryMemoERKNSt10shared_ptrI10CudaBufferEEP10MemoryPool"></span><span id="_CPPv215ReadRecordBatchRKNSt10shared_ptrI6SchemaEEPKN3ipc14DictionaryMemoERKNSt10shared_ptrI10CudaBufferEEP10MemoryPool"></span><span id="ReadRecordBatch__std::shared_ptr:Schema:CR.ipc::DictionaryMemoCP.std::shared_ptr:CudaBuffer:CR.MemoryPoolP"></span><span class="target" id="group__cuda-ipc-functions_1gaa0056c99a8ad8dd0a4a87614f29a89df"></span><span class="n"><span class="pre">Result</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">RecordBatch</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadRecordBatch</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Schema</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">schema</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">ipc</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">DictionaryMemo</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">dictionary_memo</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">CudaBuffer</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">buffer</span></span>, <span class="n"><span class="pre">MemoryPool</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">default_memory_pool</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv415ReadRecordBatchRKNSt10shared_ptrI6SchemaEEPKN3ipc14DictionaryMemoERKNSt10shared_ptrI10CudaBufferEEP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd><p>ReadRecordBatch specialized to handle metadata on CUDA device. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>schema</strong><strong>[in]</strong> the <a class="reference internal" href="datatype.html#classarrow_1_1_schema"><span class="std std-ref">Schema</span></a> for the record batch </p></li>
<li><p><strong>dictionary_memo</strong><strong>[in]</strong> DictionaryMemo which has any dictionaries. Can be nullptr if you are sure there are no dictionary-encoded fields </p></li>
<li><p><strong>buffer</strong><strong>[in]</strong> a <a class="reference internal" href="#classarrow_1_1cuda_1_1_cuda_buffer"><span class="std std-ref">CudaBuffer</span></a> containing the complete IPC message </p></li>
<li><p><strong>pool</strong><strong>[in]</strong> a <a class="reference internal" href="memory.html#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a> to use for allocating space for the metadata </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="table.html#classarrow_1_1_record_batch"><span class="std std-ref">RecordBatch</span></a> or <a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
</section>
</section>
</article>
<footer class="prev-next-footer">
<div class="prev-next-area">
<a class="left-prev"
href="formats.html"
title="previous page">
<i class="fa-solid fa-angle-left"></i>
<div class="prev-next-info">
<p class="prev-next-subtitle">previous</p>
<p class="prev-next-title">File Formats</p>
</div>
</a>
<a class="right-next"
href="flight.html"
title="next page">
<div class="prev-next-info">
<p class="prev-next-subtitle">next</p>
<p class="prev-next-title">Arrow Flight RPC</p>
</div>
<i class="fa-solid fa-angle-right"></i>
</a>
</div>
</footer>
</div>
<div class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner">
<div class="sidebar-secondary-item">
<div
id="pst-page-navigation-heading-2"
class="page-toc tocsection onthispage">
<i class="fa-solid fa-list"></i> On this page
</div>
<nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2">
<ul class="visible nav section-nav flex-column">
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#contexts">Contexts</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#devices">Devices</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#buffers">Buffers</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#memory-input-output">Memory Input / Output</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#ipc">IPC</a></li>
</ul>
</nav></div>
<div class="sidebar-secondary-item">
<div class="tocsection editthispage">
<a href="https://github.com/apache/arrow/edit/main/docs/source/cpp/api/cuda.rst">
<i class="fa-solid fa-pencil"></i>
Edit on GitHub
</a>
</div>
</div>
</div></div>
</div>
<footer class="bd-footer-content">
</footer>
</main>
</div>
</div>
<!-- Scripts loaded after <body> so the DOM is not blocked -->
<script src="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
<script src="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
<footer class="bd-footer">
<div class="bd-footer__inner bd-page-width">
<div class="footer-items__start">
<div class="footer-item">
<p class="copyright">
© Copyright 2016-2024 Apache Software Foundation.
Apache Arrow, Arrow, Apache, the Apache feather logo, and the Apache Arrow project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.
<br/>
</p>
</div>
<div class="footer-item">
<p class="sphinx-version">
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 6.2.0.
<br/>
</p>
</div>
</div>
<div class="footer-items__end">
<div class="footer-item">
<p class="theme-version">
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
</p></div>
</div>
</div>
</footer>
</body>
</html>