Actor-Based Parallel Dataflow Analysis

  • Jonathan Rodriguez
  • Ondřej Lhoták
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6601)


Defining algorithms in a way which allows parallel execution is becoming increasingly important as multicore computers become ubiquitous. We present IFDS-A, a parallel algorithm for solving context-sensitive interprocedural finite distributive subset (IFDS) dataflow problems. IFDS-A defines these problems in terms of Actors, and dataflow dependencies as messages passed between these Actors. We implement the algorithm in Scala, and evaluate its performance against a comparable sequential algorithm. With eight cores, IFDS-A is 6.12 times as fast as with one core, and 3.35 times as fast as a baseline sequential algorithm. We also found that Scala’s default Actors implementation is not optimal for this algorithm, and that a custom-built implementation outperforms it by a significant margin. We conclude that Actors are an effective way to parallelize this type of algorithm.


Actors compilers concurrency dataflow analysis IFDS Scala 


  1. 1.
    Agha, G.: Actors: A model of concurrent computation in distributed systems. MIT Press, Cambridge (1986)Google Scholar
  2. 2.
    Arora, N.S., Blumofe, R.D., Plaxton, C.G.: Thread scheduling for multiprogrammed multiprocessors. Theory Comput. Systems 34(2), 115–144 (2001)MathSciNetCrossRefzbMATHGoogle Scholar
  3. 3.
    Blackburn, S.M., Garner, R., Hoffman, C., Khan, A.M., McKinley, K.S., Bentzur, R., Diwan, A., Feinberg, D., Frampton, D., Guyer, S.Z., Hirzel, M., Hosking, A., Jump, M., Lee, H., Moss, J.E.B., Phansalkar, A., Stefanović, D., VanDrunen, T., von Dincklage, D., Wiedermann, B.: The DaCapo benchmarks: Java benchmarking development and analysis. In: OOPSLA (2006)Google Scholar
  4. 4.
    Haller, P., Odersky, M.: Scala actors: Unifying thread-based and event-based programming. Theor. Comput. Sci. 410(2-3), 202–220 (2009)MathSciNetCrossRefzbMATHGoogle Scholar
  5. 5.
    Hardekopf, B., Lin, C.: The ant and the grasshopper: fast and accurate pointer analysis for millions of lines of code. In: PLDI 2007: Proceedings of the 2007 ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 290–299. ACM, New York (2007)CrossRefGoogle Scholar
  6. 6.
    Hewitt, C., Baker, H.: Laws for communicating parallel processes. In: IFIP (1977)Google Scholar
  7. 7.
    Kulkarni, M., Burtscher, M., Inkulu, R., Pingali, K., Casçaval, C.: How much parallelism is there in irregular applications? In: PPoPP (2009)Google Scholar
  8. 8.
    Kulkarni, M., Pingali, K., Walter, B., Ramanarayanan, G., Bala, K., Chew, L.P.: Optimistic parallelism requires abstractions. In: PLDI (2007)Google Scholar
  9. 9.
    Lee, E.A.: The problem with threads. Computer 39(5), 33–42 (2006)CrossRefGoogle Scholar
  10. 10.
    Méndez-Lojo, M., Mathew, A., Pingali, K.: Parallel inclusion-based points-to analysis. In: OOPSLA (2010)Google Scholar
  11. 11.
    Naeem, N.A., Lhoták, O., Rodriguez, J.: Practical extensions to the IFDS algorithm. In: Gupta, R. (ed.) CC 2010. LNCS, vol. 6011, pp. 124–144. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  12. 12.
    Odersky, M., Spoon, L., Venners, B.: Programming in Scala: A Comprehensive Step-by-step Guide. Artima Incorporation, USA (2008)Google Scholar
  13. 13.
    Panwar, R., Kim, W., Agha, G.: Parallel implementations of irregular problems using high-level actor language. In: IPPS (1996)Google Scholar
  14. 14.
    Reps, T., Horwitz, S., Sagiv, M.: Precise interprocedural dataflow analysis via graph reachability. In: POPL (1995)Google Scholar
  15. 15.
    Rodriguez, J.D.: A Concurrent IFDS Dataflow Analysis Algorithm Using Actors. Master’s thesis, University of Waterloo, Canada (2010)Google Scholar
  16. 16.
    Stein, L.A.: Challenging the computational metaphor: Implications for how we think. Cybernetics and Systems 30(6), 473–507 (1999)CrossRefzbMATHGoogle Scholar
  17. 17.
    Sundaresan, V., Hendren, L., Razafimahefa, C., Vallée-Rai, R., Lam, P., Gagnon, E., Godin, C.: Practical virtual method call resolution for Java. In: OOPSLA (2000)Google Scholar
  18. 18.
    Vallée-Rai, R., Co, P., Gagnon, E., Hendren, L., Lam, P., Sundaresan, V.: Soot - a Java bytecode optimization framework. In: CASCON (1999)Google Scholar
  19. 19.
    Virding, R., Wikström, C., Williams, M.: Concurrent programming in ERLANG, 2nd edn. Prentice Hall International (UK) Ltd., Hertfordshire (1996)zbMATHGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Jonathan Rodriguez
    • 1
  • Ondřej Lhoták
    • 1
  1. 1.University of WaterlooWaterlooCanada

Personalised recommendations