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>