Advertisement
Guest User

Untitled

a guest
Feb 13th, 2016
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.05 KB | None | 0 0
  1. ================================================================================
  2. PIE : Precondition Inference Engine
  3. ================================================================================
  4.  
  5. ## 0. System Setup
  6. --------------------------------------------------------------------------------
  7.  
  8. 0.0] Environment + Compilers
  9. ............................
  10.  
  11. 0.0.0) System packages
  12. - Bash
  13. - Python 2, Python 3
  14. - OCaml 4.0+
  15.  
  16. 0.0.1) Built from sources
  17. - LLVM+Clang source (3.6+) for invariant inference (cloned in Repos)
  18.  
  19. 0.1] Libraries
  20. ..............
  21. - pyparsing (for Python)
  22. - batteries (for OCaml)
  23. - qcheck (0.4+; for OCaml)
  24.  
  25. 0.2] Constraint solvers
  26. .......................
  27. - Z3Str2 (latest version; cloned in Repos)
  28. - CVC4 (latest version; cloned in Repos)
  29.  
  30. 0.3] Notes
  31. ..........
  32. - Default Username = Default Password = pie
  33. - ~/Repos is symlinked to ~/Desktop/Repos for convenience
  34.  
  35.  
  36.  
  37. ## 1. Running the tests
  38. -------------------------------------------------------------------------------
  39.  
  40. 1.0] Summary of tests and configurations
  41. ........................................
  42.  
  43. 1.0.0) A configuration is defined as the following tuple:
  44. (number_of_tests , size_of_conflict_group)
  45.  
  46. In our PLDI submission, we have evaluated the precondition inference
  47. tests over the following configurations to determine an `optimal`
  48. configuration: (Refer to Figure 10 in the paper)
  49. {1600, 3200, 6400, 12800} x {16} U {6400} x {2, 16, "all"}
  50.  
  51. 1.0.1) Reported tests in PLDI submission
  52. We test all of these configurations with 101 precondition inference tests
  53. and the optimal configuration with the 29 loop invariant inference
  54. benchmarks. Additionally, we also test all 29 loop invariant inference
  55. benchmarks with only Escher to show that most of these benchmarks are not
  56. feasible with simply a program synthesizer.
  57.  
  58. 1.1] Limiting & Monitoring Resource Usage
  59. .........................................
  60.  
  61. 1.1] Precondition Inference
  62. ...........................
  63.  
  64. This subsection would assume that the user's current working directory is
  65. ~/Repos/PIE/specs
  66.  
  67. 1.1.0) Testing everything
  68. - Simply run ./test_all.sh
  69.  
  70. - We infer preconditions within
  71.  
  72. - Repos/PIE/specs
  73. - Run all tests: ./test_all.sh <cg>
  74. - cg = optional cgroup container name or ""
  75. - Test specific func F in module M:
  76. ./test.sh <M> <F> <cg> <tests> <sz_c>
  77. - M = Module file (list.ml)
  78. - F = Function Id (4)
  79. - cg = cgroup name (leave "")*
  80. - tests = random tests count (6400)
  81. - sz_c = size of conflict groups (16); use "all" for full size
  82.  
  83. 1.1] Loop Invariant Inference
  84. .............................
  85. - Run in Repos/llvm/build
  86. - To run all tests over all configs: ./check_all <cg>
  87. - cg = optional cgroup container name or ""
  88. - To run specific benchmark B:
  89. ./checker <B> <tests> <tool> <cg> <sz_c>
  90. - B = Path to benchmark file (../../PIE/bm_strings/cav2014d.cpp)
  91. - tests = random tests count (6400)
  92. - tool = PIE vs just Escher (pie)
  93. - cg = cgroup container name (leave "")
  94. - sz_c = size of conflict groups (16); use "all" for full size
  95.  
  96. 1.2] Limiting & monitoring resource usage using cgroups
  97. .......................................................
  98.  
  99.  
  100.  
  101. ## 2. Modifying and re-building
  102. --------------------------------------------------------------------------------
  103.  
  104. 2.0] Modifying PIE
  105. - Repos/PIE/base/ has PIE code
  106. - Repos/PIE/abduce/ has code for abduction using PIE
  107. - Repos/PIE/bm_*/ are various benchmark suits (for loop invariant inference)
  108. - Repos/PIE/specs/ has test code & cases for precondition inference
  109. - Repos/PIE/hybrid has the interface for hybrid verifier to PIE (CVC4 + Z3Str2)
  110. - Repos/PIE/pldi_logs has cleaned logs generated on my machine for benchmarks mentioned in PLDI submission
  111. - No rebuilding necessary
  112.  
  113. 2.1] Modifying clang tool
  114. - Modify within Repos/PIE/ClangTool/pinvgen/
  115. - Run Repos/PIE/ClangTool/setup.sh <LLVM_ROOT> <cg>
  116. - LLVM_ROOT = ../../llvm
  117. - cg = cgroup container name (if you have created one); or ""
  118.  
  119. Thanks for testing!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement