Hello there,
I'am developing a job schedule policy for Mali T628. But I am confused about Jos Slot and Address Space:
1. What does Job Slot mean? What is the relationship between job slot and shader core?
Mali T628 has 8 shader core. But I get the amount of job slot is 3 ( by printk gpu_props->num_job_slots).
2. What does Address Space mean?
Does it mean a space in memory to store process's context during context swicth?
Is context switch by hardware?
3. What the GPU do during soft and hard stop a job?
Thank you!
Hi wlc,
For Q1, the job slots refer to different types of work being run on the GPU. JS 1, 2, and 3 refer to Fragment, Tiling/Vertex/Compute, and Compute respectively. It has no relationship with number of cores.
Hi Chris,
Thanks for your reply.
So the job slost are just concepts in the driver level, am I right?
Furthermore, are the 8 shader core same and can compute any type of jobs, or a shader core can only compute appointed type of jobs?
best regards,
wlc
Job slots are a concept in hardware as well, but not at the shader core level. All shader cores are identical, with the exception that they may be members of different "core groups". In GLES, this is transparent to the application, but for CL the core groups are exposed as different devices currently. All shader cores can execute any workload, regardless of which job "slot" the work happens to be coming from.
Q2 and Q3 I'll leave to other people, it's not my area of expertise. Maybe peterharris knows? I will say that context switching occurs when the CPU changes to another thread/process, but the GPU does not do this. The GPU just consumes jobs fed to it by the kernel driver, it is decoupled from the CPU processes themselves by the kernel driver.
Hope this helps,
Chris
Is job slot a concept in InterCore Task Management in T628? How many shader cores in each job slot?
Is Job Slot the same as "core groups"? And to some extent the job slot is like SM(Streaming Multiprocessor) in Nvidia cuda architecture and shader core is like cuda core, am I right?
Thanks very much!
I think that a "cuda core" would correspond to a small part of our arithmetic pipeline. The internet tells me that a cuda core can run scalar arithmetic operations, and a Mali T628 GPU can perform several vector operations in one pass through the arithmetic pipeline (see the question about floating point capacity of the core on this site). To me it sounds as if our concept of core is closer to their concept of an SM, although any such comparison will of course only be approximate.
There is no heirarchical relationship between job slots and shader cores, they are distinct concepts. All shader cores are capable of processing any work from any job slot. The job slot mechanism is the concern of hardware outside of the shader core, and really is only there to facilitate the co-processing of vertex/compute and fragment loads in parallel.
Is Job Slot the same as "core groups"?
No they are distinct, core groups contain shader cores, job slots are not correlated with shader cores or core groups in any way. You will always have 3 job slots, regardless of the number of core groups.
And to some extent the job slot is like SM(Streaming Multiprocessor) in Nvidia cuda architecture and shader core is like cuda core, am I right?
Mali and NVidia architectures are really not comparable at this level in any meaningful sense. As Johan says, a CUDA "core" is probably most analogous to a part of a Mali ALU, and as T628 is vector based there are really 4 such things per ALU, so 8 per core, 48 per T628 MP6. This is a huge simplification.
Also, a CUDA core is a member of a warp, within which all cores and therefore threads must operate in lock step. T628 has no such restriction.