Spelling suggestions: "subject:"multithreaded"" "subject:"threading""
31 |
Estudio de detección y amortización de contención sobre la interfaz de red en sistemas Linux en escenarios de concurrencia sobre máquinas multicoreBlasco Valencia, Sebastián Ramón January 2016 (has links)
Magíster en Ciencias, Mención Computación / Ingeniero Civil en Computación / La proliferación de sistemas con múltiples núcleos de procesamiento ha transformado la aplicación de técnicas de programación paralela en uno de los tópicos más estudiados en los últimos años, ello en pos de mejorar los rendimientos generales de cualquier operación. Una aplicación práctica de dicho enfoque es en el procesamiento de requerimientos DNS, los cuales han evidenciado un gran aumento de la mano del desarrollo de la Internet y la masificación de distintos tipos de dispositivos que demandan conectividad, y que por sus características son un buen candidato a un enfoque de procesamiento paralelo. Sin embargo, distintas investigaciones han revelado que la aplicación de técnicas multithreading per se no son una estrategia que garantice un escalamiento en los resultados.
Distintas empresas de carácter global (como Google, Facebook y Toshiba) así como investigaciones locales (de la mano de NIC Chile) han reconocido la existencia de este problema, reiterando responsabilidades a los Internet Sockets provistos por el kernel de Linux, los cuales al ser expuestos a un consumo concurrente degradan su capacidad de consumo de datos y rendimiento general, aún cuando existe poder de cómputo excedente. Así estas empresas y otros trabajos de investigación han planteado varias hipótesis teóricamente razonables para explicar dicho comportamiento pero sin concretar las mismas en términos experimentales que permitan confirmarlas o desmentirlas.
La presente investigación plantea un estudio experimental del caso de los Sockets UDP que combina técnicas de profiling y testing de distinto nivel, a fin de verificar las principales sospechas vigentes que den explicación al problema en cuestión, reunidas en 3 líneas de trabajo: Problemas de distribución de carga, degradación del rendimiento por mecanismos de bloqueo y problemas de manejo de caché y defectos de contención de recursos. En la misma línea, se ilustra el impacto de fenómeno de contención de recursos en un escenario concurrente y su repercusión en los canales de comunicación en el procesamiento de datos en arquitecturas modernas multiprocesador como la estudiada. Es fruto de este trabajo un veredicto por cada estudio que concluya explicando las características inherentes a los Internet Sockets que expliquen su mal desempeño, bajo los distintos análisis efectuados.
Posteriormente, la investigación se traslada a estudiar la técnica denominada reuseport, un desarrollo de ingenieros de Google que plantea una solución al problema presentado y que promete mitigar el efecto negativo causado por el uso de multithreading en el contexto estudiado. Así también, se repasan aspectos como el rendimiento de este enfoque, y ciertas debilidades del mismo.
Finalmente, es producto del presente trabajo el planteamiento e implementación de una solución propia al problema que, inspirado en el diseño de reuseport e implementado como un módulo del kernel, provee un mecanismo de distribución de paquetes que permite optar a mejoras de desempeño en el procesamiento de los mismos usando técnicas de procesamiento paralelo clásicas. Una solución que --en su configuración estándar-- provee un rendimiento competitivo a reuseport, pero que gracias a ser ampliamente configurable permite postular a mejores resultados que reuseport en contextos no uniformes de distribución de paquetes.
|
32 |
Using cluster module in Node.js for increased performanceJohansson, Eric January 2021 (has links)
A system running cost calculations for construction project items in Node.js needs improvement. The solution should preferably be implemented within the Node.js environment. Optimization of the application requires improving the function code to decrease run time. Other technical solutions were also examined. Through a literature survey, suggestions for solutions to improving system performance were found. The cluster module in Node.js was tested as the technical solution for improving performance. The solutions managed to lower execution time of the prototype by 50%. Showing that multithreading on Node.js is a viable solution for improving processing-heavy applications.
|
33 |
Webový systém pro generování pojistných předpisů v makléřské společnostiKubišta, Jakub January 2019 (has links)
The thesis describes the creation of a system for generating insurance invoices sent through billing to individual clients of company Allrisk, a.s. The theoretical part of the document introduces the current concept of the company’s information system and a related existing application. This part of the thesis includes the reasons for creation, used principles and technology selection for the mentioned application. The practical part is about the application design and implementation. The thesis also includes discussion about testing, evaluation of results, management of anticipated risks and potential extensions.
|
34 |
Finding Data Races in Software Binaries with Symbolic ExecutionJackson, Nathan D. 27 May 2020 (has links)
No description available.
|
35 |
Performance Evaluation of Digital Image Processing on the Web using WebAssemblyNyberg, Christoffer January 2023 (has links)
JavaScript has been the de-facto standard programming language for Web browsers for some time. Although it has enabled the interactive and complex web pages we have today, it has long been characterized by performance issues. A promising new technology, WebAssembly, aims to enable near-native performance on the Web. WebAssembly is a binary instruction format designed as a compilation target for programming languages like C/C++. This allows developers to deploy their applications for execution in a Web browser environment. Previous benchmarks have examined the performance of WebAssembly and observed a varying performance slowdown of 10% to around 55% slower than native. Recent additions to the WebAssembly standard, such as the support for SIMD instructions and multithreading, enables even greater performance and new benchmarks need to be constructed. This thesis explores the performance implications of these new features by applying them in the domain of digital image processing, which is particularly suited for such optimizations. The OpenCV library was used to construct two benchmark suites, one running natively and one running in two different Web browsers using WebAssembly. The results of the benchmarks indicate that, although in some cases performance approached native performance, the mean slowdown was approximately double compared to native code.
|
36 |
Vcluster: A Portable Virtual Computing Library For Cluster ComputingZhang, Hua 01 January 2008 (has links)
Message passing has been the dominant parallel programming model in cluster computing, and libraries like Message Passing Interface (MPI) and Portable Virtual Machine (PVM) have proven their novelty and efficiency through numerous applications in diverse areas. However, as clusters of Symmetric Multi-Processor (SMP) and heterogeneous machines become popular, conventional message passing models must be adapted accordingly to support this new kind of clusters efficiently. In addition, Java programming language, with its features like object oriented architecture, platform independent bytecode, and native support for multithreading, makes it an alternative language for cluster computing. This research presents a new parallel programming model and a library called VCluster that implements this model on top of a Java Virtual Machine (JVM). The programming model is based on virtual migrating threads to support clusters of heterogeneous SMP machines efficiently. VCluster is implemented in 100% Java, utilizing the portability of Java to address the problems of heterogeneous machines. VCluster virtualizes computational and communication resources such as threads, computation states, and communication channels across multiple separate JVMs, which makes a mobile thread possible. Equipped with virtual migrating thread, it is feasible to balance the load of computing resources dynamically. Several large scale parallel applications have been developed using VCluster to compare the performance and usage of VCluster with other libraries. The results of the experiments show that VCluster makes it easier to develop multithreading parallel applications compared to conventional libraries like MPI. At the same time, the performance of VCluster is comparable to MPICH, a widely used MPI library, combined with popular threading libraries like POSIX Thread and OpenMP. In the next phase of our work, we implemented thread group and thread migration to demonstrate the feasibility of dynamic load balancing in VCluster. We carried out experiments to show that the load can be dynamically balanced in VCluster, resulting in a better performance. Thread group also makes it possible to implement collective communication functions between threads, which have been proved to be useful in process based libraries.
|
37 |
Design and Implementation of a Multithreaded Associative SIMD ProcessorSchaffer, Kevin 30 November 2011 (has links)
No description available.
|
38 |
IMPROVING SIMULATION TIME USING MULTITHREADING IN FREQUENCY EXTENDED VHDL-AMSSRINIVASAN, RAGHURAM 17 April 2003 (has links)
No description available.
|
39 |
Multi-core processors and the future of parallelism in softwareYoungman, Ryan Christopher 01 January 2007 (has links)
The purpose of this thesis is to examine multi-core technology. Multi-core architecture provides benefits such as less power consumption, scalability, and improved application performance enabled by thread-level parallelism.
|
40 |
Speculative multithreaded processorsMarcuello Pascual, Pedro 22 July 2003 (has links)
En esta tesis se estudia el modelo de ejecución de los procesadores multithreaded especulativos así como los requisitos necesarios para su implementación. El modelo de ejecución se basa en la inserción de instrucciones de spawn dentro del código secuencial. De esta manera, la ejecución de un programa en estos procesadores es similar a cualquier otro hasta que se encuentra con un punto de spawn. Entonces, se crea un nuevo thread especulativo en el punto indicado por la instrucción de spawn y ambos threads se ejecutan en paralelo. Cuanto el thread creador llega al punto inicial del thread especulativo, se ha de verificar si la especulación ha sido correcta. En ese caso, el contexto del thread no especulativo se gradúa y se libera para uso futuro de más threads especulativos. En caso de que la verificación no haya sido correcta, se recupera el estado correcto. En este modelo de ejecución siempre hay un thread no especulativo y puede haber múltiples threads especulativos.Para soportar este modelo de ejecución, se necesita: i) hardware capaz de crear y gestionar threads especulativo y ii) un mecanismo de particionado para dividir los programas en threads especulativos. Se han estudiado varias plataformas para gestionar threads de forma concurrente. Por un lado, los procesadores clustered se benefician de menores retardos, menor potencia consumida y una menor complejidad aunque las latencias de comunicación sean mayores. Por otro lado, las arquitecturas centralizadas se benefician del hecho de compartir recursos y menor latencia de comunicación, pero la complejidad del hardware es mucho mayor. En cualquier caso, el hardware ha de ser capaz de ejecutar múltiples threads simultáneamente con el inconveniente de que algunos valores van a tener que compartirse mientras que otros son copias privadas. Es decir, el procesador deberá ser capaz de gestionar múltiples versiones de un mismo registro o posición de memoria para cada uno de los threads que se estén ejecutando.Además, se ha puesto especial énfasis en la gestión de las dependencias de datos entre los threads especulativos ya que tienen un impacto muy importante en el rendimiento del procesador. Encontrar threads independientes es casi imposible en aplicaciones irregulares, por tanto los threads especulativos necesitarán de valores producidos por otros threads especulativos. Se han estudiado dos mecanismos: sincronizar el thread productor y el thread consumidor y predecir los valores dependientes. En el primer caso, se han propuesto mecanismos para pasar el valor tan pronto como ha sido producido del productor al consumidor, especialmente en el caso de valores de memoria. Por otro lado, el segundo modelo es mucho más atrayente ya que si todos los valores dependientes fueran predichos de forma correcta, los threads pasarían a ejecutarse de forma independiente. Se han evaluado múltiples predictores de valores propuestos en la literatura y se ha presentado un nuevo predictor especialmente pensado para este tipo de arquitecturas que es el predictor de incremento. Este predictor usa la información de control de los threads especulativos para predecir los valores y los resultados obtenidos son muy prometedores aún con tamaños muy reducidos del predictor. Finalmente, el particionado de las aplicaciones afecta al rendimiento de este tipo de procesadores. Se han propuesto y evaluado varios esquemas de particionado. Una familia de estos esquemas asigna threads especulativos a construcciones de programa que por si solas proporcionan cierta independencia de control. Políticas de esta familia son aquellas que crean threads especulativos en iteraciones de bucles, continuaciones de bucles y continuaciones de subrutinas. La segunda familia de esquemas de particionadose ayuda de un análisis basado en profiling para encontrar las parejas de spawn más idóneas para cada uno de los códigos. De esta manera, aquellas partes del programa que cumplan las mejores características se seleccionan para crear threads especulativos. Algunos criterios de selección que han sido considerados en esta tesis han sido: la independencia de control, el tamaño mínimo de los threads, la independencia de datos y su predictabilidad. Los resultados obtenidos por ambas familias han sido muy significativos, aunque el esquema basado en técnicas de profile mejora los resultados obtenidos por la otra familia.
|
Page generated in 0.083 seconds