Saltar a contenido

Linux

Kinich Pakal está diseñado para ejecutarse en sistemas operativos de tipo Linux. Si cuentas con este sistema, tendrás que verificar que tenga los siguientes paquetes:

  • wget
  • curl
  • gcc
  • make
  • openmpi

Si no cuentas con estos paquetes te recomendamos instalarlos de la siguiente manera

Instalando los paquetes

El primer paso será instalar MPI en nuestra máquina. Si ya lo tienes instalado, puedes ir a #ref Escriberemos en nuestra terminal

Tecleamos

Ctrl+Alt+T

Y dentro de la terminal escribimos

sudo apt-get update
sudo apt-get install -y build-essential curl wget git gcc gfortran make emacs25 openmpi-bin  

Ahora instalamos Julia

cd ~
wget https://julialang-s3.julialang.org/bin/linux/x64/0.6/julia-0.6.4-linux-x86_64.tar.gz\
tar zxvf julia-0.6.4-linux-x86_64.tar.gz\
ln -s ~/julia-9d11f62bcb/bin/julia /bin/
sudo yum -y install wget\
               curl\
               yum-utils\
               rpm-build\
               gcc\
               gcc-c++\
               gcc-gfortran\
               make\
               openssh\
               openssh-server\
               openssh-clients\
               bind-utils\
               git\
               emacs
wget https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.5-1.src.rpm\
  && rpm -ivh ./openmpi-4.0.5-1.src.rpm\
  && cd /root/rpmbuild/SPECS/\
  && rpmbuild -ba --define 'configure_options --prefix=/opt/openmpi --enable-openib-rdmacm' openmpi-4.0.5.spec
cd /root/rpmbuild/RPMS/x86_64/\
  && sudo yum -y install openmpi-4.0.5-1.el8.x86_64.rpm
cd ~\
  && wget https://julialang-s3.julialang.org/bin/linux/x64/0.6/julia-0.6.4-linux-x86_64.tar.gz\
  && tar zxvf julia-0.6.4-linux-x86_64.tar.gz\
  && ln -s ~/julia-9d11f62bcb/bin/julia /bin/

Utilizando Docker

Si prefieres, puedes instalar Docker en tu distribución Linux preferida. Te recomendamos utilizar esta opción, ya que la imagen Docker contiene todas las configuraciones necesarias para poder correr el código sin ningún problema.

Instrucciones de instalación en Debian

Instrucciones de instalación en Ubuntu

Instrucciones de instalación en CentOS

Instrucciones de instalación en Fedora

Instrucciones de instalación en otras distribuciones

Para configurar nuestro Docker, tecleamos en nuestra terminal:

docker pull ftapia/kinichpakal
esperamos que se descargen los archivos, y cuando haya terminado crearemos una imagen personalizada

docker run -t -d --name kinichpakal ftapia/kinichpakal
para acceder a nuestra máquina virtual, escribimos

docker exec -it kinichpakal sh

Comprobando la instalación

Ahora comprobamos que MPI funciona. Para eso haremos un test. Descargamos el código mediante github

cd /home
git clone https://github.com/fratava/mpi_code.git
y después

cd mpi_code
mpicc hello_world.c -o hello_world
mpiexec --allow-run-as-root --use-hwthread-cpus -n 4 ./hello_world
Warning

Si se está utilizando Docker, se recomienda no utilizar todos los hilos de procesamiento para la tarea, ya que puede provocar algunos fallos o congelamiento temporal de la computadora. En este caso se recomienda ejecutar el código con un número par o \(2^n\) para \(n=1,2,...\) de núcleos como en el ejemplo de abajo.

Example

Supogamos que el procesador de nuestra computadora es un i7-1185G7 con 4 núcleos físicos y que cuenta con HyperThreading por lo que el sistema operativo puede ejecutar hasta 8 procesos en paralelo. Lo recomendable en este caso sería ejecutar el código con 6 o 7 procesos para no ocupar todo el procesamiento de nuestro computador. Entonces ejecutaríamos el siguiente código:

mpiexec --allow-run-as-root --use-hwthread-cpus -n 6 ./hello_world
mpiexec --allow-run-as-root --use-hwthread-cpus -n 4 ./hello_world

como salida tendremos algo similar a

sh-4.4# mpiexec --allow-run-as-root --use-hwthread-cpus -n 4 ./hello_world
Hello world from processor xxx, rank 0 out of 4 processors
Hello world from processor xxx, rank 1 out of 4 processors
Hello world from processor xxx, rank 2 out of 4 processors
Hello world from processor xxx, rank 3 out of 4 processors
Warning

Los procesos no siempre se ejecutan en orden, en general es de manera aleatoria.

Configurando Julia

Primero comprobamos que tenemos la versión de julia correcta

julia --version
y debemos tener como salida

sh-4.4# julia --version
julia version 0.6.4
para instalar los paquetes necesarios en julia tecleamos

julia
y debe esta pantalla de bienvenida

sh-4.4# julia
               _
   _       _ _(_)_     |  A fresh approach to technical computing
  (_)     | (_) (_)    |  Documentation: https://docs.julialang.org
   _ _   _| |_  __ _   |  Type "?help" for help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 0.6.4 (2018-07-09 19:09 UTC)
 _/ |\__'_|_|_|\__'_|  |  Official http://julialang.org/ release
|__/                   |  x86_64-pc-linux-gnu

julia>
Entonces tecleamos los siguiente

Pkg.add("LsqFit")

Después precompilamos la paquetería de esta manera

using LsqFit

Y tenemos nuestro entorno listo.