#
# Autogenerated by Thrift Compiler (0.10.0)
#
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
#
#  options string: py
#

from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException
from thrift.protocol.TProtocol import TProtocolException
import sys

from thrift.transport import TTransport


class ApplicationParallelismType(object):
    """
    Enumeration of application parallelism supported by Airavata

    SERIAL:
     Single processor applications without any parallelization.

    MPI:
     Messaging Passing Interface.

    OPENMP:
     Shared Memory Implementtaion.

    OPENMP_MPI:
     Hybrid Applications.

    """
    SERIAL = 0
    MPI = 1
    OPENMP = 2
    OPENMP_MPI = 3
    CCM = 4
    CRAY_MPI = 5

    _VALUES_TO_NAMES = {
        0: "SERIAL",
        1: "MPI",
        2: "OPENMP",
        3: "OPENMP_MPI",
        4: "CCM",
        5: "CRAY_MPI",
    }

    _NAMES_TO_VALUES = {
        "SERIAL": 0,
        "MPI": 1,
        "OPENMP": 2,
        "OPENMP_MPI": 3,
        "CCM": 4,
        "CRAY_MPI": 5,
    }
