Glossary
What do any of these terms mean?
This page will attempt to explain computer terms in an approachable manner.
Basic Terminology
Computer, or Machine
An electronic device for storing and computing data.
Desktop
A computer that lives on a desk. This will have monitor(s), a keyboard, a mouse, and possibly more peripherals.
Software, Program, Process, or Code
Software is things that run on a computer. These things are called Programs. Software is written using Code. Another word for a Program is a Process.
Hardware
The physical parts of a computer.
Motherboard
The Motherboard of a computer is where all the different parts of a computer plug in, such as the monitor (screen) and keyboard.
RAM / Memory
The place to store data short-term is RAM. This is like Disks, except this is much more expensive, and exceedingly faster, but data written to RAM will not be preserved when the computer is shut down (this is called being volatile memory).
Typically, RAM is discussed in units of GigaBytes (GB).
Disks
The place to store data long-term is called Disk. This is like RAM, except this is much cheaper, exceedingly slower, and it will last if the computer is turned off (this is called being persistent memory).
Typically, disks are discussed in units of GigaBytes (GB) and/or TeraBytes (TB), where a TeraByte is 1,000 GigaBytes.
These can be a HDD or a SSD, which both implement persistent memory in different ways.
CPU, or Processor
A CPU is the "brain" of the computer, it does all the thinking, or computing. The CPU is made of core(s), registers, caches, and more.
Core
If a CPU has several cores, this is analogous to a team having several team members. Each team member can simultaneously do their own work, independently or in collaboration. A CPU with four processors means it can do four things simultaneously, like having a team with four people on it.
Socket
A CPU connects to the motherboard of a computer via a Socket.
GPU
A GPU is used to render/display video game graphics, and it can be used for data intensive computations.
More on CPUs and Processes
Threaded
A Program, or Process, doing something sequentially is known as a Thread.
Multi-Threading
A Process that does multiple sequential tasks simultaneously is Multi-Threaded.
This can done by using several Cores, or by sharing a single Core and trading off which thread gets to run (but they do not share resources).
Hyper-Threading
Hyper-Threading is multi-threading on a single CPU with several Cores, similar to Multi-Threading, but they share resources.
Networking and Storage
Storage
Storage refers to one or more disks.
There is usually some problem with storage, such as not having enough space, not being fast enough, etc.
Storage Array
A Storage Array must have at least two disks, with the same issues.
Network
Network is connectivity between computers. The internet is a giant network with lots and lots of computers connected to it.
Network Storage
Network Storage is storage on a server that is available for others to use.
This can have the same issues as Storage and Storage Arrays.
Scratch
Scratch is network storage that is not backed up.
Network Switch, or Switch
A Switch connects a computer to the internet and it controls the traffics between computers on a network.
Network Fabric, or Fabric
A Fabric is the way in which the different computers communicate on a network.
Servers, Clusters, and Nodes
Server
A server is someone else's computer that can be connected to over the network (over the internet).
Many servers will live in a server rack enclosure, where each rack is a different server. This is basically a cabinet full of computers on shelves.
Nodes
The individual servers in a cluster are called Nodes.
Cluster
A cluster is a collection of servers (or nodes) where each node has a part of a local network that only the other node in that collection can access. There is usually one or two login nodes in this collection that are the only ones connected to the internet. This makes the other nodes are inaccessible unless it is through the login nodes.
Computing
FLOP
Floating Point Operation. This is used as a unit of compute capability.
TFLOP
A million million FLOPs, or 1,000,000,000,000 FLOPs.
High Performance Computing (HPC), or Super Computing
A server or cluster that has the sufficient hardware to run programs that use several Cores and/or Nodes, respectively, to execute Process(es). Programs that run on these often use a Message Passing Interface (MPI) to communicate between Process(es).
High Throughput Computing
A Program that uses a lot of hardware for a long time to finish a task.
These could last for months or years.
Parallel Computing
A Program with many Threads being are carried out concurrently (simultaneously) and have access to a shared memory.
This includes Multi-Threading, Hyper-Threading, Massively Parallel Computing, Embarrassingly Parallel Computing, and Distributed Computing.
Massively Parallel Computing
A Program is Massively Parallel if it can run on many Cores to perform a set of coordinated computations.
Embarrassingly Parallel Computing
A Program is embarrassingly parallel if it has Processes that can be executed completely independent of each other.
Distributed Computing
A Program is an example of Distributed Computing if the Processes can run on multiple servers simultaneously.
Cloud Computing
This is all of the above, but performed on demand on someone else's server(s)/cluster(s) for a cost.