This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

ARM Mali-400 cores management

Hello.

We are programming on Mali-400 under Allwinner A20 about a month.

We have a some questions about GPU cores.

1) Is there an any way to make sure that all cores work when we calling gldraw() ?

2) Can we somehow control pixel processors work? Enable or disable each of  them when we want.

3) We can set frequency rate for the CPU. Can we set frequency rate for the GPU?

We used "MALI_IOC_PP_NUMBER_OF_CORES_GET" ioctl, and have gotten the correct number of the GPU cores - 2.

There is a "MALI_IOC_PP_START_JOB" ioctl, which we don't know how to use, is this ioctl need to enable or disable pixel processors?

Thanks and Regards.

Hakob.

Parents
  • Hi Hakob,

    Generally speaking, all of our multi-core GPU's have a load balancing manager that distributes workloads to each of the cores based on certain heuristics.

    That is to say, we expect workload to be distributed evenly across all cores wherever possible, but there may be certain cases where it makes sense not to power up all cores for certain kinds of workloads, and thus may only utilise a part of the GPU.

    All of this is controlled in our driver, and is transparent to the user.

    However, saying all this, some SoC integrators have created sysfs entries for the GPU to allow a root user to be able to modify certain parameters, such as the core mask availability.

    These are on a per SoC basis, and not guaranteed to appear on every Mali based GPU, even of the same type, as it is not necessarily us who create these sysfs entries. Any issues regarding this should be directed to Allwinner in this instance.

    The best recommendation is to probe around in /sys/devices/ for example for mali based files that you can play around with.

    Look for files containing dvfs, clock, core_mask for example.

    I do not have an Allwinner A20 at hand, and I do not know what BSP you are running, so I cannot give you more information than that.

    To fully answer your questions above:

    1. It is safe to assume that all cores work... this is transparent from the user/application level and controlled by the vendor, and if allowed, by a root user with access to certain sysfs entries
    2. This is not possible through an application or API. It is only possible through sysfs entries, if applicable
    3. This is not possible through an application or API. It is only possible through sysfs entries, if applicable

    I hope that helps

    Kind Regards,

    Michael McGeagh

Reply
  • Hi Hakob,

    Generally speaking, all of our multi-core GPU's have a load balancing manager that distributes workloads to each of the cores based on certain heuristics.

    That is to say, we expect workload to be distributed evenly across all cores wherever possible, but there may be certain cases where it makes sense not to power up all cores for certain kinds of workloads, and thus may only utilise a part of the GPU.

    All of this is controlled in our driver, and is transparent to the user.

    However, saying all this, some SoC integrators have created sysfs entries for the GPU to allow a root user to be able to modify certain parameters, such as the core mask availability.

    These are on a per SoC basis, and not guaranteed to appear on every Mali based GPU, even of the same type, as it is not necessarily us who create these sysfs entries. Any issues regarding this should be directed to Allwinner in this instance.

    The best recommendation is to probe around in /sys/devices/ for example for mali based files that you can play around with.

    Look for files containing dvfs, clock, core_mask for example.

    I do not have an Allwinner A20 at hand, and I do not know what BSP you are running, so I cannot give you more information than that.

    To fully answer your questions above:

    1. It is safe to assume that all cores work... this is transparent from the user/application level and controlled by the vendor, and if allowed, by a root user with access to certain sysfs entries
    2. This is not possible through an application or API. It is only possible through sysfs entries, if applicable
    3. This is not possible through an application or API. It is only possible through sysfs entries, if applicable

    I hope that helps

    Kind Regards,

    Michael McGeagh

Children