1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML3.2 EN">
<HTML>
<HEAD> <link rel="canonical" href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Vec/VecScatterInitializeForGPU.html" />
<META NAME="GENERATOR" CONTENT="DOCTEXT">
<TITLE>VecScatterInitializeForGPU</TITLE>
</HEAD>
<BODY BGCOLOR="FFFFFF">
<div id="version" align=right><b>petsc-3.7.5 2017-01-01</b></div>
<div id="bugreport" align=right><a href="mailto:petsc-maint@mcs.anl.gov?subject=Typo or Error in Documentation &body=Please describe the typo or error in the documentation: petsc-3.7.5 v3.7.5 docs/manualpages/Vec/VecScatterInitializeForGPU.html "><small>Report Typos and Errors</small></a></div>
<A NAME="VecScatterInitializeForGPU"><H1>VecScatterInitializeForGPU</H1></A>
Initializes a generalized scatter from one vector to another for GPU based computation.
<H3><FONT COLOR="#CC3333">Synopsis</FONT></H3>
<PRE>
#include "petscvec.h"
PETSC_EXTERN PetscErrorCode VecScatterInitializeForGPU(VecScatter inctx,Vec x,ScatterMode mode)
</PRE>
<H3><FONT COLOR="#CC3333">Input Parameters</FONT></H3>
<TABLE border="0" cellpadding="0" cellspacing="0">
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>inctx </B></TD><TD>- scatter context generated by <A HREF="../Vec/VecScatterCreate.html#VecScatterCreate">VecScatterCreate</A>()
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>x </B></TD><TD>- the vector from which we scatter
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>mode </B></TD><TD>- the scattering mode, usually <A HREF="../Vec/SCATTER_FORWARD.html#SCATTER_FORWARD">SCATTER_FORWARD</A>. The available modes are:
<A HREF="../Vec/SCATTER_FORWARD.html#SCATTER_FORWARD">SCATTER_FORWARD</A> or <A HREF="../Vec/SCATTER_REVERSE.html#SCATTER_REVERSE">SCATTER_REVERSE</A>
</TD></TR></TABLE>
<P>
<P>
<H3><FONT COLOR="#CC3333">Notes</FONT></H3>
Effectively, this function creates all the necessary indexing buffers and work
vectors needed to move data only those data points in a vector which need to
be communicated across ranks. This is done at the first time this function is
called. Currently, this only used in the context of the parallel SpMV call in
MatMult_MPIAIJCUSP or MatMult_MPIAIJCUSPARSE.
<P>
This function is executed before the call to <A HREF="../Mat/MatMult.html#MatMult">MatMult</A>. This enables the memory
transfers to be overlapped with the <A HREF="../Mat/MatMult.html#MatMult">MatMult</A> SpMV kernel call.
<P>
<H3><FONT COLOR="#CC3333">See Also</FONT></H3>
<A HREF="../Vec/VecScatterFinalizeForGPU.html#VecScatterFinalizeForGPU">VecScatterFinalizeForGPU</A>(), <A HREF="../Vec/VecScatterCreate.html#VecScatterCreate">VecScatterCreate</A>(), <A HREF="../Vec/VecScatterEnd.html#VecScatterEnd">VecScatterEnd</A>()
<BR><P><B><P><B><FONT COLOR="#CC3333">Level:</FONT></B>intermediate
<BR><FONT COLOR="#CC3333">Location:</FONT></B><A HREF="../../../src/vec/vec/utils/vscat.c.html#VecScatterInitializeForGPU">src/vec/vec/utils/vscat.c</A>
<BR><A HREF="./index.html">Index of all Vec routines</A>
<BR><A HREF="../../index.html">Table of Contents for all manual pages</A>
<BR><A HREF="../singleindex.html">Index of all manual pages</A>
</BODY></HTML>
|