Software Language Engineering for Algorithmic Graph Processing
Master Project


Project description

The PGX Compiler team at Oracle Labs has open internship and working student positions to extend its compilers for algorithmic graph processing.

Oracle

Oracle, a global provider of enterprise cloud computing, is empowering businesses of all sizes on their journey of digital transformation. Oracle Cloud provides leading-edge capabilities in software as a service, platform as a service, infrastructure as a service, and data as a service. Oracle’s application suites, platforms, and infrastructure leverage both the latest technologies and emerging ones – including artificial intelligence, machine learning, blockchain, and Internet of Things – in ways that create business differentiation and advantage for customers. Continued technological advances are always on the horizon.

Oracle Labs

Oracle Labs is the advanced research and development arm of Oracle. We focus on the development of technologies that keep Oracle at the forefront of the computer industry. Oracle Labs researchers look for novel approaches and methodologies, often taking on projects with high risk or uncertainty, or that are difficult to tackle within a product- development organization. Oracle Labs’ research is focused on real-world outcomes: our researchers aim to develop technologies that will someday play a significant role in the evolution of technology and society. For example, chip multithreading and the Java programming language grew out of work done in Oracle Labs.

Software Language Engineering for Algorithmic Graph Processing

Graphs are a powerful abstraction to enable knowledge discovery from relationships in large datasets, thanks to their explicit representation of relationships as edges. Graph analysis reveals latent information that is encoded, not as fields in the data, but as direct and indirect relationships between elements of the data – information that is not obvious to the naked eye, but can have tremendous value once uncovered. The PGX Compiler team develops domain-specific languages for algorithmic graph processing. We explore and apply state-of-the art software language engineering techniques to implement compilers for these domain-specific languages. Our work includes, but is not limited, to the following topics.

Intermediate Representation

Our compilers target various execution platforms. Each platform comes with its own characteristic programming paradigm and implementation language. We design and implement an intermediate representation for graph algorithms, which forms a common ground for our compiler backends, targeting the different execution platforms.

Static Analysis and Optimisation

Different compiler backends share common optimisations, but need to make different decisions when to apply these optimisations based on the characteristics of the targeted execution platform. We are developing a common optimisation module, which allows backends to reuse optimisations and their accompanying static analyses.

Compilation for Distributed Execution Engine

The Oracle Labs PGX team develops an in-memory distributed graph-processing engine to provide high-performance graph analytics solutions for billion-edge-scale graphs. We want to extend our existing backend targeting this engine with new compilation schemes to enable efficient distributed execution of imperative language constructs.

Compilation for the Oracle Autonomous Database

The Oracle Labs Graph-in-DB team develops support for graph analytics workloads in future releases of the Oracle Autonomous Database. As part of these efforts, we are developing new compiler backends targeting the Oracle Autonomous Database. The first backend generates PL/SQL code for general execution. The second backend targets in-memory capabilities of the Oracle Autonomous Database.

As an intern or working student, you will participate in the design, implementation, and evaluation of compiler components. You will give informal and formal presentations on the progress and results obtained during the course of your employment.

Qualifications

We are looking for excellent software language engineers to join our team as an intern or working student.

Minimum Qualifications
  • BSc degree in Computer Science or related technical field, or equivalent practical experience.
  • Good knowledge and understanding of software language engineering techniques such as compilation and intermediate representations.
  • Software development experience through hands on coding in a general purpose programming language.
Preferred Qualifications
  • Software development experience through hands on coding in Java, C, or C++.
  • Distinguished problem-solving skills.
  • Working proficiency in verbal and written English.
  • Software language development experience through hands on coding in a language workbench such as Spoofax, MPS, Rascal, or xText.
  • Some familiarity with data processing in general and graph analytics in particular.

Position Details

  • Suitable for an internship of three to twelve months or a working student position with at least 12 hrs/week
  • We have multiple research centers on-site (e.g. Casablanca, Cambridge, Prague, Zurich), but we appreciate candidates coming from any location around the globe. Turn your home office into a new research location!
  • Competitive salary, depending on research location and experience of the candidate
  • For more information about the positions, please contact Guido Wachsmuth (guido.wachsmuth@oracle.com)

“Oracle Labs is a great place to perform meaningful research which can directly impact the industry. Projects are well supervised, and the people are always there to help you in order to end up with a successful project.” Mikael Morales. Former EPFL student, 6-month intern.

Contacts for the project


Software Language Engineering for Algorithmic Graph Processing

Supervisor(s): Eelco Visser
Location: Oracle Labs
Posted: May 28, 2021