Spelling suggestions: "subject:"ppu"" "subject:"upu""
791 |
Runtime specialization for heterogeneous CPU-GPU platformsFarooqui, Naila 27 May 2016 (has links)
Heterogeneous parallel architectures like those comprised of CPUs and GPUs are a tantalizing compute fabric for performance-hungry developers. While these platforms enable order-of-magnitude performance increases for many data-parallel application domains, there remain several open challenges: (i) the distinct execution models inherent in the heterogeneous devices present on such platforms drives the need to dynamically match workload characteristics to the underlying resources, (ii) the complex architecture and programming models of such systems require substantial application knowledge and effort-intensive program tuning to achieve high performance, and (iii) as such platforms become prevalent, there is a need to extend their utility from running known regular data-parallel applications to the broader set of input-dependent, irregular applications common in enterprise settings. The key contribution of our research is to enable runtime specialization on such hybrid CPU-GPU platforms by matching application characteristics to the underlying heterogeneous resources for both regular and irregular workloads. Our approach enables profile-driven resource management and optimizations for such platforms, providing high application performance and system throughput. Towards this end, this research: (a) enables dynamic instrumentation for GPU-based parallel architectures, specifically targeting the complex Single-Instruction Multiple-Data (SIMD) execution model, to gain real-time introspection into application behavior; (b) leverages such dynamic performance data to support novel online resource management methods that improve application performance and system throughput, particularly for irregular, input-dependent applications; (c) automates some of the programmer effort required to exercise specialized architectural features of such platforms via instrumentation-driven dynamic code optimizations; and (d) proposes a specialized, affinity-aware work-stealing scheduling runtime for integrated CPU-GPU processors that efficiently distributes work across all CPU and GPU cores for improved load balance, taking into account both application characteristics and architectural differences of the underlying devices.
|
792 |
A comparative analysis of the performance and deployment overhead of parallelized Finite Difference Time Domain (FDTD) algorithms on a selection of high performance multiprocessor computing systemsIlgner, Robert Georg 12 1900 (has links)
Thesis (PhD)--Stellenbosch University, 2013. / ENGLISH ABSTRACT: The parallel FDTD method as used in computational electromagnetics is implemented on a variety of
different high performance computing platforms. These parallel FDTD implementations have
regularly been compared in terms of performance or purchase cost, but very little systematic
consideration has been given to how much effort has been used to create the parallel FDTD for a
specific computing architecture. The deployment effort for these platforms has changed
dramatically with time, the deployment time span used to create FDTD implementations in 1980
ranging from months, to the contemporary scenario where parallel FDTD methods can be
implemented on a supercomputer in a matter of hours. This thesis compares the effort required to
deploy the parallel FDTD on selected computing platforms from the constituents that make up the
deployment effort, such as coding complexity and time of coding. It uses the deployment and
performance of the serial FDTD method on a single personal computer as a benchmark and
examines the deployments of the parallel FDTD using different parallelisation techniques. These
FDTD deployments are then analysed and compared against one another in order to determine the
common characteristics between the FDTD implementations on various computing platforms with
differing parallelisation techniques. Although subjective in some instances, these characteristics are
quantified and compared in tabular form, by using the research information created by the parallel
FDTD implementations. The deployment effort is of interest to scientists and engineers considering
the creation or purchase of an FDTD-like solution on a high performance computing platform.
Although the FDTD method has been considered to be a brute force approach to solving
computational electromagnetic problems in the past, this was very probably a factor of the relatively
weak computing platforms which took very long periods to process small model sizes. This thesis will
describe the current implementations of the parallel FDTD method, made up of a combination of
several techniques. These techniques can be easily deployed in a relatively quick time frame on
computing architectures ranging from IBM’s Bluegene/P to the amalgamation of multicore processor
and graphics processing unit, known as an accelerated processing unit. / AFRIKAANSE OPSOMMING: Die parallel Eindige Verskil Tyd Domein (Eng: FDTD) metode word gebruik in numeriese
elektromagnetika en kan op verskeie hoë werkverrigting rekenaars geïmplementeer word. Hierdie
parallele FDTD implementasies word gereeld in terme van werkverrigting of aankoop koste vergelyk,
maar word bitter min sistematies oorweeg in terme van die hoeveelheid moeite wat dit geverg het
om die parallele FDTD vir 'n spesifieke rekenaar argitektuur te skep. Mettertyd het die moeite om
die platforms te ontplooi dramaties verander, in the 1980's het die ontplooings tyd tipies maande
beloop waarteenoor dit vandag binne 'n kwessie van ure gedoen kan word. Hierdie tesis vergelyk die
inspanning wat nodig is om die parallelle FDTD op geselekteerde rekenaar platforms te ontplooi
deur te kyk na faktore soos die kompleksiteit van kodering en die tyd wat dit vat om 'n kode te
implementeer. Die werkverrigting van die serie FDTD metode, geïmplementeer op 'n enkele
persoonlike rekenaar word gebruik as 'n maatstaf om die ontplooing van die parallel FDTD met
verskeie parallelisasie tegnieke te evalueer. Deur hierdie FDTD ontplooiings met verskillende
parallelisasie tegnieke te ontleed en te vergelyk word die gemeenskaplike eienskappe bepaal vir
verskeie rekenaar platforms. Alhoewel sommige gevalle subjektief is, is hierdie eienskappe
gekwantifiseer en vergelyk in tabelvorm deur gebruik te maak van die navorsings inligting geskep
deur die parallel FDTD implementasies. Die ontplooiings moeite is belangrik vir wetenskaplikes en
ingenieurs wat moet besluit tussen die ontwikkeling of aankoop van 'n FDTD tipe oplossing op 'n höe
werkverrigting rekenaar. Hoewel die FDTD metode in die verlede beskou was as 'n brute krag
benadering tot die oplossing van elektromagnetiese probleme was dit waarskynlik weens die
relatiewe swak rekenaar platforms wat lank gevat het om klein modelle te verwerk. Hierdie tesis
beskryf die moderne implementering van die parallele FDTD metode, bestaande uit 'n kombinasie
van verskeie tegnieke. Hierdie tegnieke kan maklik in 'n relatiewe kort tydsbestek ontplooi word op
rekenaar argitekture wat wissel van IBM se BlueGene / P tot die samesmelting van multikern
verwerkers en grafiese verwerkings eenhede, beter bekend as 'n versnelde verwerkings eenheid.
|
793 |
Scalability of fixed-radius searching in meshless methods for heterogeneous architecturesPols, LeRoi Vincent 12 1900 (has links)
Thesis (MEng)--Stellenbosch University, 2014. / ENGLISH ABSTRACT: In this thesis we set out to design an algorithm for solving the all-pairs fixed-radius nearest
neighbours search problem for a massively parallel heterogeneous system. The all-pairs
search problem is stated as follows: Given a set of N points in d-dimensional space, find
all pairs of points within a horizon distance of one another. This search is required
by any nonlocal or meshless numerical modelling method to construct the neighbour list
of each mesh point in the problem domain. Therefore, this work is applicable to a wide
variety of fields, ranging from molecular dynamics to pattern recognition and geographical
information systems. Here we focus on nonlocal solid mechanics methods.
The basic method of solving the all-pairs search is to calculate, for each mesh point, the
distance to each other mesh point and compare with the horizon value to determine if the
points are neighbours. This can be a very computationally intensive procedure, especially
if the neighbourhood needs to be updated at every time step to account for changes in
material configuration. The problem also becomes more complex if the analysis is done
in parallel.
Furthermore, GPU computing has become very popular in the last decade. Most of the
fastest supercomputers in the world today employ GPU processors as accelerators to CPU
processors. It is also believed that the next-generation exascale supercomputers will be heterogeneous. Therefore the focus is on how to develop a neighbour searching algorithm
that will take advantage of next-generation hardware.
In this thesis we propose a CPU - multi GPU algorithm, which is an extension of the
fixed-grid method, for the fixed-radius nearest neighbours search on massively parallel
systems. / AFRIKAANSE OPSOMMING: In hierdie tesis het ons die ontwerp van ’n algoritme vir die oplossing van die alle-pare
vaste-radius naaste bure soektog probleem vir groot skaal parallele heterogene stelsels
aangepak. Die alle-pare soektog probleem is as volg gestel: Gegewe ’n stel van N punte
in d-dimensionele ruimte, vind al die pare van punte wat binne ’n horison afstand van
mekaar af is. Die soektog word deur enige nie-lokale of roosterlose numeriese metode
benodig om die bure-lys van alle rooster-punte in die probleem te kry. Daarom is hierdie
werk van toepassing op ’n wye verskeidenheid van velde, wat wissel van molekulêre dinamika
tot patroon herkenning en geografiese inligtingstelsels. Hier is ons fokus op nie-lokale
soliede meganika metodes.
Die basiese metode vir die oplossing van die alle-pare soektog is om vir elke rooster-punt,
die afstand na elke ander rooster-punt te bereken en te vergelyk met die horison lente,
om dus so te bepaal of die punte bure is. Dit kan ’n baie berekenings intensiewe proses
wees, veral as die probleem by elke stap opgedateer moet word om die veranderinge in
die materiaal konfigurasie daar te stel. Die probleem word ook baie meer kompleks as die
analise in parallel gedoen word.
Verder het GVE’s (Grafiese verwerkings eenhede) baie gewild geword in die afgelope
dekade. Die meeste van die vinnigste superrekenaars in die wêreld vandag gebruik GVE’s as versnellers te same met SVE’s (Sentrale verwerkings eenhede). Dit is ook van mening
dat die volgende generasie exa-skaal superrekenaars GVE’s sal implementeer. Daarom is
die fokus op hoe om ’n bure-lys soektog algoritme te ontwikkel wat gebruik sal maak van
die volgende generasie hardeware.
In hierdie tesis stel ons ’n SVE - veelvoudige GVE algoritme voor, wat ’n verlenging
van die vaste-rooster metode is, vir die vaste-radius naaste bure soektog op groot skaal
parallele stelsels.
|
794 |
Analysis of GPU-based convolution for acoustic wave propagation modeling with finite differences: Fortran to CUDA-C step-by-stepSadahiro, Makoto 04 September 2014 (has links)
By projecting observed microseismic data backward in time to when fracturing occurred, it is possible to locate the fracture events in space, assuming a correct velocity model. In order to achieve this task in near real-time, a robust computational system to handle backward propagation, or Reverse Time Migration (RTM), is required. We can then test many different velocity models for each run of the RTM. We investigate the use of a Graphics Processing Unit (GPU) based system using Compute Unified Device Architecture for C (CUDA-C) as the programming language. Our preliminary results show a large improvement in run-time over conventional programming methods based on conventional Central Processing Unit (CPU) computing with Fortran. Considerable room for improvement still remains. / text
|
795 |
Modeling Multi-factor Financial Derivatives by a Partial Differential Equation Approach with Efficient Implementation on Graphics Processing UnitsDang, Duy Minh 15 November 2013 (has links)
This thesis develops efficient modeling frameworks via a Partial Differential Equation (PDE) approach for multi-factor financial derivatives, with emphasis on three-factor models, and studies highly efficient implementations of the numerical methods on novel high-performance computer architectures, with particular focus on Graphics Processing Units (GPUs) and multi-GPU platforms/clusters of GPUs. Two important classes of multi-factor financial instruments are considered: cross-currency/foreign exchange (FX) interest rate derivatives and multi-asset options. For cross-currency interest rate derivatives, the focus of the thesis is on Power Reverse Dual Currency (PRDC) swaps with three of the most popular exotic features, namely Bermudan cancelability, knockout, and FX Target Redemption. The modeling of PRDC swaps using one-factor Gaussian models for the domestic and foreign interest short rates, and a one-factor skew model for the spot FX rate results in a time-dependent parabolic PDE in three space dimensions. Our proposed PDE pricing framework is based on partitioning the pricing problem into several independent pricing subproblems over each time period of the swap's tenor structure, with possible communication at the end of the time period. Each of these subproblems requires a solution of the model PDE. We then develop a highly efficient GPU-based parallelization of the Alternating Direction Implicit (ADI) timestepping methods for solving the model PDE. To further handle the substantially increased computational requirements due to the exotic features, we extend the pricing procedures to multi-GPU platforms/clusters of GPUs to solve each of these independent subproblems on a separate GPU. Numerical results indicate that the proposed GPU-based parallel numerical methods are highly efficient and provide significant increase in performance over CPU-based methods when pricing PRDC swaps. An analysis of the impact of the FX volatility skew on the price of PRDC swaps is provided.
In the second part of the thesis, we develop efficient pricing algorithms for multi-asset options under the Black-Scholes-Merton framework, with strong emphasis on multi-asset American options. Our proposed pricing approach is built upon a combination of (i) a discrete penalty approach for the linear complementarity problem arising due to the free boundary and (ii) a GPU-based parallel ADI Approximate Factorization technique for the solution of the linear algebraic system arising from each penalty iteration. A timestep size selector implemented efficiently on GPUs is used to further increase the efficiency of the methods. We demonstrate the efficiency and accuracy of the proposed GPU-based parallel numerical methods by pricing American options written on three assets.
|
796 |
Multi-scale Methods for Omnidirectional Stereo with Application to Real-time Virtual WalkthroughsBrunton, Alan P 28 November 2012 (has links)
This thesis addresses a number of problems in computer vision, image processing, and geometry processing, and presents novel solutions to these problems. The overarching theme of the techniques presented here is a multi-scale approach, leveraging mathematical tools to represent images and surfaces at different scales, and methods that can be adapted from one type of domain (eg., the plane) to another (eg., the sphere). The main problem addressed in this thesis is known as stereo reconstruction: reconstructing the geometry of a scene or object from two or more images of that scene. We develop novel algorithms to do this, which work for both planar and spherical images. By developing a novel way to formulate the notion of disparity for spherical images, we are able effectively adapt our algorithms from planar to spherical images. Our stereo reconstruction algorithm is based on a novel application of distance transforms to multi-scale matching. We use matching information aggregated over multiple scales, and enforce consistency between these scales using distance transforms. We then show how multiple spherical disparity maps can be efficiently and robustly fused using visibility and other geometric constraints. We then show how the reconstructed point clouds can be used to synthesize a realistic sequence of novel views, images from points of view not captured in the input images, in real-time. Along the way to this result, we address some related problems. For example, multi-scale features can be detected in spherical images by convolving those images with a filterbank, generating an overcomplete spherical wavelet representation of the image from which the multiscale features can be extracted. Convolution of spherical images is much more efficient in the spherical harmonic domain than in the spatial domain. Thus, we develop a GPU implementation for fast spherical harmonic transforms and frequency domain convolutions of spherical images. This tool can also be used to detect multi-scale features on geometric surfaces. When we have a point cloud of a surface of a particular class of object, whether generated by stereo reconstruction or by some other modality, we can use statistics and machine learning to more robustly estimate the surface. If we have at our disposal a database of surfaces of a particular type of object, such as the human face, we can compute statistics over this database to constrain the possible shape a new surface of this type can take. We show how a statistical spherical wavelet shape prior can be used to efficiently and robustly reconstruct a face shape from noisy point cloud data, including stereo data.
|
797 |
Proteins, anatomy and networks of the fruit fly brainKnowles-Barley, Seymour Francis January 2012 (has links)
Our understanding of the complexity of the brain is limited by the data we can collect and analyze. Because of experimental limitations and a desire for greater detail, most investigations focus on just one aspect of the brain. For example, brain function can be studied at many levels of abstraction including, but not limited to, gene expression, protein interactions, anatomical regions, neuronal connectivity, synaptic plasticity, and the electrical activity of neurons. By focusing on each of these levels, neuroscience has built up a detailed picture of how the brain works, but each level is understood mostly in isolation from the others. It is likely that interaction between all these levels is just as important. Therefore, a key hypothesis is that functional units spanning multiple levels of biological organization exist in the brain. This project attempted to combine neuronal circuitry analysis with functional proteomics and anatomical regions of the brain to explore this hypothesis, and took an evolutionary view of the results obtained. During the process we had to solve a number of technical challenges as the tools to undertake this type of research did not exist. Two informatics challenges for this research were to develop ways to analyze neurobiological data, such as brain protein expression patterns, to extract useful information, and how to share and present this data in a way that is fast and easy for anyone to access. This project contributes towards a more wholistic understanding of the fruit fly brain in three ways. Firstly, a screen was conducted to record the expression of proteins in the brain of the fruit fly, Drosophila melanogaster. Protein expression patterns in the fruit fly brain were recorded from 535 protein trap lines using confocal microscopy. A total of 884 3D images were annotated and made available on an easy to use website database, BrainTrap, available at fruitfly.inf.ed.ac.uk/braintrap. The website allows 3D images of the protein expression to be viewed interactively in the web browser, and an ontology-based search tool allows users to search for protein expression patterns in specific areas of interest. Different expression patterns mapped to a common template can be viewed simultaneously in multiple colours. This data bridges the gap between anatomical and biomolecular levels of understanding. Secondly, protein trap expression patterns were used to investigate the properties of the fruit fly brain. Thousands of protein-protein interactions have been recorded by methods such as yeast two-hybrid, however many of these protein pairs do not express in the same regions of the fruit fly brain. Using 535 protein expression patterns it was possible to rule out 149 protein-protein interactions. Also, protein expression patterns registered against a common template brain were used to produce new anatomical breakdowns of the fruit fly brain. Clustering techniques were able to naturally segment brain regions based only on the protein expression data. This is just one example of how, by combining proteomics with anatomy, we were able to learn more about both levels of understanding. Results are analysed further in combination with networks such as genetic homology networks, and connectivity networks. We show how the wealth of biological and neuroscience data now available in public databases can be combined with the Brain- Trap data to reveal similarities between areas of the fruit fly and mammalian brain. The BrainTrap data also informs us on the process of evolution and we show that genes found in fruit fly, yeast and mouse are more likely to be generally expressed throughout the brain, whereas genes found only in fruit fly and mouse, but not yeast, are more likely to have a specific expression pattern in the fruit fly brain. Thus, by combining data from multiple sources we can gain further insight into the complexity of the brain. Neural connectivity data is also analyzed and a new technique for enhanced motifs is developed for the combined analysis of connectivity data with other information such as neuron type data and potentially protein expression data. Thirdly, I investigated techniques for imaging the protein trap lines at higher resolution using electron microscopy (EM) and developed new informatics techniques for the automated analysis of neural connectivity data collected from serial section transmission electron microscopy (ssTEM). Measurement of the connectivity between neurons requires high resolution imaging techniques, such as electron microscopy, and images produced by this method are currently annotated manually to produce very detailed maps of cell morphology and connectivity. This is an extremely time consuming process and the volume of tissue and number of neurons that can be reconstructed is severely limited by the annotation step. I developed a set of computer vision algorithms to improve the alignment between consecutive images, and to perform partial annotation automatically by detecting membrane, synapses and mitochondria present in the images. Accuracy of the automatic annotation was evaluated on a small dataset and 96% of membrane could be identified at the cost of 13% false positives. This research demonstrates that informatics technology can help us to automatically analyze biological images and bring together genetic, anatomical, and connectivity data in a meaningful way. This combination of multiple data sources reveals more detail about each individual level of understanding, and gives us a more wholistic view of the fruit fly brain.
|
798 |
Real-Time Persistent Mesh Painting with GPU Particle SystemsLarsson, Andreas January 2017 (has links)
Particle systems are used to create visual effects in real-time applications such as computer games. However, emitted particles are often transient and do not leave a lasting impact on a 3D scene. This thesis work presents a real-time method that enables GPU particle systems to paint meshes in a 3D scene as the result of particle collisions, thus adding detail to and leaving a lasting impact on a scene. The method uses screen space collision detection and a mapping from screen space to texture space of meshes to determine where to apply paint. The method was tested for its time complexity and how well it performed in scenarios similar to those found in computer games. The results shows that the method probably can be used in computer games. Performance and visual fidelity of the paint application is not directly dependent on the amount of simulated particles, but depends only on the complexity of the meshes and their texture mapping as wellas the resolution of the paint. It is concluded that the method is renderer agnostic and could be added to existing GPU particle systems and that other types of effects than those showed in the thesis could be achieved by using the method.
|
799 |
Tumour vessel structural analysis and its application in image analysisWang, Po January 2010 (has links)
Abnormal vascular structure has been identified as one of the major characteristics of tumours. In this thesis, we carry out quantitative analysis on different tumour vascular structures and research the relationship between vascular structure and its transportation efficiency. We first study segmentation methods to extract the binary vessel representations from microscope images. We found that local phase-hysteresis thresholding is able to segment vessel objects from noisy microscope images. We also study methods to extract the centre lines of segmented vessel objects, a process termed as skeletonization. We modified the conventional thinning method to regularize the extremely asymmetrical structure found in the segmented vessel objects. We found this method is capable to produce vessel skeletons with satisfactory accuracy. We have developed a software for 3D vessel structural analysis. This software is consisted of four major parts: image segmentation, vessel skeletonization, skeleton modification and structure quantification. This software has implemented local phase-hysteresis thresholding and structure regularization-thinning methods. A GUI was introduced to enable users to alter the skeleton structures based on their subjective judgements. Radius and inter branch length quantification can be conducted based on the segmentation and skeletonization results. The accuracy of segmentation, skeletonization and quantification methods have been tested on several synthesized data sets. The change of tumour vascular structure after drug treatment was then investigated. We proposed metrics to quantify tumour vascular geometry and statistically analysed the effect of tested drugs on normalizing tumour vascular structure. finally, we developed a spatio-temporal model to simulate the delivery of oxygen and 3-18 F-fluoro-1-(2-nitro-1-imidazolyl)-2-propanol (Fmiso), which is the hypoxia tracer that gives out PET signal in an Fmiso PET scanning. This model is based on compartmental models, but also considers the spatial diffusion of oxygen and Fmiso. We validated our model on in vitro spheroid data and simulated the oxygen and Fmiso distribution on the segmented vessel images. We contend that the tumour Fmiso distribution (as observed in Fmiso PET imaging) is caused by the abnormal tumour vascular structure which is further aroused from tumour angiogenesis process. We depicted a modelling framework to research the relationships between tumour angiogenesis, vessel structure and Fmiso distribution, which is going to be the focus of our future work.
|
800 |
Vers une nouvelle stratégie pour l'assemblage interactif de macromolécules / Towards an interactive tool for the protein dockingChavent, Matthieu 30 January 2009 (has links)
Même si le docking protéine-protéine devient un outil incontournable pour répondre aux problématiques biologiques actuelles, il reste cependant deux difficultés inhérentes aux methodes actuelles: 1) la majorité de ces méthodes ne considère pas les possibles déformations internes des protéines durant leur association. 2) Il n'est pas toujours simple de traduire les informations issues de la littérature ou d'expérimentations en contraintes intégrables aux programmes de docking. Nous avons donc tenté de développer une approche permettant d'améliorer les programmes de docking existants. Pour cela nous nous sommes inspirés des méthodologies mises en place sur des cas concrets traités durant cette thèse. D'abord, à travers la création du complexe ERBIN PDZ/Smad3 MH2, nous avons pu tester l'utilité de la Dynamique Moléculaire en Solvant Explicite (DMSE) pour mettre en évidence des résidus importants pour l'interaction. Puis, nous avons étendu cette recherche en utilisant divers serveurs de docking puis la DMSE pour cibler un résultat consensus. Enfin, nous avons essayé le raffinage par DMSE sur une cible du challenge CAPRI et comparé les résultats avec des simulations courtes de Monte-Carlo. La dernière partie de cette thèse portait sur le développement d'un nouvel outil de visualisation de la surface moléculaire. Ce programme, nommé MetaMol, permet de visualiser un nouveau type de surface moléculaire: la Skin Surface Moléculaire. La distribution des calculs à la fois sur le processeur de l'ordinateur (CPU) et sur ceux de la carte graphique (GPU) entraine une diminution des temps de calcul autorisant la visualisation, en temps réel, des déformations de la surface moléculaire. / Protein-protein docking has become an extremely important challenge in biology, however, there remain two inherent difficulties: 1) most docking methods do not consider possible internal deformations of the proteins during their association; 2) it is not always easy to translate information from the literature or from experiments into constraints suitable for use in protein docking algorithms. Following these conclusions, we have developed an approach to improve existing docking programs. Firstly, through modelling the ERBIN PDZ / Smad3 MH2 complex, we have tested the utility of Molecular Dynamics with Explicit Solvent (MDSE) for elucidating the key residues in an interaction. We then extended this research by using several docking servers and the DMSE simulations to obtain a consensus result. Finally, we have explored the use of DMSE refinement on one of the targets from the CAPRI experiment and we have compared those results with those from short Monte-Carlo simulations. Another aspect of this thesis concerns the development of a novel molecular surface visualisation tool. This program, named MetaMol, allows the visualisation of a new type of molecular surface: the Molecular Skin Surface. Distributing the surface calculation between a computer's central processing unit (CPU) and its graphics card (GPU) allows deformations of the molecular surface to be calculated and visualised in real time.
|
Page generated in 0.0412 seconds