<div dir="ltr"><div><div>Hi Karli,<br><br></div>Thanks for the reply. That fixed it. I get only a 10% speed up using the cusp options. Is the residual evaluation at each iteration happening on the CPU or the GPU? Is there anyway one can do the residual evaluation on the GPU too, after the data has been transferred? Ex42 shows how it can be done using cusp but it looks really ugly and I want to use OpenCL. Basically can I do something like this?<br>
<br></div><div>DMGetLocalVector(da, &localX); //Vector is now in GPU.<br></div><div>DMDAVecGetArray(da, localX, &x); //Array is on GPU.<br><br></div><div>//Create buffers for OpenCL<br></div><div>buffer = cl::Buffer(context, CL_MEM_USE_HOST_PTR |<br>
</div><div>                                                CL_MEM_READ_WRITE, <br></div><div>                                  sizeofarray, &x[X2Start-Ng][X1Start-Ng]<br></div><div>                                   , &clErr);<br>
<br></div><div>(I'm hoping that here CL_MEM_USE_HOST_PTR will give a pointer to the data already on the GPU)<br><br></div><div>// Launch OpenCL kernels and now map the buffers to read off the data.<br><br></div><div>DMDAVecRestoreArray(da, localX, &x);<br>
</div><div>DMRestoreLocalVector(da, &localX);<br><br></div><div>I think the question is whether DMDAVecGetArray will return a pointer to the data on the GPU or not.<br></div><div><br></div>Cheers,<br>Mani<br></div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Tue, Jan 14, 2014 at 3:34 AM, Karl Rupp <span dir="ltr"><<a href="mailto:rupp@mcs.anl.gov" target="_blank">rupp@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Mani,<br>
<br>
the options are misspelled, you want to use<br>
-dm_vec_type cusp -dm_mat_type aijcusp<br>
(you can omit the 'mpi' to support both the MPI case and the sequential case).<br>
<br>
I also suggest doing all development in debug mode, in which case you would have received the following hints:<br>
<br>
WARNING! There are options you set that were not used!<br>
WARNING! could be spelling mistake, etc!<br>
Option left: name:-da_mat_type value: mpiaijcusp<br>
Option left: name:-da_vec_type value: mpicusp<br>
Option left: name:-dmmg_nlevels value: 1<br>
Option left: name:-preload value: off<br>
<br>
Best regards,<br>
Karli<div class="HOEnZb"><div class="h5"><br>
<br>
<br>
<br>
On 01/14/2014 04:28 AM, Mani Chandra wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
<br>
I tried to run SNES ex19 with the following options but it does not seem<br>
to use my GPU. See the log summary attached. Am I interpretting the log<br>
summary wrong? I don't see any CUSP calls to copy data from the CPU to<br>
the GPU.<br>
<br>
/ex19 -da_vec_type mpicusp -da_mat_type mpiaijcusp -pc_type none<br>
-dmmg_nlevels 1 -da_grid_x 300 -da_grid_y 300 -log_summary -mat_no_inode<br>
-preload off  -cusp_synchronize -cuda_s<br>
et_device 0<br>
<br>
I get the following output when I do -cuda_show_devices<br>
CUDA device 0: Quadro FX 1800M<br>
<br>
Cheers,<br>
Mani<br>
</blockquote>
<br>
</div></div></blockquote></div><br></div>