@mastersthesis {petrenko2014THaih,
	title = {Accelerating an iterative Helmholtz solver using reconfigurable hardware},
	year = {2014},
	note = {(MSc)},
	month = {04},
	school = {The University of British Columbia},
	type = {masters},
	address = {Vancouver},
	abstract = {An implementation of seismic wave simulation on a platform consisting of a conventional host processor and a reconfigurable hardware accelerator is presented. This research is important in the field of exploration for oil and gas resources, where a 3D model of the subsurface of the Earth is frequently required. By comparing seismic data collected in a real-world survey with synthetic data generated by simulated waves, it is possible to deduce such a model. However this requires many time-consuming simulations with different Earth models to find the one that best fits the measured data. Speeding up the wave simulations would allow more models to be tried, yielding a more accurate estimate of the subsurface. The reconfigurable hardware accelerator employed in this work is a field programmable gate array (FPGA). FPGAs are computer chips that consist of electronic building blocks that the user can configure and reconfigure to represent their algorithm in hardware. Whereas a traditional processor can be viewed as a pipeline for processing instructions, an FPGA is a pipeline for processing data. The chief advantage of the FPGA is that all the instructions in the algorithm are already hardwired onto the chip. This means that execution time depends only on the amount of data to be processed, and not on the complexity of the algorithm. The main contribution is an implementation of the well-known Kaczmarz row projection algorithm on the FPGA, using techniques of dataflow programming. This kernel is used as the preconditioning step of CGMN, a modified version of the conjugate gradients method that is used to solve the time-harmonic acoustic isotropic constant density wave equation. Using one FPGA-based accelerator, the current implementation allows seismic wave simulations to be performed over twice as fast, compared to running on one Intel Xeon E5-2670 core. I also discuss the effect of modifications of the algorithm necessitated by the hardware on the convergence properties of CGMN. Finally, a specific plan for future work is set-out in order to fully exploit the accelerator platform, and the work is set in its larger context.},
	keywords = {CG, CGMN, FPGA, Helmholtz, Kaczmarz, linear solver, Maxeler, MSc, thesis, wave equation},
	url = {https://slim.gatech.edu/Publications/Public/Thesis/2014/petrenko2014THaih/petrenko2014THaih.pdf},
	presentation = {https://slim.gatech.edu/Publications/Public/Thesis/2014/petrenko2014THaih/petrenko2014THaih_pres.pdf},
	author = {Art Petrenko}
}
@presentation {petrenko2014SINBADaih,
	title = {Accelerating an iterative Helmholtz solver with FPGAs},
	year = {2014},
	publisher = {SINBAD},
	abstract = {An implementation of seismic wave simulation on a platform consisting of a conventional host processor and a reconfigurable hardware accelerator is presented. This research is important in the field of exploration for oil and gas resources, where a 3D model of the subsurface is frequently required. By comparing seismic data collected in a real-world survey with synthetic data generated by simulated waves, it is possible to deduce such a model. However this requires many time-consuming simulations with different Earth models to find the one that best fits the measured data. Speeding up the wave simulations would allow more models to be tried, yielding a more accurate estimate of the subsurface. The reconfigurable hardware accelerator employed in this work is a field programmable gate array (FPGA). FPGAs are computer chips that consist of electronic building blocks that the user can configure and reconfigure to represent their algorithm in hardware. Whereas a traditional processor can be viewed as a pipeline for processing instructions, an FPGA is a pipeline for processing data. The chief advantage of the FPGA is that all the instructions in the algorithm are already hardwired onto the chip. This means that execution time depends only on the amount of data to be processed, and not on the complexity of the algorithm. The main contribution is an implementation of the well-known Kaczmarz row projection algorithm on the FPGA, using techniques of dataflow programming. This kernel is used as the preconditioning step of CGMN, a modified version of the conjugate gradients method that is used to solve the time-harmonic acoustic isotropic constant density wave equation. Using one FPGA accelerator, the current implementation allows seismic wave simulations to be performed over twice as fast, compared to running on one Intel Xeon E5-2670 core. I also discuss the effect of modifications of the algorithm necessitated by the hardware on the convergence properties of CGMN. Finally, a specific plan for future work is set-out in order to fully exploit the accelerator platform, and my work is set in its larger context},
	keywords = {Presentation, SINBAD, SINBADSPRING2014, SLIM},
	url = {https://slim.gatech.edu/Publications/Public/Conferences/SINBAD/2014/Spring/petrenko2014SINBADaih/petrenko2014SINBADaih.pdf},
	author = {Art Petrenko and Tristan van Leeuwen and Diego Oriato and Simon Tilbury and Felix J. Herrmann}
}
@conference {petrenko2014EAGEaih,
	title = {Accelerating an iterative Helmholtz solver with FPGAs},
	booktitle = {EAGE Annual Conference Proceedings},
	year = {2014},
	month = {06},
	abstract = {We implement the Kaczmarz row-projection algorithm (Kaczmarz (1937)) on a CPU host + FPGA accelerator platform using techniques of dataflow programming. This algorithm is then used as the preconditioning step in CGMN, a modified version of the conjugate gradients method (Bj{\"o}rck and Elfving (1979)) that we use to solve the time-harmonic acoustic isotropic constant density wave equation. Using one accelerator we achieve a speed-up of over 2{\texttimes} compared with one Intel core.},
	keywords = {CGMN, EAGE, FPGA, Helmholtz equation, Kaczmarz, reconfigurable computing},
	doi = {10.3997/2214-4609.20141141},
	url = {https://slim.gatech.edu/Publications/Public/Conferences/EAGE/2014/petrenko2014EAGEaih/petrenko2014EAGEaih.pdf},
	presentation = {https://slim.gatech.edu/Publications/Public/Conferences/EAGE/2014/petrenko2014EAGEaih/petrenko2014EAGEaih_pres.pdf},
	author = {Art Petrenko and Tristan van Leeuwen and Diego Oriato and Simon Tilbury and Felix J. Herrmann}
}
@conference {petrenko2014OGHPCaih,
	title = {Accelerating an iterative Helmholtz solver with FPGAs},
	booktitle = {OGHPC},
	year = {2014},
	month = {03},
	abstract = {We implement the Kaczmarz row-projection algorithm [Kaczmarz, 1937] on a CPU host + FPGA accelerator platform using techniques of dataflow programming. This algorithm is then used as the preconditioning step in CGMN, a modified version of the conjugate gradients method [Bj?rck and Elfving, 1979] that we use to solve the time-harmonic acoustic isotropic constant density wave equation.},
	keywords = {CGMN, FPGA, Helmholtz equation, Kaczmarz, OGHPC, reconfigurable computing},
	url = {https://slim.gatech.edu/Publications/Public/Conferences/OGHPC/2014/petrenko2014OGHPCaih/petrenko2014OGHPCaih.pdf},
	presentation = {https://slim.gatech.edu/Publications/Public/Conferences/OGHPC/2014/petrenko2014OGHPCaih/petrenko2014OGHPCaih_poster.pdf},
	author = {Art Petrenko and Felix J. Herrmann and Diego Oriato and Simon Tilbury and Tristan van Leeuwen}
}
@conference {lago2014CMCCRMN,
	title = {CRMN method for solving time-harmonic wave equation},
	booktitle = {Copper Mountain Conference},
	year = {2014},
	note = {(Copper Mountain)},
	month = {04},
	abstract = {We address the solution of PDEs associated with the wave propagation phenomena in heterogeneous media using CGMN method. It consists of a conjugate gradients method using Kaczmarz double sweeps as preconditioner. This preconditioner has the property of {\textquoteleft}{\textquoteleft}symmetrizing" the problem allowing short recursion and Lanczos type of Krylov methods to be employed. In this talk we propose the use of CR, a minimal residual Krylov method closely related to CG. We study the proposed method which we call CRMN and discuss crucial aspects as the behaviour of the norm of the residual and the norm of the true error. We also discuss the result of an inversion of a small subsample of the 3D velocity model SEG/EAGE Overthrust using frugal full-waveform inversion method with CRMN and CGMN for solving the associated PDE, showing a strong interest in studying the behaviour of CRMN for larger realistic cases.},
	keywords = {CGMN, CRMN, Forward Modelling, Helmholtz equation},
	url = {https://slim.gatech.edu/Publications/Public/Conferences/CMC/2014/lago2014CMCCRMN.pdf},
	author = {Rafael Lago and Art Petrenko and Zhilong Fang and Felix J. Herrmann}
}
@conference {lago2014EAGEfst,
	title = {Fast solution of time-harmonic wave-equation for full-waveform inversion},
	booktitle = {EAGE Annual Conference Proceedings},
	year = {2014},
	month = {06},
	abstract = {For many full-waveform inversion techniques, the most computationally intensive step is the computation of a numerical solution for the wave equation on every iteration. In the frequency domain approach, this requires the solution of very large, complex, sparse, ill-conditioned linear systems. In this extended abstract we bring out attention specifically to CGMN method for solving PDEs, known for being flexible (i.e. it is able to treat equally acoustic data as well as visco-elastic or more complex scenarios) efficient with respect both to memory and computation time, and controllable accuracy of the final approximation. We propose an improvement for the known CGMN method by imposing a minimal residual condition, which incurs in one extra model vector storage. The resulting algorithm called CRMN enjoys several interesting properties as monotonically nonincreasing behaviour of the norm of the residual and minimal residual, guaranteeing optimal convergence for the relative residual criterion. We discuss numerical experiments both in an isolated PDE solve and also within the inversion procedure, showing that in a realistic scenario we can expect a speedup around 25\% when using CRMN rather than CGMN.},
	keywords = {CGMN, CRMN, EAGE, FWI, Time-Harmonic Wave Equation},
	doi = {10.3997/2214-4609.20140812},
	url = {https://slim.gatech.edu/Publications/Public/Conferences/EAGE/2014/lago2014EAGEfst/lago2014EAGEfst.pdf},
	presentation = {https://slim.gatech.edu/Publications/Public/Conferences/EAGE/2014/lago2014EAGEfst/lago2014EAGEfst_pres.pdf},
	author = {Rafael Lago and Art Petrenko and Zhilong Fang and Felix J. Herrmann}
}
@presentation {petrenko2013SINBADaih,
	title = {Accelerating an iterative Helmholtz solver with FPGAs},
	year = {2013},
	publisher = {SINBAD},
	abstract = {Solution of the Helmholtz equation is the main computational burden of full-waveform inversion in the frequency domain. For this task we employ the CARP-CG algorithm (Gordon \& Gordon 2010), an iterative solver that preconditions the original Helmholtz system into an equivalent symmetric positive definite system and then applies the method of conjugate gradients. Forming the matrix for the new system is not necessary as its multiplicative action on a vector is implemented using a series of projections onto the rows of the original system. Our contribution is implementing CARP-CG for a host + accelerator (FPGA) computing environment. The computational paradigm is one of dataflow: vector and matrix elements are streamed from memory through the accelerator which applies the row projections. The advantage of an FPGA to process streams of data is that unless the algorithm is memory bandwidth limited, computation time is directly proportional to the amount of data. The complexity of the algorithm implemented on the FPGA is irrelevant since all the operations programmed onto the FPGA happen in the same clock tick. In contrast, on a CPU, more complex algorithms require more clock ticks as the instructions are executed sequentially, or with only a small amount of parallelism. Ongoing work porting the CARP-CG algorithm to the accelerator is presented.},
	keywords = {Presentation, SINBAD, SINBADFALL2013, SLIM},
	url = {https://slim.gatech.edu/Publications/Public/Conferences/SINBAD/2013/Fall/petrenko2013SINBADaih/petrenko2013SINBADaih.pdf},
	author = {Art Petrenko and Tristan van Leeuwen and Felix J. Herrmann and Diego Oriato and Simon Tilbury}
}
@conference {petrenko2013HPCSsaoc,
	title = {Software acceleration of CARP, an iterative linear solver and preconditioner},
	year = {2013},
	month = {06},
	publisher = {HPCS},
	organization = {HPCS},
	abstract = {We present the results of software optimization of a row-wise preconditioner (Component Averaged Row Projections) for the method of conjugate gradients, which is used to solve the diagonally banded Helmholtz system representing frequency domain, isotropic acoustic seismic wave simulation. We demonstrate that in our application, a preconditioner bound to one processor core and accessing memory contiguously reduces execution time by 7\% for matrices having on the order of 108 non-zeros. For reference we note that our C implementation is over 80 times faster than the corresponding code written for a high-level numerical analysis language.},
	keywords = {frequency-domain, Helmholtz equation, HPCS, Kaczmarz, software, wave propagation},
	url = {https://slim.gatech.edu/Publications/Public/Conferences/HPCS/2013/petrenko2013HPCSsaoc/petrenko2013HPCSsaoc.pdf},
	url2 = {https://slim.gatech.edu/Publications/Public/Conferences/HPCS/2013/petrenko2013HPCSsaoc/petrenko2013HPCSsaoc_poster.pdf},
	author = {Art Petrenko and Tristan van Leeuwen and Felix J. Herrmann}
}
@techreport {petrenko2013SEGsaoc,
	title = {Software acceleration of CARP, an iterative linear solver and preconditioner},
	number = {TR-EOAS-2013-4},
	year = {2013},
	institution = {UBC},
	abstract = {We present the results of software optimization of a row-wise preconditioner (Component Averaged Row Projections) for the method of conjugate gradients, which is used to solve the diagonally banded Helmholtz system representing frequency domain, isotropic acoustic seismic wave simulation. We demonstrate that in our application, a preconditioner bound to one processor core and accessing memory contiguously reduces execution time by 7\% for matrices having on the order of 108 non-zeros. For reference we note that our C implementation is over 80 times faster than the corresponding code written for a high-level numerical analysis language.},
	keywords = {frequency-domain, Helmholtz equation, Kaczmarz, software, wave propagation},
	url = {https://slim.gatech.edu/Publications/Public/TechReport/2013/petrenko2013SEGsaoc/petrenko2013SEGsaoc.pdf},
	author = {Art Petrenko and Tristan van Leeuwen and Felix J. Herrmann}
}
@presentation {petrenko2012SINBADcarp,
	title = {CARP-CG: a computational study},
	year = {2012},
	publisher = {SINBAD},
	abstract = {Forward modelling of the wave equation is a key ingredient in seismic full waveform inversion (FWI). Simulation in the time domain and solution of the wave equation in the frequency domain are two competing approaches to modelling. Frequency domain approaches can further be categorized as using either direct or iterative solvers. For 3D FWI, iterative solvers in the frequency domain are attractive, partly because they require less memory than the other methods. This is due to the fact that there is no need to store the wavefield at each time step, or compute a factorization of the Helmholtz operator that will not be as sparse as the original matrix. One iterative solver that has been applied to the Helmholtz equation is CARP-CG. CARP-CG uses Kaczmarz row projections for each block of a domain decomposition scheme to precondition the Helmholtz system into being symmetric and positive semidefinite. The method of conjugate gradients is then used to solve the preconditioned system. We present a comparison of the performance of CARP-CG implemented in several languages (MATLAB, C, FORTRAN, julia) and in two different hardware environments: the LIMA HPC cluster hosted at UBC, and the Checkers cluster which is part of the Westgrid consortium. Parallelization of the algorithm via domain decomposition implemented with MPI (distributed memory) and OMP (shared memory) is also examined.},
	keywords = {Presentation, SINBAD, SINBADFALL2012, SLIM},
	url = {https://slim.gatech.edu/Publications/Public/Conferences/SINBAD/2012/Fall/petrenko2012SINBADcarp/petrenko2012SINBADcarp_pres.pdf},
	author = {Art Petrenko}
}
