Giacomo Cabri: “Implementing Agent Roles in Java”
Roles represent a powerful means to enable software agents to act in open environments. They can be implemented in different ways, and in this talk I will show two directions exploiting Java. The former one is quite traditional and exploits composition; the latter one adds the capabilities of roles to agents’ classes in form of injected bytecode. I will compare the two approaches trying to generalize the considerations.
Giacomo Cabri is an associate professor in Computer Science at the University of Modena and Reggio Emilia, Italy, since 2006. His current research interests include: distributed systems, complex agent systems, software engineering, mobile computing, and object-oriented programming. In these areas, he has published more than 140 publications, among which 28 in peer-reviewed international journals, and he has received 6 best paper awards. He was involved in different national and international research projects. He is in the program committee of several workshops and conferences and has been General Chair of IEEE WETICE 2004, of ACM PPPJ 2008, and of WETICE 2014. He is member of ACM and IEEE.
Vivek Sarkar: “Beyond Multicores: Parallel Computing on GPUs and clusters with Java 8″
Java has several attractive features placing it in the first or second position for most popular programming language over the last several years. Further, Java was prepared from the very beginning for supporting multithreaded and multicore parallelism, with the inclusion of threads, locks, and synchronized methods/statements in JDK 1.0. However, until recently, Java was not viewed as a viable language for High-Performance Computing (HPC) on clusters and GPU accelerators, both due to its initial poor performance and lack of support on HPC platforms. For example, though significant effort was invested in creating Java bindings for the Message Passing Interface (MPI) commonly used by the HPC community, the use of Java by MPI programmers never really took off. Now, 20 years after the original introduction of Java, Java compilers, runtime environments, and tool chains are much improved in both performance and functionality, and the ecosystem for JVM-based languages is growing rapidly. The latest Java 8 standard provides a further boost to parallel computing in Java since lambdas and streams contribute to improved support for parallel libraries and applications.
When taking a broader view of parallel computing beyond HPC, we see that Java is a central language in he big data community with key technologies like Hadoop being developed on the Java platform. It is striking that today’s big data revolution is largely built around open source Java subsystems such as the Apache big data stack. As big data analytics grows in importance, we can expect Java to be increasingly well supported by vendors on their high-end machines. There is already work-in-progress to exploit GPU and vector parallelism in Java programs for improved performance, with minimal loss in productivity. Further, with Java as an established platform for data analytics, the demand for mixing simulations with data analysis in a Java ecosystem is likely to grow in the future. For these reasons, we believe that Java is now increasing in importance for the parallel computing community when compared to the old days. In this talk, we summarize recent work on parallel computing on GPUs and clusters using Java that goes beyond multicore parallelism, by drawing from experiences gained from the earlier Habanero-Java research language and the more recent Habanero-Java library (HJlib) implemented in Java 8.
Vivek Sarkar is Professor and Chair of Computer Science at Rice University. He conducts research in multiple aspects of parallel software including programming languages, program analysis, compiler optimizations and runtimes for parallel and high performance computer systems. He currently leads the Habanero Extreme Scale Software Research project at Rice University, and serves as Associate Director of the NSF Expeditions Center for Domain-Specific Computing. Prior to joining Rice in July 2007, Vivek was Senior Manager of Programming Technologies at IBM Research. His responsibilities at IBM included leading IBM’s research efforts in programming model, tools, and productivity in the PERCS project during 2002- 2007 as part of the DARPA High Productivity Computing System program. His prior research projects include the X10 programming language, the Jikes Research Virtual Machine for the Java language, the ASTI optimizer used in IBM’s XL Fortran product compilers, the PTRAN automatic parallelization system, and profile-directed partitioning and scheduling of Sisal programs. In 1997, he was a visiting associate professor at MIT, where he was a founding member of the MIT Raw multicore project. Vivek became a member of the IBM Academy of Technology in 1995, the E.D. Butcher Chair in Engineering at Rice University in 2007, and was inducted as an ACM Fellow in 2008. He holds a B.Tech. degree from the Indian Institute of Technology, Kanpur, an M.S. degree from University of Wisconsin-Madison, and a Ph.D. from Stanford University. Vivek has been serving as a member of the US Department of Energy’s Advanced Scientific Computing Advisory Committee (ASCAC) since 2009.