Unity Technologies
Cadence Design Systems
Engenheiro(a) de Sistemas Distribuídos
Sobre a Vaga
NA CADENCE, CONTRATAMOS E DESENVOLVEMOS LÍDERES E INOVADORES QUE QUEREM CAUSAR IMPACTO NO MUNDO DA TECNOLOGIA.
Estamos construindo uma ferramenta de análise de eletromigração e queda de IR em nível de transistor distribuído de próxima geração. Nossa equipe possui forte expertise em solucionadores numéricos e algoritmos de simulação de circuitos. Estamos procurando um(a) engenheiro(a) de sistemas distribuídos motivado(a) para ajudar a construir a infraestrutura escalável de processamento de dados para lidar com projetos de circuitos massivos em recursos de computação distribuída.
Por Que Se Juntar a Nós
Trazemos forte expertise em métodos numéricos e algoritmos de análise de circuitos, interfaces de solucionadores bem definidas e uma visão técnica clara. Você trabalhará ao lado de engenheiros experientes construindo infraestrutura distribuída do zero com ferramentas modernas. Esta é uma oportunidade de aprimorar sua expertise em sistemas distribuídos em escala de produção enquanto resolve problemas desafiadores no design de chips.
O Que Você Aprenderá
- Arquitetura e padrões de sistemas distribuídos em produção
- Design e otimização de pipelines de dados em larga escala
- Engenharia de desempenho para conjuntos de dados multi-TB
- Construção de infraestrutura confiável e observável
- Trabalho com especialistas de domínio em simulação de circuitos e métodos numéricos
Candidato(a) Ideal
Você está ansioso(a) para aprofundar sua expertise em sistemas distribuídos e animado(a) com arquitetura de pipeline de dados. Você tem experiência fundamental com computação distribuída em Python e quer enfrentar desafios em escala de produção. Você se sente confortável aprendendo novas tecnologias, fazendo perguntas e colaborando com especialistas de sistemas e de domínio. Você valoriza código limpo, observabilidade e experiência do usuário, além de desempenho.
Não é necessária experiência em simulação de circuitos. Precisamos do seu entusiasmo em construir infraestrutura escalável e confiável e da sua vontade de se tornar um(a) especialista em sistemas distribuídos.
ESTAMOS FAZENDO UM TRABALHO QUE IMPORTA. AJUDE-NOS A RESOLVER O QUE OUTROS NÃO PODEM.
O Que Você Construirá
Você contribuirá para a infraestrutura distribuída principal de uma plataforma baseada em Python orquestrando solucionadores de C++ de alto desempenho, trabalhando em:
Pipeline de Dados e Gerenciamento de I/O
- Construir pipelines de ingestão para netlists em larga escala e dados de simulação
- Implementar I/O de alto desempenho para bancos de dados de circuitos multi-TB
- Desenvolver camadas de serialização/desserialização que conectam componentes de Python e C++
- Projetar interfaces de streaming para resultados de solucionadores distribuídos
Orquestração de Tarefas e Fluxo de Trabalho
- Implementar distribuição de tarefas com agendamento tolerante a falhas para simulações de longa duração
- Desenvolver gerenciamento de recursos e balanceamento de carga entre clusters de computação
- Construir monitoramento e observabilidade para fluxos de trabalho distribuídos
- Otimizar granularidade de tarefas e gerenciamento de dependências
Visualização e Análise
- Desenvolver visualização escalável para resultados de simulação multi-dimensionais em escala TB
- Implementar exploração interativa de dados com técnicas de otimização (downsampling, LOD, rendering progressivo)
Experiência Necessária
Sistemas Distribuídos
- 3+ anos construindo sistemas distribuídos com Python
- Experiência com frameworks de computação distribuída (Dask, Spark, Ray ou Celery)
- Compreensão de padrões de computação distribuída, localidade de dados e tolerância a falhas
Engenharia de Dados
- Experiência com formatos de dados de alto desempenho (HDF5, Parquet, Arrow ou formatos colunares similares)
- Familiaridade com estratégias de particionamento de dados e padrões de streaming
- Alguma exposição à interoperabilidade Python/C++ (pybind11, nanobind)
Engenharia de Software
- Fortes habilidades de programação em Python, C++ com experiência em código de produção
- Confortável trabalhando em bases de código grandes e ambientes de desenvolvimento colaborativo
- Compreensão das melhores práticas de engenharia de software (testes, revisão de código)
Diferenciais
- Experiência em EDA, VLSI, design de semicondutores ou engenharia computacional
- Experiência com visualização de dados científicos/de engenharia
- Experiência em HPC com agendadores de jobs (Slurm, PBS, LSF)
- Conhecimento de aceleração por GPU
- Familiaridade com ferramentas modernas (Go, Plotly, Bokeh, Holoviews, Datashader)
- Contribuições em computação distribuída open-source ou outras
- Experiência com plataformas de nuvem (AWS, GCP, Azure)
Localização da Vaga
- Esta é uma posição em tempo integral, presencial, baseada em Burnaby (Grande Vancouver), Canadá. A presença no escritório é obrigatória.
A faixa salarial anual para British Columbia é 89,600 CAD a 166,400 CAD.
Você também pode ser elegível a receber remuneração por incentivo: bônus, ações e benefícios. Posições de vendas geralmente oferecem uma estrutura de remuneração por incentivo competitiva de "On Target Earnings" (OTE). Observe que a faixa salarial é uma diretriz e a remuneração pode variar com base em fatores como qualificações, nível de habilidade, competências e local de trabalho.
