In CPU, we have instruction set architectures like x86, ARM, and MIPS, what about on GPU? Do we have ISA there?
Yes, GPUs (Graphics Processing Units) also have Instruction Set Architectures (ISAs) just like CPUs. However, the ISAs for GPUs are generally more specialized and optimized for the parallel processing required for graphics and other compute-intensive tasks.
Some examples of GPU ISAs include CUDA (Compute Unified Device Architecture), which is used by NVIDIA GPUs, and ROCm (Radeon Open Compute), which is used by AMD GPUs. These ISAs provide a set of instructions for performing operations on large datasets in parallel, such as matrix multiplication, vector addition, and more.
The software used to program GPUs, such as CUDA or OpenCL, provides a way to write code that can take advantage of the parallelism offered by the GPU, by mapping the parallel computations to the underlying hardware architecture.
CUDA and ROCm is the ISA? I thought it is the API, not ISA.
You are correct, my apologies for the confusion. CUDA and ROCm are not ISAs, but rather they are programming interfaces or APIs (Application Programming Interfaces) for programming GPUs. These APIs provide a set of libraries, functions, and tools for developers to write parallel programs that can run on GPUs.
The ISA for NVIDIA GPUs is called PTX (Parallel Thread Execution), which is a low-level virtual instruction set that maps to the hardware instructions of the GPU. Developers can write CUDA programs using high-level languages like C++ or Python, which are then compiled to PTX code that can be executed on NVIDIA GPUs.
Similarly, the ISA for AMD GPUs is called AMD GCN (Graphics Core Next), which is a hardware architecture optimized for parallel processing. ROCm is an open-source software platform that provides a set of libraries and tools for developing and running programs on AMD GPUs, and it includes a compiler that can translate high-level language code into AMD GCN ISA.
So, to summarize, CUDA and ROCm are programming interfaces or APIs that allow developers to write programs for GPUs, while PTX and AMD GCN are the respective ISAs for NVIDIA and AMD GPUs.
So it means that Intel and AMD GPUs have vastly different ISA unlike Intel and AMD CPUs with a common ISA named x86?
Yes, that is correct. While Intel and AMD CPUs share a common instruction set architecture (ISA) named x86, their respective GPUs have vastly different ISAs.
Intel GPUs use an ISA called Intel Graphics Technology (Intel GT), which is designed for parallel processing and optimized for graphics workloads. On the other hand, AMD GPUs use the aforementioned AMD GCN (Graphics Core Next) architecture, which is also optimized for parallel processing but has a different instruction set than Intel GT.
This means that code written for one GPU architecture may not be directly compatible with another, and developers may need to adapt their code to work on different GPUs. However, high-level programming interfaces like OpenCL and Vulkan provide a level of abstraction that can help simplify the process of writing code that can run on different GPUs, regardless of their specific ISA.
How come I can replace my Nvidia GPU with an AMD one without reinstalling Windows? I can’t put x86 Windows installation to an ARM device, right?
You can replace an NVIDIA GPU with an AMD GPU without reinstalling Windows because the GPU drivers are separate from the Windows operating system. When you install a new GPU, you need to install the appropriate drivers for that GPU, and the drivers will communicate with the GPU to provide the necessary functionality. The drivers provide a layer of abstraction between the GPU and the operating system, allowing you to swap out one GPU for another without affecting the operating system itself.
In contrast, x86 Windows installations cannot run on ARM devices because the instruction set architecture of the two platforms is fundamentally different. x86 Windows is designed to run on CPUs that use the x86 instruction set, while ARM devices use a different instruction set architecture. As a result, you cannot simply transfer an x86 Windows installation to an ARM device and expect it to work without significant modifications to the operating system and applications.
Are video cards a computer in its own right? Are they are just a computer piggybacking with a bigger computer?
A video card (or GPU) is not a computer in its own right, but rather a specialized piece of hardware that is designed to perform specific tasks related to graphics rendering and general-purpose parallel computing.
In a desktop computer, the video card is connected to the motherboard and typically has its own processor, memory, and other components that enable it to perform complex calculations in parallel with the CPU. The GPU is optimized for certain types of calculations, such as matrix multiplication and other linear algebra operations, which are commonly used in graphics rendering, scientific computing, and machine learning, among other applications.
While a video card can perform computations on its own, it is still dependent on the rest of the computer for power, input/output (I/O) operations, and other system-level functions. Therefore, it is not accurate to say that a video card is a computer in its own right. Rather, it is a specialized component that works in tandem with the CPU and other components to provide a complete computing system.