We are looking for individuals who are interested in developing software for novel, advanced computer architectures, whose software stack spans from low-level runtimes and libraries in C/C++ to high level APIs that are needed for data science frameworks and toolkits.
There are opportunities for development at each level of this extensive software stack, on massive high-end FPGAs...and on actual, prototype hardware.
This is a position with the end goal being production-quality, high-performance software that demonstrates the novelty and performance of the hardware architecture developed.
Software development begins pre-silicon and access to FPGA emulation hardware, as well as functional and performance simulators, allows development of the software in parallel with hardware milestones.
Experimentation, product innovation, and publication is encouraged and there are opportunities to collaborate with research partners to develop ideas and translate them into the product.
The computing area of Graph Analytics, particularly with huge (terabytes and beyond) data sets as well as data sets that change rapidly in real-time, is quickly growing in use in industry and government applications, such as very large-scale relational databases, threat identification, and social network analytics.
Current, virtually ubiquitous Artificial Intelligence and Machine Learning applications likewise rely on sparse-graph processing with ever-increasing training data set sizes.
The Extreme Scale Computing (ESC) team develops novel, advanced architectures to handle fast processing of huge graphs. The group develops its own software and hardware in-house, with software development spanning all the levels of a full software stack. The software stack is intended for eventual mass adoption through open-source data science frameworks and through Intel Corp.'s oneAPI alongside deployments of its hardware. It is an organization with a strong technical atmosphere, innovation, friendly teamwork spirit, and engineers with diverse backgrounds. And as the hardware is also still in development, there is a real opportunity at every level of software development work to make a significant, tangible impact on the final hardware product.
The role primarily involves software development in C++ at the runtime layer of the software stack to support functionality needed for higher-level libraries and frameworks. Porting of existing libraries written for other architectures is also a significant part of the work. In addition, there will be a need for contributions to the design and development of the software stack's top-most level, the API, which will be used by future third-party frameworks and workflows. A part of this API work will also involve collaboration with Intel oneAPI teams for inclusion into future releases of oneAPI. There will be opportunities for contributing optimizations and features directly back to open-source libraries and other projects. It is expected that the developer in this role take a significant part in developing tests for all the functionality they develop, both directly (through writing test code, harnesses, etc) and via close cooperation with the testing and continuous integration teams
An ideal candidate would exhibit multiple of the following traits and abilities:
- Ability to work in a dynamic and team-oriented environment on a rapidly evolving (vs established) product, with team members spread across varied geographical locations
- Ability to self-motivate, self-assess, and determine useful paths of work with relative autonomy, with a positive Can-Do attitude
- Excellent written and oral communication skills in English (other languages are a plus)
- Deep, driven interest and passion for optimization and performance at all layers of a software stack
- Enthusiasm for hardware and a curiosity about how software and hardware interoperate
Qualifications
Minimum qualifications are required to be initially considered for this position. Preferred qualifications are in addition to the minimum requirements and are considered a plus factor in identifying top candidates.
Minimum Qualifications:
B.Sc. with 2 years of hands-on software development experience. Degree must be in Computer Science, Computer Engineering, or comparable engineering major/discipline concentrated on software development ("Cedula Profesional" may be required)
In addition, the following MUST have been encountered in a significant amount (at least 6 months' time or at least 1 significant project/work product):
- Software engineering and software project planning exposure (Development methodology, collaborative processes, etc.), especially the philosophy and design concepts around layered software architecture (software stacks)
- Use of software toolchains, compilers, and debugging tools on a Linux/Unix-like system
- Software development work at the hardware/software interface, firmware, or runtime levels on any modern RISC, ARM, or x86 platform
- Experience debugging multi-threaded applications and drivers on Linux/Unix-like system
- Knowledge (but not necessarily domain mastery) of computer architecture including vector processors, multi-core and hyper-threading processors, and memory hierarchies
- Intermediate+ English (written and spoken)
Preferred Qualifications:
- Expertise (domain mastery) of low-level programming and debugging of multi-core processing units and their peripherals (i.e., bare-metal programming, C/C++ is desired)
- Experience in modifying and extending the GDB and/or LLDB debuggers and GCC and/or LLVM compilers
- Previous work with performance analysis, specifically on GPUs and Intel CPUs
- Prior study of computer implementations of linear algebra operations and matrix math
- Hands-on exposure to High-Perf. Computing (HPC)/distributed computing environments and applications
- Prior development or optimization of Deep Learning models, especially low precision models (knowledge of current frameworks for ML/DL is a plus)
- Prior hands-on development of a commercially released (or widely adopted open source) API
- Solid knowledge of graph algorithms relevant to generic graph operations, as well as those applicable to AI/ML
- Basic performance-analysis-of-systems skills, and basic statistics knowledge
- Master Degree
Requirements listed would be obtained through a combination of industry relevant job experience, internship experiences and or school work/classes/research.
Enable amazing computing experiences with Intel Software continues to shape the way people think about computing – across CPU, GPU, and FPGA architectures. Get your hands on new technology and collaborate with some of the smartest people in the business. Our developers and software engineers work in all software layers, across multiple operating systems and platforms to enable cutting-edge solutions. Ready to solve some of the most complex software challenges? Explore an impactful and innovative career in Software.
Work Model for this Role
This role will be eligible for our hybrid work model which allows employees to split their time between working on-site at their assigned Intel site and off-site.
Get email alerts for the latest"Software/Firmware Engineer jobs in Guadalajara"
