Description
I'm seeing the following runtime error in a minimal example intended to generate a 2D array, when run with the accelerate-llvm-ptx backend. The error is
double free or corruption (!prev)
and coincides by the process dying with SIGABRT.
The behavior seems to be dependent on the size of the generated array. On my machine, there is no error for sizes smaller than 363; for 363 and larger I get the runtime error.
Steps to reproduce
-
Use the following Main.hs
module Main where
import Data.Array.Accelerate as A
import qualified Data.Array.Accelerate.LLVM.PTX as GPU
indices :: Exp Int -> Acc (Array DIM2 (Int, Int))
indices n = generate (I2 n n) unindex2
run :: Int -> IO ()
run =
writeFile "out"
. show
. GPU.run
. indices
. constant
main :: IO ()
main = run 363 -- <= 362 succeeds
-
Compile with ghc Main.hs -threaded
-
Run with ./Main
(The complete code along with cabal file and Nix files is in this gist.)
Expected behaviour
The sample code should not fail with double free or corruption (!prev), regardless of the size of the generated array (at least for reasonable sizes).
Your environment
Description
I'm seeing the following runtime error in a minimal example intended to generate a 2D array, when run with the
accelerate-llvm-ptxbackend. The error isand coincides by the process dying with SIGABRT.
The behavior seems to be dependent on the size of the generated array. On my machine, there is no error for sizes smaller than 363; for 363 and larger I get the runtime error.
Steps to reproduce
Use the following
Main.hsCompile with
ghc Main.hs -threadedRun with
./Main(The complete code along with cabal file and Nix files is in this gist.)
Expected behaviour
The sample code should not fail with
double free or corruption (!prev), regardless of the size of the generated array (at least for reasonable sizes).Your environment
nvidia-device-query: https://gist.github.com/mcwitt/8065817084a202e72b6c27090432ce28#file-nvidia-device-query