你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-07 04:56:51 +08:00
Remove gsoc from this branch.
这个提交包含在:
@@ -1,124 +0,0 @@
|
||||
# GSoC 2019 - Project 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 some potential project ideas:
|
||||
|
||||
|
||||
## 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@gprmax.com)
|
||||
|
||||
|
||||
## 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 (antonis@gprmax.com) and Dr Craig Warren (craig@gprmax.com)
|
||||
|
||||
|
||||
## 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@gprmax.com)
|
||||
|
||||
|
||||
## 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 (antonis@gprmax.com) and Dr Craig Warren (craig@gprmax.com)
|
||||
|
||||
|
||||
## 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@gprmax.com)
|
||||
|
||||
|
||||
## 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 (antonis@gprmax.com) and Dr Craig Warren (craig@gprmax.com)
|
||||
|
||||
|
||||
## 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 (antonis@gprmax.com) and Dr Craig Warren (craig@gprmax.com)
|
||||
|
||||
|
||||
## 8. Modelling complex materials
|
||||
|
||||
The aim of this project is to couple and enhance a series of scripts that have been developed to allow materials with complex (frequency dependent) properties to be modelled.
|
||||
|
||||
Often materials that required to be simulated have complex electromagnetic properties that can be frequency dependent. There are several models that can be used to simulate different behaviours, and we have developed an initial [series of scripts](https://github.com/gprMax/gprMax/pull/125) that capture this. However work is required to enhance them (possibly with the option for some graphical input) and couple them with gprMax.
|
||||
|
||||
**Skills required:** Python, NumPy, some knowledge of electromagnetic wave propagation.
|
||||
|
||||
**Difficulty:** Medium
|
||||
|
||||
**Mentor(s):** Dr Craig Warren (craig@gprmax.com) and Dr Antonis Giannopoulos (antonis@gprmax.com)
|
||||
|
||||
|
||||
## 9. Importing geometrical information from laser scanners
|
||||
|
||||
The aim of this project is to import geometric data acquired from terrestrial laser scanners. The ability to directly model real objects and topographies without entering their geometries manually would be very useful development.
|
||||
|
||||
A laser scanner takes distance measurements in every direction to rapidly capture the surface shape of objects, buildings and landscapes. This information is then used to construct a full 3D model of the object. The data from the 3D model requires to be mapped/converted/translated onto the [Finite-Difference Time-Domain (FDTD)](https://en.wikipedia.org/wiki/Finite-difference_time-domain_method) grid upon which gprMax is based.
|
||||
|
||||
**Skills required:** Python
|
||||
|
||||
**Difficulty:** Medium
|
||||
|
||||
**Mentor(s):** Dr Craig Warren (craig@gprmax.com) and Dr Antonis Giannopoulos (antonis@gprmax.com)
|
@@ -1,42 +0,0 @@
|
||||
# GSoC 2019 - Project Template Guidance
|
||||
|
||||
We have provided this template to help us learn about you and your proposed project, and to help you formulate and shape your ideas into a well-written project proposal. There are a lot of questions! However, these should help us know more about you and find a good fit, as well as force you to think about the project idea. By working on this proposal, you will already be taking your first steps towards a successful summer. We recommend that you start early and iterate on the application by getting feedback from the mentor.
|
||||
|
||||
We have constructed our template using some very helpful examples at CloudCV (https://github.com/Cloud-CV/GSoC-Ideas/wiki/GSOC-2019-Proposal-Template) and Drupal (https://groups.drupal.org/node/459223).
|
||||
|
||||
## Basic Details
|
||||
|
||||
* Full Name
|
||||
* Location & Time Zone
|
||||
* Education
|
||||
* Email & Github Username
|
||||
* Skype Username
|
||||
* WWW / Blog
|
||||
* Biography statement (max. 200 words)
|
||||
|
||||
## Motivation and Experience
|
||||
|
||||
* Describe your motivation for participating in Google Summer of Code?
|
||||
* Have you participated in Google Summer of Code in the past?
|
||||
* Why did you choose gprMax?
|
||||
* Why did you select this project idea?
|
||||
* What are your expectations from us during and after successful completion of the program?
|
||||
* What are you hoping to learn?
|
||||
* How much time will you be able to devote to the project? Are you doing any other internship this summer?
|
||||
* What kind of projects have you worked in the past? What technologies did you use?
|
||||
* What is your experience with Python, C, CUDA?
|
||||
|
||||
## Project Information
|
||||
|
||||
* This is your chance to provide a description of the project idea. What are the major parts of the project? Use flowcharts, diagrams and mockups as much as possible. If your project involves writing APIs, what might those APIs look like?
|
||||
* Discuss your assumptions
|
||||
* Mention your deliverables - break down the bigger picture into smaller tasks and explain what these might be.
|
||||
* If you have found existing work to build on mention it, e.g. if you plan to use a specific algorithm/layer/model/library/framework.
|
||||
* Include technologies you are planning to use and your familiarity with them.
|
||||
* Include a weekly timeline for your project from when the coding period begins to the end of the program. One of the keys to a successful project is very good planning. Try to set realistic goals for each sprint, leave a buffer for delays. If you are planning to go on holiday or will be off-the-grid for a few days, then mention those in the timeline.
|
||||
* How will you deal with project, task, and time management? Will you utilize software? If so, which tool and why?
|
||||
* How often and by what means will you communicate with the mentors?
|
||||
* Include what you hope to achieve in the community bonding period. If you feel that there is something that you will have to learn before the coding period starts, mention it.
|
||||
* Which aspect of the project idea do you see as the most difficult?
|
||||
* Which aspect of the project idea do you see as the easiest?
|
||||
* Future Work - what might be the next steps after completion of this project?
|
在新工单中引用
屏蔽一个用户