# Using Math Functions Inside CUDA Kernel

**URL:** <https://discourse.julialang.org/t/using-math-functions-inside-cuda-kernel/7411>\
**Category:** GPU\
**Tags:** parallel\
**Created:** [November 30, 2017, 2:09pm UTC](https://discourse.julialang.org/t/using-math-functions-inside-cuda-kernel/7411 "2017-11-30T14:09:20Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![drjoke](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/drjoke/32/23562_2.png) [@drjoke](https://discourse.julialang.org/u/drjoke)\
**Post date:** [November 30, 2017, 2:09pm UTC](https://discourse.julialang.org/t/using-math-functions-inside-cuda-kernel/7411/1 "2017-11-30T14:09:20Z")

</div>

```julia
using CUDAdrv, CUDAnative

function kernel_a(a)
    i = (blockIdx().x-1) * blockDim().x + threadIdx().x
    a[i] = tanh(a[i])
    return nothing
end

dev = CuDevice(0)
ctx = CuContext(dev)
len = 100
a = rand(Float32, len)
d_a = CuArray(a)
function gpu()
    @cuda (1,100) kernel_a(d_a)
end
gpu()

```

The above code gives me “error in running finalizer: CUDAdrv.CuError(code=700, meta=nothing)” and various other errors if I try to use a math function such as tanh() inside kernel.

Is this the right way to use math functions?

---

<div class="post-metadata">

**Author:** ![maleadt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/maleadt/32/10097_2.png) [@maleadt](https://discourse.julialang.org/u/maleadt)\
**Post date:** [November 30, 2017, 2:15pm UTC](https://discourse.julialang.org/t/using-math-functions-inside-cuda-kernel/7411/2 "2017-11-30T14:15:31Z")

</div>

Use intrinsics from CUDAnative. See [https://github.com/JuliaGPU/CUDAnative.jl/issues/27](https://github.com/JuliaGPU/CUDAnative.jl/issues/27)  
Should, hopefully, be fixed for Julia 1.0
