大家好!
最近在6678上使用openmp。看到主要是由c6000 compiler 7.4编译器和omp运行时库两部分支持的。目前看到的文档多是在openmp应用层面。想了解一些6678在支持openmp上具体是如何做的,compiler7.4和omp库在支持openmp上的实现原理和技术方法。比如针对6678的内存模型是如何设计实现openmp基于共享内存的并行?
有没有哪里有相关的文档资料可以参考查阅的??
非常感谢!!
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.
大家好!
最近在6678上使用openmp。看到主要是由c6000 compiler 7.4编译器和omp运行时库两部分支持的。目前看到的文档多是在openmp应用层面。想了解一些6678在支持openmp上具体是如何做的,compiler7.4和omp库在支持openmp上的实现原理和技术方法。比如针对6678的内存模型是如何设计实现openmp基于共享内存的并行?
有没有哪里有相关的文档资料可以参考查阅的??
非常感谢!!
请参考下面信息:
http://processors.wiki.ti.com/index.php/Porting_OpenMP_2.x_to_KeyStone_1
http://processors.wiki.ti.com/index.php/OpenMP_on_C6000
谢谢Thomas您之前的链接,我最近一直在看omp运行时库,有几个问题想请教您,
1. 我注意到,带openmp的程序代码段都是放在msmc里的,当多个核都进入到并行域时,都是在msmc的同一个地址执行代码的,我想问1》这样多个核同时从msmc读取代码不会出现竞争导致出错吗?
2.在core0执行到main()处之前,所有的核都会执行openmp.c中的openMP_masterTask函数,在这个函数的最后,从核都会调用一个spawTask函数然后阻塞在pop消息的地方,我想这里从核应该是在等待core0发送任务过来。而core0应该是只有在运行到并行域入口的地方才会向从核派发任务的。随后主核会跳转到main执行main函数,而从核并不执行main(),当core0在执行main的时候,从debugger中暂停从核看到从核的状态是在一个未定义的地址上。
所以我想问2》openMP_masterTask是由谁调用的?
3》core0是如何跳转到main处的?
4》从核在未定义地址的这个状态是不是就是阻塞在pop的状态?
5》各个核具体是在哪个地方调用bios_start的?是封装在哪里被调用了?
谢谢您!!