<div dir="ltr"><div>Dominic,</div><div> </div><div>A few years ago, I was trying to minimize the amount of data transfer to and from the GPU (for multi-GPU MatMult) by inspecting the indices of the data that needed to be message to and from the device. Then, I would call gather kernels on the GPU which pulled the scattered data into contiguous buffers and then be transferred to the host asynchronously (while the MatMult was occurring). The existence of VecScatterInitializeForGPU was added in order to build the necessary buffers as needed. This was the motivation behind the existence of VecScatterInitializeForGPU.</div>

<div> </div><div>An alternative approach is to message the smallest contiguous buffer containing all the data with a single cudaMemcpyAsync. This is the method currently implemented. </div><div> </div><div>I never found a case where the former implementation (with a GPU gather-kernel) performed better than the alternative approach which messaged the smallest contiguous buffer. I looked at many, many matrices. </div>
<div> </div><div>Now, as far as I understand the VecScatter kernels, this method should only get called if the transfer is MPI_General (i.e. PtoP parallel to parallel). Other VecScatter methods are called in other circumstances where the the scatter is not MPI_General. That assumption could be wrong though. </div>
<div> </div><div>-Paul </div>
<div> </div><div> </div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jan 22, 2014 at 9:49 AM, Dominic Meiser <span dir="ltr"><<a href="mailto:dmeiser@txcorp.com" target="_blank">dmeiser@txcorp.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I'm trying to understand VecScatterInitializeForGPU in src/vec/vec/utils/veccusp/<u></u>vscatcusp.c. I don't understand why this function can get away with casting the fromdata and todata in the inctx to VecScatter_MPI_General. Don't we need to inspect the VecScatterType fields of the todata and fromdata?<br>

<br>
Cheers,<br>
Dominic<span class="HOEnZb"><font color="#888888"><br>
<br>
-- <br>
Dominic Meiser<br>
Tech-X Corporation<br>
5621 Arapahoe Avenue<br>
Boulder, CO 80303<br>
USA<br>
Telephone: <a href="tel:303-996-2036" target="_blank" value="+13039962036">303-996-2036</a><br>
Fax: <a href="tel:303-448-7756" target="_blank" value="+13034487756">303-448-7756</a><br>
<a href="http://www.txcorp.com" target="_blank">www.txcorp.com</a><br>
<br>
</font></span></blockquote></div><br></div>