N5N3
1
我想参考LoopVectorization.jl中的@avx
宏为自己的module提供多线程broadcast的宏支持
然后发现@view 除了转换end以外, 还 view() 前面加了个 true &&
.
@avx
的实现并不支持这种情况. 但对于一般的并行broadcast, 在表达式中出现@view还是比较常见的,比如:
@. a = b + @view c
我目前想到的办法是在用 Meta.lower()
生成 IR
前先把所有 Expr(:&&)
节点替换成一般的 view
。
但我还是想知道设计成这样的原因。
N5N3
2
已解决,为了避免对view函数错误重定义,未来可能改成等效的let;view(…);end