The values need to be comma separated. You can specify the affinities in different ways as described in the PetscOptionsGetIntArray docs. http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/PetscOptionsGetIntArray.html.
I'll fix the docs for threadcomm. From: Mark Adams <[email protected]<mailto:[email protected]>> Date: Fri, 9 Jan 2015 13:28:48 -0500 To: Shri <[email protected]<mailto:[email protected]>> Cc: barry smith <[email protected]<mailto:[email protected]>>, petsc-dev mailing list <[email protected]<mailto:[email protected]>> Subject: Re: [petsc-dev] configuring hypre on batch system OK, threads seem to be working as advertised but I still get this error with -threadcomm_nthreads 8 -threadcomm_affinities 0 1 2 3 4 5 6 7 I'm guessing it must do the right thing. Thanks again, Mark SOLVER_INIT: make partitioning with 2872/ 3705 real vertices [10]PETSC ERROR: --------------------- Error Message -------------------------------------------------------------- [10]PETSC ERROR: Nonconforming object sizes [10]PETSC ERROR: Must set affinities for all threads, Threads = 8, Core affinities set = 1 [10]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for trouble shooting. [10]PETSC ERROR: Petsc Development GIT revision: v3.5.2-1345-g927ffcc GIT Date: 2015-01-08 16:04:39 -0700 [10]PETSC ERROR: ./xgc2 on a arch-titan-opt-pgi named nid02295 by adams Fri Jan 9 13:20:52 2015 [10]PETSC ERROR: Configure options --COPTFLAGS="-mp -fast" --CXXOPTFLAGS="-mp -fast" --FOPTFLAGS="-mp -fast" --with-threadcomm --with-pthreadclasses --with-openmp --download-hypre --download-metis --download-parmetis --with-cc=cc --with-clib-autodetect=0 --with-cxx=CC --with-cxxlib-autodetect=0 --with-fc=ftn --with-fortranlib-autodetect=0 --with-shared-libraries=0 --known-mpi-shared-libraries=1 --with-x=0 --with-debugging=0 PETSC_ARCH=arch-titan-opt-pgi PETSC_DIR=/lustre/atlas2/env003/scratch/adams/petsc2 [10]PETSC ERROR: #1 PetscThreadCommSetAffinities() line 431 in /lustre/atlas2/env003/scratch/adams/petsc2/src/sys/threadcomm/interface/threadcomm.c [10]PETSC ERROR: #2 PetscThreadCommWorldInitialize() line 1231 in /lustre/atlas2/env003/scratch/adams/petsc2/src/sys/threadcomm/interface/threadcomm.c [10]PETSC ERROR: #3 PetscGetThreadCommWorld() line 82 in /lustre/atlas2/env003/scratch/adams/petsc2/src/sys/threadcomm/interface/threadcomm.c [10]PETSC ERROR: #4 PetscCommGetThreadComm() line 117 in /lustre/atlas2/env003/scratch/adams/petsc2/src/sys/threadcomm/interface/threadcomm.c [10]PETSC ERROR: #5 PetscCommDuplicate() line 195 in /lustre/atlas2/env003/scratch/adams/petsc2/src/sys/objects/tagm.c [10]PETSC ERROR: #6 PetscHeaderCreate_Private() line 59 in /lustre/atlas2/env003/scratch/adams/petsc2/src/sys/objects/inherit.c On Fri, Jan 9, 2015 at 12:25 AM, Abhyankar, Shrirang G. <[email protected]<mailto:[email protected]>> wrote: Mark, The input for -threadcomm_affinities are the processor numbers So -threadcomm_nthreads 4 -threadcomm_affinities 0 1 2 3 will pin the 4 threads to processors 0,1,2,3. Unfortunately, there is no standardization of processor number mapping on physical and/or logical cores (it is decided by the OS I think). For example, on one node with two quad-core CPUs (total 8 processors, no hyperthreading), the 1st CPU may have processor numbers 0,1,3,5, while the other 2,4,6,8. On another node with similar hardware, the processor numbers may be 0,1,2,3 on the 1st CPU and 4,5,6,7 on the second. Hence, tools like likwid or hwloc are very helpful for getting the hardware layout. You may also obtain this info by looking at /proc/cupinfo on linux. Shri From: Mark Adams <[email protected]<mailto:[email protected]>> Date: Thu, 8 Jan 2015 21:43:30 -0500 To: barry smith <[email protected]<mailto:[email protected]>> Cc: petsc-dev mailing list <[email protected]<mailto:[email protected]>> Subject: Re: [petsc-dev] configuring hypre on batch system > -threadcomm_affinities 0 1 2 3 4 5 6 7 ????? I don't know what the flag is here Neither do I. The web page http://www.mcs.anl.gov/petsc/features/threads.html says: * -threadcomm_affinities <list_of_affinities>: Sets the core affinities of threads I'm not sure what to put here ... > -threadcomm_type openmp > > Then would I get threaded MatVec and other CG + MG stuff? I know this will > not be faster but I just need data to corroborate what we all know. And I > don't care about setup. Depends on the smoother, we don't have any threaded SOR, if you using Jacobi + Cheyby it will be threaded. Oh right, thanks,
