John Anvik
University of Alberta
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by John Anvik.
parallel computing | 2002
Steve MacDonald; John Anvik; Steven Bromling; Jonathan Schaeffer; Duane Szafron; Kai Tan
Object-oriented programming, design patterns, and frameworks are abstraction techniques that have been used to reduce the complexity of sequential programming. This paper describes our approach of applying these three techniques to the more difficult parallel programming domain. The Parallel Design Patterns (PDP) process, the basis of the CO2P3S parallel programming system, combines these techniques in a layered development model. The result is a new approach to parallel programming that addresses correctness and openness in a unique way. At the topmost developmem layer, a customized framework is generated from a design pattern specification of the parallel structure of the program. This framework encapsulates all of the structural details of the pattern, including communication and synchronization, to prevent programmer errors and ensure correctness. Lower layers are used only for performance tuning to make the code as efficient as necessary. This paper describes CO2P3S, based on the PDP process, and demonstrates it using an example application. We also provide results from a usability study of CO2P3S.
international parallel and distributed processing symposium | 2002
John Anvik; Steve MacDonald; Duane Szafron; Jonathan Schaeffer; Steven Bromling; Kai Tan
Object-oriented programming, design patterns, and frameworks are common techniques that have been used to reduce the complexity of sequential programming. We have applied these techniques to the more difficult domain of parallel programming. This paper describes CO2P3S, a pattern-based parallel programming system that generates parallel programs from parallel design patterns. We demonstrate CO2P3S by applying a new design pattern called the Wavefront pattern to three problems. We show that it is quick and easy to use CO2P3S to generate structurally correct parallel programs with good speed-ups on shared-memory computers.
acm sigplan symposium on principles and practice of parallel programming | 2003
Kai Tan; Duane Szafron; Jonathan Schaeffer; John Anvik; Steve MacDonald
A design pattern is a mechanism for encapsulating the knowledge of experienced designers into a re-usable artifact. Parallel design patterns reflect commonly occurring parallel communication and synchronization structures. Our tools, CO2P3S (Correct Object-Oriented Pattern-based Parallel Programming System) and MetaCO2P3S, use generative design patterns. A programmer selects the parallel design patterns that are appropriate for an application, and then adapts the patterns for that specific application by selecting from a small set of code-configuration options. CO2P3S then generates a custom framework for the application that includes all of the structural code necessary for the application to run in parallel. The programmer is only required to write simple code that launches the application and to fill in some application-specific sequential hook routines. We use generative design patterns to take an application specification (parallel design patterns + sequential user code) and use it to generate parallel application code that achieves good performance in shared memory and distributed memory environments. Although our implementations are for Java, the approach we describe is tool and language independent. This paper describes generalizing CO2P3S to generate distributed-memory parallel solutions.
automated software engineering | 2002
Steve MacDonald; Duane Szafron; Jonathan Schaeffer; John Anvik; Steven Bromling; Kai Tan
A design pattern encapsulates the knowledge of object-oriented designers into re-usable artifacts. A design pattern is a descriptive device that fosters software design re-use. There are several reasons why design patterns are not used as generative constructs that support code re-use. The first reason is that design patterns describe a set of solutions to a family of related design problems and it is difficult to generate a single body of code that adequately solves each problem in the family. A second reason is that it is difficult to construct and edit generative design patterns. A third major impediment is the lack of a tool-independent representation. A common representation could lead to a shared repository to make more patterns available. We describe a new approach to generative design patterns that solves these three difficult problems. We illustrate this approach using tools called CO/sub 2/P/sub 2/S and Meta-CO/sub 2/P/sub 2/S but our approach is tool-independent.
international conference on parallel processing | 2002
Steven Bromling; Steve MacDonald; John Anvik; Jonathan Schaeffer; Duane Szafron; Kai Tan
The advantages of pattern-based programming have been well-documented in the sequential programming literature. However patterns have yet to make their way into mainstream parallel computing, even though several research tools support them. There are two critical shortcomings of pattern (or template) based systems for parallel programming: lack of extensibility and performance. This paper describes our approach for addressing these problems in the CO/sub 2/P/sub 3/S parallel programming system. CO/sub 2/P/sub 3/S supports multiple levels of abstraction, allowing the user to design an application with high-level patterns, but move to lower levels of abstraction for performance tuning. Patterns are implemented as parameterized templates, allowing the user the ability to customize the pattern to meet their needs. CO/sub 2/P/sub 3/S generates code that is specific to the pattern/parameter combination selected by the user. The MetaCO/sub 2/P/sub 3/S tool addresses extensibility by giving users the ability to design and add new pattern templates to CO/sub 2/P/sub 3/S. Since the pattern templates are stored in a system-independent format, they are suitable for storing in a repository to be shared throughout the user community.
european conference on parallel processing | 2003
John Anvik; Jonathan Schaeffer; Duane Szafron; Kai Tan
Parallel programming environments provide a way for users to reap the benefits of parallelism, while reducing the effort required to create parallel applications. The CO2P3S parallel programming system is one such tool, using a pattern-based approach to express concurrency. This paper demonstrates that the CO2P3S system contains a rich set of parallel patterns for implementing a wide variety of applications running on shared-memory or distributed-memory hardware. Code metrics and performance results are presented to show the usability of the CO2P3S system and its ability to reduce programming effort, while producing programs with reasonable performance.
Archive | 2003
Duane Szafron; Russell Greiner; Paul Lu; David S. Wishart; Cam Macdonell; John Anvik; Brett Poulin; Zhiyong Lu; Roman Eisner
Naive Bayes classifiers, a popular tool for predicting the labels of query instances, are typically learned from a training set. However, since many training sets contain noisy data, a classifier user may be reluctant to blindly trust a predicted label. We present a novel graphical explanation facility for Naive Bayes classifiers that serves three purposes. First, it transparently explains the reasoning used by the classifier to foster user confidence in the prediction. Second, it enhances the users understanding of the complex relationships between the features and the labels. Third, it can help the user to identify suspicious training data. We demonstrate these ideas in the context of our implemented web-based system, which uses examples from molecular biology.
Bioinformatics | 2004
Zhiyong Lu; Duane Szafron; Russell Greiner; Paul Lu; David S. Wishart; Brett Poulin; John Anvik; Cam Macdonell; Roman Eisner
Nucleic Acids Research | 2004
Duane Szafron; Paul Lu; Russell Greiner; David S. Wishart; Brett Poulin; Roman Eisner; Zhiyong Lu; John Anvik; Cam Macdonell; Alona Fyshe; David Meeuwis
innovative applications of artificial intelligence | 2006
Brett Poulin; Roman Eisner; Duane Szafron; Paul Lu; Russell Greiner; David S. Wishart; Alona Fyshe; Brandon Pearcy; Cam Macdonell; John Anvik