Should have caught that.
-Paul

>     device must be cast to int before being passed to cudaSetDevice().
>
>    cudaSetDevice(device);
>
> On Mar 17, 2013, at 3:36 PM, Paul Mullowney<paulm at txcorp.com>  wrote:
>
>> Here's a patch following the instructions on the wiki for small patches.
>>
>> -Paul
>>>    {
>>>      int size;
>>>      ierr = MPI_Comm_size(PETSC_COMM_WORLD,&size);CHKERRQ(ierr);
>>>      if (size>1) {
>>>        int devCount, device, rank;
>>>        ierr   = cudaGetDeviceCount(&devCount);CHKERRQ(ierr);
>>>        ierr   = MPI_Comm_rank(PETSC_COMM_WORLD,&rank);CHKERRQ(ierr);
>>>        device = rank % devCount;
>>>        ierr   = cudaSetDevice(device);CHKERRQ(ierr);
>>>      } else {
>>>        int device;
>>>        /* the code below works for serial GPU simulations */
>>>        ierr = 
>>> PetscOptionsGetInt(NULL,"-cuda_set_device",&device,&flg1);CHKERRQ(ierr);
>>>        if (flg1) {
>>>          ierr = cudaSetDevice(device);CHKERRQ(ierr);
>>>        }
>>>      }
>>>    }
>>>
>>> size int should be PETScMPIInt and device int cannot be an int if it is 
>>> passed to PetscOptionsGetInt which requires a PetscInt.
>>>
>>>
>> <0001-cuda-device-selection.patch>

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 0002-cuda-device-selection.patch
URL: 
<http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20130318/852ed9a7/attachment.ksh>

Reply via email to