Menu

GSL en windows

2014-07-24
2014-08-11
  • Matias Bonaventura

    --- Para que funcionen los modelos de red en Windows:

    Hay que agregarle a una instalación fresca de PowerDEVS2.3 (bajate el úlrimo de sourceforge) las librerías GSL.
    Buscá la GSL (GNU Scientific Library) y bajate la versión para developers:
    de http://gnuwin32.sourceforge.net/packages/gsl.htm te bajás los
    paquetes Binaries y Developer files.

    Tenés que descomprimir y tirar ciertas cosas en los directorias que te indico (siempre refiriéndome a c:\PowerDEVS como raíz):

    Adentro de \bin\gsl\ tenés que descomprimir:

    \bin
    \include
    \lib
    \manifest

    Por las dudas lo que viene adentro de \bin tiralo también adentro del \output de PowerDEVS (son 2 ejecutables y 2 dlls).

    Luego tenés que reemplazar en \engine el archivo Makefile.include con la versión que te adjunto en este mail.

    Con esto ya la libreriá stdevstool.h que usan algunos modelos están en condiciones de usar las funciones de generación de número aleatorias que provee la GSL.

    --- Te paso unos .zip con archivos .cpp y .h
    El nombre del zip indica el nombre del folder dentro de \atomics adonde debés descomprimir.
    Todos son modelos atómicos excepto packettool.h, logtoscilabtool.h y .cpp, y stdevstool.h. Estos últimos son librerías auxiliares utilizadas por algunos atómicos.

    Fijate cuando abrís un atómico en PowerDEVS, que si le das botón derecho->Edit Code, en la interfaz de edición
    tenés en el menú de arriba a la izquierda Tools->Configure. AHí usamos las solapas HeadersFiles y CPPFiles.
    Por ejemplo, en el atómico Packetgen, en esas solapas vas a ver en Headers:
    sinks/logtoscilabtool.h
    hybrid/packettool.h
    hybrid/stdevstool.h
    y en CPPFiles:
    sinks/logtoscilabtool.cpp

    Cuando compiles y te proteste por algo relacionado con estos archivos, lo 1ro. que tenés que hacer es ir a esas solapas y fijarte que todo está incluído.

    Fijate que estoy usando en general /sinks y /sources en lugar de /sink y /source. Eso a veces trae quilombo porque hubo cambios a lo largo de versiones. Tenelo en cuanta por si tira errores que no encuantra algo, fijate con cuidado el tema de la "s" que puede estar faltando.

    --- Fijate como uso logtoscilabtool.h desde adentro de algunos modelos para loguear series temporales en scilab. Siempre genero las variables con el nobre que defino dentro de la función Init de cada atómico del siguiente modo:
    nombredelatómico_nombredelavariable
    , y a la vez en la función Exit hago un flush que adicionalmente genera una serie nombredelatómico_t (que son los timestamps usados para todas las variables que logueo).
    Por ese motivo no le pongas espacios o paréntesis o caracteres raros a los bloquecitos de tus modelos, porque si no no se puede crear la variable en scilab.
    para ver que variables hay definidas en scilab usá "who".
    Un ejemplo de graficación en scilab de series generadas por una simu en PD es:
    plot(packetsink_arrived,packetsink_t)

    --- Con respecto a los ejemplos para que vayas mirando te los paso en un zip examples que tenés que descomprimir en /examples/hybrid/network

    Tratá de ejecutar estos ejemplos, ir entendiendo que hace cada modelo, etc. No espero que sea todo autoexplicativo, pero por lo menos para que cuando vuelva de viaje ya sepas que entendés y que no.

    Obviamente los dos modelos mas "jugosos" para tu trabajo son packettcpsnd y packetsndrcv que son el "cliente" y el "servidor" del protocolo TCP que implementé.

    TE RECOMIENDO: concentrate en el ejemplo "Discrete Model of TCP-AQM". Al resto si querés miralos y jugá pero no tuve tiempo de ordenarlos y explicar que se pretende de cada uno. Por los nombres te podés guiar un poco... pero no mucho. Eso lo pulimos cuando vuelva de mi viaje.

    --- Todos los atómicos que manipulan paquetes de red empiezan con packet*

    Rodrigo

     
  • nanael

    nanael - 2014-08-08

    Hi there,

    Based on the Google translation I assume that this is kind of manual how to use GSL libraries with PD. It would be great if such manual could be written in English even in a short and simplified way as I am also struggling with linking GSL libraries to PD.

    In my atomics I want to use nonlinear equations solvers from the GSL package. However, PD does not compile the atomics due to "undefined references" error. I have tried to utilize the "configure" option from the atomics editor but somehow GSL libraries are still not linked.

    Many thanks
    DP

     
  • Federico Bergero

    Hi Nanael, in fact this IS a how to compile a PD block that uses GSL.
    If you got to the undefined reference you are missing the linking part.
    For that you have to decompress the GSL package for developers (link above) then copy the lib folder into %PD%/build/lib. With that it should find the libgsl.a. Also check that the Makefile in the build folder HAS the -lgsl flag to the linker.
    When that's done you also have to copy the dll from %GSL%/bin to %PD%/output.
    That should work.
    Let me know
    Fede

     
  • nanael

    nanael - 2014-08-11

    Many thanks Federico. I just followed your advice step-by-step and it did the trick. The model is now compiling and simulating properly.

    Many thanks,
    Nanael

     
  • Federico Bergero

    Great. All of this is not necessary on a Linux environment ;)
    See ya

     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.