Some questions about the HERO platform
#1
Hello,

I'm new to using the PULP environment and currently I am trying to familiarize myself with the HERO platform implemented on my ZC706 board and I have a few questions:

• I saw that with OpenMP the workload to execute is sent to the cluster with 8 RISC-V cores.
However, can I choose precisely which cores will be used to run a workload ?
For example, I would like the workload W1 to be executed by cores PE0, PE1 and PE2 and the workload W2 to be executed by cores PE M to PE N-1.

• I suppose it is possible with the ZC706 FPGA board to have 2 clusters of 4 RISC-V cores.
Similar to the previous question, can I choose which cluster will run a workload ?

• I saw in the file "fe/rtl/includes/pulp_soc_defines.sv" on Github that it is possible to define an FPU. But I can't find the apu_package.sv file mentioned in the comment on line 45 to add an FPU.
Is it possible to add an FPU in big-pulp?
Is the FPU shared between the cores or is it one FPU per core ?

• Last question, Is it possible to add a HWCE to a cluster ?


Thanks in advance
Reply
#2
Hello Olivier,

Thanks for your interest in the PULP platform and HERO.

(06-04-2020, 03:38 PM)Olivier Wrote: • I saw that with OpenMP the workload to execute is sent to the cluster with 8 RISC-V cores.
However, can I choose precisely which cores will be used to run a workload ?
For example, I would like the workload W1 to be executed by cores PE0, PE1 and PE2 and the workload W2 to be executed by cores PE M to PE N-1.

You can use the standard OpenMP API to do that.  Essentially, you create a `parallel` region and use the `omp_get_thread_num()` function to determine the PE ID.

(06-04-2020, 03:38 PM)Olivier Wrote: • I suppose it is possible with the ZC706 FPGA board to have 2 clusters of 4 RISC-V cores.
Similar to the previous question, can I choose which cluster will run a workload ?

Yes, you can do that, but you have to modify the hardware and software yourself accordingly.

(06-04-2020, 03:38 PM)Olivier Wrote: • I saw in the file "fe/rtl/includes/pulp_soc_defines.sv" on Github that it is possible to define an FPU. But I can't find the apu_package.sv file mentioned in the comment on line 45 to add an FPU.
Is it possible to add an FPU in big-pulp?
Is the FPU shared between the cores or is it one FPU per core ?

The configuration for the ZC706, which is on GitHub, does not support FPUs due to area constraints.

(06-04-2020, 03:38 PM)Olivier Wrote: • Last question, Is it possible to add a HWCE to a cluster ?

Yes, please see the guide for integrating a HWCE/HWPE with the PULP cluster.

Best,
Andreas
Reply
#3
Hello,

Thank you for your answers. I have two more questions:
• Does an equivalent to the omp_get_thread_num() function exist to determine the cluster ID ?

• In the publication "HERO: Heterogeneous Embedded Research Platform for Exploring RISC-V Manycore Accelerators on FPGAs" a "HERO’s Event tracing and analysis" is mentioned. Is this feature currently available for the HERO platform? If so, how can I use it?


Best.
Reply
#4
Sorry for my delayed answer, I did not get a notification about your post.


Quote:Does an equivalent to the omp_get_thread_num() function exist to determine the cluster ID ?

Currently not as part of the OpenMP API, but you can use `rt_cluster_id()` from the PULP runtime library for now.

Quote:In the publication "HERO: Heterogeneous Embedded Research Platform for Exploring RISC-V Manycore Accelerators on FPGAs" a "HERO’s Event tracing and analysis" is mentioned. Is this feature currently available for the HERO platform? If so, how can I use it?


We have not included this feature in the current HERO release, but we may include it in the next release.
Reply


Forum Jump: