Updating intro materials#9
Conversation
liz-is
left a comment
There was a problem hiding this comment.
Looks good, this will be a really useful reference! My comments are mainly on phrasing or level of detail to include at this stage.
I'm also wondering whether it would be good to split this detailed content out into a new page, and keep the index.md page as a briefer overview including the course prerequisites etc.
|
|
||
| The first electronic computers were large, expensive, and difficult to use, and were primarily used by governments and large corporations. Over time, computers have become smaller, faster, and more powerful, and are now used in a wide variety of applications, from personal computing to large-scale data processing. Almost all of modern research now depends on computers in some way, whether it is for data analysis, simulation, or visualization. This has led to the development of High-Performance Computing (HPC) systems, which are designed to handle large-scale computations and data processing tasks. | ||
|
|
||
| ### What can a computer do? |
There was a problem hiding this comment.
I think this would be a good point for an interactive activity! We can ask attendees to suggest what computers can/can't do
| * Work without instructions | ||
| * Understand the context of the data it is processing | ||
|
|
||
| Ultimately, a computer is a tool that can be used to perform tasks, but it is not capable of independent thought or decision-making. It relies on humans to provide it with the necessary instructions and context to carry out its tasks effectively. AI and machine learning are changing this, but they are still limited by the data they are trained on and the algorithms that power them and do not have the same level of understanding or context as a human. |
There was a problem hiding this comment.
I think careful phrasing is important here - AI/ML might be able to do more with more limited instructions, but are not capable of independent thought 😬
|
|
||
| ### When would you want to use a CPU vs a GPU? | ||
| In general, you would want to use a CPU for tasks that require complex logic and decision-making, such as running simulations or processing large datasets. A CPU is designed to handle a wide variety of tasks and can perform complex calculations quickly and accurately. | ||
| A GPU, on the other hand, is designed to handle tasks that can be parallelized, such as rendering graphics or training machine learning models. A GPU can perform many calculations simultaneously, making it well-suited for tasks that require a large amount of data processing. This is because a GPU has many more cores than a CPU and, although simpler, allow it to perform many calculations in parallel. |
There was a problem hiding this comment.
I think it'd be helpful here to also note limitations of GPUs - i.e. they're not the best solution for all tasks that can be parallelised, but rather specific types of tasks. (I found some good examples here - not come across this material before but it looks helpful!)
| * CREATE TRE: Tightly controlled project areas making use of Cloud and HPC resources to process sensitive datasets (e.g. clinical PIID) complying with NHS Digital audit standards (DSPT) | ||
| * CREATE Web: A self-service web hosting platform for static content (HTML/CSS/JS) and WordPress sites | ||
| ## Why do we need parallel computing? | ||
| Parallel computing is necessary because many tasks in scientific research and data processing are too complex or time-consuming to be completed on a single processor or computer. By using parallel computing, researchers can take advantage of the processing power of multiple processors or computers to complete tasks more quickly and efficiently. This allows them to tackle larger problems and analyze larger datasets than would be possible with a single processor or computer. For the environmentally conscious researcher, parallel computing can also help to reduce the carbon footprint of research by allowing tasks to be completed more quickly and efficiently, reducing the overall energy consumption of the research process. |
There was a problem hiding this comment.
parallel computing can also help to reduce the carbon footprint of research by allowing tasks to be completed more quickly and efficiently
Is this true? 😅 wouldn't overall CPUTime be similar and therefore energy usage similar?
| * Data analysis: Large datasets can be processed more quickly using parallel computing, allowing researchers to extract insights and patterns from the data more efficiently. | ||
| * Machine learning: Training machine learning models often involves processing large datasets and performing complex calculations, which can be accelerated using parallel computing. | ||
|
|
||
| ## What is a scheduler and why do we need one? |
There was a problem hiding this comment.
Do we want to add a reference to the restaurant and/or Tetris analogies here?
| * Machine learning: Training machine learning models often involves processing large datasets and performing complex calculations, which can be accelerated using parallel computing. | ||
|
|
||
| ## What is a scheduler and why do we need one? | ||
| A scheduler is a software tool that manages the allocation of resources in a HPC system. It is responsible for scheduling jobs to run on the compute nodes, ensuring that resources are used efficiently and that jobs are completed in a timely manner. The scheduler is also responsible for managing the queue of jobs, prioritizing them based on their resource requirements and other factors. For the training workshop, we will be using the Slurm scheduler, which is a widely used open-source job scheduler for HPC systems. |
There was a problem hiding this comment.
Can we use a word other than "jobs" here? Maybe "computational work"/"computational tasks"?
I'm just conscious that we talk about jobs here but then define a "job" in the following section!
| A scheduler is a software tool that manages the allocation of resources in a HPC system. It is responsible for scheduling jobs to run on the compute nodes, ensuring that resources are used efficiently and that jobs are completed in a timely manner. The scheduler is also responsible for managing the queue of jobs, prioritizing them based on their resource requirements and other factors. For the training workshop, we will be using the Slurm scheduler, which is a widely used open-source job scheduler for HPC systems. | ||
|
|
||
| ## What is a job and what is a job script? | ||
| A job is a unit of work that is submitted to the scheduler for execution on the compute nodes. A job can be a single command or a script that contains multiple commands. A job script is a file that contains the commands to be executed, along with any necessary configuration options and resource requirements. The job script is submitted to the scheduler, which then allocates the necessary resources and executes the job on the compute nodes. |
There was a problem hiding this comment.
We might not need to introduce the concept of a job script here - too abstract at this point?
| A job is a unit of work that is submitted to the scheduler for execution on the compute nodes. A job can be a single command or a script that contains multiple commands. A job script is a file that contains the commands to be executed, along with any necessary configuration options and resource requirements. The job script is submitted to the scheduler, which then allocates the necessary resources and executes the job on the compute nodes. | ||
|
|
||
| ## What is a module and why do we need one? | ||
| A module is a software tool that allows users to manage the software environment on a HPC system. It provides a way to load and unload software packages, set environment variables, and manage dependencies between different software packages. Modules are used to ensure that the correct versions of software packages are used for a particular job, and to avoid conflicts between different software packages. In the context of this training workshop, we will be using modules to load the necessary software packages for our jobs. On CREATE, we use spack to manage our software environment, which allows us to easily install and manage software packages and their dependencies. |
There was a problem hiding this comment.
I think we probably don't need to mention spack here - users won't interact with it directly and it may cause confusion.
|
|
||
| !!! Important | ||
| For research that has made use of CREATE, please see the [Acknowledging](https://docs.er.kcl.ac.uk/CREATE/acknowledging/) page. | ||
| ## What workflows benefit from parallel computing? |
There was a problem hiding this comment.
Maybe this is another good point for an interactive activity - we can ask attendees what type of work they are doing and what limitations they've run into using personal machines for this?
(Creating a PR on behalf of @MWyatt2024 so I can more easily add comments!)