# 資訊科技產業專案設計課程作業 3 ## Job Description ### [Nvidia - Senior Compiler Engineer](https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite/job/Senior-Compiler-Engineer_JR1968483) **Key Responsibilities** - Work with a geographically distributed partner organisation to understand, modify and improve CPU Compiler SW at NVIDIA. - Contribute new features and optimisation techniques targeting NVIDIA Grace CPUs engaging with upstream and open source communities. - Develop compiler SW that is optimised for performance. - Be part of a team that is at the centre of AI, HPC and data centre technologies. - Contribute towards the development of next generation compute **Minimum Qualifications** - BS or MS degree in Computer Science, Computer Engineering, or related field or equivalent work experience - Experience with compiler development or a related academic project. - Knowledge of Language Front-Ends or Compiler optimisation techniques and code generation modules. - Strong hands-on C++ programming skills - Excellent verbal and written communications skills **Preferred Qualifications** - Familiarity with CPU architectures such as Arm Architecture (AArch32, AArch64), RISC-V, x86_64, PowerPC or DSPs and engaging with pre-silicon compiler and toolchain contributions. - A track record of working with industry standard compiler infrastructure such as Clang, LLVM or MLIR. - Knowledge of AI algorithms, scientific HPC applications and related code optimisations. - Meaningful contributions to free software and open source compiler communities. ### [Nvidia - Compiler Verification Engineer](https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite/job/Compiler-Verification-Engineer_JR1990331) **Key Responsibilities** - Implement programs or GPU code in PTX, CUDA, C/C++, or a GPU assembly language to verify NVIDIA GPU / embedded compilers. - Design and implement tools, libraries, & automation to support NVIDIA embedded and GPU compiler development and verification process. - Review the technical work and provide technical mentorship to the junior members of the team. - Recommend and drive creative techniques including reviewing of industry standard methodologies, literature, and technological advancement to architect and develop the software, scripts, and tools that would bring compiler quality to the next level. - Automation and innovation: Drive innovation by designing and implementing innovative solutions to develop verification programs. - Compiler quality KPIs: Innovate, implement, and report on compiler quality Key Performance Indicators (KPIs). Provide valuable recommendations for improving the overall quality of our compiler technology. - Collaborate with the processor architecture and compiler teams in a distributed geographic environment to capture the technical requirements and deliver against them. **Minimum Qualifications** - 3+ years of relevant experience and a bachelor's degree in computer science or software engineering (or equivalent experience). - Fluency in reading, writing, and speaking in English language to understand and create Technical artifacts (Verification Plans, Requirement Documents, Design Documents etc.) and engage stakeholders in Technical brainstorming and Status meetings. - Drive for innovation: Demonstrate your ability to lead, develop, and apply advanced technologies, theories, principles, and concepts to develop techniques for resolving complex product issues. - Solid understanding of software development and programming concepts. Expertise in one of C, C++, CUDA, PTX or a GPU assembly programming language including their specifications - Excellent problem-solving skills: Demonstrate your proficiency in solving programming, integration, debug, or testing problem. - Collaborative and interpersonal skills are essential, along with experience working with geographically distributed teams. - Proficiency in scripting and automation using tools such as Python and Shell/Perl scripting. **Preferred Qualifications** - Prior experience designing and implementing low level programs. - Compiler development or verification experience with prior experience in at least one of these functional areas: compiler front-end, compiler optimizations, or LLVM framework - Prior experience working on compiler technologies and familiarity with architecture of at least one complex and the modern processor ### [Apple - Compiler Engineer](https://jobs.apple.com/en-us/details/200574258/compiler-engineer?team=SFTWR) **Key Responsibilities** - Work closely with CPU architects and tools engineers designing compiler features that maximize the impact of Apple silicon. - Conduct application and benchmark performance analysis, explore new CPU architectures, and work on development of the compiler backend for Apple CPUs. **Minimum Qualifications** - 2 years of experience - Experience in developing software tools (such as with one but not all compilers, debuggers, language run-times, profilers or binary translation tools) - Excellent software engineering, testing, and debugging skills **Preferred Qualifications** - Strong C and C++ programming expertise - Background in compiler backend development and/or optimizations - Good understanding of CPU architecture and micro-architecture ### [Apple - Compiler CPU Backend Engineer](https://jobs.apple.com/en-us/details/200571358/compiler-cpu-backend-engineer?team=SFTWR) **Key Responsibilities** - Work closely with CPU architects and tools engineers designing compiler features that maximize the impact of Apple silicon. - Conduct application and benchmark performance analysis, explore new CPU architectures, and work on development of the compiler backend for Apple CPUs. **Minimum Qualifications** - Strong C and C++ programming expertise - Background in compiler backend development and/or optimizations - Good understanding of CPU architecture and micro-architecture **Preferred Qualifications** - Hands-on experience developing LLVM-based compiler backends - Knowledge of common data structures like linked lists, sets, maps, and graphs - Ability to communicate clearly and effectively ## Self Assessment ### Requirements Summarize the key requirements from these jobs: **Core Requirements:** - Education: BS/MS in Computer Science, Computer Engineering, or related field - Programming: Strong C/C++ programming skills - Communication: Excellent verbal and written communication abilities - Experience: 2-3+ years of relevant experience **Technical Knowledge Requirements:** **Compiler Development:** - Experience with compiler development or related projects - Understanding of compiler components (front-ends, optimizations, code generation) - Experience with LLVM framework is highly valued **Architecture Knowledge:** - Understanding of CPU architecture and micro-architecture - Familiarity with various architectures (ARM, RISC-V, x86_64, PowerPC) ### Weaknesses - Leak of experience of compiler related field such as LLVM Framwork ## Resume - [Resume Link](https://drive.google.com/file/d/16lAD_RjTOm7FIWEvxbiezjDD7eLKdxr6/view?usp=sharing) ## Mock Interview