Titulo Estágio
Julia Automatic Parallel Load-Balancer for CPU and GPUs
Áreas de especialidade
Engenharia de Software
Sistemas Inteligentes
Local do Estágio
DEI
Enquadramento
Julia is a programming language for numeric computing.
Julia is compiled to LLVM and creates functions at runtime, based on the invoked types.
There are some projects for GPU programming in Julia (https://github.com/JuliaGPU/), but the APIs are very low-level and backend specific (Cuda, OpenCL, Vulkan)
Objetivo
We propose a map-reduce framework for Julia that only deals with higher-order functions and automatically uses the best backend available.
Furthermore, the framework should automatically divide work across GPU and the several CPU cores available in order to optimize the execution time. The resulting algorithm should work on any GPU-CPU combination.
Plano de Trabalhos - Semestre 1
17 Sep - 31 Oct
Review of the most recent approaches to this problem in the state of the art. Identification of the biggest challenges on this area.
1 Nov - 31 Nov
Approach - Definition of the requirements and work plan. Definition of the APIs provided by the system.
1 Dez - 31 Dez
Study of the several backends available in Julia.
1 Jan - 28 Jan
Writing and reviewing of the first semester report.
Plano de Trabalhos - Semestre 2
15 Feb - 8 Mar
Implementation of a backend-agnostic layer.
9 Mar - 31 Mar
Evaluation of overhead/gains of running on top of the compatibility layer instead of the backends.
1 Apr - 30 Apr
Implementation of algorithms for automatically distributing loads across the devices.
1 May - 31 May
Evaluation of the platform running several parallel programs on different runtimes.
1 Jun - 28 Jun
Writing and reviewing of the dissertation.
Condições
The proposed work plan will be performed in the Systems and Software Engineering group of CISUC, where the student will be given access to required work conditions.
Observações
We are looking for a T-shaped student: he or she should be highly competent in systems programming in C, but should also be acquainted with higher level languages. A good understanding of parallel and concurrent programming is also desirable.
Este trabalho será co-orientado pelo Doutor Alcides Fonseca da Universidade de Lisboa.
Orientador
Bruno Cabral
bcabral@dei.uc.pt 📩