# (discrete cosine transform) DCT on GPU

**URL:** https://discourse.julialang.org/t/discrete-cosine-transform-dct-on-gpu/64273
**Category:** General Usage
**Tags:** fftw, gpu
**Created:** [July 8, 2021, 12:12pm UTC](https://discourse.julialang.org/t/discrete-cosine-transform-dct-on-gpu/64273 "2021-07-08T12:12:00Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![rveltz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rveltz/32/2707_2.png) [@rveltz](https://discourse.julialang.org/u/rveltz)
#### Post date: [July 8, 2021, 12:12pm UTC](https://discourse.julialang.org/t/discrete-cosine-transform-dct-on-gpu/64273/1 "2021-07-08T12:12:00Z")

</div>

Hi,

Although I have discussed some of this with some developers at `Oceananigans.jl`, I am reaching you out here to ask if anybody has a `plan_dct!` which works on GPU?

Should we parallel [FFTW.jl](https://github.com/JuliaMath/FFTW.jl/blob/master/src/dct.jl)?

Thank you,

Bests

---

<div class="post-metadata">

### Author: ![rveltz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rveltz/32/2707_2.png) [@rveltz](https://discourse.julialang.org/u/rveltz)
#### Post date: [November 1, 2021, 11:47pm UTC](https://discourse.julialang.org/t/discrete-cosine-transform-dct-on-gpu/64273/2 "2021-11-01T23:47:14Z")

</div>

has anyone progressed on this?

---

<div class="post-metadata">

### Author: ![roflmaostc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/roflmaostc/32/30123_2.png) [@roflmaostc](https://discourse.julialang.org/u/roflmaostc)
#### Post date: [November 2, 2021, 1:18am UTC](https://discourse.julialang.org/t/discrete-cosine-transform-dct-on-gpu/64273/3 "2021-11-02T01:18:16Z")

</div>

In worst case you can use FFTs to calculate the DCTs, right?

I mean, it’s probably only constant factor worse.

---

<div class="post-metadata">

### Author: ![rveltz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rveltz/32/2707_2.png) [@rveltz](https://discourse.julialang.org/u/rveltz)
#### Post date: [November 2, 2021, 3:38pm UTC](https://discourse.julialang.org/t/discrete-cosine-transform-dct-on-gpu/64273/4 "2021-11-02T15:38:07Z")

</div>

well… I expected to have a plan

---

<div class="post-metadata">

### Author: ![roflmaostc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/roflmaostc/32/30123_2.png) [@roflmaostc](https://discourse.julialang.org/u/roflmaostc)
#### Post date: [November 2, 2021, 3:44pm UTC](https://discourse.julialang.org/t/discrete-cosine-transform-dct-on-gpu/64273/5 "2021-11-02T15:44:38Z")

</div>

As far as I know, there is no plan available in CuFFT.

But based on FFT you can write a function `plan_dct` which instead plans a FFT and executes needed pre/postprocessing steps.

With [LinearMaps.jl](https://github.com/Jutho/LinearMaps.jl) you can even multiply the resulting plan like a FFT plan.
