计算化学公社

标题: 关于Visual Studio 2019 C编译器的openmp的defalut(none)不生效的问题 [打印本页]

作者
Author:
lyj714    时间: 2022-11-21 12:49
标题: 关于Visual Studio 2019 C编译器的openmp的defalut(none)不生效的问题
以前就注意到了这个小问题,我不清楚是不是我机子上的这个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没有显式声明出来。
请问各位这方面的大佬有没有遇到过这种情况?







欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3