<?php
namespace Airavata\Model\AppCatalog\Parallelism;

/**
 * Autogenerated by Thrift Compiler (0.10.0)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */
use Thrift\Base\TBase;
use Thrift\Type\TType;
use Thrift\Type\TMessageType;
use Thrift\Exception\TException;
use Thrift\Exception\TProtocolException;
use Thrift\Protocol\TProtocol;
use Thrift\Protocol\TBinaryProtocolAccelerated;
use Thrift\Exception\TApplicationException;


/**
 * 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.
 * 
 */
final class ApplicationParallelismType {
  const SERIAL = 0;
  const MPI = 1;
  const OPENMP = 2;
  const OPENMP_MPI = 3;
  const CCM = 4;
  const CRAY_MPI = 5;
  static public $__names = array(
    0 => 'SERIAL',
    1 => 'MPI',
    2 => 'OPENMP',
    3 => 'OPENMP_MPI',
    4 => 'CCM',
    5 => 'CRAY_MPI',
  );
}


