Logo Passei Direto
Buscar

Algoritmos

Escola Colegio Estadual Barao Do Rio Branco
21) Um projeto de Machine Learning (ML) para análise preditiva de mercado exige o processamento concorrente de vastos datasets. O treinamento do modelo é uma tarefa computacionalmente intensiva, classificando-se como modelagem e simulação, que busca alta eficiência e confiabilidade. A equipe de engenharia de software precisa decidir se implementará a concorrência usando múltiplos processos independentes ou threads leves dentro de um processo principal. Essa escolha arquitetural impacta diretamente a sobrecarga de gerenciamento de recursos (overhead) e a complexidade do compartilhamento dos dados de treinamento. Múltiplos processos garantem maior isolamento, um benefício de projeto que minimiza a propagação de erros, mas impõe um custo maior na Comunicação Inter-Processos. Múltiplas threads, por outro lado, facilitam a comunicação, mas introduzem desafios críticos de sincronização e integridade de dados, que, se negligenciados, comprometem a qualidade do software. A complexidade do sistema exige que o projeto de software considere como a estrutura de concorrência afeta o tempo de execução e a gestão de memória. Em sistemas de Machine Learning de alto desempenho, a implementação da concorrência via multithreading (múltiplas threads em um único processo) é frequentemente preferida à multitarefa baseada em múltiplos processos, Selecione uma alternativa: a) porque a sobrecarga de recursos de memória é minimizada drasticamente quando as threads operam dentro do mesmo espaço de endereçamento, facilitando a comunicação e a transformação rápida de grandes volumes de dados compartilhados, como os datasets e parâmetros do modelo, embora exija mecanismos rigorosos de sincronização para manter a integridade dos dados e evitar condições de corrida. b) já que os múltiplos processos proporcionam uma estrutura de concorrência mais simples e com maior coesão, permitindo que os componentes do modelo de ML manipulem variáveis globais sem a necessidade de semáforos ou monitores, o que elimina a complexidade adicional do teste lógico e a necessidade de verificação formal da correção. c) pois a separação completa dos espaços de memória que o multithreading oferece garante o isolamento funcional entre as unidades de trabalho, o que é fundamental para a confiabilidade em sistemas críticos, mas, em contrapartida, aumenta o acoplamento e torna mais complexo o Teste de Integração entre os componentes do subsistema. d) visto que a Complexidade Ciclomática da lógica de concorrência aumenta significativamente em abordagens com múltiplos processos, mas o uso de threads permite a aplicação imediata do teste baseado em cenário (Caixa-Preta), ignorando a lógica de processamento interno e concentrando-se apenas na verificação de interfaces externas. e) uma vez que a escolha é primariamente um aspecto de domínio do problema e não da arquitetura, e o desempenho é mais afetado pela eficiência dos algoritmos de ordenação e classificação de dados, tornando a granularidade da concorrência (thread vs. processo) irrelevante para a manutenibilidade do sistema e o esforço de teste subsequente.
User badge image
Marcelo Narciso

há 18 horas

Respostas

User badge image

Ed Verified user icon

há 18 horas

Vamos analisar as alternativas com base no contexto da concorrência em Machine Learning: a) Correta. Threads compartilham o mesmo espaço de memória, o que minimiza a sobrecarga de memória e facilita a comunicação rápida entre elas, essencial para manipular grandes datasets e parâmetros do modelo. Porém, isso exige mecanismos rigorosos de sincronização para evitar problemas como condições de corrida. b) Incorreta. Múltiplos processos não compartilham variáveis globais diretamente, e sim cada processo tem seu próprio espaço de memória, o que dificulta o compartilhamento sem mecanismos de comunicação interprocessos. Além disso, o uso de semáforos ou monitores é necessário para sincronização em multithreading, não em múltiplos processos. c) Incorreta. A separação completa dos espaços de memória é característica de múltiplos processos, não de multithreading. Multithreading compartilha o mesmo espaço de memória. d) Incorreta. A complexidade ciclomática pode aumentar em multithreading devido à sincronização, e o teste baseado em cenário não ignora a lógica interna, especialmente em sistemas concorrentes. e) Incorreta. A granularidade da concorrência (thread vs. processo) é relevante para desempenho, manutenibilidade e esforço de teste, especialmente em sistemas computacionalmente intensivos como ML. Portanto, a alternativa correta é: a) porque a sobrecarga de recursos de memória é minimizada drasticamente quando as threads operam dentro do mesmo espaço de endereçamento, facilitando a comunicação e a transformação rápida de grandes volumes de dados compartilhados, como os datasets e parâmetros do modelo, embora exija mecanismos rigorosos de sincronização para manter a integridade dos dados e evitar condições de corrida.

Essa resposta te ajudou?

0
Dislike0

Ainda com dúvidas?

Envie uma pergunta e tenha sua dúvida de estudo respondida!

Mais conteúdos dessa disciplina