首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Intel“调用函数log10f不能矢量化”

使用Intel“调用函数log10f不能矢量化”
EN

Stack Overflow用户
提问于 2014-12-31 20:02:24
回答 1查看 238关注 0票数 1

我已经创建了一个非常简单的循环的简短例子,它应该是矢量化的。讯息

函数log10f调用不能向量化

是我不明白的。

为什么库中没有向量化版本的alog10

代码语言:javascript
复制
program test

real a(100)

do i = 1,100
   a(i) = a(i) = 4.31 + alog10(max(50.0, real(i)))
end do

call sub(a)

stop 
end

用ifort编译的

代码语言:javascript
复制
ifort -o x.o -c -O3 -xAVX -mkl -ip -fp-model precise -w -ftz -align all -fno-alias -FR 
-convert big_endian  -g  -vec_report3 -opt_report_phase hlo -opt-report-phase hpo 
-opt-report-phase ipo_inl x.f90

我拿到报告了

代码语言:javascript
复制
INLINING OPTION VALUES:
  -inline-factor: 100
  -inline-min-size: 30
  -inline-max-size: 230
  -inline-max-total-size: 2000
  -inline-max-per-routine: disabled
  -inline-max-per-compile: disabled


<x.f90;1:12;IPO INLINING;MAIN__;0>
INLINING REPORT: (MAIN__) [1/1=100.0%]

  -> for_stop_core(EXTERN)
  -> sub_(EXTERN)
  -> log10f(EXTERN)
  -> for_set_reentrancy(EXTERN)
  -> for_set_fpe_(EXTERN)


HPO VECTORIZER REPORT (MAIN__) LOG OPENED ON Wed Dec 31 12:48:17 2014


<x.f90;-1:-1;hpo_vectorization;MAIN__;0>
HPO Vectorizer Report (MAIN__)

x.f90(6:11-6:11):VEC:MAIN__:  vectorization support: call to function log10f cannot be
     vectorized
x.f90(6): (col. 11) remark: loop was not vectorized: statement cannot be vectorized
loop was not vectorized: statement cannot be vectorized
EN

回答 1

Stack Overflow用户

发布于 2014-12-31 20:11:03

与其说是回答,不如说是评论..。

你为什么不试试用矢量法表达呢?也许吧

代码语言:javascript
复制
a = log10([(I, I=1, 100)])

请注意,确保代码段的语法正确是您的责任。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27725845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档