Packages

  • package root
    Definition Classes
    root
  • package be
    Definition Classes
    root
  • package opimedia
    Definition Classes
    be
  • package scala_par_am
    Definition Classes
    opimedia
  • object Main extends App

    Scala-Par-AM is a modified version of Scala-AM with the goal to study the parallelization of abstract interpretation, focused on analysis of Scheme programs.

    Scala-Par-AM is a modified version of Scala-AM with the goal to study the parallelization of abstract interpretation, focused on analysis of Scheme programs. Some unused parts of Scala-AM have been removed. The essential parts are in the machine/ sub-directory.

    This main program executes some abstract machines on some Scheme programs depending of some parameters and print results in TSV format (data separated by tabulation).

    Run with --help command line parameter to show all options:

    $ java -jar scala-par-am.jar --help
    

    Or directly with the shell script that also set some JVM configurations:

    $ ./scala-par-am.sh --help
    

    This example:

    $ ./scala-par-am.sh --files "Scheme-examples/OPi/factorial*.scm" --machines SeqAAMLS,ParAAMLSAPart,ParAAMCPart --processes 1,4,2
    
    runs on files that match the "Scheme-examples/OPi/factorial*.scm" path with machine SeqAAMLS on 1 process, with machine ParAAMLSAPart on 4 and 2 processes, and with machine ParAAMCPart with 1, 4 and 2 processes.

    scala-par-am.jar can be downloaded directly https://bitbucket.org/OPiMedia/scala-par-am/downloads/

    scala-am.jar must be accessible in the classpath to use oldAAM machine. Download it if necessary: https://bitbucket.org/OPiMedia/scala-am/downloads/

    Depending of command line parameters, for each lattice specified, for each bound, for each address, for each file Scheme program, for default step and/or step with filter, for each machine and for each number of processes this program do the following:

    1. The input Scheme program is parsed. It is done by:

    • Parsing the file as a list of s-expressions (exp/SExp.scala, exp/SExpParser.scala)
    • Compiling these s-expressions into Scheme expressions (exp/scheme/Scheme.scala)

    2. To run the program, we need an abstract machine and some semantics. Semantics definitions have to implement the Semantics interface (semantics/Semantics.scala).

    3. Once the abstract machine is created and we have a semantics for the program we want to analyze, the abstract machine can perform its evaluation, relying on methods of the semantics class to know how to evaluate expressions. The abstract machine only deals with which states to evaluate in which order, where to store values, where to store continuations, how to push and pop continuations, etc. The semantics encode what to do when encountering a program construct. For example, the semantics can tell what to evaluate next, that a continuation needs to be pushed, or that a variable needs to be updated. The abstract machine will then respectively evaluate the expression needed, push the continuation, or update the variable.

    Multiple abstract machine implementations are available, defined in the machine/ directory. Every abstract machine implementation has to implement the AbstractMachine interface (machine/AbstractMachine.scala).

    List of all available machines:

    • oldAAM: to call AAMNS (AAM No Subsumption) of Scala-AM https://bitbucket.org/OPiMedia/scala-am
    • SeqAAM: sequential machine where the worklist implemented with a list of states
    • SeqAAMS: sequential machine where the worklist implemented with a set of states
    • SeqAAMLS: sequential machine where the worklist implemented with a list of sets of states
    • SeqAAMLSH: SeqAAMLS that includes to the worklist only the not halted states
    • ParAAMLSAState: ParAAM-L-SA-state for Parallel AAM - Loop - SenderAggregator - state
    • ParAAMLSASet: ParAAM-L-SA-set for Parallel AAM - Loop - SenderAggregator - set
    • ParAAMLSAPart: ParAAM-L-SA-part for Parallel AAM - Loop - SenderAggregator - part
    • ParAAMCSState: ParAAM-C-S-state for Parallel AAM - Concurrent - Sender - state
    • ParAAMCSSet: ParAAM-C-S-set for Parallel AAM - Concurrent - Sender - set
    • ParAAMCSPart: ParAAM-C-S-part for Parallel AAM - Concurrent - Sender - part
    • ParAAMCState: ParAAM-C-state for Parallel AAM - Concurrent - state
    • ParAAMCSet: ParAAM-C-set for Parallel AAM - Concurrent - set
    • ParAAMCPart: ParAAM-C-part for Parallel AAM - Concurrent - part
    • ParAAMCHybrid: ParAAM-C-hybrid
    • ParAAMCSetH: ParAAM-C-set-halt
    • ParAAMCPartH: ParAAM-C-part-halt
    • ParAAMCHybridH: ParAAM-C-hybrid-halt

    The abstract machine also uses a lattice to represent values. Lattices should implement the JoinLattice trait that can be found in lattice/JoinLattice.scala, which provides the basic features of a lattice.

    Source https://bitbucket.org/OPiMedia/scala-par-am/src/master/scala-par-am/src/main/scala/Main.scala

    Authors:

    Olivier Pirson

    Quentin Stiévenart (for the original Scala-AM that composes the biggest part of this project)

    Definition Classes
    scala_par_am
    Version

    June 18, 2020

  • ParamsConfig

case class ParamsConfig(root: String = "", exceptsFilename: String = "", lattices: Seq[Configuration.Lattice.Value] = List(Configuration.Lattice.TypeSet), bounds: Seq[Int] = List(100), addresses: Seq[Configuration.Address.Value] = ..., filenamesPattern: String = "regex:.+\\.scm", stepFilters: Seq[Boolean] = List(false), machines: Seq[Configuration.Machine.Value] = ..., processes: Seq[Int] = List(1), filenamePrepare: String = "", nbRepetition: Int = 1, timeout: FiniteDuration = FiniteDuration(1, "day"), betweenTime: FiniteDuration = FiniteDuration(1, "second"), headerEnabled: Boolean = true, infoHeaderEnabled: Boolean = false, statsEnabled: Boolean = false, statsEscaped: Boolean = false, kamonEnabled: Boolean = false, outputGraphEnabled: Boolean = false, statsOutputGraphEnabled: Boolean = false, dotGraphEnabled: Boolean = false, isListMachines: Boolean = false, justListEnabled: Boolean = false, estimationTime: FiniteDuration = FiniteDuration(1, "second")) extends Product with Serializable

Linear Supertypes
Serializable, Serializable, Product, Equals, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ParamsConfig
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. AnyRef
  7. Any
Implicitly
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new ParamsConfig(root: String = "", exceptsFilename: String = "", lattices: Seq[Configuration.Lattice.Value] = List(Configuration.Lattice.TypeSet), bounds: Seq[Int] = List(100), addresses: Seq[Configuration.Address.Value] = ..., filenamesPattern: String = "regex:.+\\.scm", stepFilters: Seq[Boolean] = List(false), machines: Seq[Configuration.Machine.Value] = ..., processes: Seq[Int] = List(1), filenamePrepare: String = "", nbRepetition: Int = 1, timeout: FiniteDuration = FiniteDuration(1, "day"), betweenTime: FiniteDuration = FiniteDuration(1, "second"), headerEnabled: Boolean = true, infoHeaderEnabled: Boolean = false, statsEnabled: Boolean = false, statsEscaped: Boolean = false, kamonEnabled: Boolean = false, outputGraphEnabled: Boolean = false, statsOutputGraphEnabled: Boolean = false, dotGraphEnabled: Boolean = false, isListMachines: Boolean = false, justListEnabled: Boolean = false, estimationTime: FiniteDuration = FiniteDuration(1, "second"))

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. def +(other: String): String
    Implicit
    This member is added by an implicit conversion from ParamsConfig to any2stringadd[ParamsConfig] performed by method any2stringadd in scala.Predef.
    Definition Classes
    any2stringadd
  4. def ->[B](y: B): (ParamsConfig, B)
    Implicit
    This member is added by an implicit conversion from ParamsConfig to ArrowAssoc[ParamsConfig] performed by method ArrowAssoc in scala.Predef.
    Definition Classes
    ArrowAssoc
    Annotations
    @inline()
  5. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  6. val addresses: Seq[Configuration.Address.Value]
  7. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  8. val betweenTime: FiniteDuration
  9. val bounds: Seq[Int]
  10. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate() @throws( ... )
  11. val dotGraphEnabled: Boolean
  12. def ensuring(cond: (ParamsConfig) ⇒ Boolean, msg: ⇒ Any): ParamsConfig
    Implicit
    This member is added by an implicit conversion from ParamsConfig to Ensuring[ParamsConfig] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  13. def ensuring(cond: (ParamsConfig) ⇒ Boolean): ParamsConfig
    Implicit
    This member is added by an implicit conversion from ParamsConfig to Ensuring[ParamsConfig] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  14. def ensuring(cond: Boolean, msg: ⇒ Any): ParamsConfig
    Implicit
    This member is added by an implicit conversion from ParamsConfig to Ensuring[ParamsConfig] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  15. def ensuring(cond: Boolean): ParamsConfig
    Implicit
    This member is added by an implicit conversion from ParamsConfig to Ensuring[ParamsConfig] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  16. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  17. val estimationTime: FiniteDuration
  18. val exceptsFilename: String
  19. val filenamePrepare: String
  20. val filenamesPattern: String
  21. def formatted(fmtstr: String): String
    Implicit
    This member is added by an implicit conversion from ParamsConfig to StringFormat[ParamsConfig] performed by method StringFormat in scala.Predef.
    Definition Classes
    StringFormat
    Annotations
    @inline()
  22. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  23. val headerEnabled: Boolean
  24. val infoHeaderEnabled: Boolean
  25. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  26. val isListMachines: Boolean
  27. val justListEnabled: Boolean
  28. val kamonEnabled: Boolean
  29. val lattices: Seq[Configuration.Lattice.Value]
  30. val machines: Seq[Configuration.Machine.Value]
  31. val nbRepetition: Int
  32. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  33. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  34. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  35. val outputGraphEnabled: Boolean
  36. val processes: Seq[Int]
  37. val root: String
  38. val statsEnabled: Boolean
  39. val statsEscaped: Boolean
  40. val statsOutputGraphEnabled: Boolean
  41. val stepFilters: Seq[Boolean]
  42. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  43. val timeout: FiniteDuration
  44. def toString(): String
    Definition Classes
    ParamsConfig → AnyRef → Any
  45. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  46. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )
  47. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  48. def [B](y: B): (ParamsConfig, B)
    Implicit
    This member is added by an implicit conversion from ParamsConfig to ArrowAssoc[ParamsConfig] performed by method ArrowAssoc in scala.Predef.
    Definition Classes
    ArrowAssoc

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @Deprecated @deprecated @throws( classOf[java.lang.Throwable] )
    Deprecated

    (Since version ) see corresponding Javadoc for more information.

Inherited from Serializable

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from AnyRef

Inherited from Any

Inherited by implicit conversion any2stringadd from ParamsConfig to any2stringadd[ParamsConfig]

Inherited by implicit conversion StringFormat from ParamsConfig to StringFormat[ParamsConfig]

Inherited by implicit conversion Ensuring from ParamsConfig to Ensuring[ParamsConfig]

Inherited by implicit conversion ArrowAssoc from ParamsConfig to ArrowAssoc[ParamsConfig]

Ungrouped