A raíz de la aparición de los procesadores dotados de varios “cores”, la programación paralela, un concepto que, por otra parte no era nada nuevo y se conocía desde hace décadas, sufrió un nuevo impulso, pues se creía que se podía superar el techo tecnológico que había estado limitando el rendimiento de esta programación durante años. Este impulso se ha ido manteniendo hasta la actualidad, movido por la necesidad de sistemas cada vez más potentes y gracias al abaratamiento de los costes de fabricación.udEsta tendencia ha motivado la aparición de nuevo software y lenguajes con componentes orientados precisamente al campo de la programación paralela. Este es el caso del lenguaje Go, desarrollado por Google y lanzado en 2009. Este lenguaje se basa en modelos de concurrencia que lo hacen muy adecuados para abordar desarrollos de naturaleza paralela.udSin embargo, la programación paralela es un campo complejo y heterogéneo, y los programadores son reticentes a utilizar herramientas nuevas, en beneficio de aquellas que ya conocen y les son familiares. Un buen ejemplo son aquellas implementaciones de lenguajes conocidos, pero orientadas a programación paralela, y que siguen las directrices de un estándar ampliamente reconocido y aceptado. Este es el caso del estándar OpenMP, un Interfaz de Programación de Aplicaciones (API) flexible, portable y escalable, orientado a la programación paralela multiproceso en arquitecturas multi-core o multinucleo. Dicho estándar posee actualmente implementaciones en los lenguajes C, C++ y Fortran.udEste proyecto nace como un intento de aunar ambos conceptos: un lenguaje emergente con interesantes posibilidades en el campo de la programación paralela, y un estándar reputado y ampliamente extendido, con el que los programadores se encuentran familiarizados.udEl objetivo principal es el desarrollo de un conjunto de librerías del sistema (que engloben directivas de compilación o pragmas, librerías de ejecución y variables de entorno), soportadas por las características y los modelos de concurrencia propios de Go; y que añadan funcionalidades propias del estándar OpenMP.udLa idea es añadir funcionalidades que permitan programar en lenguaje Go utilizando la sintaxis que OpenMP proporciona para otros lenguajes, como Fortan y C/C++ (concretamente, similar a esta última), y, de esta forma, dotar al usuario de Go de herramientas para programar estructuras de procesamiento paralelo de forma sencilla y transparente, de la misma manera que lo haría utilizando C/C++.---ABSTRACT---As a result of the appearance of processors equipped with multiple "cores ", parallel programming, a concept which, moreover, it was not new and it was known for decades, suffered a new impulse, because it was believed they could overcome the technological ceiling had been limiting the performance of this program for years. This impulse has been maintained until today, driven by the need for ever more powerful systems and thanks to the decrease in manufacturing costs.udThis trend has led to the emergence of new software and languages with components guided specifically to the field of parallel programming. This is the case of Go language, developed by Google and released in 2009. This language is based on concurrency models that make it well suited to tackle developments in parallel nature.udHowever, parallel programming is a complex and heterogeneous field, and developers are reluctant to use new tools to benefit those who already know and are familiar. A good example are those implementations from well-known languages, but parallel programming oriented, and witch follow the guidelines of a standard widely recognized and accepted. This is the case of the OpenMP standard, an application programming interface (API), flexible, portable and scalable, parallel programming oriented, and designed for multi-core architectures. This standard currently has implementations in C, C ++ and Fortran.udThis project was born as an attempt to combine two concepts: an emerging language, with interesting possibilities in the field of parallel programming, and a reputed and widespread standard, with which programmers are familiar with.udThe main objective is to develop a set of system libraries (which includes compiler directives or pragmas, runtime libraries and environment variables), supported by the characteristics and concurrency patterns of Go; and that add custom features from the OpenMP standard.udThe idea is to add features that allow programming in Go language using the syntax OpenMP provides for other languages, like Fortran and C / C ++ (specifically, similar to the latter ), and, in this way, provide Go users with tools for programming parallel structures easily and, in the same way they would using C / C ++.
展开▼
机译:由于配备了各种“内核”的处理器的出现,并行编程这一概念在另一方面并不陌生,几十年来一直为人所知,它获得了新的推动力,因为人们认为多年来一直限制该程序性能的技术上限。这种动力一直保持到今天,这是由于对功能日益强大的系统的需求以及较低的制造成本所致。 U这种趋势促使出现了新的软件和语言,这些软件和组件正是针对于以下领域:并行编程。这是由Google开发并于2009年推出的Go语言的例子。该语言基于并发模型,非常适合处理并行性质的开发。 Ud然而,并行编程是一个复杂且异构的领域,而且程序员不愿使用新工具,以使他们已经知道和熟悉的工具受益。一个很好的例子是已知语言的那些实现,但是面向并行编程,并且遵循公认的标准的指导。 OpenMP标准就是这种情况,它是一种灵活,可移植且可扩展的应用程序编程接口(API),面向多核或多核体系结构中的并行多进程编程。该项目的诞生是为了将两个概念结合在一起:一个是新兴的语言,在并行编程领域具有令人感兴趣的可能性,另一个是享誉盛名且广泛扩展的标准,其中包括: ud主要目标是开发一组系统库(包括编译指令或编译指示,执行库和环境变量),并由典型的特性和并发模型支持走; ud想法是添加功能,以允许使用OpenMP为其他语言(例如Fortan和C / C ++,特别是后者)提供的语法在Go语言中进行编程。方式,向Go用户提供工具,以一种简单,透明的方式对并行处理结构进行编程,就像使用C / C ++一样。---摘要---由于配备了处理器的处理器的出现多个“核”,并行编程,而且这个概念并不新奇,几十年来就广为人知,它受到了新的冲击,因为人们认为它们可以克服技术上限,多年来一直在限制该程序的性能。由于对功能越来越强大的系统的需求以及制造成本的降低,这种冲动一直保持到今天。 Ud这种趋势导致出现了新的软件和语言,其组件专门针对并行编程领域。这是由Google开发并于2009年发布的Go语言的例子。该语言基于并发模型,非常适合处理并行性质的开发 Ud然而,并行编程是一个复杂且异构的领域,开发人员不愿使用新工具使那些已经了解和熟悉的人受益。一个很好的例子是那些来自著名语言的实现,但是它们是面向并行编程的,并且遵循被广泛认可和接受的标准的准则。 OpenMP标准就是这种情况,它是一种应用程序编程接口(API),灵活,可移植和可扩展,面向并行编程,并且是为多核体系结构设计的。 Ud该项目的诞生是试图结合两个概念:一种新兴的语言,在并行编程领域具有令人感兴趣的可能性,以及一种享誉全球的广泛标准。 ud的主要目标是开发一组由Go的特性和并发模式支持的系统库(包括编译器指令或编译指示,运行时库和环境变量)。 ud该想法是添加功能,以允许使用OpenMP为其他语言(例如Fortran和C / C ++,特别是后者)提供的语法在Go语言中进行编程的功能。 ,以这种方式,为Go用户提供了用于轻松编写并行结构的工具,并且使用的方式与他们使用C / C ++的方式相同。
展开▼