From 9dc9f3827e6ac78c3f1b22f2aee1014fa5e66a17 Mon Sep 17 00:00:00 2001 From: giarf Date: Tue, 24 Mar 2026 15:51:42 -0300 Subject: [PATCH] add files --- .DS_Store | Bin 0 -> 6148 bytes T1/.DS_Store | Bin 0 -> 6148 bytes T1/Makefile | 84 +++++++++ T1/README.txt | 92 +++++++++ T1/suma.c | 90 +++++++++ T1/suma.c.plantilla | 15 ++ T1/suma.h | 4 + T1/suma.manual.bin | Bin 0 -> 34256 bytes T1/suma.manual.san | Bin 0 -> 75072 bytes T1/suma.manual.san.dSYM/Contents/Info.plist | 20 ++ .../Contents/Resources/DWARF/suma.manual.san | Bin 0 -> 21928 bytes .../Relocations/aarch64/suma.manual.san.yml | 5 + T1/suma.manual.thr | Bin 0 -> 53312 bytes T1/suma.manual.thr.dSYM/Contents/Info.plist | 20 ++ .../Contents/Resources/DWARF/suma.manual.thr | Bin 0 -> 20620 bytes .../Relocations/aarch64/suma.manual.thr.yml | 5 + T1/test-suma.c | 176 ++++++++++++++++++ 17 files changed, 511 insertions(+) create mode 100644 .DS_Store create mode 100644 T1/.DS_Store create mode 100644 T1/Makefile create mode 100644 T1/README.txt create mode 100644 T1/suma.c create mode 100644 T1/suma.c.plantilla create mode 100644 T1/suma.h create mode 100755 T1/suma.manual.bin create mode 100755 T1/suma.manual.san create mode 100644 T1/suma.manual.san.dSYM/Contents/Info.plist create mode 100644 T1/suma.manual.san.dSYM/Contents/Resources/DWARF/suma.manual.san create mode 100644 T1/suma.manual.san.dSYM/Contents/Resources/Relocations/aarch64/suma.manual.san.yml create mode 100755 T1/suma.manual.thr create mode 100644 T1/suma.manual.thr.dSYM/Contents/Info.plist create mode 100644 T1/suma.manual.thr.dSYM/Contents/Resources/DWARF/suma.manual.thr create mode 100644 T1/suma.manual.thr.dSYM/Contents/Resources/Relocations/aarch64/suma.manual.thr.yml create mode 100644 T1/test-suma.c diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..682b0c7d8dd49aebbe86a935e2652dea888b3efb GIT binary patch literal 6148 zcmeH~Jr2S!425mzfW*>~F$)La1`&c2zyT02B6UFQIXcfj3>0Qmp=ZhdVmDUXH#D_~ z==O2li1Z?|fE#6PVPuMYCP&#^@0Z(o7;aWbnuaTi24~S{uX9;B36l3oa=bgi?&XT#EPM!7v~50GKFxLCnDHk3f*Y Kf+_H$3cLcDOLaN` literal 0 HcmV?d00001 diff --git a/T1/Makefile b/T1/Makefile new file mode 100644 index 0000000..f946123 --- /dev/null +++ b/T1/Makefile @@ -0,0 +1,84 @@ +# Para revisar las opciones de compilacion y ejecucion, +# ingrese en el terminal el comando: make +# +# + +PROB=suma + +TEST=test-$(PROB) +HEADER=$(PROB) + +SHELL=bash -o pipefail + +INCLUDE= +CFLAGS=-Wall -Werror -std=c18 $(INCLUDE) +#CFLAGS=-Wall -Werror -pedantic -std=c18 $(INCLUDE) +LDLIBS=-lm -lpthread + +MAK=make --no-print-directory + +readme: + @less README.txt + +$(PROB).bin $(PROB).bin-g $(PROB).bin-san $(PROB).bin-thr: $(PROB).c $(TEST).c $(HEADER).h + +run-san: $(PROB).bin-san + @if grep -P '\t' $(PROB).c ; then echo "Su archivo $(PROB).c contiene tabs. Reemplacelos por espacios en blanco!" ; false ; else true; fi + ./$(PROB).bin-san + +run-thr: $(PROB).bin-thr + ./$(PROB).bin-thr + +run-g: $(PROB).bin-g + ./$(PROB).bin-g + +run: $(PROB).bin + ./$(PROB).bin + +ddd: $(PROB).ddd + +ddd-san: $(PROB).ddd-san + +zip: + @if grep -P '\t' $(PROB).c ; then echo "Su archivo $(PROB).c contiene tabs. Reemplacelos por espacios en blanco!" ; false ; else true; fi + @rm -f resultados.txt $(PROB).zip + @echo "Sistema operativo utilizado" > resultados.txt + @uname -a >> resultados.txt + @cat resultados.txt + @echo ==== run-san ==== | tee -a resultados.txt + @$(MAK) -B run-san | tee -a resultados.txt + @echo ==== run-thr ==== | tee -a resultados.txt + @$(MAK) -B run-thr | tee -a resultados.txt + @echo ==== run-g ==== | tee -a resultados.txt + @$(MAK) -B run-g | tee -a resultados.txt + @echo ==== run ==== | tee -a resultados.txt + @$(MAK) -B run | tee -a resultados.txt + @echo ==== zip ==== + zip -r $(PROB).zip resultados.txt $(PROB).c + @echo "Entregue por u-cursos el archivo $(PROB).zip" + @echo "Descargue de u-cursos lo que entrego, descargue nuevamente los" + @echo "archivos adjuntos y vuelva a probar la tarea tal cual como" + @echo "la entrego. Esto es para evitar que Ud. reciba un 1.0 en su" + @echo "tarea porque entrego los archivos equivocados. Creame, sucede" + @echo "a menudo por ahorrarse esta verificacion." + +%.bin: %.c + gcc -O -DOPT=1 $(CFLAGS) $^ $(LDLIBS) -o $@ + +%.bin-g: %.c + gcc -g $(CFLAGS) $^ $(LDLIBS) -o $@ + +%.bin-san: %.c + gcc -g -DSAN=1 -fsanitize=address -fsanitize=undefined $(CFLAGS) $^ $(LDLIBS) -o $@ + +%.bin-thr: %.c + gcc -g -DSAN=1 -fsanitize=thread -fsanitize=undefined $(CFLAGS) $^ $(LDLIBS) -o $@ + +%.ddd: %.bin-g + ddd $(*F).bin-g & + +%.ddd-san: %.bin-san + ddd $(*F).bin-san & + +clean: + rm -f *.o *.log *.bin* core diff --git a/T1/README.txt b/T1/README.txt new file mode 100644 index 0000000..d4d721d --- /dev/null +++ b/T1/README.txt @@ -0,0 +1,92 @@ +========================================================== +Esta es la documentación para compilar y ejecutar su tarea +========================================================== + +Se está ejecutando el comando: less README.txt + +*************************** +*** Para salir: tecla q *** +*************************** + +Para avanzar a una nueva página: tecla +Para retroceder a la página anterior: tecla +Para avanzar una sola línea: tecla +Para buscar un texto: tecla / seguido del texto (/...texto...) + por ejemplo: /ddd + +----------------------------------------------- + +Ud. debe crear el archivo suma.c y reprogramar ahí la función buscar. +Ya hay una plantilla para suma.c en suma.c.plantilla. + +Pruebe su tarea bajo Debian 13 de 64 bits. Estos son los requerimientos +para aprobar su tarea: + ++ make run-san debe felicitarlo y no reportar ningún incidente en el + manejo de memoria. + ++ make run-thr debe felicitarlo y no reportar ningún datarace + ++ make run debe felicitarlo por aprobar este modo de ejecución. + El speed up reportado debe ser de al menos 1.5. + ++ make run-g debe felicitarlo. + +Cuando pruebe su tarea con make run en su notebook asegúrese de que +posea al menos 2 cores, que está configurado en modo alto rendimiento +y que no estén corriendo otros procesos intensivos en uso de CPU al +mismo tiempo. De otro modo podría no lograr el speed up solicitado. + +Invoque el comando make zip para ejecutar todos los tests y generar un +archivo suma.zip que contiene suma.c, con su solución, y resultados.txt, +con la salida de make run, make run-g, make run-thr y make run-san. + +Para depurar use: make ddd + +Video con ejemplos de uso de ddd: https://youtu.be/FtHZy7UkTT4 +Archivos con los ejemplos: https://www.u-cursos.cl/ingenieria/2020/2/CC3301/1/novedades/r/demo-ddd.zip + +----------------------------------------------- + +Entrega de la tarea + +Ejecute: make zip + +Entregue por U-cursos el archivo suma.zip + +A continuación es muy importante que descargue de U-cursos el mismo +archivo que subió, luego descargue nuevamente los archivos adjuntos y +vuelva a probar la tarea tal cual como la entregó. Esto es para +evitar que Ud. reciba un 1.0 en su tarea porque entregó los archivos +equivocados. Creame, sucede a menudo por ahorrarse esta verificación. + +----------------------------------------------- + +Limpieza de archivos + +make clean + +Hace limpieza borrando todos los archivos que se pueden volver +a reconstruir a partir de los fuentes: *.o binarios etc. + +----------------------------------------------- + +Acerca del comando make + +El comando make sirve para automatizar el proceso de compilación asegurando +recompilar el archivo binario ejecutable cuando cambió uno de los archivos +fuentes de los cuales depende. + +A veces es útil usar make con la opción -n para que solo muestre +exactamente qué comandos va a ejecutar, sin ejecutarlos de verdad. +Por ejemplo: + + make -n sort-rv-nbits.ddd + +También es útil usar make con la opción -B para forzar la recompilación +de los fuentes a pesar de que no han cambiado desde la última compilación. +Por ejemplo: + + make -B sort-rv-nbits + +Recompilará para generar el archivo sort-rv-nbits desde cero diff --git a/T1/suma.c b/T1/suma.c new file mode 100644 index 0000000..b6368cb --- /dev/null +++ b/T1/suma.c @@ -0,0 +1,90 @@ +#include +#include + +#include "suma.h" + +enum { NTHREADS = 8 }; + +typedef struct { + int *a; + int n; + Set start; + Set end; + Set found; +} BuscarArgs; + +static Set total_combinaciones(int n) { + if (n >= (int)(sizeof(Set) * CHAR_BIT)) + return ~(Set)0; + return ((Set)1 << n) - 1; +} + +static Set buscar_rango(int a[], int n, Set start, Set end) { + if (start == 0 || start > end) + return 0; + + Set k = start; + while (1) { + long long sum = 0; + + for (int i = 0; i < n; i++) { + if (k & ((Set)1 << i)) + sum += a[i]; + } + + if (sum == 0) + return k; + + if (k == end) + break; + k++; + } + + return 0; +} + +static void *buscar_thread(void *ptr) { + BuscarArgs *args = ptr; + args->found = buscar_rango(args->a, args->n, args->start, args->end); + return NULL; +} + +Set buscar(int a[], int n) { + Set comb = total_combinaciones(n); + Set base = comb / NTHREADS; + Set extra = comb % NTHREADS; + Set next = 1; + pthread_t tids[NTHREADS]; + BuscarArgs args[NTHREADS]; + int created = 0; + + for (int t = 0; t < NTHREADS; t++) { + Set len = base + (Set)(t < (int)extra); + + args[t].a = a; + args[t].n = n; + args[t].start = next; + args[t].end = (len == 0) ? next - 1 + : (t == NTHREADS - 1 ? comb : next + len - 1); + args[t].found = 0; + + if (len != 0) + next = args[t].end + 1; + + if (pthread_create(&tids[t], NULL, buscar_thread, &args[t]) != 0) { + for (int i = 0; i < created; i++) + pthread_join(tids[i], NULL); + return buscar_rango(a, n, 1, comb); + } + created++; + } + + Set best = 0; + for (int t = 0; t < NTHREADS; t++) { + pthread_join(tids[t], NULL); + if (args[t].found != 0 && (best == 0 || args[t].found < best)) + best = args[t].found; + } + + return best; +} diff --git a/T1/suma.c.plantilla b/T1/suma.c.plantilla new file mode 100644 index 0000000..ea2a4d6 --- /dev/null +++ b/T1/suma.c.plantilla @@ -0,0 +1,15 @@ +#include +#include "suma.h" + +// Defina aca las estructuras que necesite + +... complete ... + +// Defina aca la funcion que ejecutaran los threads + +... complete ... + +// Reprograme aca la funcion buscar +Set buscar(int a[], int n) { +... complete ... +} diff --git a/T1/suma.h b/T1/suma.h new file mode 100644 index 0000000..01ee3d1 --- /dev/null +++ b/T1/suma.h @@ -0,0 +1,4 @@ +typedef unsigned long long Set; + +Set buscar(int a[], int n); + diff --git a/T1/suma.manual.bin b/T1/suma.manual.bin new file mode 100755 index 0000000000000000000000000000000000000000..af7de6d14a985396936a30b35ca08946fdb30a49 GIT binary patch literal 34256 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 + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.suma.manual.san + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/T1/suma.manual.san.dSYM/Contents/Resources/DWARF/suma.manual.san b/T1/suma.manual.san.dSYM/Contents/Resources/DWARF/suma.manual.san new file mode 100644 index 0000000000000000000000000000000000000000..d305d0fe68c1f38a1572dfee282cdbe62f046794 GIT binary patch literal 21928 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 G0QSGAfECgJ literal 0 HcmV?d00001 diff --git a/T1/suma.manual.san.dSYM/Contents/Resources/Relocations/aarch64/suma.manual.san.yml b/T1/suma.manual.san.dSYM/Contents/Resources/Relocations/aarch64/suma.manual.san.yml new file mode 100644 index 0000000..25d33d9 --- /dev/null +++ b/T1/suma.manual.san.dSYM/Contents/Resources/Relocations/aarch64/suma.manual.san.yml @@ -0,0 +1,5 @@ +--- +triple: 'arm64-apple-darwin' +binary-path: suma.manual.san +relocations: [] +... diff --git a/T1/suma.manual.thr b/T1/suma.manual.thr new file mode 100755 index 0000000000000000000000000000000000000000..f0ebe743a1e83cf338f7c5a7299525b1f026d802 GIT binary patch literal 53312 zcmeHweSB2ang5xY0Fw|xke5IR}{%Db1zWRi>|GhtqM5&1AS zw!U=>x3;SmTLQXE0=lrP+a|RwvFT4y`-14N+G;hyZk-|ieygpnnQENoZ)2i91kIF(39_z-y}QDq zf=jx*@#skM-kNRpp*qbgm9khgRYpPAL*YneDAklM@1tu>d779c)m3>;ArBbxr0YJv zFRTZut3%!}#HPy|^956$Q}n00DsP-qqfBR0q&Xjjj@KHToCsm}bdu#RT zpu65{wx;X%hLG1Jgiu{foihw)tX7pre)kBnu2+<;Ez`?a-n_>2K9{K%!A;JO%^QH2hc*qF)_Z9r6fCXtRhCxmuB$?w(nMs^<0g0gt(R#FKm5C`r@wUW zifgBlEDhP56GpZb@-o?z*?yHZ6BjXcYGKncKaw+F#4+B8KQ!(lWTMfW8C!wyXzSAj z`mEU<3VZA4ES&?rd;|s(@zI?7_^1_l2OHesTAGEY&h4+!gW);hklU{ZLc8>;-F|ny z&!dWAMbJwFAIWohcX>ULu)DI(tCJKoar!PnFD+|msPlQ;VIM+H>3UC~$~(v1&`??) z@Q1zraHzDxyTe--Xz&J0*9HQ0o?5q0_N(w#yCZesIlDYzNlBs26)l~+(1hL{MEGHB z8pb62*2DfZ#~Gqd{y=FGGSRhPA)CNabH?;p;HNFUdu%Pe<;+NSOnBwlJOV(6>8l z?1@;-(nPG>o|w*}tDQEs5WX;`t9)s~1vyZ}u-l?%7efZM$IzaQx-tyk(nK6>=k=wD8Md5l=Z_vLj5~6U&9J$?1vwAK){oe>l}9 z_)9@^IA?Y_oX5<0*^J>ruWrzsL!xKz*y}tPdwjGJM<0ywV7$Pd$U*y!dzT+vzIXV+ z8NCm7$A@9ug;{OyqtE-r_5}5vX&e6F`Kk8AjketG_`*YlH{p7|e9q%n<%fWXsflc1-yM>McWMEKf}f@!+f?iF;j2VCg;H0RV=Z!8E@wZ zn-l;W=n)@jPt3@6eJeiNo@i!bjM134D0ht%yzMsQjdb2&f_J#WJ6z!%CU{+T<3+*S ziE)pk9LF^_YiVM-jU{66t60*}#%4J{x>m)@OrH%lmBbUirms0N$=o%FMOlau|Chj{jC>+TcB#X@hQCpAEXp z`fTu?;Eg(roeD2})rh@m&L#eiknye}<6T9@J3y#l6B7FDSNnc@SG1Qf%?EVv9qH zE$+PpTY$Ig1&PHFqfp{`O4#Cu0>@_+9G_Ki{Gqht5MzwO>nwvUjtg6y5Hg-tWIV0N zI3Z-T4>24*ilK66f%Cu^vSA#&6yrD#+PRF!AshU>d=%w_Hq*|B((HT)G}X?op~f$v8}W66 zHlUsF&0yyOVdwpdogW&+&ZUZ-A5!dGs@S>U66_4#uKg0{p+=L?KX$LM^FCptM#V;r zn7533`=pNyGrp_vI^D2yNZ5I&kg-RRu}6`yQ^<%8Gwv5MIzwfNZ79c~N9-W%JOXy6 zy(f@ngFu=MnA4~eGP*$<&<2|_*x;1ijC&r%1~r4&;B|Xn+^bP+@cPoexOZyl#p51$ zyF3yDr?EuhxJlSxjlgf6g5Np?zctc+PUBjI*LgQ=aD%YHav@`-B4ec@V|iIZW9$Rw z$~Lg3xDR*UP?pF+IR-t7N15xaIalm`WQ+1NTa@?Ng3D^pHnN4RZqNp_MQH|G)CgNF zRBUnGAhy`2*y1|H7W))i)Leosz}vM@Vv%FK$9k2n;ju)K8MhY7YS8OnH5F3;zHW;bcphU63 z$V;#Rc)Ny6404S<5=WY6lJUJZHP56g6@yLx%{A)eJV6`K=epUz=bm?L=KB9L>pS;+ z!ZM$GKC$(!|4&?f=blf>`quwDWfx!n;O+Xe%Upl$xyBNq|GV9;M5m(+HjbXf?aP6s ztL7W4Kx27qKG`^VNSx;nRkX!VV4uU;_NH86|3kp)Jrk?cIsLsftk?)+io^;u@`>25 z&AHDYzjzfm4dfRm1Ws=%IK49nPA@1py`$jtf`ZeDOTY=dU2h7Uq9crthl#cMswG{0#dX*?w4c7w+K=3&Ke4rcJ1CBknWSN!JaAbzt> z@tdQH->g&oX2~V^4S2gAm$>8`H4>A9!fzf@{N^FWZ$RgM6U{d~f~OO0OHhszCJ*=d zO+DITgx&r$?DnT&$3__yLRL3u1IDL48RAotnenMn!SCKd@GDU8yH~-lK*2BRx_Ep7 zZ&#zlVw6!J^pEXvnfGNOX5N?WRB+s>;209T?W2rQ3NJsO)R=RLZxb>Cij06FW1Fw0^Y855|h!!KMVb1D}_yN5O^+E@LaCo zd4sg)XyZwRm)qnzVUs07M!6!RT#>Ov$Y5iPgF;5k1+GA=4d#n`pn5EdGbP#*gDE25->`|lGW922-1H4_cBpzdp zn1CJzJc2&q;mT#~D+w-+qX3 zNUu2B@tp6hbIOa~rF(pmLG4YAdQb13r7alO;NzDMdF8XfXgvQN)6(l0V*IpmVow*I z{Wdjj>N)Hv>UkRSnjD*Zn()lG8S`s);OfA&v8ad6(JhWiJ@kCArEyYEvp9D&H*V>X zXOP2=Ej{M>w7@tcbZc(hZ1Of1n!JvQeY}oMeY}kuP2Tnb<2k|G1m5qVOft-8(c?{h z9211h2|{L}B6Fi6bA!-lyz!*e$FZTuiDzZajshX0K*)e>IVZ<@MaDXz*LdTg)XTB1 zCro;gtZewo!>o;PiXndT=csE;A8u(J*C(^_wv^1SHPY`U7+)7Mc`TvlMuU9m)6g}raEaG~V2pNbyDH(_fDH$bFuR>#`)C=o!7U>09O^xe&x*m45okJ{f zjBq99Fsv1fN&z>v&B|vV4eGOIcV;Be9n9v6iy1md5w|fv=_Y zJx{n?rc^rQKd&p>luN>~!fVPcj+t|~DwRN~-66%vsFM?n9ts^S8aG%fa zzF)+KQ&^LKM{xnPW~^0O->0yCPnAz>rE+umrq-5@Er=($KN@MCbDJHTd&r-N7K1-I z)mUQs&l%<_;<4my=ty#6@S*dd;j@IZGp4-sUC4W&ImbM6a2vr7j+Y;7?S>x^&NH%c z4+UR%0R1nxx7NizCH#+n&H*3H_&LW;WuJmCo|d0;>{RwC{Sx*m@OHu1;LEUYk@19_ z8~ikT2=1XW?N8?3b_SoS8BKzx6K%Uuj>E5Mf63n6(i$g!Ma;y0Li_&l82nY;SI)tA zy5K{6{OBYjBFD%6*9@Bx&eCQv_$l9;idp}?N%|+7%=e}$DWllc)(o59gZnSi0lv+j z36rhqv$_%F3n)wfaSQ*!hpD_BV+ayrcnx7%z?Gv zp|`R}bJ~iyoU)cA_QCXhkz|bm{RfcMITHSmCTpCKg+0H``RGk;96#pV){Jq<2Ft|# z>p9>TLm&C<+O)-FqXhgk=TEt=dTYP^v60p^*7KfG_9|`J?4n6&c=G?pW$8kBHf#Bj}@Rl`f@d1XB3 zh0pQN9GlD6xAu*@o{vkPkDBw<_x#cP^73R*c%j`98M)!ebJKY!HZe^%=4 zAofFq}bR##n>QtC^pVRIi4OH5q~ZzHo7i1=E(6WHi~`C z^f%b$VzIIPa_(c3qzsCUusM&7&>~X!=B4mGU-h_UqI*P=4+nn0ZXO5TqIi1OI*6rBb+T2*!qweQN z8u|J840BE8K6@TI@VPoR_8bFE-OukEE%tMY`!`@e?|7`WdwJh}-qKjmGthqCg7r_| zTX+&@9oqY8KR@P}(35FDZ|RuOD!;ctXXVpkKX2~Xkcx8@LoW8cg(KiSjB_K8EA3N_ zlX7m2>w37);%oz3KST44;p`F<<-?$xvFHlpNx{>Ewy&WaUygn^;LNz&*BZy(Hr>V& z+!o`<8c%^v_dhY5aX2 z4$kGKE?4sPJVVMTq4iwU`b9eHAil?h|1dh&Iq|sx;=@?zOIKhqrM+E2|HzWxSelb_R^&!Zpjk9p68 z4^JN=^jI{`_!#{(jQ;_yPF&#!{EVOxe%dtSET?O)bzwZ3!x8j(0s8Q{{bHQa4LUF9 z7Z||aEXN9re?_@zjr|oq-;*VVeMI!^Q$+s*EA3pvdO6R}#~W{=EqREwk^N(ba9+!1 z+s_X(=hFZ@NJbgXI7d*H^Tv6BuVbzg=u3%i>SWp+Yw8imjlu6}{&Ma)(EU8t)Djhg zwG#{o;~1PE9;~f?7;K$p7@V%XrjrgQ;Fl*{ZPJJMJf;^KE$AcX5W~F;_u)XA52x-o zrg0zMC3ym{IWTC44|92~g~oS4>xT=@jW6YxxXe^=8LRliK)7sHaY2k)4Y@I_-3xHh z({Nce(eR@$`G${p^fX+w5@R{1Yp+cpT#mE0t`n}GXfACsdqNw@-f-W3?zrnGWvEX< zeG2Mqyn8a)K6ae&a~|tlpoJClQ9U_6{(tL(-X- zmrXVtG{#hiLC;V4xT|IuU(Ji2#aD#QK3Ic)LHRqM!G^deJ&d)~Rm$3)r#j-y5nS;c z#*9gz<1?`~T6fRG=4tET0K+eD$YjzW_^Z zy3vGo!qQLr{B?Zw0E4gMxvYuf`^5(0hFPwgV*EYI@KgB=_@vw)_8|chmL!h$vruHqi3h@z3Cu*&$R{n zjP+2N-cDzmlPo&ju%j}&5e`j`Q*1^sq+wjK6?`1 zA~tG8fAZfll$#s%))@RKo1MgWc(b?B_f&C@Mc*f#7l+Sa{`{T~=L*p*hghhymM6bB7+SUq#ZOXl}%ao-lleht~j=^UW0W4c#A3?43v&BQts>lpS&-!^=| z8P5V-ZM}QGjJ?{{@0kR?ubp}(fqp0R?O4zD;@|M{G^IRKDbG>L^OW)erMy@ve@Q7X zRmxvh$~P(Ho0alvrF@%G-l&vsSIU)2xmqdbDdo$Q@;IejsFWuw<;%_Tim7*}gzQ^%`w z7&a~l(&jGK(9?T|x4xk+pjCNM_DB34pSvoM!&bPpP@pd2!58L1s`Lf4kT=*Tg~a7> zeYClnyCE2;$RynNP zUFV75Re>tf%@gsG>UH(_I=@$&r|s~1yrCSnG*ZK71`Vsdp+Io4RyXj(OmNI;t@QyC zRp=Krz*_IC^M$-M5sU}H%HUqV*5D4h>+k}BR_hLh-P#xA@EK542dj*PJnkS#(87FN zb+9>@bA#7g6=^^#zW7_=4K+l(Axw!h^6{4!0wFSMpfViU5zrz4$YkJsz_QxA18UQ> zg_6EI-DK4{7npBxiuFt8X#MOF*_~#OYiD!INH56*Ne){h{mAF{1cE`YC+uEKQxQ&u z^34Rc))4dtJdp(;8t-vfSk4x^OIO4fM8CE9fN zHn&z1@rQghes7gl7x35cKPB`kM=B+gjFl|q)+-Cvgf=bOQX*)>SqV%dYmy)tm%OUH|D3Ox@a@0Q%cAF{1<2LrW>Cwla(D{Z2CZ=bz`X-{K2OS53-euYNO` z+_WT%HTW6($GdIJcsQAyl>8w1gB3Y!0}hNIzhL9neRts9t8yFLd^DH+{0w{JS5NsC z!FnOyz&F)D6hTZ2_^U#FOypCrF7|7Bw}~h9O0N>pJEksNDbxF*lwAC8-yeF_qZ(OE3#^lUbK3|=K% zg&ak0Mg9PJzKuC*k#UdbID_o8GlvVg0hva{zRr{F&ehDeYqBjrw>b6Q*cC6sDUhIp znJV(MWx12`zi<1V{h;HqEJxMY++uB69(()uZ@wkE%*J&sa#g3v8x`%WBJXO+Yp=~M zzM8Y)y*1G9L4HQ`U%|CPLq*;h`wDfi*^b;|G>OrO@5jie-!;d1p8%#*k$0d!-!JUB z#b^?Iq~Ax#cm2`i8$&#lD)RCx#Bde4#rYM~AI$^db2Zw>Bd-uLR-nw2f=^f?BSOTijq8 zoN!o+J_kO&H2k?N>(74^1oES%dGn*@a?6jJ?v)=k-7`N*dk9ud)O4TxC_)~u)4oFO z+2U&M>G{#&qMj?R_`DSJC5ko2;Pj3?>o z{WFb6{b@W?Z;jzM19_7COHmtaev+QvKht>BpT?7TrjJ*Ck?|y5jwkDx#v}S*<6VD| z@g!Z2C+nHUBl=+DEd!l?3nG)hNV*(P)-#Pqboy2`+zX;mp zgV5K4M!&U@Nnc5qp^eQ$*<`VEjwcuBgHC+nH)Np$*6kWBU@`c)ShkLc=nR3B`- zFMytDyxTw<%wHv4jwkDx#v}T;LB?AH+F9>roK+ZJ2q^II5`cjhm z6MZneBwhMny8jY=0rFtu6W!GRLjNazidlp46MZm#^2fpWiJsz5i}%H#(QnL{^b7IT zK+8v#c*(lN!wwoHl|BOX17f{%qC%gH@+4%*FX>asDVfG&0qws{Y5bBt3pDbH!RYjx zJ0?9pbyfMv9|xlsrsx_BiyqJ5zLJJC-5l|J76Xj8{~Lez2LNsdRng!h@n)U44To>cmDYPpX7 z^sQ%=PBxQxQ7=j=oz|QwpOdUV76KLm76KLm76KLm76KLm76KLm76KLm76KLm76KLm z76KLm76KLm76KLm76KLm76KLm76KLm76KLm76KLm76KLm76KLm76KLm76KLm76KLm z76KLm76KLm76KLm76KLm76Sj@BcK6+TI4gx^p2MeStfcnOeT6?jo$O4L}lh0icAGF z5nrl3DjIR2b{k&svrR+Bi_o@8WIrh#M-VMOKMf};_1=0{_?K zs?MvstE%+C4sWo!F0hkW`w=T6zPhl_uSfh4?WuKF)?p@TeX4vrg5LVfGU_9BnTdf& zSPxX|m4S%ADs+M924EHT1~apVYJJrZFsP7Fq%yOB@a_h$UhfOlyThJZeFwdB%4|BL zcP$zG4=>q2vkZS8$+NBTZf7GL?8zIbZ9V?HwhCR`Fy@p%C>(SL*)#|1{4(B+)az^E zB3@4w5pR%XS4Kh}bh!+^vKGF=it5>{pf@CH{0+%R@;;jxwf$n~`$NX8xX;$) z>>T!o+|$ru12SBkeY*&%K_$PakHHI;RNpJ=TQ#%(ps25yYSzCe>W|Db>qkYs^BS|> zMs>V+`p5%jon%(gACcNYuaXs9<7xE|P_Kq2FTVLRdc~CMGza|S@lq*?p?8F@Q0ml1 z@0s64FViAX{pK_}@yq#^Vu=#JtW$sDk0Mi|I`OM?;+OakUc@i!)SviQKrSV!6TeC) z{;irxBYcTp)=}jA@1va()rnuF6Tift>_Pmpjw0u$cX26Eo%mIH6*Y=f0X?f^1=sqt z`fk(*!hh>jQ+646xc;I}qWS!VOsaGJ6*}qvq^Qpj{IV|j?@QxX>BK)DgHT_3Po2h> zb;++~nF6Rzs4ne8cyPLyFX2mdiC>whOaEDcI>`9nOt+`ix2M(bGV7!!Py6u~%&Gd} zwE91$)qj#!e>tuG+q6240R7~Dl2#vMDxVsEQCfX{T0N3he<-c~Oj`YowED+s^>G;4 zY=UA)MQQab)9Tlx)vrsdFHfs4gG~DE7qZh=kZ(p_iHz-u-GaOtnSL8&E%L3%w;``X zUXQ#1c_Z>BXOwGReOY`6lE{ef}EbYuNrT+&OizbBZhN!gS!`o2Xt- z+pk_P_FuhkL&X{8KX;_-clff-WB+~5V}Fgqb~q4r*Xf=>eWlOu_V@yRFOHg~U+Lzl zJXH<4{WSr`59f30162_mkUil*Fy(Vs4@9HW|JAJY){r+CDy?x>27TVTVBijSs2cYR z?kaa_MZgoO$1y)tx^`|U3q|VPb3CkchdWqW9jL?kFjRVHUFq&?7lb``?({F*cIW&B z^F#i5HFtXE?pSa&r5bXLN`dqd%?{$CYIF<*74B8O2>`rFKrjJ`N&}xw>1X04zr2I*B{nKP^Ke@X( zlzrFGYhLeps`IT|o_+J9r{WWjzy0s8?ijP>(c}N{{b@({{L8}UUjEtscRS`!Eqwl^ zxf6c0>PG!s+oH4I&|Y2@zUk=n&{b>izVE%aPCqw(@lPLbdw=%PYrgr@r}jPh&+7xv z$E(}3UVr74ZT6Mxha~TM=B_)x_Pd`vxa|JfNB^tze|mm#_U+&N=Kk`@_FsMLD<6FN zz`;L0artN8nep|FUl||C`_Z-kRrwd=AJKSr + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.suma.manual.thr + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/T1/suma.manual.thr.dSYM/Contents/Resources/DWARF/suma.manual.thr b/T1/suma.manual.thr.dSYM/Contents/Resources/DWARF/suma.manual.thr new file mode 100644 index 0000000000000000000000000000000000000000..d97a073b3c8be95792acd7a3b78d87d1130b8011 GIT binary patch literal 20620 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 literal 0 HcmV?d00001 diff --git a/T1/suma.manual.thr.dSYM/Contents/Resources/Relocations/aarch64/suma.manual.thr.yml b/T1/suma.manual.thr.dSYM/Contents/Resources/Relocations/aarch64/suma.manual.thr.yml new file mode 100644 index 0000000..71e4f99 --- /dev/null +++ b/T1/suma.manual.thr.dSYM/Contents/Resources/Relocations/aarch64/suma.manual.thr.yml @@ -0,0 +1,5 @@ +--- +triple: 'arm64-apple-darwin' +binary-path: suma.manual.thr +relocations: [] +... diff --git a/T1/test-suma.c b/T1/test-suma.c new file mode 100644 index 0000000..ef3522c --- /dev/null +++ b/T1/test-suma.c @@ -0,0 +1,176 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "suma.h" + +#ifdef OPT +#define N_INTENTOS 4 +#define TOLERANCIA 1.5 +#else +#define N_INTENTOS 1 +#define TOLERANCIA 0.01 +#endif + + +// ---------------------------------------------------- +// Funcion que entrega el tiempo transcurrido desde el lanzamiento del +// programa en milisegundos + +static int time0= 0; + +static int getTime0() { + struct timeval Timeval; + gettimeofday(&Timeval, NULL); + return Timeval.tv_sec*1000+Timeval.tv_usec/1000; +} + +void resetTime() { + time0= getTime0(); +} + +int getTime() { + return getTime0()-time0; +} + +// ---------------------------------------------------- + +Set buscarSeq(int a[], int n) { + Set comb= (1<<(n-1)<<1)-1; // 2n-1: nro. de combinaciones + for (Set k= 1; k<=comb; k++) { + // k es el mapa de bits para el subconjunto { a[i] | bit ki de k es 1 } + long long sum= 0; + for (int i= 0; i=TOLERANCIA) + break; + } + if (i>=N_INTENTOS) { + fprintf(stderr, "Despues de %d intentos no obtuvo un speedup de %f\n", + N_INTENTOS, TOLERANCIA); + fprintf(stderr, "Revise la paralelizacion.\n"); + exit(1); + } + printf("test 1 aprobado: speedup >= %f\n", TOLERANCIA); + printf("\n--------------------------------------------------\n\n"); + + printf("Uno ejemplo muy grande con n=29, con solucion\n"); + int c[]= { -3, -2, 5, + 122737, -37364, 287373, 27267, 967923, -25383, 924973, -28973, + 278363, 28272, 98734, -26735, 983267, 674998, 72537, 116725, + 72537, 27263, 82739, 829276, 5383715, 675483, -28334, 38495, + 374943, 278367}; + + printf("Calculando secuencialmente 2 veces\n"); + resetTime(); + k= buscarSeq(c, 29); + tiempo_sec= getTime(); + mostrar(c, k, 29); + printf("Tiempo secuencial= %d milisegundos\n", tiempo_sec); + + printf("Calculando en paralelo\n"); + resetTime(); + int k29= buscar(c, 29); + if (k!=k29) { + printf("Solucion incorrecta:\n"); + mostrar(c, k29, 29); + printf("Debio ser:\n"); + mostrar(c, k, 29); + exit(1); + } + tiempo_par= getTime(); + speedUp= (double)tiempo_sec/tiempo_par; + printf("buscar par tiempo= %d miliseg., speedup= %f\n", tiempo_par, speedUp); + printf("No se preocupe. Es normal que la version paralela se demore\n" + "mucho mas. Pero piense por que.\n\n"); + + printf("Felicitaciones: su tarea funciona\n"); + + return 0; +} +