This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

OpenMP Questions (Compiler, module update)

Hi,

I have some questions regarding OpenMP:

1. There are some threads in this forum that mention that we should use TI compiler 7.4.0 when using OpenMP. Is this still true or can we use 7.4.6 or another recent version?

2. What do we have to change in our projects (*cfg, platform, code) to use the update to 1.2.0.05 for OpenMP? For example, the image processing openmp example (part of MCSDK) won't build with the updated OpenMP module.

3. Is there any documentation that describes how the startup process (basically everything before main() is called) of a OpenMP application looks like (what has to be done by the user of OpenMP, what is done by OpenMP runtime implementation, in what order, which resources are used, cache configuration, ...)? This would be useful for debugging purposes, especially for projects that potentially use some of the resources (NDK).

Regards,

Roman

  • Hi Roman,

    On #1, I'd suggest you stick to the compiler version that the release notes for OpenMP suggests. For OMP 1.02.00.05, the suggested compiler version is 7.4.0. That said, if you have a compelling need to use 7.4.6 you can give it a shot and see if it compiles your project without errors; I haven't personally tried the 7.4.6 version with OMP 1.02.00.05 yet.

    On #2, the changes are documented in the release notes for OMP 1.02.00.05: "The Platform requirement for the new release has changed. The MSMC_NOCACHE section will be used by OMP Run-time library. Application DATA SECTION needs to be allocated other than MSMC_NOCACHE." If you are attempting to use this version of OMP with the image processing demo from MCSDK 2.1.2.6, you would modify the Platform.xdc file to point dataMemory to a section other than MSMCSRAM_NOCACHE. Also please see the User Guide for more details. 

    On #3, the User Guide and Release notes are the two documents available at this point and have some related information on memory usage. I agree that the other aspects you mention would be useful to include in the OpenMP documentation. At this point the best way to get information on what functions are run prior to the user's main, is to look at the code within the omp package. Note that what is run before the user's main as part of the startup is governed by the XDC runtime (XDC tools). The XDC tool is documented in detail, and you can read more about this XDC startup process here: http://rtsc.eclipse.org/docs-tip/Using_xdc.runtime_Startup OpenMP is packaged as an XDC module (you use the OpenMP package by specifying var OpenMP = xdc.useModule('ti.omp.utils.OpenMP') and it specifies it's Startup function as shown in OpenMP.xs. You can look at this OpenMP.xs file and the OpenMP.c and OpenMP.xdc files supplied with the omp_1_02_00_05 package especially under packages/ti/omp to get some idea on this process. Note that in addition to XDC, OpenMP relies on the SYS/BIOS and IPC software packages from TI.