计算化学公社

 找回密码 Forget password
 注册 Register
Views: 953|回复 Reply: 0
打印 Print 上一主题 Last thread 下一主题 Next thread

[C/C++] 关于Visual Studio 2019 C编译器的openmp的defalut(none)不生效的问题

[复制链接 Copy URL]

306

帖子

2

威望

3262

eV
积分
3608

Level 5 (御坂)

跳转到指定楼层 Go to specific reply
楼主
以前就注意到了这个小问题,我不清楚是不是我机子上的这个VS的问题还是其他原因,具体C/C++编译器的版本是:Microsoft (R) C/C++ Optimizing Compiler Version 19.29.30147 for x64比如下面的这一段小代码:
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. #include <omp.h>


  4. int main()
  5. {
  6.     int                 i;
  7.     unsigned long long sum = 0;
  8.     int                 b = 10000;
  9.      
  10. #pragma omp parallel for default(none) reduction(+:sum)
  11.     for (i = 0; i < 5; i++)
  12.     {
  13.         sum += b;
  14.     }
  15.         printf("Sum=%lld\n", sum);
  16.        
  17.         return 0;
  18. }
复制代码
理论上用VS的cl编译器应该不会通过,因为用了default(none)但没有显示指出变量b的共享性,但是实际上用cl编译器能够直接编译通过,这就很纳闷了。

同样的程序,我用intel的icl编译器和Linux上的gcc编译器或者Windows上的cygwin等等都不能通过,因为b没有显式声明出来。
请问各位这方面的大佬有没有遇到过这种情况?


本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-27 10:42 , Processed in 1.214132 second(s), 21 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list