uu.seUppsala University Publications

CiteExport$(function(){PrimeFaces.cw("TieredMenu","widget_formSmash_upper_j_idt182",{id:"formSmash:upper:j_idt182",widgetVar:"widget_formSmash_upper_j_idt182",autoDisplay:true,overlay:true,my:"left top",at:"left bottom",trigger:"formSmash:upper:exportLink",triggerEvent:"click"});}); $(function(){PrimeFaces.cw("OverlayPanel","widget_formSmash_upper_j_idt191_j_idt195",{id:"formSmash:upper:j_idt191:j_idt195",widgetVar:"widget_formSmash_upper_j_idt191_j_idt195",target:"formSmash:upper:j_idt191:permLink",showEffect:"blind",hideEffect:"fade",my:"right top",at:"right bottom",showCloseIcon:true});});

Design of High Performance Computing Software for Genericity and VariabilityPrimeFaces.cw("AccordionPanel","widget_formSmash_some",{id:"formSmash:some",widgetVar:"widget_formSmash_some",multiple:true}); PrimeFaces.cw("AccordionPanel","widget_formSmash_all",{id:"formSmash:all",widgetVar:"widget_formSmash_all",multiple:true});
function selectAll()
{
var panelSome = $(PrimeFaces.escapeClientId("formSmash:some"));
var panelAll = $(PrimeFaces.escapeClientId("formSmash:all"));
panelAll.toggle();
toggleList(panelSome.get(0).childNodes, panelAll);
toggleList(panelAll.get(0).childNodes, panelAll);
}
/*Toggling the list of authorPanel nodes according to the toggling of the closeable second panel */
function toggleList(childList, panel)
{
var panelWasOpen = (panel.get(0).style.display == 'none');
// console.log('panel was open ' + panelWasOpen);
for (var c = 0; c < childList.length; c++) {
if (childList[c].classList.contains('authorPanel')) {
clickNode(panelWasOpen, childList[c]);
}
}
}
/*nodes have styleClass ui-corner-top if they are expanded and ui-corner-all if they are collapsed */
function clickNode(collapse, child)
{
if (collapse && child.classList.contains('ui-corner-top')) {
// console.log('collapse');
child.click();
}
if (!collapse && child.classList.contains('ui-corner-all')) {
// console.log('expand');
child.click();
}
}
2007 (English)Doctoral thesis, comprehensive summary (Other academic)
##### Abstract [en]

##### Place, publisher, year, edition, pages

Uppsala: Acta Universitatis Upsaliensis , 2007. , p. 29
##### Series

Digital Comprehensive Summaries of Uppsala Dissertations from the Faculty of Science and Technology, ISSN 1651-6214 ; 285
##### Keywords [en]

PDE solver, high-performance, coordinate invariant, curvilinear coordinates, symmetry exploiting, generalized Fourier transform, finite difference, expression templates, feature modeling, variability
##### National Category

Software Engineering
##### Research subject

Scientific Computing
##### Identifiers

URN: urn:nbn:se:uu:diva-7768ISBN: 978-91-554-6837-8 (print)OAI: oai:DiVA.org:uu-7768DiVA, id: diva2:169924
##### Public defence

2007-04-20, Room 2446, Polacksbacken, Lägerhyddsvägen 2D, Uppsala, 10:15 (English)
##### Opponent

PrimeFaces.cw("AccordionPanel","widget_formSmash_j_idt803",{id:"formSmash:j_idt803",widgetVar:"widget_formSmash_j_idt803",multiple:true});
##### Supervisors

PrimeFaces.cw("AccordionPanel","widget_formSmash_j_idt815",{id:"formSmash:j_idt815",widgetVar:"widget_formSmash_j_idt815",multiple:true});
#####

PrimeFaces.cw("AccordionPanel","widget_formSmash_j_idt831",{id:"formSmash:j_idt831",widgetVar:"widget_formSmash_j_idt831",multiple:true}); Available from: 2007-03-30 Created: 2007-03-30 Last updated: 2018-01-13Bibliographically approved
##### List of papers

Computer simulations have emerged as a cost efficient complement to laboratory experiments, as computers have become increasingly powerful.

The aim of the present work is to explore the ideas of some state of the art software development practices, and ways in which these can be useful for developing high performance research codes.

The introduction of these practices, and the modular designs that they give rise to, raises issues regarding a potential conflict between runtime efficiency on one hand and development efficiency on the other. Flexible software modules, based on mathematical abstractions, will provide support for convenient implementation and modification of numerical operators. Questions still remain about whether such modules will provide the efficiency which is required for high performance applications.

To answer these questions, investigations were performed within two different problem domains. The first domain consisted of modular frameworks for the numerical solution of Partial Differential Equations. Such frameworks proved a suitable setting, since several of my research questions revolved around the issue of modularity.

The second problem domain was that of symmetry exploiting algorithms. These algorithms are based on group theory, and make ample use of mathematical abstractions from that field. The domain of symmetry exploiting algorithms gave us opportunities to investigate difficulties in combining modularity based on high level abstractions with low level optimizations using data layout and parallelization.

In conclusion, my investigation of software development practices for the area of high performance computing has proved very fruitful indeed. I have found that none of the concerns that were raised should lead us to refrain from the use of the practices that I have considered. On the contrary, in the two case studies presented here, these practices lead to designs that perform well in terms of usability as well as runtime efficiency.

1. Mixed C_{++}/Fortran 90 implementation of parallel flow solvers$(function(){PrimeFaces.cw("OverlayPanel","overlay68471",{id:"formSmash:j_idt925:0:j_idt935",widgetVar:"overlay68471",target:"formSmash:j_idt925:0:partsLink",showEvent:"mousedown",hideEvent:"mousedown",showEffect:"blind",hideEffect:"fade",appendToBody:true});});

2. High performance generative programming with a Fortran 95 application$(function(){PrimeFaces.cw("OverlayPanel","overlay169919",{id:"formSmash:j_idt925:1:j_idt935",widgetVar:"overlay169919",target:"formSmash:j_idt925:1:partsLink",showEvent:"mousedown",hideEvent:"mousedown",showEffect:"blind",hideEffect:"fade",appendToBody:true});});

3. Design and usability of a PDE solver framework for curvilinear coordinates$(function(){PrimeFaces.cw("OverlayPanel","overlay109841",{id:"formSmash:j_idt925:2:j_idt935",widgetVar:"overlay109841",target:"formSmash:j_idt925:2:partsLink",showEvent:"mousedown",hideEvent:"mousedown",showEffect:"blind",hideEffect:"fade",appendToBody:true});});

4. Composable difference operators for coordinate invariant partial differential equations$(function(){PrimeFaces.cw("OverlayPanel","overlay38151",{id:"formSmash:j_idt925:3:j_idt935",widgetVar:"overlay38151",target:"formSmash:j_idt925:3:partsLink",showEvent:"mousedown",hideEvent:"mousedown",showEffect:"blind",hideEffect:"fade",appendToBody:true});});

5. Generic programming aspects of symmetry exploiting numerical software$(function(){PrimeFaces.cw("OverlayPanel","overlay95799",{id:"formSmash:j_idt925:4:j_idt935",widgetVar:"overlay95799",target:"formSmash:j_idt925:4:partsLink",showEvent:"mousedown",hideEvent:"mousedown",showEffect:"blind",hideEffect:"fade",appendToBody:true});});

6. Designing for geometrical symmetry exploitation$(function(){PrimeFaces.cw("OverlayPanel","overlay38453",{id:"formSmash:j_idt925:5:j_idt935",widgetVar:"overlay38453",target:"formSmash:j_idt925:5:partsLink",showEvent:"mousedown",hideEvent:"mousedown",showEffect:"blind",hideEffect:"fade",appendToBody:true});});

isbn
urn-nbn$(function(){PrimeFaces.cw("Tooltip","widget_formSmash_j_idt1962",{id:"formSmash:j_idt1962",widgetVar:"widget_formSmash_j_idt1962",showEffect:"fade",hideEffect:"fade",showDelay:500,hideDelay:300,target:"formSmash:altmetricDiv"});});

CiteExport$(function(){PrimeFaces.cw("TieredMenu","widget_formSmash_lower_j_idt2029",{id:"formSmash:lower:j_idt2029",widgetVar:"widget_formSmash_lower_j_idt2029",autoDisplay:true,overlay:true,my:"left top",at:"left bottom",trigger:"formSmash:lower:exportLink",triggerEvent:"click"});}); $(function(){PrimeFaces.cw("OverlayPanel","widget_formSmash_lower_j_idt2030_j_idt2032",{id:"formSmash:lower:j_idt2030:j_idt2032",widgetVar:"widget_formSmash_lower_j_idt2030_j_idt2032",target:"formSmash:lower:j_idt2030:permLink",showEffect:"blind",hideEffect:"fade",my:"right top",at:"right bottom",showCloseIcon:true});});