JuliaMath / JuliaMath/IntelVectorMath.jl

Scalar Calculation?

Đang mở
#44 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
Enhancement
Ngôn ngữ chính
Julia
Star
75
Fork
17
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

Now the library only supports doing a calculation on an `Array` and also returns an `Array`.

It may be worth while to define scalar methods too.
```julia
julia> IVM.sin(1.1)
ERROR: MethodError: no method matching sin(::Float64)
You may have intended to import Base.sin
Closest candidates are:
sin(::Array{Float32,N} where N) at C:\Users\yahyaaba\.julia\packages\IntelVectorMath\Gb348\src\setup.jl:72
sin(::Array{Float64,N} where N) at C:\Users\yahyaaba\.julia\packages\IntelVectorMath\Gb348\src\setup.jl:72
Stacktrace:
[1] top-level scope at none:0
```

This way we only use Intel for calculating one scalar number, which (if possible) helps to fuse for-loops with broadcasted functions and use `@avx` or `@simd` features of Julia instead for parallelization.

We should see if Intel provides scalar API. Because if it only provides Vector API, and the function call uses the Vector Processor Unit of the CPU, we cannot parallelize the function. This is like vectorizing an already vectorized function (although having a size of 1), which doesn't have an effect.

Related to https://github.com/JuliaMath/IntelVectorMath.jl/issues/43, which can help to implement the 3rd macro.

This can also solve https://github.com/JuliaMath/IntelVectorMath.jl/issues/22, by using Intel-only for a scalar call and provide an SVML like behavior using `@avx` or `@simd`.

Places to look into:
- https://software.intel.com/en-us/cpp-compiler-developer-guide-and-reference-intrinsics-for-short-vector-math-library-operations
- https://software.intel.com/sites/landingpage/IntrinsicsGuide/#
- http://openpowerfoundation.org/wp-content/uploads/resources/Vector-Intrinsics-4/content/sec_packed_vs_scalar_intrinsics.html
- https://stackoverflow.com/questions/37290544/is-there-an-intrinsic-instruction-for-resulti-ak-sinbk-ci-dk

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.