cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • JMP will suspend normal business operations for our Winter Holiday beginning on Wednesday, Dec. 24, 2025, at 5:00 p.m. ET (2:00 p.m. ET for JMP Accounts Receivable).
    Regular business hours will resume at 9:00 a.m. EST on Friday, Jan. 2, 2026.
  • We’re retiring the File Exchange at the end of this year. The JMP Marketplace is now your destination for add-ins and extensions.

Discussions

Solve problems, and share tips and tricks with other JMP users.
%3CLINGO-SUB%20id%3D%22lingo-sub-428225%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3EParallel%20Assign()%20es%20lento%20en%20ciertos%20dispositivos%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-428225%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3EHola%20a%20todos%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EParece%20haber%20un%20problema%20con%20Parallel%20Assign()%20en%20combinaci%C3%B3n%20con%20ciertos%20sistemas.%3C%2FP%3E%3CP%3ETengo%20acceso%20a%203%20PC%20con%20Windows%2010%20con%20JMP%2016.1%3A%3C%2FP%3E%3COL%3E%3CLI%3EComputadora%20port%C3%A1til%3A%20Core%20i5-8350U%20(4%20n%C3%BAcleos)%20a%201%2C9%20GHz%2C%2016%20GB%20de%20RAM%3C%2FLI%3E%3CLI%3EEstaci%C3%B3n%20de%20trabajo%20antigua%3A%20Xeon%20E5-1660%20v4%20(8%20n%C3%BAcleos)%20a%203%2C2%20GHz%2C%20256%20GB%20de%20RAM%3C%2FLI%3E%3CLI%3ENueva%20estaci%C3%B3n%20de%20trabajo%20Xeon%20W-2145%20(8%20n%C3%BAcleos)%20a%203%2C7%20GHz%2C%20128%20GB%20de%20Ram%3C%2FLI%3E%3C%2FOL%3E%3CP%3ECompar%C3%A9%20el%20rendimiento%20de%20la%20versi%C3%B3n%20paralela%20y%20secuencial%20de%20mi%20script%20de%20prueba%20utilizando%20diferentes%20tama%C3%B1os%20de%20problemas%20en%20todos%20los%20sistemas%20(cifrado%20a%20continuaci%C3%B3n).%3C%2FP%3E%3CP%3EEl%20resultado%20fue%20sorprendentemente%20malo.%20S%C3%B3lo%20en%20mi%20port%C3%A1til%20la%20versi%C3%B3n%20paralela%20es%20ligeramente%20m%C3%A1s%20r%C3%A1pida%20que%20la%20versi%C3%B3n%20secuencial%2C%20pero%20hasta%20m%C3%A1s%20de%202%20veces%20m%C3%A1s%20lenta%20en%20las%20estaciones%20de%20trabajo.%3C%2FP%3E%3CP%3E%C2%BFAlguien%20experiment%C3%B3%20problemas%20de%20rendimiento%20similares%20con%20Parallel%20Assign()%3F%20%C2%BFO%20lo%20estoy%20usando%20mal%3F%20%C2%BFQue%20esta%20pasando%20aqui%3F%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3ERobar%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Robbb_0-1634651585833.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Robbb_0-1634651585833.png%22%20style%3D%22width%3A%20791px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Robbb_0-1634651585833.png%22%20style%3D%22width%3A%20791px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F36829i2ED52F8713CC6EC9%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22Robbb_0-1634651585833.png%22%20alt%3D%22Robbb_0-1634651585833.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Robbb_1-1634651710129.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Robbb_1-1634651710129.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Robbb_1-1634651710129.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F36830iE6ED4ED0FF828149%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Robbb_1-1634651710129.png%22%20alt%3D%22Robbb_1-1634651710129.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CPRE%3E%3CCODE%20class%3D%22%22%3En_different_ids%20%3D%20100000%3B%0A%3CBR%20%2F%3E%2F%2F%20Just%20generate%20random%20data.%20Every%2015%20rows%20must%20be%20processed%20at%20the%20same%20time.%0ADT_Data%20%3D%20J(%2015*n_different_ids%2C%209%2C%200%20)%3B%0AFor%20(%20i%20%3D%201%2C%20i%20%26lt%3B%3D%20n_different_ids%2C%20i%2B%2B%2C%0A%20DT_Data%5B15*(i-1)%2B(1%3A%3A15)%2C0%5D%20%3D%20i%20%2B%20J(%2015%2C%209%2C%20Random%20Normal()%20)%3B%0A)%3B%0A%3CBR%20%2F%3E%2F%2F%20some%20function%0AF_percentile%20%3D%20Function(%20%7Bx%20%2C%20p%7D%2C%0A%20x%20%3D%20Sort%20Ascending(x)%3B%0A%20n%20%3D%20N%20Rows(x)%3B%0A%20index%20%3D%201%20%2B%20(n%20-%201)%20*%20p%3B%0A%20index_ibelow%20%3D%20Floor(index)%3B%0A%20index_iabove%20%3D%20Ceiling(index)%3B%0A%20h%20%3D%20index%20-%20index_ibelow%3B%0A%20result%20%3D%20(1%20-%20h)%20*%20x%5Bindex_ibelow%5D%20%2B%20h%20*%20x%5Bindex_iabove%5D%3B%0A%20result%3B%0A)%3B%0A%3CBR%20%2F%3E%2F%2F%20parallel%20version%0ADT_Features%20%3D%20J(%20n_different_ids%2C%2016%2C%200%20)%3B%0Astart%3Dtick%20seconds()%3B%0AParallel%20Assign(%20%7B%0A%20%20DT_Data%20%3D%20DT_Data%2C%0A%20%20F_percentile%20%3D%20Name%20Expr(%20F_percentile%20)%0A%20%7D%2C%0A%20DT_Features%5Bi%2Cj%5D%20%3D%20(%0A%20%20i_same_group%20%3D%20Loc(DT_Data%5B15*(i-1)%2B(1%3A%3A15)%2C%201%5D)%3B%0A%20%20data%20%3D%20DT_Data%5B15*(i-1)%2Bi_same_group%2C%201%2BCeiling(j%2F2)%5D%3B%0A%20%20If%20(mod(j%2C2)%2C%0A%20%20%20result%20%3D%20F_percentile(data%2C%200.95)%3B%0A%20%20%2C%0A%20%20%20result%20%3D%20F_percentile(data%2C%200.05)%3B%0A%20%20)%3B%0A%20%20result%3B%0A%20)%20%20%0A)%3B%0Atime_parallel%20%3D%20tick%20seconds()-start%3B%0AShow(time_parallel)%3B%0AWait(0.1)%3B%0A%3CBR%20%2F%3E%2F%2F%20sequential%20version%0ADT_Features%20%3D%20J(%20n_different_ids%2C%2016%2C%200%20)%3B%0Astart%3Dtick%20seconds()%3B%0Afor(i%3D1%2Ci%26lt%3B%3Dn_different_ids%2Ci%2B%2B%2C%0A%20for(j%3D1%2Cj%26lt%3B%3D16%2Cj%2B%2B%2C%0A%20%20i_same_group%20%3D%20Loc(DT_Data%5B15*(i-1)%2B(1%3A%3A15)%2C%201%5D)%3B%0A%20%20data%20%3D%20DT_Data%5B15*(i-1)%2Bi_same_group%2C%201%2BCeiling(j%2F2)%5D%3B%0A%20%20If%20(mod(j%2C2)%2C%0A%20%20%20result%20%3D%20F_percentile(data%2C%200.95)%3B%0A%20%20%2C%0A%20%20%20result%20%3D%20F_percentile(data%2C%200.05)%3B%0A%20%20)%3B%0A%20%20DT_Features%5Bi%2Cj%5D%20%3Dresult%3B%20%0A%20)%3B%0A)%3B%0Atime_sequential%20%3D%20tick%20seconds()-start%3B%0AShow(time_sequential)%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-428225%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CLINGO-LABEL%3EModelado%20estad%C3%ADstico%20avanzado%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3EAutomatizaci%C3%B3n%20y%20secuencias%20de%20comandos%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3EAcceso%20a%20los%20datos%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3EExploraci%C3%B3n%20y%20visualizaci%C3%B3n%20de%20datos%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3ELa%20personalizaci%C3%B3n%20en%20masa%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3EIngenier%C3%ADa%20de%20Calidad%20y%20Procesos%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3ECompartir%20y%20comunicar%20resultados%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-432893%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3ERe%3A%20Parallel%20Assign()%20es%20lento%20en%20ciertos%20dispositivos%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-432893%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3EHola%3CA%20href%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F6657%22%20target%3D%22_blank%22%3E%20%40ih%3C%2FA%3E%20%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3Eaceptar.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3ELos%20gastos%20generales%20de%20preparar%20a%20un%20ni%C3%B1o%20no%20importan%20mucho%20en%20mi%20caso%2C%20as%C3%AD%20que%20no%20dediqu%C3%A9%20mucho%20tiempo%20a%20hacer%20esto%20lo%20m%C3%A1s%20efectivo%20posible.%20Este%20script%20no%20est%C3%A1%20pensado%20para%20ejecutarse%20s%C3%B3lo%20unos%20minutos.%20Antes%20de%20comenzar%20con%20este%20tema%2C%20hice%20exactamente%20lo%20que%20sugeriste.%20Divid%C3%AD%20mi%20conjunto%20de%20datos%20en%208%20partes%20y%20lo%20termin%C3%A9%20en%200%2C5%20d%C3%ADas.%20Por%20inter%C3%A9s%2C%20tambi%C3%A9n%20prob%C3%A9%20la%20versi%C3%B3n%20%22Sequential_Expr_Opt%22%20de%20Evan%20m%C3%A1s%20tarde%2C%20y%20me%20tom%C3%B3%20entre%201%2C5%20y%204%20d%C3%ADas%20terminar%20mi%20conjunto%20de%20datos%20(lo%20comenc%C3%A9%20el%20jueves%20por%20la%20ma%C3%B1ana%2C%20no%20se%20termin%C3%B3%20el%20viernes%20por%20la%20tarde%20sino%20el%20lunes%20por%20la%20ma%C3%B1ana).%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EEste%20hilo%20fue%20para%20mostrar%20que%20algo%20anda%20mal%20detr%C3%A1s%20de%20escena%20en%20general.%20En%20el%20pasado%20not%C3%A9%20un%20mal%20rendimiento%20paralelo%20de%20JMP%20de%20vez%20en%20cuando%20y%20eso%20me%20molest%C3%B3.%20Me%20gusta%20JMP%20y%20me%20gusta%20probar%20cosas%20que%20otras%20personas%20dicen%20que%20no%20se%20pueden%20hacer%20con%20JMP.%20Y%20estoy%20m%C3%A1s%20que%20feliz%20de%20que%20los%20desarrolladores%20lo%20est%C3%A9n%20investigando.%3C%2FP%3E%3CP%3ESin%20embargo%2C%20debo%20decir%20que%20existen%20mejores%20herramientas%20que%20JMP%20para%20manejar%20conjuntos%20de%20datos%20realmente%20grandes.%20Al%20menos%20por%20el%20momento.%20%3B)%3C%2Fimg%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-432712%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3ERe%3A%20Parallel%20Assign()%20es%20lento%20en%20ciertos%20dispositivos%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-432712%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3EHola%3CA%20href%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F14411%22%20target%3D%22_blank%22%3E%20%40Robb%3C%2FA%3E%20%2C%20dos%20pensamientos%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSTRONG%3EProgramaci%C3%B3n%20para%20la%20velocidad%3C%2FSTRONG%3E%3C%2FP%3E%0A%3CP%3EEl%20objetivo%20de%20tu%20c%C3%B3digo%20puede%20tener%20un%20gran%20efecto%20en%20c%C3%B3mo%20lo%20escribes.Para%20la%20gran%20mayor%C3%ADa%20de%20los%20scripts%2C%20el%20tiempo%20adicional%20que%20lleva%20llamar%20a%20una%20funci%C3%B3n%20o%20copiar%20un%20s%C3%ADmbolo%20no%20importa%2C%20por%20lo%20que%20s%C3%AD%20debes%20usar%20funciones%20y%20hacer%20que%20el%20c%C3%B3digo%20sea%20f%C3%A1cil%20de%20interpretar.Por%20otro%20lado%2C%20si%20est%C3%A1%20trabajando%20en%20un%20proyecto%20que%20ser%C3%A1%20grande%20y%20se%20repetir%C3%A1%20tantas%20veces%20como%20para%20que%20le%20importe%20cu%C3%A1nto%20tiempo%20lleva%2C%20entonces%20s%C3%AD%2C%20es%20posible%20que%20desee%20comenzar%20a%20cambiar%20algunas%20sutilezas%20por%20un%20rendimiento%20bruto.Sin%20embargo%2C%20te%20animo%20a%20que%20s%C3%B3lo%20dediques%20tiempo%20a%20optimizar%20las%20cosas%20que%20realmente%20importan.No%20gastes%20una%20hora%20extra%20codificando%20algo%20ahora%20y%20luego%20tengas%20que%20pasar%20una%20hora%20extra%20averiguando%20qu%C3%A9%20hiciste%20despu%C3%A9s%20de%20un%20a%C3%B1o%20porque%20lo%20hiciste%20m%C3%A1s%20complejo%20tratando%20de%20acelerarlo%2C%20solo%20para%20ahorrarles%20a%20los%20usuarios%2020%20segundos%20adicionales%20una%20vez%20al%20d%C3%ADa.%20.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSTRONG%3ECompensaci%C3%B3n%20paralela%3C%2FSTRONG%3E%3C%2FP%3E%0A%3CP%3EAl%20decidir%20si%20ejecutar%20en%20paralelo%2C%20debe%20equilibrar%20la%20sobrecarga%20de%20configurar%20ese%20subproceso%20%22secundario%22%20con%20el%20trabajo%20que%20va%20a%20realizar.Imagine%20que%20va%20a%20ejecutar%20trabajos%20paralelos%20abriendo%20otra%20copia%20de%20JMP%2C%20abriendo%20una%20tabla%20de%20datos%20y%20haciendo%20clic%20en%20ejecutar.%20Si%20lo%20deja%20ejecut%C3%A1ndose%20durante%20una%20hora%2C%20entonces%20genial%2C%20ahorrar%C3%A1%20mucho%20tiempo%20al%20dejar%20que%20un%20script%20haga%20todo%2C%20pero%20si%20ese%20script%20se%20va%20a%20ejecutar%20durante%2020%20segundos%2C%20entonces%20probablemente%20haya%20dedicado%20m%C3%A1s%20tiempo%20a%20iniciarlo%20que%20a%20guardarlo.S%C3%AD%2C%20la%20sobrecarga%20aqu%C3%AD%20es%20mucho%20menor%2C%20pero%20copiar%20s%C3%ADmbolos%20y%20asignar%20memoria%20lleva%20tiempo.Aseg%C3%BArese%20de%20que%20el%20trabajo%20que%20realizar%C3%A1%20su%20script%20una%20vez%20configurado%20el%20entorno%20sea%20sustancial.Una%20forma%20de%20ayudar%20a%20que%20esto%20suceda%20es%20dividir%20el%20bucle%20en%20solo%204%20partes%20y%20hacer%20que%20cada%20hilo%20trabaje%20en%20una%20cuarta%20parte%20de%20los%20valores%20a%20la%20vez.Por%20lo%20tanto%2C%20divida%20su%20lista%20en%20cuatro%20partes%2C%20cada%20una%20con%20una%20cuarta%20parte%20de%20las%20filas%2C%20y%20luego%20haga%20que%20su%20script%20procese%20secuencialmente%20cada%20sublista.%20De%20esa%20manera%2C%20reduce%20el%20tiempo%20dedicado%20a%20configurar%20subprocesos%20secundarios%20de%20n%20filas()%20veces%20a%204.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-432449%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3ERe%3A%20Parallel%20Assign()%20es%20lento%20en%20ciertos%20dispositivos%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-432449%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3ESegu%C3%AD%20el%20consejo%20de%20Craiges%20y%20me%20comuniqu%C3%A9%20con%20el%20soporte%20t%C3%A9cnico%20hace%20dos%20semanas.%20Despu%C3%A9s%20de%20algunas%20consultas%20sobre%20mis%20PC%2C%20hoy%20recib%C3%AD%20la%20respuesta%20de%20que%20los%20desarrolladores%20han%20participado%20para%20investigar%20el%20comportamiento%20y%20solucionar%20problemas%20en%20una%20futura%20versi%C3%B3n%20de%20JMP.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3ESin%20embargo%2C%20gracias%20nuevamente%20Evan%20por%20acelerar%20este%20script%20espec%C3%ADfico.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-428892%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3ERe%3A%20Parallel%20Assign()%20es%20lento%20en%20ciertos%20dispositivos%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-428892%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3E%C2%A1Oh%2C%20guau%2C%20gracias!%20Al%20ejecutar%20su%20script%20en%20mi%20estaci%C3%B3n%20de%20trabajo%20m%C3%A1s%20nueva%2C%20obtengo%3CBR%20%2F%3E%20Paralelo%3A%2037.0833333333139%3CBR%20%2F%3E%20Secuencial%3A%2019.7166666666453%3CBR%20%2F%3E%20Expr_paralelo%3A%206.93333333331975%3CBR%20%2F%3E%20Expr_secuencial%3A%2012.5333333333256%3CBR%20%2F%3E%20Sequential_Expr_Opt%3A%204.54999999998836%3C%2FP%3E%3CP%3ENo%20consideremos%20el%20Sequential_Expr_Opt%20porque%20es%20una%20comparaci%C3%B3n%20injusta.%20%3A)%3C%2Fimg%3E%3C%2FP%3E%3CP%3E%C2%BFAcabas%20de%20reemplazar%20la%20funci%C3%B3n%20por%20una%20expresi%C3%B3n%20y%20obtengo%20una%20aceleraci%C3%B3n%20de%20aproximadamente%201%2C5%20para%20la%20versi%C3%B3n%20secuencial%20y%20m%C3%A1s%20de%205%20(!!!)%20para%20la%20versi%C3%B3n%20paralela%3F%20Esa%20es%20una%20gran%20soluci%C3%B3n.%20Entonces%2C%20%C2%BFqu%C3%A9%20aprendo%20de%20esto%3F%20%C2%BFNunca%20usas%20funciones%20en%20JSL%3F%20Esto%20es%20un%20poco%20desagradable%20porque%20las%20funciones%20hacen%20que%20el%20c%C3%B3digo%20sea%20m%C3%A1s%20legible%20y%20m%C3%A1s%20f%C3%A1cil%20y%20seguro%20de%20usar%20y%20modificar%20para%20otros.%20Sin%20embargo%2C%20creo%20que%20todav%C3%ADa%20hay%20un%20problema%20detr%C3%A1s%20de%20escena%20porque%20mi%20versi%C3%B3n%20paralela%20original%20todav%C3%ADa%20toma%20el%20doble%20de%20tiempo%20que%20la%20secuencial%20original%20y%20este%20no%20es%20el%20caso%20en%20la%20m%C3%A1quina%20virtual%20de%20Craige.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EActualizaci%C3%B3n%3A%20aqu%C3%AD%20est%C3%A1%20el%20an%C3%A1lisis%20completo%20de%20la%20nueva%20estaci%C3%B3n%20de%20trabajo%3A%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Robbb_1-1634800441779.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Robbb_1-1634800441779.png%22%20style%3D%22width%3A%20695px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Robbb_1-1634800441779.png%22%20style%3D%22width%3A%20695px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F36879i66541E4C61AADC12%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22Robbb_1-1634800441779.png%22%20alt%3D%22Robbb_1-1634800441779.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Robbb_3-1634800519928.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Robbb_3-1634800519928.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Robbb_3-1634800519928.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F36881i757A74C4D43D1F1E%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Robbb_3-1634800519928.png%22%20alt%3D%22Robbb_3-1634800519928.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-428784%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3ERe%3A%20Parallel%20Assign()%20es%20lento%20en%20ciertos%20dispositivos%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-428784%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3EPara%20mi%20m%C3%A1quina%20de%204%20n%C3%BAcleos%20a%203%2C6%20GHz%20y%20N%3D100k%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EObtengo%20una%20aceleraci%C3%B3n%20de%201%2C4%20veces%20utilizando%20el%20c%C3%B3digo%20paralelo%20en%20lugar%20del%20secuencial%20(12%2C8%20segundos%20en%20paralelo%20frente%20a%2017%2C8%20segundos%20en%20secuencial).%20Esto%20no%20es%20tan%20bueno%20como%20la%20aceleraci%C3%B3n%20de%202.7X%20que%20Craige%20estaba%20viendo%2C%20pero%20es%20mejor%20que%20el%20comportamiento%20de%20desaceleraci%C3%B3n%20que%20estaba%20viendo%20en%20las%20estaciones%20de%20trabajo.%20Sin%20embargo%2C%20quer%C3%ADa%20ver%20si%20pod%C3%ADa%20sacarle%20un%20poco%20m%C3%A1s%20de%20rendimiento%20a%20esto%2C%20as%C3%AD%20que%20hice%20algunas%20modificaciones.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EElimin%C3%A9%20la%20sobrecarga%20de%20llamadas%20a%20funciones%20(copias%20de%20argumentos%20de%20matriz%2C%20etc.)%20usando%20expresiones%20en%20su%20lugar.%20Esto%20me%20llev%C3%B3%20a%20una%20aceleraci%C3%B3n%20de%202%2C5%20veces%20(4%2C5%20segundos%20en%20paralelo%20frente%20a%2011%2C3%20segundos%20en%20secuencial)%20y%20un%20poco%20m%C3%A1s%20r%C3%A1pido%20que%20el%20original.%20Y%20finalmente%2C%20intent%C3%A9%20reorganizar%20un%20poco%20los%20bucles%20y%20reduje%20la%20versi%C3%B3n%20secuencial%20a%204%20segundos.%20Esto%20es%20m%C3%A1s%20r%C3%A1pido%20que%20la%20versi%C3%B3n%20paralela%2C%20pero%20la%20reorganizaci%C3%B3n%20no%20es%20tan%20f%C3%A1cil%20de%20hacer%20con%20Parallel%20Assign.%20Prob%C3%A9%20algunos%20N%20diferentes%20y%20estos%20patrones%20parecieron%20mantenerse%2C%20pero%20no%20hice%20un%20barrido%20completo%20como%20en%20la%20tabla%20anterior.%20Encuentra%20el%20c%C3%B3digo%20adjunto.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EParalelo%3A%2012%2C78%3CBR%20%2F%3E%20Secuencial%3A%2017.80%3CBR%20%2F%3E%20Expr_paralelo%3A%204%2C50%3CBR%20%2F%3E%20Expr_secuencial%3A%2011.27%3CBR%20%2F%3E%20Opci%C3%B3n_expr_secuencial%3A%203%2C98%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-428671%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3ERe%3A%20Parallel%20Assign()%20es%20lento%20en%20ciertos%20dispositivos%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-428671%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3ETambi%C3%A9n%20limit%C3%A9%20la%20cantidad%20de%20n%C3%BAcleos%20en%20el%20administrador%20de%20tareas%20que%20est%C3%A1n%20disponibles%20para%20JMP%20a%202%2C%204%20y%208%20en%20la%20nueva%20estaci%C3%B3n%20de%20trabajo.%20La%20versi%C3%B3n%20paralela%20sigue%20siendo%20m%C3%A1s%20lenta%20que%20la%20secuencial.%20Supongo%20que%20JMP%20est%C3%A1%20utilizando%20bibliotecas%20obsoletas%20en%20segundo%20plano%20que%20no%20funcionan%20correctamente%20en%20nuevas%20arquitecturas%20de%20hardware.%3C%2FP%3E%3CP%3EGracias%20Craige%2C%20me%20pondr%C3%A9%20en%20contacto%20con%20el%20soporte%20t%C3%A9cnico%20al%20respecto.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-428638%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3ERe%3A%20Parallel%20Assign()%20es%20lento%20en%20ciertos%20dispositivos%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-428638%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3ENo%20estoy%20seguro.%20Envi%C3%A9%20una%20nota%20sobre%20este%20hilo%20a%20JMP%3B%20Es%20posible%20que%20tambi%C3%A9n%20quieras%20hablar%20con%20el%20soporte%20t%C3%A9cnico.%3C%2FP%3E%3CP%3EMi%20conjetura%20(%C2%A1y%20eso%20es%20todo!)%20es%20que%20JMP%20necesitar%C3%A1%20cambiar%20algo%20para%20recuperar%20el%20rendimiento%20del%20nuevo%20hardware.%20Con%20s%C3%B3lo%204%20CPU%20virtuales%2C%20no%20puedo%20ver%20lo%20mismo%20que%20t%C3%BA.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-428470%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3ERe%3A%20Parallel%20Assign()%20es%20lento%20en%20ciertos%20dispositivos%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-428470%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3EPuedo%20confirmar%20ese%20comportamiento%20en%20mi%20computadora%20port%C3%A1til%20(Win%2010%2C%20JMP%2016.1)%3A%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CSPAN%3Etiempo_paralelo%20%3D%20158%2C7%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Etiempo_secuencial%20%3D%20157%2C766666666667%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Enorte%3D1000000%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-428463%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3ERe%3A%20Parallel%20Assign()%20es%20lento%20en%20ciertos%20dispositivos%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-428463%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3EHola%20Craige%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EAhora%20estoy%20mirando%20mi%20estaci%C3%B3n%20de%20trabajo%20con%20peor%20rendimiento%20(abajo).%20No%20vi%20nada%20sospechoso%20en%20el%20Administrador%20de%20tareas.%20Excepto%20la%20CPU%2C%20nada%20est%C3%A1%20cerca%20de%20la%20ocupaci%C3%B3n%20total.%3C%2FP%3E%3CP%3ELo%20que%20tambi%C3%A9n%20not%C3%A9%20es%20que%20JMP%2015.2.1%20es%20siempre%20m%C3%A1s%20r%C3%A1pido%20en%20las%20versiones%20paralela%20y%20secuencial.%20En%20el%20caso%20de%20n%3D100.000%2C%20JMP%2016.1%20toma%20alrededor%20de%2036%20s%2F18%20s%20(paralelo%2Fsecuencial)%20y%20JMP%2015.2.1%2031%20s%2F15%20s%2C%20que%20es%20un%20poco%20mejor%20pero%20a%C3%BAn%20est%C3%A1%20lejos%20de%20un%20buen%20rendimiento%20en%20paralelo.%20Desafortunadamente%2C%20ya%20no%20tengo%20una%20versi%C3%B3n%20anterior%20disponible.%20Escrib%C3%AD%20este%20c%C3%B3digo%20usando%20JMP%2012%20y%20no%20not%C3%A9%20problemas%20de%20rendimiento%20en%20ese%20entonces%20(y%20las%20PC%20que%20estaba%20usando%20tambi%C3%A9n%20eran%20diferentes).%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3ERobar%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Robbb_0-1634707124021.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Robbb_0-1634707124021.png%22%20style%3D%22width%3A%20832px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Robbb_0-1634707124021.png%22%20style%3D%22width%3A%20832px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F36846iA283376D2D73FBF1%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22Robbb_0-1634707124021.png%22%20alt%3D%22Robbb_0-1634707124021.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-428269%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3ERe%3A%20Parallel%20Assign()%20es%20lento%20en%20ciertos%20dispositivos%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-428269%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3EEsta%20es%20una%20m%C3%A1quina%20JMP16%2Fwin10%20de%204%20CPU%2C%2016%20GB%20~%203%20GHz%20en%20VirtualBox.%20Veo%20la%20velocidad%20que%20esperar%C3%ADa%20(no%204X%2C%20pero%20sigue%20siendo%20buena).%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3En_diferentes_id%20%3D%20100.000%3B%3C%2FP%3E%3CP%3Etiempo_paralelo%20%3D%2013.9833333333333%3B%3CBR%20%2F%3E%20tiempo_secuencial%20%3D%2037%2C7333333333333%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3En_diferentes_id%20%3D%201.000.000%3B%3CBR%20%2F%3E%20tiempo_paralelo%20%3D%20141.233333333333%3B%3CBR%20%2F%3E%20tiempo_secuencial%20%3D%20375.016666666667%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3ELa%20asignaci%C3%B3n%20paralela%20consiste%20en%20copiar%20una%20matriz%20grande%20para%20cada%20CPU%2C%20pero%20los%20gr%C3%A1ficos%20lineales%20no%20sugieren%20que%20sea%20un%20problema%20de%20paginaci%C3%B3n%2C%20en%20estos%20tama%C3%B1os.%3C%2FP%3E%3CP%3EMire%20el%20monitor%20de%20tareas%20de%20Windows%20para%20conocer%20el%20uso%20de%20CPU%20y%20memoria%20(y%20disco)%20y%20vea%20si%20explica%20algo.%20Vi%20el%20100%20%25%20durante%20la%20asignaci%C3%B3n%20paralela%20y%20el%2025%20%25%20durante%20la%20prueba%20secuencial.%20Tambi%C3%A9n%20vi%20que%20se%20utilizaron%207%20GB%20durante%20la%20asignaci%C3%B3n%20paralela%20m%C3%A1s%20grande.%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22task%20manager%22%20style%3D%22width%3A%20490px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22task%20manager%22%20style%3D%22width%3A%20490px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22task%20manager%22%20style%3D%22width%3A%20490px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F36836iD5DE93E2FB0BAC31%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22Capture.PNG%22%20alt%3D%22task%20manager%22%20%2F%3E%3Cspan%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3Etask%20manager%3C%2Fspan%3E%3C%2Fspan%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3Etask%20manager%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3Eadministrador%20de%20tareas%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E
Choose Language Hide Translation Bar
Robbb
Level III

Parallel Assign() is slow on certain devices

Hi everybody,

 

there seems to be a problem with Parallel Assign() in combination with certain systems.

I have got access to 3 Windows 10 PCs with JMP 16.1.:

  1. Laptop: Core i5-8350U (4 cores) @ 1.9 GHz, 16GB Ram
  2. Old Workstation: Xeon E5-1660 v4 (8cores) @ 3.2 GHz, 256GB Ram
  3. New Workstation Xeon W-2145 (8 cores) @3.7 GHz, 128GB Ram

I compared the performance of the parallel and the sequential version of my test script using different problem sizes on all systems (scipt below).

The result was surprisingly bad. Only on my laptop the parallel version is slightly faster than the sequential version, but up to more than 2 times slower on the workstations.

Did anyone experience similar performance issues with Parallel Assign()? Or am I using it wrong? What is going on here?

 

Rob

Robbb_0-1634651585833.pngRobbb_1-1634651710129.png

n_different_ids = 100000;

// Just generate random data. Every 15 rows must be processed at the same time. DT_Data = J( 15*n_different_ids, 9, 0 ); For ( i = 1, i <= n_different_ids, i++, DT_Data[15*(i-1)+(1::15),0] = i + J( 15, 9, Random Normal() ); );
// some function F_percentile = Function( {x , p}, x = Sort Ascending(x); n = N Rows(x); index = 1 + (n - 1) * p; index_ibelow = Floor(index); index_iabove = Ceiling(index); h = index - index_ibelow; result = (1 - h) * x[index_ibelow] + h * x[index_iabove]; result; );
// parallel version DT_Features = J( n_different_ids, 16, 0 ); start=tick seconds(); Parallel Assign( { DT_Data = DT_Data, F_percentile = Name Expr( F_percentile ) }, DT_Features[i,j] = ( i_same_group = Loc(DT_Data[15*(i-1)+(1::15), 1]); data = DT_Data[15*(i-1)+i_same_group, 1+Ceiling(j/2)]; If (mod(j,2), result = F_percentile(data, 0.95); , result = F_percentile(data, 0.05); ); result; ) ); time_parallel = tick seconds()-start; Show(time_parallel); Wait(0.1);
// sequential version DT_Features = J( n_different_ids, 16, 0 ); start=tick seconds(); for(i=1,i<=n_different_ids,i++, for(j=1,j<=16,j++, i_same_group = Loc(DT_Data[15*(i-1)+(1::15), 1]); data = DT_Data[15*(i-1)+i_same_group, 1+Ceiling(j/2)]; If (mod(j,2), result = F_percentile(data, 0.95); , result = F_percentile(data, 0.05); ); DT_Features[i,j] =result; ); ); time_sequential = tick seconds()-start; Show(time_sequential);

 

 

10 REPLIES 10
Robbb
Level III

Re: Parallel Assign() is slow on certain devices

I followed Craiges advice and contacted tech support two weeks ago. After some queries about my PCs I got the response today that developers have been involved to investigate the behavior and fix problems in a future JMP version.

 

Nevertheless, thanks again Evan for speeding up this specific script.

Recommended Articles