sort
-
ordene numéricamente un conjunto de ficheros
numéricos (para ello use la opción
-g
de sort ) produciendo como salida un unico fichero
ordenado.
El granjero mezclará los vectores ordenados (opción -m
de sort)
devueltos por los trabajadores.
El código muestra una posible versión de la función de
combinación:
sub combineFunction { $_[0] = `echo -n '$_[1]' | sort -m -g - /tmp/sorted.dat`; open(SORTED, ">/tmp/sorted.dat"); print SORTED $_[0]; close(SORTED); }En una primera versión puede asumir - si lo desea - un sistema de archivos compartido. Realice una segunda versión en la que no asuma la existencia de NFS: el fichero o vector a ordenar deberá ser transferido al disco del trabajador. Para ello amplíe
farm
con la capacidad
de transferir los ficheros de un directorio local a directorios remotos.
Haga perldoc -f rand
para obtener información sobre la función de
generación aleatoria de números. El siguiente programa puede
ser usado para generar los datos:
!/usr/bin/perl -w # Ej: # create_data.pl 5 data/data 500 5 6 7 8 9 use strict; my $numFich = shift || 3; my $prefix = shift || 'data'; my $max_val = shift || 10000; die "Uso: $0 num_fich prefijo Max len1 len2 ... lenN\n" unless (@ARGV == $numFich); { local $" = "\n"; for(my $i = 0; $i < $numFich; $i++){ my @nums = map { int (rand($max_val)) } 1..shift; open F,"> $prefix$i.dat"; print F "@nums"; close(F); } }
Casiano Rodríguez León