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

I do an experiment on ccsv5,on which I run an openmp program ,but I met some questions ,please help me.

       1.I run the Helloworld example on custom board  not     on the  EVM, the  project  could  run  successfully  on  simulator  ,         but failed on emulator,with the mistake ipc_attach ,and how to solve it?

      2  How can we run openmp on our custom board,and by which  means can we root  the  openmp  ,and whet is the openmp's root process?

      3 . I used the ti.omp.examples.platforms.evm.6678 ,and what is the relationship between it and ti/omp-1-01-03- 02/packages/ti/omp/platform/evm6678?  Namely,how can we gain our generic platform accodring to the modifying of the EVM platform ?

4.I want to know how to modify the platform ,and I want to use our own custom board . Because the DDR’S address  range on evm is from 0x80000000 to 0x9fffffff,but on our custom board  is  from  ox80000000  to  0xffffffff  . And the  beginning address of the MSMSRAM_Nocache on EVM is oxa0100000,but on the custom board is 0x50000000.How to modify the platform based on our custom board ?

        5.The tools I used are as the following

Compiler version :TI v7.4.1

IPC           :1.25.0.04

MCSDK PDK TMS320C6678 : 1.1.2.6

OpenMP BIOS runtime library:1.1.3.0.2

SYS/BIOS     :6.34.2.18

Are there problems about the tools I used?

I am  very appreciated with your early reply.

 

  • This wiki article will help with some of your questions, but not all of them. 

    user4236509 said:
    5.The tools I used are as the following

    Make sure you get all these components from the same MCSDK.  Such of a package of components is tested together.  Otherwise mixing components is unlikely to work.

    I realize this response does not address all your questions.  I will notify other experts about this thread.  But they are all out until next week.

    Thanks and regards,

    -George

  • user4236509,

    1. Does the ipc_attach problem occur during compile time or runtime? Do you have an EVM and if so can this issue be replicated on the EVM?
    2. Can you clarify what you mean by openmp's root process?
    3. The platform files found in those folders are generated by RTSC tools. Whichever platform you choose in your project properties determines the memory map that the linker will use. You can graphically modify those platform files, or create your own custom platform file, using CCS. 
      1. Open CCS and click the 'CCS Debug' button in the upper right hand corner to enter the debug perspective
      2. Use the menu in the upper left corner of the debug perspective to go to 'Tools->RTSC Tools->Platform->Edit/View' to edit or view existing platforms or go to 'Tools->RTSC Tools->Platform->New' to create your own custom platform
    4. Please look at section 6 of the OpenMP User_Guide.pdf file located at mcsdk_02_01_02_06/omp_1_01_03_02/docs/User_Guide.pdf. The second bullet point under the 'dataMemory' rules header explains that this implementation of OpenMP expects a non-cached view of MSMC memory in the address range from 0xA0000000 - 0xA03FFFFF. A little further down under 'General platform rules' the user's guide explains that the cached (MSMCSRAM) and non-cached (MSMCSRAM_NOCACHE) views of the memories must not overlap. This is why the memory map in the existing OpenMP examples has the MSMCSRAM section from 0x0C000000 - 0x0C0FFFFF (1 MB of MSMC) and the MSMCSRAM_NOCACHE section from 0xA0100000 - 0xA03FFFFF (3 MB of MSMC) so there is no overlap.
      1. One solution for your larger DDR memory would be to create two DDR sections in your custom platform file. One section would be 512MB from 0x80000000 - 0x9FFFFFFF and the other section would be 1.5GB - 4MB (the size of the non-cached MSMC alias) from 0xA0400000 - 0xFFFFFFFF
    5. In my setup I am using the following versions of products, all of which came from the 2.1.2.6 release of the MCSDK (except for the compiler)
      1. Compiler 7.4.11
      2. XDCtools version 3.23.4.60
      3. IPC 1.24.3.32
      4. PDK6678 1.1.2.6
      5. OpenMP BIOS runtime library 1.1.3.02
      6. SYS/BIOS 6.33.6.50

    It is always safest to use versions of the tools that are bundled together in the same MCSDK release. Doing this for the IPC package may even correct your issue from #1 above.

    Thanks,

    Jason Reeder

  • 1.After loading,I met the ipc_attach problem .
    2.I am sorry what I have expressed is error.I intented to konw what is the openmp's boot process?Namely ,what is the first step the openmp program executes ,the sencond step ,and so on .I want to know whether the openmp's boot process is similiar with the SYS/BIOS' boot process .
    Thanks for your reply!
  • Jason Reeder
    I tried to construct my own platform,but after compiling,I met the miatake :can not read property "base" from undefined.Why?Do I need to do some addition operation to solve the problem?

    Thanks,

    user4236509
  • user4236509,

    I am able to replicate the issue that you are seeing where a custom platform file does not successfully run the provided examples. I will be working through this issue on my setup here and I will report back if I find something.

    Can you continue moving forward with your programming on your board using the provided platform and only using 512 MB of DDR memory for now and leaving the non-cached MSMC memory at 0xA0000000? This way we can try to work in parallel and accomplish more.

    You should also be aware that we are working on an OpenMP 2.x version that will replace the currently available OpenMP 1.x versions for the 6678 device. Once the new version of OpenMP is release for 6678 then that will be the supported version.

    Thanks,

    Jason Reeder
  • Jason Reeder
    Hi, In recent days,I run the Openmp matrix vector multiplication example on the EVM .But i met new problems.
    1,I can not printf the complete message.The whole message should be as follows:
    [C66xx_0]
    [C66xx_0] Starting values of matrix A and vector b:
    [C66xx_0] A[0]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[0]= 1.0
    [C66xx_0] A[1]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[1]= 2.0
    [C66xx_0] A[2]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[2]= 3.0
    [C66xx_0] A[3]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[3]= 4.0
    [C66xx_0] A[4]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[4]= 5.0
    [C66xx_0] A[5]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[5]= 6.0
    [C66xx_0] A[6]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[6]= 7.0
    [C66xx_0] A[7]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[7]= 8.0
    [C66xx_0] A[8]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[8]= 9.0
    [C66xx_0] A[9]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[9]= 10.0
    [C66xx_0]
    [C66xx_0] Results by thread/row:
    [C66xx_0] thread 0 did row 0 c[0]=55.00 Running total= 55.00
    [C66xx_3] thread 3 did row 9 c[9]=550.00 Running total= 605.00
    [C66xx_1] thread 1 did row 3 c[3]=220.00 Running total= 825.00
    [C66xx_0] thread 0 did row 1 c[1]=110.00 Running total= 935.00
    [C66xx_1] thread 1 did row 4 c[4]=275.00 Running total= 1210.00
    [C66xx_2] thread 2 did row 6 c[6]=385.00 Running total= 1595.00
    [C66xx_0] thread 0 did row 2 c[2]=165.00 Running total= 1760.00
    [C66xx_1] thread 1 did row 5 c[5]=330.00 Running total= 2090.00
    [C66xx_2] thread 2 did row 7 c[7]=440.00 Running total= 2530.00
    [C66xx_2] thread 2 did row 8 c[8]=495.00 Running total= 3025.00
    [C66xx_0]
    [C66xx_0] Matrix-vector total - sum of all c[] = 3025.00
    [C66xx_0]
    but mine output message is as follows:
    [C66xx_0] Starting values of matrix A and vector b:
    [C66xx_0] A[0]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[0]= 1.0
    [C66xx_0] A[1]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[1]= 2.0
    [C66xx_0] A[2]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[2]= 3.0
    [C66xx_0] A[3]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[3]= 4.0
    [C66xx_0] A[4]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[4]= 5.0
    [C66xx_0] A[5]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[5]= 6.0
    [C66xx_0] A[6]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[6]= 7.0
    [C66xx_0] A[7]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[7]= 8.0
    [C66xx_0] A[8]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[8]= 9.0
    [C66xx_0] A[9]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[9]= 10.0
    [C66xx_0]
    [C66xx_0] Results by thread/row:
    what is the matter about this ? I ues the ccs5,3 with the complier 7.4.1,does it have problem running the openmp program .And how can I solve this problem.
    Thanks for your reply!Thanks!
  • user4236509,

    From the output we can't tell if your program is progressing past line 43 of the omp_matvec.c file. Can you place some breakpoints or extra print statements in your code to determine exactly how far you are getting?

    Do you know what has changed between the time that you were able to get the correct output (shown in the beginning of your post) and now, when you can't get past like 43 output?

    Jason Reeder

  • Hi

    Jason Reeder,I solved the problem above .After changing the complier 7.4.1 to 7.4.0,the whole message could be printed! Thanks!

  • As an update to this thread, we have continued to improve our implementation of OpenMP and have released these updates in a software release for KeyStone II devices. A wiki page has been created that gives instructions on how to download the new OpenMP implementation and port it to KeyStone I devices. Please find the wiki page here: processors.wiki.ti.com/.../Porting_OpenMP_2.x_to_KeyStone_1 for the porting instructions.

    Thanks,

    Jason Reeder