Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

124
Vistas
¿Por qué kmeans es tan lento en una máquina Ubuntu de alta especificación pero no en Windows?

El rendimiento de mi máquina Ubuntu es terrible para R kmeans {stats}, mientras que Windows 7 no muestra problemas.

X es una matriz de 5000 x 5 (variables numéricas).
k = 6

Mi máquina de escritorio es una CPU Intel Xeon W3530 a 2,80 GHz x 8 (es decir, 8 núcleos) Dell Precision T3500, con Ubuntu 12.04.4 LTS (GNU/Linux 3.2.0-58-genérico x86_64) con 24 GB de RAM.

R versión 3.0.2 (2013-09-25) -- "Frisbee Sailing" Copyright (C) 2013 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64 bits)

 > system.time(X.km <- kmeans(X, centers=k, nstart=25)) user system elapsed 49.763 52.347 103.426

En comparación con una computadora portátil con Windows 7 de 64 bits con Intel Core i5-2430M a 2,40 GHz, 2 núcleos, 8 GB de RAM, R 3.0.1 y los mismos datos:

 > system.time(X.km <- kmeans(X, centers=k, nstart=25)) user system elapsed 0.36 0.00 0.37

Mucho, mucho más rápido. Para nstart=1 , el problema aún existe, solo quería amplificar el tiempo de ejecución.

¿Hay algo obvio que me estoy perdiendo?

Pruébenlo ustedes mismos, vean qué tiempos logran:

 set.seed(101) k <- 6 n <- as.integer(10) el.time <- vector(length=n) X <- matrix(rnorm(25000, mean=0.5, sd=1), ncol=5) for (i in 1:n) { # sorry, not clever enough to vectorise el.time[i] <- system.time(kmeans(X, centers=k, nstart=i))[[3]] } print(el.time) plot(el.time, type="b")

Mis resultados (máquina ubuntu):

 > print(el.time) [1] 0.056 0.243 0.288 0.489 0.510 0.572 0.623 0.707 0.830 0.846

máquina de Windows:

 > print(el.time) [1] 0.01 0.12 0.14 0.19 0.20 0.21 0.22 0.25 0.28 0.30
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

¿Está ejecutando Ubuntu en una máquina virtual? Si ese fuera el caso, podría ver que los resultados son mucho más lentos: según la cantidad de memoria, procesadores y espacio en disco asignados para la máquina virtual. Si no se está ejecutando en una máquina virtual, los resultados son desconcertantes. Me gustaría ver el contador de rendimiento para cada una de las ejecuciones (cuál es el uso de la CPU, el uso de la memoria, etc.) en ambos sistemas cuando ejecuta esto. De lo contrario, lo único que podría vincular es que el código "encaja" en el caché L1 de su sistema Windows pero no en el sistema Linux. El Xeon tiene 8 GB (¿L3?) de caché mientras que el Core i5 solo tiene 3 MB, pero supongo que es L3. No sé cómo son las estructuras de caché L1 y L2.

over 4 years ago · Santiago Trujillo Denunciar

0

Supongo que es un problema de BLAS. R podría usar el BLAS interno si se compila así. Además de esto, diferentes versiones de BLAS pueden mostrar diferencias de rendimiento significativas ( openBLAS <> MKL ).

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda