def global_min(narray):
    "Returns the minimum value of an array of scalars/vectors/tensors among all process."
    m = min(narray).astype(numpy.float64)
    if vtkProcessModule.GetProcessModule().GetNumberOfLocalPartitions() > 1 :
       from mpi4py import MPI
       MPI.COMM_WORLD.Allreduce(None, [m, MPI.DOUBLE], MPI.MIN)
    return m
def global_mean (narray) :
    "Returns the mean value of an array of scalars/vectors/tensors among all process."
    # For some reason, Allreduce on MPI.INT does not return the correct value.
    # I have to convert it into a double array to get the correct results.
    dim = narray.shape[1]
    if len(narray.shape) == 3 : dim = narray.shape[1] * narray.shape[2]

    N = numpy.empty(dim).astype(numpy.float64)
    N.fill(narray.shape[0])

    S = narray.sum(0).astype(numpy.float64)
    if len(S.shape) == 2 and S.shape[0] == 3 and S.shape[1] == 3:
       S = numpy.reshape(S, 9)
    elif len(S.shape) == 3 and S.shape[0] == 1 and S.shape[1] == 3 and S.shape[2] == 3:
       S = numpy.reshape(S, 9)

    if vtkProcessModule.GetProcessModule().GetNumberOfLocalPartitions() > 1 :
       from mpi4py import MPI
       comm = MPI.COMM_WORLD
       S_recv = numpy.array(S)
       N_recv = numpy.array(N)
       comm.Allreduce([S, MPI.DOUBLE], [S_recv, MPI.DOUBLE],MPI.SUM)
       comm.Allreduce([N, MPI.DOUBLE], [N_recv, MPI.DOUBLE],MPI.SUM)
       S = S_recv
       N = N_recv
    return S / N
def global_min(narray):
    "Returns the minimum value of an array of scalars/vectors/tensors among all process."
    if len(narray) > 0:
        m = min(narray).astype(numpy.float64)
    else:
        m = numpy.finfo(numpy.float64).max

    if vtkProcessModule.GetProcessModule().GetNumberOfLocalPartitions() > 1 :
       from mpi4py import MPI
       m_recv = numpy.array(m)
       MPI.COMM_WORLD.Allreduce([m, MPI.DOUBLE], [m_recv, MPI.DOUBLE], MPI.MIN)
       m = m_recv
    return m
def global_max(narray):
    "Returns the maximum value of an array of scalars/vectors/tensors among all process."
    if len(narray) > 0:
        M = max(narray).astype(numpy.float64)
    else:
        M = numpy.finfo(numpy.float64).min

    if vtkProcessModule.GetProcessModule().GetNumberOfLocalPartitions() > 1 :
       from mpi4py import MPI
       M_recv = numpy.array(M)
       MPI.COMM_WORLD.Allreduce([M, MPI.DOUBLE], [M_recv, MPI.DOUBLE], MPI.MAX)
       M = M_recv
    return M
Exemple #5
0
# "Vendor:   NVIDIA Corporation"
# "Version:  4.5.0 NVIDIA 375.66"
# "Renderer: Tesla P100-PCIE-16GB/PCIe/SSE2"

view = GetRenderView()

sphere = Sphere()
sphere.ThetaResolution = 2048
sphere.PhiResolution = 2048

pidscal = ProcessIdScalars(sphere)

rep = Show(pidscal)

from vtkPVClientServerCoreCorePython import vtkProcessModule
print("rank=", vtkProcessModule.GetProcessModule().GetPartitionId())
print("total=", vtkProcessModule.GetProcessModule().GetNumberOfLocalPartitions())
nbprocs = servermanager.ActiveConnection.GetNumberOfDataPartitions()
drange = [0, nbprocs-1]

lt = MakeBlueToRedLT(drange[0], drange[1])
lt.NumberOfTableValues = nbprocs

rep.LookupTable = lt
rep.ColorArrayName = ("POINT_DATA", "ProcessId")

bar = CreateScalarBar(LookupTable=lt, Title="PID")
bar.TitleColor = [0, 0, 0]
bar.LabelColor = [0, 0, 0]
# bar.NumberOfLabels = 6
view.Representations.append(bar)