Commit 8662363c authored by Pablo Herrero's avatar Pablo Herrero
Browse files

Now that's interesting...

parent c25b1025
......@@ -44,3 +44,11 @@ Ejemplo para grafico de difusion:
$ . venv/bin/activate
$ python src/experiments/difussion_2d.py 100
```
Para algunos experimentos muy costosos, es posible ejecutarlos en paralelo si el hardware lo permite.
En estos casos, se ejecutaran por defecto, usando el máximo número de CPUs físicos disponibles (sin contar SMT).
Si se quiere asignar un número de cpus distinto a utilizar, hay que setear la variable de entorno `MAX_CPUS` antes de ejecutar el script:
```shell
$ MAX_CPUS=2 python src/experiments/3d.py
```
import os
import subprocess as sp
def get_physical_cores():
list = set(map(int,
sp.run(['lscpu', '-b', '-e=Core'], capture_output=True, text=True)
.stdout.splitlines()[1:]))
try:
res = sp.run(['/usr/bin/lscpu', '-b', '-e=Core'], capture_output=True, text=True, check=True)
return len(set(map(int, res.stdout.splitlines()[1:])))
except (FileNotFoundError, sp.CalledProcessError):
return os.cpu_count() // 2 # type: ignore
return len(list)
\ No newline at end of file
def config_for_multiple_cpus():
return os.getenv('MAX_CPUS', get_physical_cores())
import multiprocessing as mp
from multiprocessing.pool import AsyncResult
import os
import pickle
import numpy as np
import matplotlib.pyplot as plt
......@@ -8,10 +7,10 @@ from classifier.data_models import DataModelMatrices, get_vectorized_data_for, g
from classifier.cv import cross_validations
from classifier.knn import KNNPredictor
from classifier.data_loader import *
from classifier.misc import get_physical_cores
from classifier.misc import config_for_multiple_cpus
from classifier.pca import PCA
MAX_PROCESSES = int(os.getenv('MAX_CPUS', get_physical_cores()))
MAX_PROCESSES = config_for_multiple_cpus()
MAXIMUM_K = 100 # Neighbors
P_MIN = 50
P_MAX = 250
......
......@@ -7,9 +7,10 @@ from classifier.data_models import DataModelMatrices, get_vectorized_data_for, g
from classifier.cv import cross_validations
from classifier.knn import KNNPredictor
from classifier.data_loader import *
from classifier.misc import config_for_multiple_cpus
from classifier.pca import PCA
MAX_PROCESSES = 8
MAX_PROCESSES = config_for_multiple_cpus()
MAXIMUM_K = 100 # Neighbors
P_MIN = 50
P_MAX = 250
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment