Application Development Strategy: Provide Good Performance on GPUs

The GPU provides best performance on computations that can be run on numerous data objects simultaneously in parallel. This typically involves performing operations using large numbers (thousands or tens of thousands) of concurrent threads.

  • Data must be transferred from the host to the GPU and back in order to employ it. These transfers are costly in terms of performance and should be minimized.
  • The amount of work performed at each invocation of the GPU needs to justify the cost of moving data to and from the GPU. Code that transfers data for brief use by a small number of threads will see no performance benefit (more likely, an overall performance decrease).
  • Data should be kept on the GPU as long as possible. As transfers should be minimized, applications that can perform multiple consecutive operations on the same data need to leave the data on the GPU for these subsequent operations. Application redesign will likely be needed to accomplish this goal.

STRA takes the initiative and delivers

Our team and leadership has a track record of fielding effective solutions often under challenging conditions

Our People

Experience, creativity, tenacity, and strong leadership with a track-record of delivering results

Attention to Detail

The details "make or break" the ability to deliver robust, portable, and repeatable results on complex, multidisciplinary problems

Cost Effective Solutions

We develop targeted solutions that meet customer needs within their budget and time constraints.

Partners in our customer's success

We stand behind our innovative solutions and support our customer's needs and investment long-term.

Our Strengths

We bring years of research and development experience, proven leadership, and "out-of-the-box" thinking together to field the product that you need

Scientific Software Development

We have a 30 year track record of delivering effective software solutions on some of the nation's most challenging problems.

Technical Planning and Consulting

Tactical and strategic planning as well as unparalleled technical acumen applied to next generation software products.

Scientific Analysis

Highly experienced, critical, broad technical perspective applied to some of the most challenging engineering and physics problems of our time.

Computer Services, Administration, and DevOps

We specialize in designing, implementing, and supporting OSX and Linux-based solutions using modern and next-generation design, philosophies, and tools.

Code Architecture and Feature Development

We practice modern software design and development methodologies, and employ advanced numerical and discretization methods to develop stable, accurate, and repeatable analysis tools needed by our customers.

Advanced Application and Algorithm R&D

We specialize in developing parallel (MPI), multicore and manycore performance portable scientific applications that provide excellent performance on small- and supercomputer-scale computers employing GPUs and other advanced computer architectures. We employ next-generation C++ language features as well as abstraction layers such as Kokkos to provide portability and preserve our customer's investment in these technologies.