<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.9.6" xml:lang="en-US">
  <compounddef id="classtf_1_1cudaStream" kind="class" language="C++" prot="public">
    <compoundname>tf::cudaStream</compoundname>
    <basecompoundref prot="public" virt="non-virtual">cudaObject&lt; cudaStream_t, cudaStreamCreator, cudaStreamDeleter &gt;</basecompoundref>
    <includes refid="cuda__stream_8hpp" local="no">cuda_stream.hpp</includes>
      <sectiondef kind="public-func">
      <memberdef kind="function" id="classtf_1_1cudaStream_1ab29390d447e334d4945caf78b24d6ca6" prot="public" static="no" const="no" explicit="yes" inline="yes" virt="non-virtual">
        <type></type>
        <definition>tf::cudaStream::cudaStream</definition>
        <argsstring>(cudaStream_t stream)</argsstring>
        <name>cudaStream</name>
        <qualifiedname>tf::cudaStream::cudaStream</qualifiedname>
        <param>
          <type>cudaStream_t</type>
          <declname>stream</declname>
        </param>
        <briefdescription>
<para>constructs an RAII-styled object from the given CUDA stream </para>
        </briefdescription>
        <detaileddescription>
<para>Constructs a <ref refid="classtf_1_1cudaStream" kindref="compound">cudaStream</ref> object which owns <computeroutput>stream</computeroutput>. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/cuda/cuda_stream.hpp" line="60" column="14" bodyfile="/Users/twhuang/Code/taskflow/taskflow/cuda/cuda_stream.hpp" bodystart="60" bodyend="61"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1cudaStream_1a922ed633cf0670b22aca1430e7a810b1" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type></type>
        <definition>tf::cudaStream::cudaStream</definition>
        <argsstring>()=default</argsstring>
        <name>cudaStream</name>
        <qualifiedname>tf::cudaStream::cudaStream</qualifiedname>
        <briefdescription>
<para>default constructor </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/cuda/cuda_stream.hpp" line="66" column="5"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1cudaStream_1a1a81d6005e8d60ad082dba2303a8aa30" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>void</type>
        <definition>void tf::cudaStream::synchronize</definition>
        <argsstring>() const</argsstring>
        <name>synchronize</name>
        <qualifiedname>tf::cudaStream::synchronize</qualifiedname>
        <briefdescription>
<para>synchronizes the associated stream </para>
        </briefdescription>
        <detaileddescription>
<para>Equivalently calling <computeroutput>cudaStreamSynchronize</computeroutput> to block until this stream has completed all operations. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/cuda/cuda_stream.hpp" line="74" column="10" bodyfile="/Users/twhuang/Code/taskflow/taskflow/cuda/cuda_stream.hpp" bodystart="74" bodyend="78"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1cudaStream_1ad98a025ff4306aa799e664a1e2aefd2e" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>void</type>
        <definition>void tf::cudaStream::begin_capture</definition>
        <argsstring>(cudaStreamCaptureMode m=cudaStreamCaptureModeGlobal) const</argsstring>
        <name>begin_capture</name>
        <qualifiedname>tf::cudaStream::begin_capture</qualifiedname>
        <param>
          <type>cudaStreamCaptureMode</type>
          <declname>m</declname>
          <defval>cudaStreamCaptureModeGlobal</defval>
        </param>
        <briefdescription>
<para>begins graph capturing on the stream </para>
        </briefdescription>
        <detaileddescription>
<para>When a stream is in capture mode, all operations pushed into the stream will not be executed, but will instead be captured into a graph, which will be returned via <ref refid="classtf_1_1cudaStream_1a9c48388031655cc691b267de96516a66" kindref="member">cudaStream::end_capture</ref>.</para>
<para>A thread&apos;s mode can be one of the following:<itemizedlist>
<listitem><para><computeroutput>cudaStreamCaptureModeGlobal:</computeroutput> This is the default mode. If the local thread has an ongoing capture sequence that was not initiated with <computeroutput>cudaStreamCaptureModeRelaxed</computeroutput> at <computeroutput>cuStreamBeginCapture</computeroutput>, or if any other thread has a concurrent capture sequence initiated with <computeroutput>cudaStreamCaptureModeGlobal</computeroutput>, this thread is prohibited from potentially unsafe API calls.</para>
</listitem><listitem><para><computeroutput>cudaStreamCaptureModeThreadLocal:</computeroutput> If the local thread has an ongoing capture sequence not initiated with <computeroutput>cudaStreamCaptureModeRelaxed</computeroutput>, it is prohibited from potentially unsafe API calls. Concurrent capture sequences in other threads are ignored.</para>
</listitem><listitem><para><computeroutput>cudaStreamCaptureModeRelaxed:</computeroutput> The local thread is not prohibited from potentially unsafe API calls. Note that the thread is still prohibited from API calls which necessarily conflict with stream capture, for example, attempting <computeroutput>cudaEventQuery</computeroutput> on an event that was last recorded inside a capture sequence. </para>
</listitem></itemizedlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/cuda/cuda_stream.hpp" line="106" column="10" bodyfile="/Users/twhuang/Code/taskflow/taskflow/cuda/cuda_stream.hpp" bodystart="106" bodyend="111"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1cudaStream_1a9c48388031655cc691b267de96516a66" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>cudaGraph_t</type>
        <definition>cudaGraph_t tf::cudaStream::end_capture</definition>
        <argsstring>() const</argsstring>
        <name>end_capture</name>
        <qualifiedname>tf::cudaStream::end_capture</qualifiedname>
        <briefdescription>
<para>ends graph capturing on the stream </para>
        </briefdescription>
        <detaileddescription>
<para>Equivalently calling <computeroutput>cudaStreamEndCapture</computeroutput> to end capture on stream and returning the captured graph. Capture must have been initiated on stream via a call to <ref refid="classtf_1_1cudaStream_1ad98a025ff4306aa799e664a1e2aefd2e" kindref="member">cudaStream::begin_capture</ref>. If capture was invalidated, due to a violation of the rules of stream capture, then a NULL graph will be returned. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/cuda/cuda_stream.hpp" line="122" column="17" bodyfile="/Users/twhuang/Code/taskflow/taskflow/cuda/cuda_stream.hpp" bodystart="122" bodyend="129"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1cudaStream_1a8343c234b4a3040b59626dc70e81d767" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>void</type>
        <definition>void tf::cudaStream::record</definition>
        <argsstring>(cudaEvent_t event) const</argsstring>
        <name>record</name>
        <qualifiedname>tf::cudaStream::record</qualifiedname>
        <param>
          <type>cudaEvent_t</type>
          <declname>event</declname>
        </param>
        <briefdescription>
<para>records an event on the stream </para>
        </briefdescription>
        <detaileddescription>
<para>Equivalently calling <computeroutput>cudaEventRecord</computeroutput> to record an event on this stream, both of which must be on the same CUDA context. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/cuda/cuda_stream.hpp" line="137" column="10" bodyfile="/Users/twhuang/Code/taskflow/taskflow/cuda/cuda_stream.hpp" bodystart="137" bodyend="142"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1cudaStream_1a6bb195945f7a580bec6105691c53c699" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>void</type>
        <definition>void tf::cudaStream::wait</definition>
        <argsstring>(cudaEvent_t event) const</argsstring>
        <name>wait</name>
        <qualifiedname>tf::cudaStream::wait</qualifiedname>
        <param>
          <type>cudaEvent_t</type>
          <declname>event</declname>
        </param>
        <briefdescription>
<para>waits on an event </para>
        </briefdescription>
        <detaileddescription>
<para>Equivalently calling <computeroutput>cudaStreamWaitEvent</computeroutput> to make all future work submitted to stream wait for all work captured in event. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/cuda/cuda_stream.hpp" line="150" column="10" bodyfile="/Users/twhuang/Code/taskflow/taskflow/cuda/cuda_stream.hpp" bodystart="150" bodyend="155"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>class to create an RAII-styled wrapper over a native CUDA stream </para>
    </briefdescription>
    <detaileddescription>
<para>A <ref refid="classtf_1_1cudaStream" kindref="compound">cudaStream</ref> object is an RAII-styled wrapper over a native CUDA stream (<computeroutput>cudaStream_t</computeroutput>). A <ref refid="classtf_1_1cudaStream" kindref="compound">cudaStream</ref> object is move-only. </para>
    </detaileddescription>
    <inheritancegraph>
      <node id="2">
        <label>cudaObject&lt; cudaStream_t, cudaStreamCreator, cudaStreamDeleter &gt;</label>
      </node>
      <node id="1">
        <label>tf::cudaStream</label>
        <link refid="classtf_1_1cudaStream"/>
        <childnode refid="2" relation="public-inheritance">
        </childnode>
      </node>
    </inheritancegraph>
    <collaborationgraph>
      <node id="2">
        <label>cudaObject&lt; cudaStream_t, cudaStreamCreator, cudaStreamDeleter &gt;</label>
      </node>
      <node id="1">
        <label>tf::cudaStream</label>
        <link refid="classtf_1_1cudaStream"/>
        <childnode refid="2" relation="public-inheritance">
        </childnode>
      </node>
    </collaborationgraph>
    <location file="/Users/twhuang/Code/taskflow/taskflow/cuda/cuda_stream.hpp" line="49" column="1" bodyfile="/Users/twhuang/Code/taskflow/taskflow/cuda/cuda_stream.hpp" bodystart="51" bodyend="156"/>
    <listofallmembers>
      <member refid="classtf_1_1cudaStream_1ad98a025ff4306aa799e664a1e2aefd2e" prot="public" virt="non-virtual"><scope>tf::cudaStream</scope><name>begin_capture</name></member>
      <member refid="classtf_1_1cudaStream_1ab29390d447e334d4945caf78b24d6ca6" prot="public" virt="non-virtual"><scope>tf::cudaStream</scope><name>cudaStream</name></member>
      <member refid="classtf_1_1cudaStream_1a922ed633cf0670b22aca1430e7a810b1" prot="public" virt="non-virtual"><scope>tf::cudaStream</scope><name>cudaStream</name></member>
      <member refid="classtf_1_1cudaStream_1a9c48388031655cc691b267de96516a66" prot="public" virt="non-virtual"><scope>tf::cudaStream</scope><name>end_capture</name></member>
      <member refid="classtf_1_1cudaStream_1a8343c234b4a3040b59626dc70e81d767" prot="public" virt="non-virtual"><scope>tf::cudaStream</scope><name>record</name></member>
      <member refid="classtf_1_1cudaStream_1a1a81d6005e8d60ad082dba2303a8aa30" prot="public" virt="non-virtual"><scope>tf::cudaStream</scope><name>synchronize</name></member>
      <member refid="classtf_1_1cudaStream_1a6bb195945f7a580bec6105691c53c699" prot="public" virt="non-virtual"><scope>tf::cudaStream</scope><name>wait</name></member>
    </listofallmembers>
  </compounddef>
</doxygen>
