PULP Community

Full Version: OpenMP example for PULP not working
You're currently viewing a stripped down version of our content. View the full version with proper formatting.

I tried to run the openMP example given in pulp-rt-examples repository. But the simulation gets stuck at the rt_cluster_call(..); function in the test.c file. 

I have tried running Hello and Coremark examples for the same platform and they work perfectly. 

In order to find out that it gets at stuck at the rt_cluster_call, I put print statements before and after the function call. The modified "test.c" code is attached below. And the output seen is also attached .
Hi Athena, can you check if a non-OpenMP test works fine for you? E.g. https://github.com/pulp-platform/pulp-rt.../cluster.c
(03-25-2019, 12:09 PM)fconti Wrote: [ -> ]Hi Athena, can you check if a non-OpenMP test works fine for you? E.g. https://github.com/pulp-platform/pulp-rt.../cluster.c

I have checked that and a non openMP example also does not work.
Another update for the non OpenMP example. They also get stuck the rt_cluster_call function.
What you see is quite strange. I just tried with a fresh download of:

- PULP RTL, latest master: https://github.com/pulp-platform/pulp
- PULP SDK, latest tag: https://github.com/pulp-platform/pulp-sd...2019.03.02
- PULP RISC-V GCC, version 1.0.10: https://github.com/pulp-platform/pulp-riscv-gcc (I downloaded this one prebuilt)

I tried to run pulp-rt-examples/cluster/fork, and it works fine:
# [STDOUT-CL31_PE0] Entering main controller
# [TRACER] Output filename is: trace_core_00_0.log
# [TRACER] Output filename is: trace_core_00_1.log
# [TRACER] Output filename is: trace_core_00_2.log
# [TRACER] Output filename is: trace_core_00_3.log
# [TRACER] Output filename is: trace_core_00_4.log
# [TRACER] Output filename is: trace_core_00_5.log
# [TRACER] Output filename is: trace_core_00_6.log
# [TRACER] Output filename is: trace_core_00_7.log
# [STDOUT-CL0_PE0] (0, 0) Entered cluster with arg 0
# [STDOUT-CL0_PE0] (0, 0) Entered PE with arg 12345678
# [STDOUT-CL0_PE1] (0, 1) Entered PE with arg 12345678
# [STDOUT-CL0_PE4] (0, 4) Entered PE with arg 12345678
# [STDOUT-CL0_PE5] (0, 5) Entered PE with arg 12345678
# [STDOUT-CL0_PE3] (0, 3) Entered PE with arg 12345678
# [STDOUT-CL0_PE7] (0, 7) Entered PE with arg 12345678
# [STDOUT-CL0_PE6] (0, 6) Entered PE with arg 12345678
# [STDOUT-CL0_PE2] (0, 2) Entered PE with arg 12345678
# [TB]          16074973188 - Received status core: 0x00000000

Can you share some details on your setup, in particular version (or commit hash from git log) of PULP RTL you are running on? Can you try the same test I mentioned?

I downloaded the new pulp rtl and sdk that you have provided. The toolchain I kept the same which I built from here: https://github.com/pulp-platform/pulp-ri...-toolchain

On porting to the new SDK and running any example. I get makefile error which says : "/install/rules/pulp_rt.mk: No such file or directory" 

The version of the PULP SDK available here : https://github.com/pulp-platform/pulp-sdk does not throw any such error. I have been running all examples using this version of the SDK. 

Does the makefile in the examples need to modified for proper working to be seen in the lastest version of the PULP SDK.

On changing to the SDK that you have mentioned. I am able to run the example in pulp-rt-examples/cluster/fork.

The output that I receive on running this example is attached with this post. The complete example runs and then the testbench shows an error.
In the tb_pulp.sv file the testbench is breaking at the line 602 where : "$stop" is written. Is this expected behavior?

However, the OpenMP example still does not work even after making these changes. The output after running the OpenMP example is attached with this post. How can this error be resolved?

Also, I have observed that there is a testset.cfg file present in the cluster/fork example. Is this file necessary everytime cluster operations are run?

Hi Athena, the $stop breaking is absolutely correct behavior. Rgd the error you see, it is software related, I am unsure about the status of the OpenMP runtime in some SDK versions...