Saturday 25 November 2017

Spec 2006 Arm Binary Options


Tutorial: Fácil de ejecutar SPEC CPU2006 Puntos de referencia en el gem5 Simulator Parece que un buen número de personas encontraron mis artículos de 2013 en la construcción gem5 y SPEC CPU2006 benchmarks para Alpha útil Así que debido a algunas solicitudes I8217ve decidió hacer un post adicional sobre cómo obtener Los puntos de referencia SPEC y gem5 que configuró en ejecución. Este tutorial le mostrará cómo obtener los binarios SPEC CPU2006 Alpha individuales para ejecutar dentro del simulador gem5 modelando un sistema Alpha. Mi sistema host es Ubuntu Linux x86-64, pero cualquier sistema operativo similar a Unix debería funcionar de manera similar para este tutorial. Edición 21 de septiembre de 2014: Se agregaron algunos pasos más al código en spec06config. py y se corrigió ARGC en el archivo rungem5alphaspec06benchmark. sh basado en la retroalimentación de un lector. Gracias y mantener la retroalimentación que viene Editar 28 de septiembre 2014: ediciones Menores que don8217t afectar la corrección del tutorial. NOTA: Es posible que algunos de los fragmentos de código fuente que se muestran a continuación no encajen en el ancho de página y no se ajusten. Si esto ocurre, asegúrese de desplazarse hacia la derecha para ver todo el código. Los benchmarks SPEC CPU2006 vienen bien envueltos fuera de la caja con la utilidad 8220runspec8221 que facilita los sistemas de benchmarking para la mayoría de los usuarios, y ayuda a asegurar resultados válidos entre sistemas. Sin embargo, esta utilidad no funciona cuando queremos ejecutar las cargas de trabajo en el simulador por dos razones. En primer lugar, hemos cruzado los puntos de referencia para Alpha, lo que significa que no podemos probar los puntos de referencia en el sistema host usando runspec, a menos que realmente estamos ejecutando una caja Alpha (lo cual es poco probable). En segundo lugar, gem5 quiere una entrada binaria de la aplicación regular, así como algunos argumentos de línea de comandos. Para obtener estos, tienes que cavar muy profundamente en la utilidad SPEC SPEC CPU2006 y otras envolturas para ver exactamente cómo se llama cada binario. Por ejemplo, si ejecuta el benchmark 8220perlbench8221 SPEC CPU2006 directamente en su sistema host, you8217d hace algo como esto: Si observa qué runspec realmente hace aquí, eventualmente hará una llamada al binario perlbench de esta manera: Básicamente, todo lo que necesitamos hacer para obtener los puntos de referencia que se ejecutan en gem5 es de alguna manera obtener esta línea de comandos alimentados en el simulador. Esto puede ser un dolor, porque cada punto de referencia tiene un largo camino molesto, y tiene múltiples posibles conjuntos de datos de entrada. Para solucionar esto, recomiendo modificar los scripts de Python en la configuración gem5 para permitir la ejecución programática fácil de los diferentes puntos de referencia. Suponiendo que estamos ejecutando el simulador en el modo de emulación de llamada del sistema, modificaremos el script de configuración de ejemplo 8220se. py8221 para satisfacer nuestras necesidades. Básicamente, lo haremos para que pueda ejecutar gem5 con puntos de referencia SPEC CPU2006 individuales como este: Tenga en cuenta el uso de la configuración 8220spec06config. py8221. Esto no existe en la distribución gem5, por lo que tendremos que hacerlo nosotros mismos Usando su editor de texto favorito de elección (que debe ser vim D), abra el nuevo archivo de configuración que ha creado. En la parte superior, agregue la siguiente línea (no se preocupe por don8217t, crearemos spec06benchmarks. py pronto): Luego navegue hasta el punto justo después de que el script añada opciones comunes y opciones de modo de emulación de llamada del sistema: En este punto, Line para pasar fácilmente el nombre de referencia como la entrada al simulador. Ahora que tenemos la opción de línea de comandos ahora it8217s tiempo para hacer algo útil con él En algún lugar en el script debajo de la nueva opción que ha añadido, y por encima de la parte donde se establece el proceso de asignaciones de CPU, tenemos que hacer algunas básicas de decodificación de la Entrada para seleccionar el punto de referencia adecuado. En la parte de la secuencia de comandos en la que se inicializa la parte de multiprocesamiento y subprocesos, lo reemplaza por lo que es un solo proceso, un solo hilo (todos los benchmarks SPEC CPU2006 son aplicaciones sencillas de un solo hilo): Añada estas nuevas líneas al script debajo de la parte numThreads 1 : A continuación, comentar este bit de código en spec06config. py: Y comentar esto: Y añadir esto debajo de la última parte comentada: Ahora estamos hechos con spec06config. py. Let8217s crean el archivo spec06benchmarks. py. Pegue el código siguiente en 8220spec06benchmarks. py8221. El código no se ha pulido, pero funcionó para mí funcionar rápidamente. Tenga en cuenta que para cada punto de referencia hay múltiples posibles argumentos de línea de comandos (entradas). Para cada gem5 ejecutar sólo uso un punto de referencia con una entrada. Con este código, por defecto cada punto de referencia utilizará la primera entrada de referencia. Si desea utilizar uno diferente, simplemente cambie las líneas comentadas apropiadas para ese punto de referencia. También tenga en cuenta que no pude obtener todos los puntos de referencia trabajando por varias razones que me olvidé (lo hice hace más de un año). Éstos están marcados en la fuente de abajo. Probablemente puede hackear una solución rápida. Sin embargo, todavía tenemos un problema: gem5 no conoce la ruta del binario SPEC y su entrada. Lo solucioné usando un script de shell wrapper alrededor de la llamada gem5. I8217ve proporcionó el guión completo aquí. Crea un nuevo archivo donde quieras lanzar el simulador. Esto probablemente estará en el directorio raíz de la instalación de gem5. Pegue el siguiente código en 8220rungem5alphaspec06benchmark. sh8221: Con todo este código en su lugar, todo lo que debe hacer ahora es ejecutar gem5 así: That8217s it Si tiene problemas para que esto funcione, por favor no dude en responder a este mensaje. Además, si encuentras un error en este código, publícalo también para que se pueda arreglar para otros. He modificado los guiones un poco con el fin de eliminar el contenido directamente relacionados con la realización de mi investigación, por lo que puede haber dejado de lado algo importante. Si encontró esta publicación útil, por favor, comparta con otras personas que se beneficiarían. Por último, si usted tiene alguna solicitud de otros ingeniería informática y / o tutoriales relacionados con la investigación, por favor no dude en ponerse en contacto conmigo. Feliz simulando la navegación del poste hola, he construido el entorno todos por encima de las guías, pero existe un error cuando se ejecuta. Seleccionado SPECCPU2006 benchmark 8211gt bzip2 Proceso stdout archivo: /home/zhu/gem5/m5out/spec/bzip2.out Proceso archivo stderr: /home/zhu/gem5/m5out/spec/bzip2.err Archivo 82208221, línea 1, en el archivo 8220 /home/zhu/gem5/src/python/m5/main. py8221, línea 389, en filecode exec principal en el ámbito Archivo 8220 / home / zhu / gem5 // configs / ejemplo / spec06se1.py8221, línea 300, en CPUClass. Clock 82161.0GHz8217 Archivo 8220 / home / zhu / gem5 / src / python / m5 / SimObject. py8221, línea 630, en setattr 8220Class s no tiene ningún parámetro 8217s8221 (cls. name, attr) AtributoError: Class AtomicSimpleCPU no tiene ningún parámetro 8216clock8217 how to Get it work Este error parece no estar relacionado con el contenido del tutorial. No estoy seguro de dónde obtuvo la línea de código para establecer la frecuencia de reloj del CPUClass, ya que no lo veo en ningún lugar de mis archivos spec06config. py o se. py. Además, el error es correcto, ya que AtomicSimpleCPU no tiene realmente el atributo si inspecciona src / cpu / simple / AtomicSimpleCPU. py. Espero que esto ayude un poco. Hola, marca he recopiado una nueva spec06config. py de se. py, y lo han modificado. Entonces lo ejecuto en mi máquina, existe una fatal esta vez. Mi spec2006 descargado gratis de este sitio: ece. rochester. edu/ mi directorio de ejecución: 8220RUNDIRSPECDIR / benchspec / CPU2006 / BENCHMARKCODE / run / runbaserefmy-alpha.00008221 es un archivo vacío que me construí. ¿Cuál es el problema de la descarga de bzip2 can8217t ejecutar o me falta la instalación de archivos generados en el directorio de ejecución I8217m no estoy seguro acerca de los binarios SPEC de ese sitio web. Por lo que sé, la suite isn8217t libre para licenciar o descargar 8212 que usted necesita para obtener los puntos de referencia directamente de SPEC. Pienso que esto sería porqué bzip2 isn8217t que trabaja en gem5. También veo un error para su capacidad de DRAM 8212 I8217m adivinando que hay una falta de coincidencia entre la cantidad de memoria que desea simular y cuánto puso a disposición de su proceso de simulación. Para el error de capacidad DRAM, lo resolví mediante la adición 8220mem-size8192MB8221 en la línea de comandos. i tienen especificaciones oficiales, y i8217 estoy conseguir que se ejecuta en mi pregunta GEM5: Se parecía que en muchos documentos y sitios web, tienden a utilizar spec2006 bajo la ALPHA arquitectura en lugar de X86, ¿por qué Alegre oírlo ALPHA se utiliza normalmente debido Gem5 históricamente ha tenido un mejor soporte para esa ISA. Así que en este punto es conveniente para la mayoría de la gente, a menos que la propia ISA es un factor importante en su investigación. Gem5 apoyo de otros ISAs como x86 es bastante bueno ahora, sin embargo. Nuevo alumno dice: Hola MARK, Muchas gracias por tu tutorial. Yo soy nuevo aquí. Puesto que deseo la compilación cruzada para el alfa usando un sistema x86-64, puedo funcionar el binario directamente. Así que no hay ningún directorio runbaserefmyalpha.0000 y benchmarkbase. myalpha generado. Sin embargo, el código que proporcionó ir directamente al directorio y utilizar el binario como carga de trabajo. ¿Hay algún paso que omitió? Estoy atascado aquí, ¿puede ayudarme un poco cuando tenga una oportunidad. Realmente aprecio que Hola Nuevo alumno, ¿Seguiste el otro tutorial en mi blog para cross-compiling SPEC CPU2006 puntos de referencia para Alpha ISA Esto debería abordar su pregunta. Espero que ayuda Mark mark, he compilado el punto de referencia SPEC bzip2 para SPARC y he intentado ejecutarlo utilizando el método descrito anteriormente. La simulación parecía estar funcionando seleccionada SPECCPU2006 archivo de referencia 8211gt bzip2 Proceso de salida estándar: / bzip2.out archivo stderr Proceso testbzip2output: testbzip2output / bzip2.err 8216bzip2base. gcc43-64bit8217, 8216 / proj / txace / mxm084100 / spec2006sparc / benchspec / CPU2006 / 401.bzip2 / datos / test / entrada / dryer. jpg8217, 821618217 frecuencia global fijado en 1000000000000 ticks por segundo 0: system. remotegdb. listener: escucha de gDB remoto en el puerto 7000 VERDADERO información SIMULACIÓN: Introducción de la cola de eventos 0. a partir simulation8230 información: Aumento del tamaño de la pila en una página. Info: Aumento del tamaño de la pila en una página. Saliendo de la señal 5725512224000 porque el objetivo llamó exit () Pero después de esto, don8217t no veo ninguna salida habitual que genere desde el simulador GEM5 (stats. txt, config. ini). Yo también don8217t ver cualquier error también. Cualquier idea / Monir ¿Tiene la salida de la secuencia de comandos bash que establece la simulación Debe imprimir la ruta completa al directorio de salida, etc Estoy reposting una continuación de este hilo de comentario que se llevó a cabo por correo electrónico (como la publicación original fue Escuchado y no apareció en el blog originalmente). En Sáb 16 Jul, 2016 a 9:15, Monir Zaman escribió: Mark, ¿Tiene usted alguna idea de parque de pelota de la duración de la bzip2 con la entrada de prueba podría tomar para funcionar en el modo SE de GEM5 mina han estado funcionando casi 18 horas ahora y todavía sólo veo atascado en la SIMULACIÓN REAL info: Entrando en la cola de eventos 0. Iniciar la información de la simulación: Aumentar el tamaño de la pila en una página. Info: Aumento del tamaño de la pila en una página. No estoy completamente seguro de que la simulación esté funcionando en absoluto. Veo el archivo config. ini generado, pero nada en el archivo stats. txt o bzip2.run o bzip2.err (archivos vacíos). El sábado, 16 de julio de 2016 a las 2:58 PM, Mark Gottscho escribió: Echa un vistazo a la stdout de bzip (es que bzip2.run). Debería verlo obteniendo las entradas, comprimiendo, etc. Imprime el progreso ocasionalmente. No puedo decir cuánto tiempo tomaría en el modo SE, porque nunca he ejecutado una simulación precisa del ciclo hasta su finalización. Espero que puede tomar al menos una semana En un procesador Xeon E5 v3, una de mis ejecuciones bzip2 tardó unos 30 minutos, creo. Esa isn8217t incluso simulado It8217s también es posible que de alguna manera compilado el punto de referencia incorrectamente para el ISA. I8217ve tuvo problemas extraños en otros pares de simuladores / benchmark (principalmente RISC-V) donde los programas girarían para siempre. Resultó ser un desajuste entre la semántica de ISA de las versiones del simulador y del compilador que estaba usando. El viernes 22 de julio de 2016, Monir Zaman escribió: Mark, Lo siento por este correo electrónico tardío. La simulación finalmente terminó después de unas 20 horas, y conseguí los archivos que necesitaba. Tengo otra pregunta, ¿sabe si es posible apagar el predictor de saltos en el simulador GEM5 con la CPU en modo detallado SE El sábado 23 de julio de, 2016, Marcos Gottscho escribió: Estamos encantados de escuchar. Sorprendido bzip terminado que rápidamente. ¿Utilizó el modelo de CPU detallada que no conozco de una opción de configuración que hace que directamente. Puede haber una opción en algún lugar que le permite seleccionar la política de BP, que está cerca. De lo contrario, tal vez usted puede mirar el código fuente para el modelo de cpu detallada y ver cómo se implementa BP. Me imagino que isn8217t es un gran problema para volver a compilar el simulador con esa característica como comentario, esencialmente .. gummadi Vijaya Kumar dice: señor, cómo realizar la prueba SPEC SPEC 2000 y 2006 por el simulador gem5. Puede por favor enviarme los resultados de estas marcas de referencia después de correr. Mensajes recientes Comentarios recientes Archivo CategoriesSPEC CPU2006: Los cambios en la V1.1 Última actualización: Fecha: 2008-05-13 09:00:38 -0500 (martes, 13 mayo 2008) por autor: john (para comprobar posibles cambios a este documento , Consulte spec. org/cpu2006/Docs/) Introducción: Who Wants V1.1 SPEC CPU2006 V1.1 es una actualización incremental para SPEC CPU2006 V1.0. Los resultados generados con V1.1 son comparables a los resultados de V1.0 y viceversa. V1.1 tiene por objeto mejorar la compatibilidad, estabilidad, documentación y facilidad de uso. Se pretende que los cambios sean útiles para varios tipos de usuarios: Para usuarios de nuevas plataformas: Actualizaciones a 12 puntos de referencia. Principalmente para mejorar la portabilidad Para cualquier persona que lea (o produzca) un resultado: Para los investigadores y los desarrolladores: Documentación de los ganchos del monitor Investigación más fácil de fuentes alternativas o cargas de trabajo, vía la utilidad del converttodevelopment. Para probadores de sistemas grandes: Un grupo de 6 funciones para hacer la fase de configuración más rápida en sistemas grandes. Refinamientos de las características de envío y enlace y documentación ampliamente expandida de las mismas. Para los nuevos usuarios de la suite: Aclaraciones y adiciones a la documentación. Actualización de archivos de configuración de ejemplo. Para aquellos que prueban muchas plataformas: Menos reconstrucciones inesperadas La capacidad de agrupar un conjunto de binarios y su archivo de configuración asociado, para facilitar el transporte y el uso en otros sistemas. Muchas otras características tienen la intención de hacer benchmarking más fácil, más productivo y menos propenso a errores, como se resume en la tabla de contenido. Dependiendo del nivel de detalle con el que cuenta, hay aproximadamente 60 funciones nuevas, actualizadas o recién documentadas por el usuario en V1.1. Si ya ha utilizado SPEC CPU2006 V1.0 y ya tiene archivos de configuración, se recomienda que lea este documento, para evitar sorpresas durante el uso de V1.1 Entre los cambios que probablemente se verán afectados por son Cambiar para crear ubicaciones de directorio. La notificación de banderas paralelas. El ajuste automático de la fecha de la prueba. Y la adición de registros de depuración. Si aún tiene números de USUARIO, es hora de parar ahora. (Esta tabla de contenidos se desarrolla en un orden aproximado de tiempo para un usuario de la suite: se adquiere una plataforma, asegúrese de que está familiarizado con las reglas, crear los puntos de referencia, los ejecute, generar informes, y de vez en cuando utiliza los servicios públicos y otras características. ) 4. Subir líneas continuadas 6. Espacios finales en archivos de configuración Nota: los enlaces a los documentos SPEC CPU2006 en esta página web suponen que usted está leyendo la página desde un directorio que también contiene los otros documentos SPEC CPU2006. Si por alguna razón está leyendo esta página web desde una ubicación donde los enlaces no funcionan, intente acceder a los documentos referenciados en una de las siguientes ubicaciones: spec. org/cpu2006/Docs/ SPEC / Docs / (Unix) o SPECDocs (Windows) en un sistema donde se ha instalado SPEC CPU2006. El directorio Docs / en su DVD de distribución SPEC CPU2006. Nuevos sistemas compatibles Con esta versión de SPEC CPU2006, se agrega un nuevo soporte para: HP-UX 11iv1 en sistemas PA-RISC MacOS X 10.1 en sistemas PowerPC Sistemas que ya no son compatibles Con esta versión de SPEC CPU2006, se elimina el soporte para: RHAS 3r2 a 2.2.1-2.2.4 Cambios en los puntos de referencia Los siguientes cambios de referencia se realizaron en V1.1: Se agregó un nuevo indicador de portabilidad - DSPECCPUNEEDPOSIXIDS para incluir los símbolos POSIX uidt. Gidt Y modet en Windows. Tenga en cuenta que este indicador es el predeterminado para algunos compiladores de Windows. Compilar 400.perlbench en Solaris con gcc, o compiladores compatibles con gcc, usado para fallar con mensajes como debido a un cambio en la estructura de Solaris FILE. Este problema se solucionó al eliminar el código obsoleto. En virtud de V1.0 de SPEC CPU2006, si compiló 400.perlbench con gcc en ia64 / Linux, el benchmark anularía a veces anormalmente con un error de acceso no alineado, debido a un jmpbuf en algunos sistemas Linux cuya alineación violaba el ABI. Ahora puede configurar opcionalmente SPECCPUIA64GCCALIGNMENT para forzar jmpenv (en scope. h) a alinearse mejor. Directivas de línea eliminadas de c-parse. c Varios segmentos de código que estaban protegidos por if defined (SPECCPU2006) deberían haber dicho SPECCPU. Y fueron arreglados. El efecto del cambio es aumentar el grado en el que tanto los compiladores gcc como los no gcc se presentan con el mismo código souce al compilar 403.gcc. Se desactivaron las llamadas de sistema internas que establecían la prioridad de programación del sistema operativo. El efecto de este cambio es mínimo, porque cuando se ejecuta desde el arnés SPEC, se incluye la opción de línea GROMACS - nice 0, que también deshabilita estas llamadas del sistema. Para V1.0, un usuario que estudiaba 435.gromacs fuera del arnés de runspec podría haber encontrado mediciones inconsistentes si no se usó 0. Reemplazó una versión GPL de la función matemática C99 erfc con una versión de dominio público. Se agregó el nuevo indicador de portabilidad - DSPECCPUHAVEERF para que el punto de referencia utilice una función de biblioteca de sistemas erfc en lugar de la versión incluida con el punto de referencia. Este indicador es el predeterminado en algunas plataformas. Cambie el nombre de getoptinternal a getoptinternal para evitar posibles conflictos de nombres (no se supone que las funciones de usuario empiecen con subrayado). Se agregó la inclusión explícita del archivo de encabezado cstring. Se agregó la inclusión explícita del archivo de encabezado cstring en vector. templates. h Se agregaron algunos prototipos faltantes en quadrature. h y tria. h En V1.0, se escribió alguna salida a stderr. Esta salida ahora se escribe en archivos regulares. La validación de SPECs se ha ajustado para validar la nueva salida. En V1.0, aproximadamente 25.000 líneas de salida se duplicaron en el archivo de registro y en error estándar. La salida duplicada se ha eliminado de stderr. En config. h, hay una lista de plataformas que tienen ltcomplex. hgt incluido. Las plataformas adicionales ahora pueden ser acomodadas fijando - DSPECCPUNEEDCOMPLEXH. Algunos compiladores se oponen a que TRUE y FALSE se usen en este enum en parsetcommon. h: que redefine implícitamente FALSE a 0 y TRUE a 1. Aunque estos son los mismos valores que ya tenían, algunos compiladores se oponen a la redefinición. Una solución simple consiste en anular la definición de estos justo antes del enum, lo que se puede hacer mediante el establecimiento de la nueva bandera - DSPECCPUREDEFTRUEFALSE. Renombrado random. h para evitar conflictos con los encabezados del sistema. Se agregó el nuevo indicador de portabilidad - DSPECCPUNEEDIOH para incluir el archivo de encabezado io. h en Windows. Anteriormente, io. h sólo se incluyó si MSCVER fue definido por el compilador. Corregido una infracción de estándares de Fortran 90 donde dos argumentos ficticios asociados fueron definidos durante la ejecución de un subprograma. Tenga en cuenta que esta actualización utiliza la misma corrección que WRF versión 2.2. (481.wrf se basa en WRF versión 2.1). En un poco más de detalle: hay una subrutina en moduleblysu. F90 que se denomina en violación del estándar Fortran sobre sobreposición variable. La tridin de rutina tiene tres variables (cu, r1, r2) que se pasan en los mismos parámetros que (au, a1, a2) en ambas llamadas. El nuevo código ha solucionado este problema realizando copias de las versiones de sólo lectura de los parámetros duplicados antes de la llamada. Se agregó la inclusión explícita del archivo de encabezado cstring. Múltiples cambios de portabilidad para usar con el compilador PGI C en Windows. Se agregaron varios cambios de portabilidad para usar con el compilador ParallelNavi en Solaris. Para usar, necesitará establecer - DSPECCPUPARANAVI Ejecutar reglas de cambios Explicar una filosofía de estimaciones en la regla 1.6. Y aclarar el marcado de estimaciones en la regla 4.8. Tweak regla 2.1.1 para aclarar que la regla está discutiendo el código fuente de referencia. Aclarar la documentación del estado del sistema y la afinación, en las reglas 3.1.2. 4.2.3 (párrafos b y g), y 4.2.4 (párrafos f, g). Agregue la regla 3.2.5 para la configuración en paralelo y la prueba paralela Desarrolle la regla 4.2.3 sobre la paralelización automática y la generación de informes de la misma. Añada la nueva regla 4.2.6 con respecto a la revelación de configuraciones para sistemas construidos por el usuario. En la regla 4.3.2 se permiten conversiones en ambas direcciones entre métricas SPECspeed y métricas SPECrate de 1 copia. En la regla 4.6 se observa que una divulgación requerida se considera información pública. Construyendo referencias Construya directorios separados: Los benchmarks ahora se construyen en directorios denominados benchspec / CPU2006 / nnn. benchmark / build / build. (O, en Windows, benchspecCPU2006nnn. benchmarkbuildbuild.), En lugar de debajo del subdirectorio de ejecución de referencias. El cambio está destinado a facilitar la copia, copia de seguridad o eliminación de directorios de compilación y ejecución separados entre sí. (También puede facilitar el diagnóstico de problemas en algunas situaciones, ya que su hábito de eliminar todos los directorios de ejecución ya no destruirá la evidencia esencial 10 minutos antes de que el desarrollador del compilador diga Esperar - lo que sucedió exactamente en el tiempo de construcción). Si prefiere el comportamiento V1.0, puede volver a él estableciendo buildinbuilddir en 0. Ahora puede agrupar un conjunto de binarios y su archivo de configuración asociado, para facilitar el transporte y el uso en otros sistemas. ADVERTENCIA: Aunque las funciones para crear y usar paquetes están diseñadas para que sea más fácil ejecutar SPEC CPU2006, el probador sigue siendo responsable del cumplimiento de las reglas de ejecución. Y, por supuesto, tanto los creadores como los usuarios de paquetes son responsables de cumplir con las licencias de software aplicables. Paralelo construye en Windows también: Los usuarios de los sistemas de Microsoft Windows ahora pueden utilizar varios procesadores para hacer compilaciones paralelas, estableciendo makeflags. Por ejemplo: Esta característica ha trabajado con las pruebas de CPU SPEC en Unix durante muchos años lo que es nuevo en CPU2006 V1.1 es la capacidad de utilizarlo en Windows. Tenga en cuenta que solicitar una compilación en paralelo con makeflags - j N hace que se utilicen varios procesadores en el momento de la creación. No tiene ningún efecto sobre si se utilizan varios procesadores en tiempo de ejecución y, por lo tanto, no afecta a cómo informar sobre el paralelismo. Rebuilds inesperados reducidos: En V1.0, las herramientas eran mucho más propensas a desencadenar las reconstrucciones automáticas de los binarios de referencia que en la V1.1, debido a que las opciones no reconocidas (por ejemplo, una CXXOPTIMZIE o una opción definida por el usuario como MYOPTS) se pasaría a specmake. Y las herramientas no tenían manera de saber qué specmake hizo con tales opciones. Ahora, las herramientas de registro sólo lo que es realmente utilizado por specmake. Más las opciones que se envían al shell (por ejemplo, vía fdopre0). Con esta grabación más cuidadosa, los cambios en los archivos de configuración no activan las reconstrucciones a menos que afecten realmente al binario generado. Ejecución de Parámetros Configuración Paralela: Para ciclos reportables, puede ser necesario un tiempo considerable durante la fase de configuración, ya que las herramientas escriben directorios de ejecución para cada copia y validan que los binarios de referencia obtengan las respuestas correctas para las cargas de trabajo de prueba / tren no temporales. SPEC CPU2006 V1.1 ofrece varias características nuevas para permitir que estas operaciones se completen más rápidamente haciendo opcionalmente más operaciones en paralelo: parallelsetup. Prueba paralela Parallelsetuptype. Parallelsetupprefork. Posicionamiento en el benchposts. Y postsetup. Durante la prueba de V1.1, se observó un servidor muy grande (con más de 600 hwthreads) para completar la fase de validación binaria aproximadamente 8 veces más rápido usando paralleltest y la fase de configuración del directorio de referencia más de 2 veces más rápida con parallelsetup. El tiempo neto ahorrado en este servidor muy grande era más de 10 horas. Su kilometraje puede variar: Los efectos de estas opciones son mucho menos pronunciados en servidores pequeños. Los efectos se ven fuertemente afectados por la configuración del disco. Pedirle a su sistema de disco que haga más de lo que puede manejar puede hacer que su fase de configuración sea más lenta, no más rápida. Por ejemplo, pedir a un disco con un solo brazo actuador para hacer una configuración paralela de 30 copias puede hacer que el disco pase la mayor parte de su tiempo buscando. Al considerar las opciones de diseño de disco, tenga en cuenta que las reglas de ejecución requieren el uso de un único sistema de archivos. Tenga en cuenta que estas características de configuración (parallelsetup, paralleltest, parallelsetuptype y parallelsetupprefork) controlan el paralelismo durante la fase de preparación para ejecutar los puntos de referencia, no las ejecuciones reales. Parámetro Auto Paralelo: Sí / No Punto base de referencia y copias - cambio de comportamiento: Si selecciona basepeak1 para un punto de referencia individual, el número de copias en pico se verá forzado a ser el Igual que en base. Tenga en cuenta que en SPEC CPU2006 V1.0, podría establecer basepeak para un punto de referencia, y aún cambiar el número de copias en pico esto se consideró un error. Si desea ejecutar la misma sintonía tanto en base como en pico, al cambiar el número de copias, tendrá que crear dos binarios con los mismos conmutadores de compilador. Enlace por punto de referencia: La lista de enlace puede ahora diferir en una base por punto de referencia en pico. Permitir esta diferencia fue visto como una conveniencia, ya que las reglas de ejecución ya permiten que el comando submit difiera en una base por punto de referencia en pico. La opción de archivo de configuración PreENV permite establecer variables de entorno antes de ejectuion de runspec. Supervisión en tiempo de ejecución: Los ganchos de monitor han sido una característica poco conocida del conjunto de herramientas de la CPU SPEC durante muchos años. Se describieron por primera vez en el artículo de ACM SIGARCH SPEC CPU2006 Benchmark Tools y ahora se describen en monitors. html. Los ganchos para monitores permiten a los usuarios avanzados instrumentar la suite de diversas maneras. SPEC puede proporcionar sólo un soporte limitado para su uso si los monitores rompen archivos o procesos que la suite espera encontrar, debe estar preparado para hacer un trabajo de diagnóstico significativo por su cuenta. SPECUSERNUM ya no se reconoce: El campo SPECUSERNUM fue obsoleto en V1.0 de SPEC CPU2006, a favor de SPECOPYNUM. SPECUSERNUM ya no se reconoce en V1.1. No se imprime ningún mensaje de error. Si todavía tiene números de usuario al acecho en su archivo de configuración, hágalos en números de copia, por favor. Informes Auto Paralelo - cambios para manejar casos comunes: Si los benchmarks se optimizan automáticamente para usar múltiples hilos, núcleos y / o chips en tiempo de ejecución, el probador debe indicarlo en el informe como Auto Paralelo: Sí. Para V1.0, A veces era difícil asegurar que los informes eran precisos, en parte porque puede haber múltiples fuentes de paralelismo en tiempo de ejecución (como se describe en las reglas de ejecución). Con SPEC CPU2006 V1.1, el método V1.0 de rellenar el campo anterior, swautoparallel. Ha sido retirado, y se han introducido tres nuevas características para reflejar mejor estas fuentes de paralelismo. Al escribir un archivo de banderas, el atributo de indicador paralelo debe establecerse para los indicadores del compilador que hacen que los binarios sean multihilo. A continuación, cuando se ejecuten binarios que utilizan esos indicadores, el tipo de informe se mostrará como Auto Paralelo: Sí. El campo de archivo de configuración swparallelother debe ser establecido cuando hay otras fuentes de paralelismo (no compilador). Un campo de solo archivo, swparalleldefeat. Puede utilizarse para indicar que, a pesar de cualquier otra configuración, un sistema probado se ha visto forzado a ejecutar en un modo de subproceso único (por ejemplo, al quitar todos los procesadores excepto uno). La intención es que el caso más común se maneje automáticamente: Comúnmente, las herramientas de SPEC utilizarán (i) para determinar automáticamente si la ejecución es paralela. Para este caso, no será necesario (ii) y (iii). Si su fuente de paralelismo no es visible para el conjunto de herramientas SPEC, puede establecer (ii). Raramente, puede tomar una pila de software que parece ser paralela, pero explicar con (iii) por qué no lo fue. En general, la configuración del campo Paralelo Automático en los informes se puede pensar como si se derivaran de esta lógica: o para el beneficio de los lectores que piensan en FORTRAN, es como si la derivación fuera: Rellenar las hojas de cálculo de tus ejecuciones, probablemente no deberías hacer cortar / pegar archivos de texto obtendrás datos más precisos usando --outputformat csv. La salida V1.1 CSV ahora tiene un formato que incluye mucha más información en los otros informes. Todas las horas de ejecución se incluyen ahora, y los tiempos de ejecución seleccionados se enumeran por separado. Las banderas utilizadas también se incluyen. Aunque los detalles de las nuevas funciones no se muestran en la documentación, debe explorarlas, sacando el nuevo CSV para una prueba. Se espera que usted encuentre el formato V1.1 más completo y más útil. Reporte de indicadores: varios archivos admitidos, orden de indicadores conservados, legibilidad de informes Hay varios cambios en la generación de informes sobre banderas de compilador: ahora puede formatear un único resultado utilizando varios archivos de banderas. Esta función está diseñada para facilitar que varios resultados compartan lo que se debe compartir, mientras se separa lo que debe separarse. Los elementos comunes (como una versión determinada de un compilador) se pueden colocar en un archivo de indicadores, mientras que los elementos que difieren de un sistema a otro (como las notas de la plataforma) se pueden mantener por separado. Sugerencias sobre el uso de esta función se pueden encontrar en flag-description. html. El reportero de la bandera ahora hace un mejor trabajo de informar banderas en el mismo orden en que aparecieron en la línea de comandos. El reporte se ha reorganizado en un intento por mejorar la legibilidad: En la sección Banderas de optimización, el informe ya no imprime frases tales como puntos de referencia Fortran (excepto como se indica a continuación): porque los lectores pueden no recordar qué puntos de referencia están en Fortran. En su lugar, se enumeran todos los puntos de referencia de Fortran y si algunos utilizan los mismos indicadores que otros, ese hecho se anota en línea y no en la parte superior de la lista. Dentro de la sección Banderas de portabilidad, los puntos de referencia aparecen en orden por número, en lugar de ordenados por lenguaje. Cuando el reportero detecta que la base y el pico son suficientemente diferentes entre sí (p. Ej., Diferentes compiladores o diferentes opciones de portabilidad), el informe banderas está ordenado a poner toda la información de base en primer lugar, Los gráficos se han cambiado para reducir la cantidad de sombreado, y para reducir la pintura de otros píxeles que no eran esenciales para los datos que se presentan (con una punta del sombrero a la noción de Profesor Tuftes de reducir chartjunk, o disculpas, dependiendo de la opinión de los lectores Del cambio). Los nombres de los informes han cambiado: En CPU2006 V1.0, los informes finales tenían nombres de la forma, por ejemplo, CINT2006.003.ps. CINT2006.003.txt. CFP2006.022.pdf. Etcétera. La forma de los nombres de archivo ha cambiado ahora por ejemplo, CINT2006.003.ref. ps. CINT2006.003.ref. txt. CFP2006.022.ref. pdf. Hay dos razones para este cambio: Para CPU2006, todas las ejecuciones reportables utilizan una carga de trabajo denominada ref, pero esto no es necesariamente cierto para otros puntos de referencia que utilizan el mismo conjunto de herramientas. La designación de la carga de trabajo en el nombre de archivo reduce la posible ambigüedad. Si selecciona las cargas de trabajo de prueba o de tren (con el modificador --size), los archivos de salida para V1.0 ya estaban etiquetados con el designador de carga de trabajo, este cambio hace que ref coincida con los otros dos. Note: For V1.0, a reportable run would generate three. rsf files: CPU2006.nnn. test. rsf. CPU2006.nnn. train. rsf. and CPU2006.nnn. rsf. For V1.1, for a reportable run, you will see only CPU2006.nnn. ref. rsf. You wont see CPU2006.nnn. test. rsf or CPU2006.nnn. train. rsf unless you say --size test or --size train in your runspec command. Seconds are reported with more digits: Background: For certain values, the SPEC tools print 3 significant digits. This is intentional. For example, if one system has a SPECintrate2006 performance of 1234.456 and another has a SPECintrate2006 performance of 1229.987, it is arguable that the performance of these systems is not materially different. Given the reality of run-to-run variation (which is, sometimes, on the order of 1), it makes sense to report both systems SPECintrate2006 as 1230. Although there is agreement that it is acceptable to round SPECs computed metrics to 3 significant digits, it has been noted that the argument is weaker for rounding of original observations . In particular, if we wish to acknowledge the reality of run to run variation, then it seems reasonable to report a time of 1234.456 seconds using an integral number of seconds (1234), rather than rounding to the three significant digits, which in this case would be rounding to the nearest 10 seconds (1230). Change made: Ever since the release of V1.0 of SPEC CPU2006, results posted on SPECs web site (such as the HTML, PDF, and text formats) have used 3 significant digits for computed metrics, and seconds larger than 1000 have been reported as an integral number of seconds. As of V1.1, reports produced on your own test systems now behave the same way. The Submission Check report is now automatically included in the outputformat list when using rawformat . This change was made because the typical use of rawformat is to create final (submission quality) reports. Even if you dont plan to submit your result to SPEC, the checks that are done by Submission Check can help you to create reports that are more complete and more readable. The testdate is now automatically set from the system clock, and you should not set it yourself. New Utilities Features Convert to Development: In order to assist with compliance with the run rules (so that results are meaningful and comparable), the SPEC CPU tools perform various checks to ensure that benchmark code, workloads, and tools match the original distribution. Sometimes, though, researchers or developers may want to work in an environment without these checks, for example, when modifying code to add performance instrumentation. Prior to V1.1, doing so typically required that you abandon the tools. With V1.1, you now have another choice: you can continue using the SPEC supplied toolset in a development sandbox, via the converttodevelopment utility. Dump alternative source: dumpsrcalt is a utility which shows you the content of src. alts The index utility remains UNSUPPORTED, but is now documented for the first time Make alternative source: makesrcalt is a utility which is used to create packages with newly developed alternative sources. This utility is ehanced in, and is documented for the first time in, V1.1. ogo top: If you type ogo without any parameters, or if you type ogo top. the command sets your current directory to GO instead of to SPEC . The portprogress utility is documented now. The specrxp utility validates flags files. It is called automatically, or you can call it directly if you wish. SPECspeed metrics from SPECrate test: Using rawformat, you can now convert a 1-copy SPECrate result to a SPECspeed result. Other New and Changed Tools Features Benchmark lists and sets: Two formerly undocumented features are now documented: your config file can reference benchmark lists and sets. Set references use the various bset files that are found SPEC/benchspec/CPU2006 or SPECbenchspecCPU2006. If you are a user who already has noticed this feature, please note that the definitions of the bsets have changed, and the number of bsets has been reduced. Debug logs. Failed runs now leave behind additional detail, in files such as CPU2006.001.log. debug. Temporary files are also left behind after a failed run. If you are managing disk space on a tight budget, youll need to adjust your cleaning methods . Keeping temporaries: If you are having trouble debugging your test setup (for example, if your new submit command or paralleltest option is failing), you may want to try the new keeptmp feature. When this option is set, the above-mentioned debug log is kept, along with the various temporary files that it mentions. If you leave keeptmp at its default setting, temporary files will be automatically deleted after a successful run. If you are managing disk space on a tight budget, and keeping temporaries, youll almost certainly need to adjust your cleaning methods . submit lines continued . It is now possible to append a numeral to submit lines, to continue your submit commands over several lines. This feature is intended to improve the readability of your config file when using the submit feature. Submit notes : The tools will now automatically insert a section with notes on your submit command for runs that use submit. You can customize the section. Trailing spaces are now stripped in config files, unless preceded by a backslash, as described in the section on whitespace . Documentation Updates Documentation has been added for the new features mentioned in this document. Most of the changes are linked from the descriptions above. A few items might not be immediately obvious from the above links, and are called out here: A new chapter About Alternate Sources was added. A new section on automatic rebuilds suggests a way to test whether proposed changes would force a rebuild (without actually doing the build). More examples are provided for how to specify a bind list, including use of a here document. Explain that you are allowed to change the feedback options. and show how to find out the default options. Provide a couple of examples of fdo modification . The discussion of free form notes for readers has been substantially expanded. The documentation now tells you what happens with macros that arent defined if you try to use them. All options that affect runspec are described together. In V1.0, there were two tables, one for the options that could be mentioned either on the command line or in the config file, and a separate table for options that can only be mentioned in a config file. A sidebar about quoting was added, to try to help reduce confusion when you are trying to ensure that variables are interpreted by the correct software. The documentation of log files now suggests some useful search strings that can help you as you try to find your way through a log. The documentation of submit was rewritten and expanded. Flag file types have been clarified, using an example that points to the three files for result 00001, as posted at spec. org. A complete example is provided to show how you can edit a flags file and use rawformat to incorporate it. A Recommended Practices section has been added. The discussions of replacement of example text - both ltexamplegt and ltexreplacementgt - has been considerably expanded to explain the difference between the two, and examples of their use are shown. The description of directory sharing via outputroot now starts with a simple summary of the steps. More details are given about --review . The documentation now describes the run order for reportable runs. The output format subcheck is explained. The description of --update now explains that additional items might be updated, not just your flags files. Updated Feature Index These user-visible features are new, updated, or newly documented for SPEC CPU2006 V1.1:SPEC benchmarks SPEC 2000 (spec2k) To run SPEC 2000 binaries on gem5 you can use the gem5 specific cpu2000 python package. cpu2000 Package The cpu2000 python package defines workload classes which represent various benchmarks from the SPEC 2000 CPU suite. These take the ISA, operating system, and desired input set as parameters. The following example is from tests/long/00.gzip/test. py. This creates a workload representing the gzip log spec2000 benchmark compiled for alpha/tru64 with the smred input set and assigns it to root. system. cpu. Workloads created from this package expect to find their binaries and input files in the following two directories, respectively. Syscall Emulation Mode Command Lines If you would like to run SPEC2K using syscall-emulation mode, a good reference for the correct command line options can be found here: (Note: these example command lines arent for reduced/minimized input sets.) If you are unable to use the cpu2000 package, you can still set up and run binaries as you normally would. To run a statically-linked ALPHA eon binary with se. py, you could use the following command line: SPEC 2006 (spec2k6) We need to get bits of info from SPEC2006benchmarks and commit some of the code mentioned there.

No comments:

Post a Comment