fortran66のブログ

fortran について書きます。

【メモ帳】最新 ifx reduce 有り

reduction あり〼

機能実装表。f08 までは実装済みとのこと。f18 で実装されてないとされるのは以下の表によると、

www.intel.com

In this release of Intel oneAPI HPC Toolkit 2022.3 the ifx version number is 2022.2.0.

  Status in Compiler Version 2022.2.0 
  REDUCE intrinsic function   No 

となっていますが、一応使えています。

    module test_m 
        implicit none
        real :: r = 60.0
    contains
        pure real function f(a, b) result(res)
            real, intent(in) :: a, b
            res = mod(a * b, r)
        end function f
    end module test_m
    
    program F2018
        use test_m
        implicit none
        print *, reduce([9999.,1213.,33333.], f)                         !Fortran 2018
        print *, mod(mod(9999. * 1213., 60.0) * 3333., 60.0) 
        print *, mod(product([9999.,1213.,33333.]), 60.0)
        
        stop 999, quiet = .true.            !Fortran 2018
    end program F2018
Build started...
1>------ Build started: Project: Console13 (IFX), Configuration: Release x64 ------
1>Compiling with Intel® Fortran Compiler 2022.2.0 [Intel(R) 64]...
1>Console13.f90
1>Linking...
1>Embedding manifest...
1>
1>Build log written to  "file://D:\Git\Console8\Console13\x64\Release\BuildLog.htm"
1>Console13 - 0 error(s), 0 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
   51.00000
   51.00000
   36.00000

fortran66.hatenablog.com

この他 OpenMP 5.1 系の実装が残っているようです。