blob: 99c3f1d1da5dbe09abb326469f5d0eeb9454a676 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
{-# LANGUAGE TypeApplications #-}
module Main where
import Criterion
import Criterion.Main
import qualified Numeric.AD as AD
import qualified Numeric.ADDual as ADD
import Numeric.ADDual.Examples
main :: IO ()
main = defaultMain
[env (pure (makeNeuralInput 100)) $ \input ->
bgroup "neural-100"
[bench "dual" $ nf (\inp -> ADD.gradient' @Double fneural inp 1.0) input
,bench "ad" $ nf (\inp -> AD.grad fneural inp) input]
,env (pure (makeNeuralInput 500)) $ \input ->
bgroup "neural-500"
[bench "dual" $ nf (\inp -> ADD.gradient' @Double fneural inp 1.0) input
,bench "ad" $ nf (\inp -> AD.grad fneural inp) input]
,env (pure (makeNeuralInput 2000)) $ \input ->
bgroup "neural-2000"
[bench "dual" $ nf (\inp -> ADD.gradient' @Double fneural inp 1.0) input
,bench "ad" $ nf (\inp -> AD.grad fneural inp) input]
]
|