Embedded, Cloud, and HPC

Established in 1992, Gray Technologies, Inc. provides software engineering services to design, develop, integrate, and deploy software for embedded, cloud, and high performance computing (HPC) systems. Today's desktop, web, and mobile applications comprising the user interfaces that we use daily in all aspects of our lives, require the data and services of a complex network of embedded and cloud technologies forming highly feature rich systems. Gray Technologies specializes in the design and development of the software deployed within the embedded and cloud systems that provide the data and services for those applications and the HPC infrastructure required for computationally intensive processing of the data. Gray Technologies provides professional software engineering services delivered with the greatest attention to detail and the discipline required to produce well-engineered software products.


Embedded_System.jpg
Cloud_System.jpg

embedded systems

Embedded systems interact with the physical world. They often contain sensors that measure physical properties and actuators that take a physical action requiring real-time performance. Sensor data may be processed and stored within the embedded system and/or transmitted to other systems for storage, sensor integration, and higher-level processing. Embedded systems are often highly constrained by power, size, weight, and environmental requirements which greatly limits their ability to process, store, and transmit data. The software in these systems is typically written in C++, C, and assembly language for strict optimization purposes and interfaces to the hardware through an operating system kernel or directly without an OS. The knowledge, experience, and tools required to design and develop this type of software is vastly different from desktop, web, or mobile applications that are highly abstracted from the hardware and rich in resources available to the developer.

cloud systems

Cloud systems interact within a virtual world. Cloud technologies provide the services to create and manage on-demand virtual machines (VMs) on internet-hosted platforms using web service application‭ program interfaces (APIs). Application programs (desktop, web, or mobile) use these APIs to create and manage the resources they need, when they need them. All aspects of a physical network including the servers, software, database, storage, networking, access management, and security are virtualized and programmable. Additionally, services include auto-scaling of the resources based on demand with load-balancing across the servers. The software in cloud systems is typically written in Java, Python, Ruby, and other web programming languages and utilize web application‭ frameworks constructed from these languages. Cloud systems provide services to applications at three primary levels of functionality: infrastructure as a service (IaaS), platform as a service (PaaS, and software as a services (SaaS).


HPC systems

High Performance Computing (HPC) systems can be physical or virtual. The traditional approach to HPC is a physical cluster of multicore compute nodes and storage nodes interconnected with low-latency high-throughput networks. From their desktop or laptop computers, users login to a secure login node on the cluster to access their stored data, upload and download their working files using secure file transfer tools, and submit batch jobs on one or more compute nodes by issuing a set of Linux commands to a job queueing and scheduling service. Complex setups are often required for graphical remote viewing of models and simulation results using graphical processing unit (GPU) nodes. The traditional HPC system can be complex creating barriers to adoption and use. There is a growing trend to build web service interfaces to HPC centers to "cloudify" and virtualize the HPC services that they offer to make the systems easier to use and to increase adoption and usage of the services either within their organizations or for public commercial use.