PetscErrorCode PetscSSEIsEnabled(MPI_Comm comm,PetscBool *lflag,PetscBool *gflag) { PetscErrorCode ierr; PetscBool disabled_option; PetscFunctionBegin; if (petsc_sse_local_is_untested && petsc_sse_global_is_untested) { disabled_option = PETSC_FALSE; ierr = PetscOptionsBool("-disable_sse", "Disable use of hand tuned Intel SSE implementations <true,false>.", "PetscSSEIsEnabled",disabled_option,&disabled_option,PETSC_NULL);CHKERRQ(ierr); if (disabled_option) { petsc_sse_local_is_untested = PETSC_FALSE; petsc_sse_enabled_local = PETSC_FALSE; petsc_sse_global_is_untested = PETSC_FALSE; petsc_sse_enabled_global = PETSC_FALSE; } if (petsc_sse_local_is_untested) { ierr = PetscSSEHardwareTest(&petsc_sse_enabled_local);CHKERRQ(ierr); if (petsc_sse_enabled_local) { ierr = PetscSSEOSEnabledTest(&petsc_sse_enabled_local);CHKERRQ(ierr); } petsc_sse_local_is_untested = PETSC_FALSE; } if (gflag && petsc_sse_global_is_untested) { ierr = MPI_Allreduce(&petsc_sse_enabled_local,&petsc_sse_enabled_global,1,MPI_INT,MPI_LAND,comm);CHKERRQ(ierr); petsc_sse_global_is_untested = PETSC_FALSE; } } if (lflag) { *lflag = petsc_sse_enabled_local; } if (gflag) { *gflag = petsc_sse_enabled_global; } PetscFunctionReturn(0); }
PetscErrorCode PetscSSEIsEnabled(MPI_Comm comm,PetscBool *lflag,PetscBool *gflag) { PetscErrorCode ierr; PetscBool disabled_option; PetscFunctionBegin; if (petsc_sse_local_is_untested && petsc_sse_global_is_untested) { disabled_option = PETSC_FALSE; ierr = PetscOptionsGetBool(NULL,"-disable_sse",&disabled_option,NULL);CHKERRQ(ierr); if (disabled_option) { petsc_sse_local_is_untested = PETSC_FALSE; petsc_sse_enabled_local = PETSC_FALSE; petsc_sse_global_is_untested = PETSC_FALSE; petsc_sse_enabled_global = PETSC_FALSE; } if (petsc_sse_local_is_untested) { ierr = PetscSSEHardwareTest(&petsc_sse_enabled_local);CHKERRQ(ierr); if (petsc_sse_enabled_local) { ierr = PetscSSEOSEnabledTest(&petsc_sse_enabled_local);CHKERRQ(ierr); } petsc_sse_local_is_untested = PETSC_FALSE; } if (gflag && petsc_sse_global_is_untested) { ierr = MPI_Allreduce(&petsc_sse_enabled_local,&petsc_sse_enabled_global,1,MPIU_BOOL,MPI_LAND,comm);CHKERRQ(ierr); petsc_sse_global_is_untested = PETSC_FALSE; } } if (lflag) *lflag = petsc_sse_enabled_local; if (gflag) *gflag = petsc_sse_enabled_global; PetscFunctionReturn(0); }