2011-06-28 10 views
29

Tengo un programa escrito en Haskell y destinado a compilarse con GHC. El programa se escala muy bien en múltiples núcleos, por lo que es muy importante habilitar el multihilo. En mi archivo .cabal, agregué ghc-options: -O3 -threaded para vincularme con el tiempo de ejecución enhebrado. El problema es que con este enfoque el usuario necesitaría ejecutar el programa con foo +RTS -N, lo que parece un poco críptico y poco amigable para el usuario.Creación con indicadores de tiempo de ejecución utilizando cabal y ghc

¿Cómo puedo decirle a cabal/ghc que habilite esos indicadores de tiempo de ejecución de forma invisible para el usuario? He leído sobre --with-rtsopts, pero GHC (7.0.3) simplemente escupe unrecognized flag cuando intento usarlo.

Respuesta

28

La bandera es -with-rtsopts, no --with-rtsopts, por lo que debe agregar -with-rtsopts=-N al campo ghc-options. GHC Flag Reference.

Tenga en cuenta que esto también requerirá que establezca un enlace con el soporte de tiempo de ejecución agregando -rtsopts a las opciones de ghc.

+0

¡Gracias, esto me ayudó! También intenté habilitar la bandera '-g1' con' -with-rtsopts = "- N -g1" 'pero luego recibí' bandera no reconocida: -g1'. Ambos '-N' y' -g1' funcionan bien por separado. –

+1

@ Viktor Dahl: Creo que las citas están causando el problema. Intenta usar comillas simples o múltiples líneas '-with-rtsopts'. Si eso lo resuelve, probablemente sea un error ghc (o un error de documentación). –

+7

Las comillas simples no lo resolvieron, pero utilizaron dos '-with-rtsopts'. –

Cuestiones relacionadas