你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-04 11:36:52 +08:00
GSoC 2019 project ideas
这个提交包含在:
98
docs/source/GSoC-ideas.md
普通文件
98
docs/source/GSoC-ideas.md
普通文件
@@ -0,0 +1,98 @@
|
||||
# GSoC Ideas List
|
||||
|
||||
gprMax is planning to participate for the first time in the [Google Summer of Code](https://summerofcode.withgoogle.com) 2019 program. Here is list of our potential projects:
|
||||
|
||||
|
||||
## 1. OpenCL solver
|
||||
|
||||
The aim of the project is to create an OpenCL-accelerated version of the solver engine. The performance (speed) of the solver is a critical feature as simulations become ever larger and more complex.
|
||||
|
||||
The solver is based on the [Finite-Difference Time-Domain (FDTD)](https://en.wikipedia.org/wiki/Finite-difference_time-domain_method) method, which has shown significant performance benefits when parallelised – particularly on GPU. Currently we have two parallelised versions of the solver:
|
||||
1. Using [Cython](https://cython.org) (with OpenMP) for multi-threaded execution on CPU;
|
||||
2. Using NVIDIA CUDA (with [PyCUDA](https://mathema.tician.de/software/pycuda/)) for execution on NVIDIA GPUs.
|
||||
|
||||
The [speed-up on GPU](http://www.gprmax.com) is significant (x30 compared to parallelised CPU), therefore we would like to expand the capability to other GPU types using OpenCL, most likely with [PyOpenCL](https://mathema.tician.de/software/pyopencl/).
|
||||
|
||||
**Skills required:** Python, OpenCL, C, some knowledge of GPU programming would be beneficial.
|
||||
|
||||
**Difficulty:** Medium
|
||||
|
||||
**Mentor(s):** Dr Craig Warren (craig.warren@northumbria.ac.uk)
|
||||
|
||||
|
||||
## 2. MPI domain decomposition
|
||||
|
||||
The aim of the project is to create version of the solver engine that uses domain decomposition based on the [Message Passing Interface (MPI)](https://en.wikipedia.org/wiki/Message_Passing_Interface) model.
|
||||
|
||||
Simulations are becoming ever larger and more complex, which often means their memory requirements exceed that available on a single machine or [high-performance computing (HPC)](https://en.wikipedia.org/wiki/Supercomputer) node. It is possible to use MPI to decompose (or split up) the model domain, and each part can be computed on separate machines or nodes of a HPC.
|
||||
|
||||
**Skills required:** Python, C, MPI, some knowledge of HPC environments would be beneficial.
|
||||
|
||||
**Difficulty:** Hard
|
||||
|
||||
**Mentor(s):** Dr Antonis Giannopoulos (A.Giannopoulos@ed.ac.uk) and Dr Craig Warren (craig.warren@northumbria.ac.uk)
|
||||
|
||||
|
||||
## 3. Improved installation tools
|
||||
|
||||
The aim of this project is to create a simplified and more user-friendly installation workflow for the software.
|
||||
|
||||
gprMax is predominately written in Python, but some of the performance-critical parts of the code are written in [Cython](https://cython.org), which must be built and compiled. The current installation involves building a Python environment, installing a C compiler with OpenMP support, and building and installing the gprMax package. This can be a lengthy and complex procedure, depending on your operating system, especially for first-time or inexperienced users.
|
||||
|
||||
**Skills required:** Python, Cython, tools and compilers on multiple (Linux, Windows, macOS) operating systems
|
||||
|
||||
**Difficulty:** Medium
|
||||
|
||||
**Mentor(s):** Dr Craig Warren (craig.warren@northumbria.ac.uk)
|
||||
|
||||
|
||||
## 4. Comprehensive test and benchmarking suite
|
||||
|
||||
The aim of this project is to develop a comprehensive test suite and benchmarking toolset.
|
||||
|
||||
Currently gprMax includes a series of tests that verify specific simulation results against reference solutions. This only tests large chunks of code at a relatively high level. As the functionality and complexity of the code base increases a more comprehensive, fine-grained set of tests is required. The performance of the code is also an important element, as simulations can be extremely large and complex, with some requiring weeks of runtime on [high-performance computing (HPC)](https://en.wikipedia.org/wiki/Supercomputer). It is therefore key to have some models that can be used to benchmark code features with both the multi-threaded CPU (OpenMP), and GPU accelerated solvers.
|
||||
|
||||
**Skills required:** Python, tools and compilers on multiple (Linux, Windows, macOS) operating systems, some knowledge of GPU and HPC would be beneficial.
|
||||
|
||||
**Difficulty:** Medium
|
||||
|
||||
**Mentor(s):** Dr Antonis Giannopoulos (A.Giannopoulos@ed.ac.uk) and Dr Craig Warren (craig.warren@northumbria.ac.uk)
|
||||
|
||||
|
||||
## 5. Geometry visualisation
|
||||
|
||||
The aim of this project is to improve the handling and visualisation of model geometries.
|
||||
|
||||
Being able to visualise and check the geometry and materials of models before running simulations is vital. It minimises the risk of wasting computational resources by running incorrect models. Currently gprMax uses the [Visualization Toolkit (VTK)](https://vtk.org) format to store geometry information to file, and [Paraview](https://www.paraview.org) for visualisation. This allows the geometrical information to be viewed but does not easily permit material information from the model to be checked. A tighter integration is required.
|
||||
|
||||
**Skills required:** Python, familiarity with VTK and Paraview would beneficial.
|
||||
|
||||
**Difficulty:** Medium
|
||||
|
||||
**Mentor(s):** Dr Craig Warren (craig.warren@northumbria.ac.uk)
|
||||
|
||||
|
||||
## 6. Web-based framework for GPR data processing
|
||||
|
||||
The aim of this project is to develop a web-based framework that allows data output from the simulations to be visualised and processed within a web browser.
|
||||
|
||||
Output data from electromagnetic simulations often requires to be processed using the same algorithms and workflows as data that has been acquired from sensors in the lab or field. The data can be a time-varying waveform or 2D/3D image. A variety of platform-specific processing tools current exist that use custom file formats. This does not permit easy sharing and comparison of data. A web-based framework for processing would be a platform-agnostic tool and could be designed to permit users to design and use their own processing plugins around a basic core. A local/remote processing model would lightweight processing tasks to be handled locally and more intensive tasks to be offloaded to remote/cloud compute.
|
||||
|
||||
**Skills required:** Python, web frameworks for 2D/3D visualisation.
|
||||
|
||||
**Difficulty:** Medium
|
||||
|
||||
**Mentor(s):** Dr Antonis Giannopoulos (A.Giannopoulos@ed.ac.uk) and Dr Craig Warren (craig.warren@northumbria.ac.uk)
|
||||
|
||||
|
||||
## 7. Web-based framework for model building
|
||||
|
||||
The aim of this project is to develop a web-based framework that allows models to be graphically built.
|
||||
|
||||
Many models, especially for Ground Penetrating Radar (GPR), can be easily specified using a text-based input file, which is currently what is done. This approach can be beneficial when executing large simulations in [high-performance computing (HPC)](https://en.wikipedia.org/wiki/Supercomputer) environments. However, there are also simulations that require fine, complex details to be modelled or where existing geometries already exist (for example in CAD format). In these cases a graphical-based model building environment would be beneficial, and one that does not require bespoke software to be installed. A web-based framework would therefore be a very useful for model building and construction.
|
||||
|
||||
**Skills required:** Python, web frameworks for 2D/3D visualisation.
|
||||
|
||||
**Difficulty:** Medium
|
||||
|
||||
**Mentor(s):** Dr Antonis Giannopoulos (A.Giannopoulos@ed.ac.uk) and Dr Craig Warren (craig.warren@northumbria.ac.uk)
|
在新工单中引用
屏蔽一个用户