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.

[参考译文] 66AK2H14:OpenMP 编译问题

Guru**** 2540720 points
Other Parts Discussed in Thread: 66AK2H14

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/598945/66ak2h14-openmp-compilation-issue

器件型号:66AK2H14

大家好、我正在使用 EVMK2H 66AK2H14开发一个应用程序、我正在尝试使用 clacc 编译这部分代码:

#pragma omp 声明目标
外部 int printf (const char *_format、...);

静态空函数(){
//代码
}

#pragma omp end 声明目标

内部 main ()
{
#pragma pragma omp 目标更新至(vars...)
#pragma omp 目标
{
函数();
}
#pragma omp 目标更新自(vars...)
} 

但我得到该误差:

内部错误:acpia6x 遇到分段故障
                 处理函数时(未知或文件范围)文件(未知)行0

这是由编译器本身的缺陷引起的。 TI 客户
支持人员可能会建议解决方法来避免这种情况。

升级到编译器的最新版本可能会解决此问题。

在 E2E 支持论坛中联系 TI、网址 为 http://e2e.ti.com 、位于
"开发工具"、"TI C/C++编译器"。 请参阅标题为的链接
"提交问题"。 包括整个错误消息和
选项--preproc_with_comment 时创建的.pp 文件的副本
(-PPC)。

idk 如何修复它、但我意识到、如果我更改为这个、它会编译并正确执行:

#pragma omp 声明目标
外部 int printf (const char *_format、...);

静态空函数(){
#pragma omp 目标更新为(vars...)
#pragma omp 目标
{
//代码
}
#pragma omp 目标更新自(vars...)
}

#pragma omp end 声明目标

int main()
{
function();
} 

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我已通知软件团队。 反馈将发布在此处。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您使用的是哪个 OMP 版本? 处理器 SDK 3.3中的2.6。 software-dl.ti.com/.../index_FDS.html

    此致、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我使用 的是 ti-processor-sdk-linux-k2hk evm-03.01.00.06中的 OpenMP 4.0。

    谢谢、

    Julio。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Julio、

    我相信你会崩溃、但我在重现失败时遇到了问题。  以下是使用 clacc t.c -v -k -o a.out 为我编译的。  无碰撞。

    #pragma omp 声明目标
    extern int printf (const char *_format、...);
    INT A = 0;

    静态 void 函数(){
      a +=1;
      返回;



    #pragma omp 结束声明目标


    int main()

      A=2;
      printf ("a=%d\n");
      将#pragma omp 目标更新为(a)
      pragma omp 目标
      {
         function();
      }
      从(a)更新#pragma omp 目标
      printf ("a=%d\n");


    您能否提供崩溃的小型测试用例以及您使用的选项。

    谢谢、Eric

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很抱歉写得太晚了、我几天前就解决了这个问题。

    这不是我在上面发布的代码的问题、它与将变量从 ARM 移动到 DSP 相关、
    我以为我全部移动了、但有一个我没有移动、编译器没有抱怨这一点、而是抱怨消息
    我早就告诉过你。

    感谢你的帮助。