[petsc-dev] bad code that needs fixing
Barry Smith
bsmith at mcs.anl.gov
Mon Mar 18 07:27:39 CDT 2013
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>
More information about the petsc-dev
mailing list