# A Review of Parallel Heterogeneous Computing Algorithms in Power Systems
## 1 Introduction  
The growth in energy dependence has led to increased complexity in the planning and operation of power systems [1]. In some scenarios, systems are observed operating at stressed conditions that, in the event of failures, can result in blackouts or cascading events resulting in large economic losses. For this reason, multiple studies have been carried out to evaluate the possible conditions that may appear on the network and avoid undesired power losses. As a result of yearly studies, operational criteria is generated to maintain system security under various conditions. Operation considerations and study area limitations are not commonly updated during operation and short term planning, as a result of significant processing efforts and decision making requirements. In order to reduce execution times and to guarantee the optimal and secure operation of the network, different strategies have been implemented; some of the approaches reduce the size of a problem's formulation, the number of impacted areas during the analysis, the number of decision variables, etc. Other options use the potential of current technologies, such as advanced computational structures. The application of advanced computational structures during the operation and short-term planning of power systems has been integrated more frequently during the last fifteenyears [2; 3; 4; 5; 6]. In particular, the application of structures focused on the parallel computation of burdensome tasks and the interactions among different technologies to solve power system problems have emerged as a possible solution. One of the solutions involved is the use of High Performance Computing (HPC). HPC is a concept that has been long intertwined with Parallel and Distributed Computing (PDC). Many authors now even consider them to be inseparable [4; 5; 7]. This is mostly because a large part of today's supercomputers use parallel, heterogeneous, and distributed architectures or systems [8]. However, HPC as a concept has generally referred to computers that highly outperform what is commercially available or what is considered normal performance [9]. Previous associations for the concept of HPC include Vector and Reduce Instruction Set Computer (RISC) processors, which, at one point, were considered high-end technology [9]; whereas, currently, some of these technologies may be taken for granted. For the purpose of this review, the use of the terms Parallel Computing (PC) and Heterogeneous Computing (HC) will be preferred, as the term HPC is often considered too broad and often associated with many different definitions, as noted by [9]. The HPC definition is likely to change again in the future, hence, making the use of more explicit concepts referring to the type of technology used more appropriate. The necessity of precise language will increase if trends, such as Quantum Computing (QC), or completely new technologies continue to emerge and make their way into applied sciences and engineering applications. The HC definition from [10] will be adopted for this review, which refers to systems that clearly and explicitly include processors of different types, such as Central Processing Units (CPUs), Graphics Processing Unit (GPUs), and Field-programmable gate arrays (FPGAs), interacting in on-premise or cloud environments. During the last three decades, multiple works have applied Parallel Heterogeneous Computing (PHC) architectures in a wide variety of power system applications. In the beginning, CPU clusters connected through Message Passing Interface (MPI) were the first alternative. Then, technologies, such as fog and cloud computing were used not only to reduce simulation time but also as a solution to handle all the measured data of smart grids. Finally, during the last decade, researchers found, in FPGA and GPU architectures, a useful and optimized mechanism to parallelize tasks.