Software Engineer (GPU)
- Develop various aspects of the Distributed Ledger Platform.
- Design and architect GPU optimization solution for accelerating cryptographic functions (hashing, signature verification etc.) using a GPU.
- Develop OpenCL code to acceleration cryptographic functions.
- Develop efficient interface code between system software and OpenCL code running on GPU.
- Participate in System design solutions that maximize the use of GPUs for improving overall system performance.
- Develop sample applications to demonstrate value and strength of the platform. Sample applications will include web, mobile and embedded development.
- Assist 3rd party developers in the development of a wide range of applications based on the platform, including financial transactions, gaming and database applications.
- Be a strong and proficient hands-on programmer, spending 80% of your time coding.
- Excellent programming skills in OpenCL (or CUDA)
- Deep knowledge of and experience with the Java VM, covering its strengths and weaknesses
- Proficiency in Java with knowledge of ecosystem of libraries and tools
- Fluent in tools and methodologies necessary for GPU development both on physical servers as well as in Public clouds.
- Experience with low-level and embedded system design and system integration
- Strong grasp of Computer Science fundamentals including concurrency, performance optimization and reusability
- Familiarity with and interest in mathematical concepts, principles and techniques
- Systems programming experience including providing services to other software (e.G.Operating systems, computational science applications, game engines and AAA video games, industrial automation and software as a service applications)
- Geo-distributed database architecture with SQL experience
- Familiarity with high-performance architectural systems and design patterns
- Experience in developing libraries and platforms for use and deployment by application developers
- Strong engineering principles and processes aimed at developing simple, modular and high-quality code
- Familiarity with test-driven software development processes and continuous integration tools and systems
- Experience with blockchain (e.G., Bitcoin or Ethereum) and distributed applications is a big plus
- Bachelor of Science or Master of Science degree, preferably from a high-credentialed school in Computer Science or similar discipline.
- The preferred experience with architectural design, but would consider someone with less experience with the right combination of skills.