Baixe o app para aproveitar ainda mais
Prévia do material em texto
Nota: 100 Disciplina(s): Computação Paralela Questão 1/10 - Computação Paralela #include"omp.h" #include"stdio.h" using namespace std; int main(){ printf("INICIO.\n"); #pragma omp parallel { printf("Adoro paralelismo!\n"); } printf("FIM.\n"); return 0; } Sobre o codigo acima analise as afirmações a seguir: I. #pragma omp parallel é uma função que inicia a região paralela do código. II. O abre e fecha chaves depois de #pragma omp parallel é o que marca o bloco de código paralelo III. O número de vezes que mensagem será impressa na tela depende da quantidade de threads que o OpenMP executar considerando variáveis de ambiente e disponibilidade do sistema operacional pois não foi especificado pelo programador. É correto apenas o que se afirma em Nota: 10.0 A I apenas. Considerando o conteúdo da aula 4. (FALSO) I. #pragma omp parallel é uma função que inicia a região paralela do código. - Não é uma função mas sim uma diretiva de compilação. (CORRETO) II. O abre e fecha chaves depois de #pragma omp parallel é o que marca o bloco de código paralelo - O que estiver neste bloco de código será paralelizado. (CORRETO) III. O número de vezes que mensagem será impressa na tela depende da quantidade de threads que o OpenMP executar considerando variáveis de ambiente e disponibilidade do sistema operacional pois não foi especificado pelo programador. - Ao longo do código não é especificado em momento algum a quantidade de threads então esta será estimada pelas variáveis de ambiente e disponibilidade do sistema. B II apenas. Considerando o conteúdo da aula 4. (FALSO) I. #pragma omp parallel é uma função que inicia a região paralela do código. - Não é uma função mas sim uma diretiva de compilação. (CORRETO) II. O abre e fecha chaves depois de #pragma omp parallel é o que marca o bloco de código paralelo - O que estiver neste bloco de código será paralelizado. (CORRETO) III. O número de vezes que mensagem será impressa na tela depende da quantidade de threads que o OpenMP executar considerando variáveis de ambiente e disponibilidade do sistema operacional pois não foi especificado pelo programador. - Ao longo do código não é especificado em momento algum a quantidade de threads então esta será estimada pelas variáveis de ambiente e disponibilidade do sistema. C III apenas. Considerando o conteúdo da aula 4. (FALSO) I. #pragma omp parallel é uma função que inicia a região paralela do código. - Não é uma função mas sim uma diretiva de compilação. (CORRETO) II. O abre e fecha chaves depois de #pragma omp parallel é o que marca o bloco de código paralelo - O que estiver neste bloco de código será paralelizado. (CORRETO) III. O número de vezes que mensagem será impressa na tela depende da quantidade de threads que o OpenMP executar considerando variáveis de ambiente e disponibilidade do sistema operacional pois não foi especificado pelo programador. - Ao longo do código não é especificado em momento algum a quantidade de threads então esta será estimada pelas variáveis de ambiente e disponibilidade do sistema. D II e III apenas. Você assinalou essa alternativa (D) Você acertou! Considerando o conteúdo da aula 4. (FALSO) I. #pragma omp parallel é uma função que inicia a região paralela do código. - Não é uma função mas sim uma diretiva de compilação. (CORRETO) II. O abre e fecha chaves depois de #pragma omp parallel é o que marca o bloco de código paralelo - O que estiver neste bloco de código será paralelizado. (CORRETO) III. O número de vezes que mensagem será impressa na tela depende da quantidade de threads que o OpenMP executar considerando variáveis de ambiente e disponibilidade do sistema operacional pois não foi especificado pelo programador. - Ao longo do código não é especificado em momento algum a quantidade de threads então esta será estimada pelas variáveis de ambiente e disponibilidade do sistema. E I, II e III. Considerando o conteúdo da aula 4. (FALSO) I. #pragma omp parallel é uma função que inicia a região paralela do código. - Não é uma função mas sim uma diretiva de compilação. (CORRETO) II. O abre e fecha chaves depois de #pragma omp parallel é o que marca o bloco de código paralelo - O que estiver neste bloco de código será paralelizado. (CORRETO) III. O número de vezes que mensagem será impressa na tela depende da quantidade de threads que o OpenMP executar considerando variáveis de ambiente e disponibilidade do sistema operacional pois não foi especificado pelo programador. - Ao longo do código não é especificado em momento algum a quantidade de threads então esta será estimada pelas variáveis de ambiente e disponibilidade do sistema. Questão 2/10 - Computação Paralela #include"omp.h" #include"stdio.h" int main(){ #pragma omp parallel num_threads(4) { int id = omp_get_thread_num(); printf("Sou a thread numero %d.\n", id); } return 0; } Sobre o código acima analise as afirmações a seguir: I. O código lançara 4 threads apenas se o sistema operacional permitir II. omp_get_thread_num() retornará um identificador único por thread. III. A variável id é global para todas as threads. É correto apenas o que se afirma em Nota: 10.0 A I apenas. Considerando o conteúdo da aula 4. (CORRETO) I. O código lançara 4 threads apenas se o sistema operacional permitir - O codigo associado será executado por 4 threads ao todo. (CORRETO) II. omp_get_thread_num() retornará um identificador único por thread. - No caso de 4 threads serão os números, 0, 1, 2 e 3. (FALSO) III. A variável id é global para todas as threads. - São privadas, cada thread uma versão própria. B I e II apenas. Você assinalou essa alternativa (B) Você acertou! Considerando o conteúdo da aula 4. (CORRETO) I. O código lançara 4 threads apenas se o sistema operacional permitir - O codigo associado será executado por 4 threads ao todo. (CORRETO) II. omp_get_thread_num() retornará um identificador único por thread. - No caso de 4 threads serão os números, 0, 1, 2 e 3. (FALSO) III. A variável id é global para todas as threads. - São privadas, cada thread uma versão própria. C I e III apenas. Considerando o conteúdo da aula 4. (CORRETO) I. O código lançara 4 threads apenas se o sistema operacional permitir - O codigo associado será executado por 4 threads ao todo. (CORRETO) II. omp_get_thread_num() retornará um identificador único por thread. - No caso de 4 threads serão os números, 0, 1, 2 e 3. (FALSO) III. A variável id é global para todas as threads. - São privadas, cada thread uma versão própria. D II e III apenas. Considerando o conteúdo da aula 4. (CORRETO) I. O código lançara 4 threads apenas se o sistema operacional permitir - O codigo associado será executado por 4 threads ao todo. (CORRETO) II. omp_get_thread_num() retornará um identificador único por thread. - No caso de 4 threads serão os números, 0, 1, 2 e 3. (FALSO) III. A variável id é global para todas as threads. - São privadas, cada thread uma versão própria. E I, II e III. Considerando o conteúdo da aula 4. (CORRETO) I. O código lançara 4 threads apenas se o sistema operacional permitir - O codigo associado será executado por 4 threads ao todo. (CORRETO) II. omp_get_thread_num() retornará um identificador único por thread. - No caso de 4 threads serão os números, 0, 1, 2 e 3. (FALSO) III. A variável id é global para todas as threads. - São privadas, cada thread uma versão própria. Questão 3/10 - Computação Paralela int lista[1000]; #pragma omp parallel num_threads(4) { int id = omp_get_thread_num(); metodo(lista,id); } printf("fim\n); I. Ao todo serão executadas 5 threads as 4 lançadas pelo openMP mais a thread principal que lançou as demais. II. Suponha que o código seja executado em um máquina com um único núcleo,é garantido pelo OpenMP que as thread de id 0 será executada antes da thread de id 1. III. #pragma omp parallel por debaixo dos panos cria e une threads. O que significa que só será executado o comando printf("fim") depois que todas as threads terminarem de executar. Considere o código acima analise as afirmações a seguir: É correto apenas o que se afirma em Nota: 10.0 A I apenas. Considerando o conteúdo da aula 4. (FALSO) I. Ao todo serão executadas 5 threads as 4 lançadas pelo openMP mais a thread principal que lançou as demais. - Ao todo 4 threads serão executadas, o que significa que apenas 3 novas serão lançadas. (FALSO) II. Suponha que o código seja executado em um máquina com um único núcleo, é garantido pelo OpenMP que as thread de id 0 será executada antes da thread de id 1. - A ordem depende do sistema operacional que não garante ordem. (CORRETO) III. #pragma omp parallel por debaixo dos panos cria e une threads. O que significa que só será executado o comando printf("fim") depois que todas as threads terminarem de executar. - O código printf("fim") será executado depois das threads terminarem o bloco do #pragma omp parallel B II apenas. Considerando o conteúdo da aula 4. (FALSO) I. Ao todo serão executadas 5 threads as 4 lançadas pelo openMP mais a thread principal que lançou as demais. - Ao todo 4 threads serão executadas, o que significa que apenas 3 novas serão lançadas. (FALSO) II. Suponha que o código seja executado em um máquina com um único núcleo, é garantido pelo OpenMP que as thread de id 0 será executada antes da thread de id 1. - A ordem depende do sistema operacional que não garante ordem. (CORRETO) III. #pragma omp parallel por debaixo dos panos cria e une threads. O que significa que só será executado o comando printf("fim") depois que todas as threads terminarem de executar. - O código printf("fim") será executado depois das threads terminarem o bloco do #pragma omp parallel C III apenas. Você assinalou essa alternativa (C) Você acertou! Considerando o conteúdo da aula 4. (FALSO) I. Ao todo serão executadas 5 threads as 4 lançadas pelo openMP mais a thread principal que lançou as demais. - Ao todo 4 threads serão executadas, o que significa que apenas 3 novas serão lançadas. (FALSO) II. Suponha que o código seja executado em um máquina com um único núcleo, é garantido pelo OpenMP que as thread de id 0 será executada antes da thread de id 1. - A ordem depende do sistema operacional que não garante ordem. (CORRETO) III. #pragma omp parallel por debaixo dos panos cria e une threads. O que significa que só será executado o comando printf("fim") depois que todas as threads terminarem de executar. - O código printf("fim") será executado depois das threads terminarem o bloco do #pragma omp parallel D I e III apenas. Considerando o conteúdo da aula 4. (FALSO) I. Ao todo serão executadas 5 threads as 4 lançadas pelo openMP mais a thread principal que lançou as demais. - Ao todo 4 threads serão executadas, o que significa que apenas 3 novas serão lançadas. (FALSO) II. Suponha que o código seja executado em um máquina com um único núcleo, é garantido pelo OpenMP que as thread de id 0 será executada antes da thread de id 1. - A ordem depende do sistema operacional que não garante ordem. (CORRETO) III. #pragma omp parallel por debaixo dos panos cria e une threads. O que significa que só será executado o comando printf("fim") depois que todas as threads terminarem de executar. - O código printf("fim") será executado depois das threads terminarem o bloco do #pragma omp parallel E II e III apenas. Considerando o conteúdo da aula 4. (FALSO) I. Ao todo serão executadas 5 threads as 4 lançadas pelo openMP mais a thread principal que lançou as demais. - Ao todo 4 threads serão executadas, o que significa que apenas 3 novas serão lançadas. (FALSO) II. Suponha que o código seja executado em um máquina com um único núcleo, é garantido pelo OpenMP que as thread de id 0 será executada antes da thread de id 1. - A ordem depende do sistema operacional que não garante ordem. (CORRETO) III. #pragma omp parallel por debaixo dos panos cria e une threads. O que significa que só será executado o comando printf("fim") depois que todas as threads terminarem de executar. - O código printf("fim") será executado depois das threads terminarem o bloco do #pragma omp parallel Questão 4/10 - Computação Paralela A computação distribuída é o próximo passo da computação paralela através da combinação de máquinas independentes se comunicando e trabalhando em conjunto para resolução de problemas. Sobre o tópico em questão considere as afirmações a seguir: I. No que diz repeito a armazenamento em um sistema distribuído de dados temos o teorema CAP, sigla para Consistência, Disponibilidade(Availability do inglês) e Partição. II. Sistema distribuído de dados devem a todo momento garantir Consistência, Disponibilidade e Partição. III. No contexto de processamento distribuído, as operações map/reduce consistem em mapear processamento de dados entre vários processos e depois reunir os mesmo. É correto apenas o que se afirma em Nota: 10.0 A I apenas. Considerando o conteúdo da aula 5. (CORRETO) I. No que diz repeito a armazenamento em um sistema distribuído de dados temos o teorema CAP, sigla para Consistência, Disponibilidade(Availability do inglês) e Partição. - O teorema CAP cita a impossibilidade de garantir as três propriedades ao mesmo tempo. (FALSO) II. Sistema distribuído de dados devem a todo momento garantir Consistência, Disponibilidade e Partição. - O teorema CAP cita a impossibilidade de garantir as três propriedades ao mesmo tempo. (CORRETO) III. No contexto de processamento distribuído, as operações map/reduce consistem em mapear processamento de dados entre vários processos e depois reunir os mesmo. - Uma das estratégias mais importantes em processamento distribuído implementado em frameworks como Hadoop. B III apenas. Considerando o conteúdo da aula 5. (CORRETO) I. No que diz repeito a armazenamento em um sistema distribuído de dados temos o teorema CAP, sigla para Consistência, Disponibilidade(Availability do inglês) e Partição. - O teorema CAP cita a impossibilidade de garantir as três propriedades ao mesmo tempo. (FALSO) II. Sistema distribuído de dados devem a todo momento garantir Consistência, Disponibilidade e Partição. - O teorema CAP cita a impossibilidade de garantir as três propriedades ao mesmo tempo. (CORRETO) III. No contexto de processamento distribuído, as operações map/reduce consistem em mapear processamento de dados entre vários processos e depois reunir os mesmo. - Uma das estratégias mais importantes em processamento distribuído implementado em frameworks como Hadoop. C I e II apenas. Considerando o conteúdo da aula 5. (CORRETO) I. No que diz repeito a armazenamento em um sistema distribuído de dados temos o teorema CAP, sigla para Consistência, Disponibilidade(Availability do inglês) e Partição. - O teorema CAP cita a impossibilidade de garantir as três propriedades ao mesmo tempo. (FALSO) II. Sistema distribuído de dados devem a todo momento garantir Consistência, Disponibilidade e Partição. - O teorema CAP cita a impossibilidade de garantir as três propriedades ao mesmo tempo. (CORRETO) III. No contexto de processamento distribuído, as operações map/reduce consistem em mapear processamento de dados entre vários processos e depois reunir os mesmo. - Uma das estratégias mais importantes em processamento distribuído implementado em frameworks como Hadoop. D I e III apeanas. Você assinalou essa alternativa (D) Você acertou! Considerando o conteúdo da aula 5. (CORRETO) I. No que diz repeito a armazenamento em um sistema distribuído de dados temos o teorema CAP, sigla para Consistência, Disponibilidade(Availabilitydo inglês) e Partição. - O teorema CAP cita a impossibilidade de garantir as três propriedades ao mesmo tempo. (FALSO) II. Sistema distribuído de dados devem a todo momento garantir Consistência, Disponibilidade e Partição. - O teorema CAP cita a impossibilidade de garantir as três propriedades ao mesmo tempo. (CORRETO) III. No contexto de processamento distribuído, as operações map/reduce consistem em mapear processamento de dados entre vários processos e depois reunir os mesmo. - Uma das estratégias mais importantes em processamento distribuído implementado em frameworks como Hadoop. E II e III apenas. Considerando o conteúdo da aula 5. (CORRETO) I. No que diz repeito a armazenamento em um sistema distribuído de dados temos o teorema CAP, sigla para Consistência, Disponibilidade(Availability do inglês) e Partição. - O teorema CAP cita a impossibilidade de garantir as três propriedades ao mesmo tempo. (FALSO) II. Sistema distribuído de dados devem a todo momento garantir Consistência, Disponibilidade e Partição. - O teorema CAP cita a impossibilidade de garantir as três propriedades ao mesmo tempo. (CORRETO) III. No contexto de processamento distribuído, as operações map/reduce consistem em mapear processamento de dados entre vários processos e depois reunir os mesmo. - Uma das estratégias mais importantes em processamento distribuído implementado em frameworks como Hadoop. Questão 5/10 - Computação Paralela Considerando programação paralela. Existem diversos padrões de comunicação entre as threads. Que se resume em como será a relação entre memória e as atividades desenvolvida pelas threads. Sobre o tópico em questão considere as afirmações a seguir: I. O padrão Transpose é bastante utilizado para adaptar estruturas de dados. II. O padrão Reduce consiste em transformar um grande conjunto de dados iterativamente em conjuntos menores ao ponto de chegar em uma unidade. III. No padrão Scan cada thread lê um único dado e realiza processamento sobre o mesmo e por fim escreve em uma única posição da memória. É correto apenas o que se afirma em Nota: 10.0 A I apenas. Considerando o conteúdo da aula 6. (CORRETO) I. O padrão Transpose é bastante utilizado para adaptar estruturas de dados. - O padrão transpose geralmente representa uma modificação na ordem dos dados na memória, permitindo acessos mais rápidos e melhor uso de memória cache ao colocar em ordem sequencial dados que também serão acessados em sequência por um algoritmo. (CORRETO) II. O padrão Reduce consiste em transformar um grande conjunto de dados iterativamente em conjuntos menores ao ponto de chegar em uma unidade. - A soma de todos os elementos de um vetor exemplifica um caso de reduce, todos os elementos são reduzidos para um único número, o somatório. (FALSO) III. No padrão Scan cada thread lê um único dado e realiza processamento sobre o mesmo e por fim escreve em uma única posição da memória. - Este padrão descrito é o Map. No padrão Scan combinam-se todos os elementos como em algoritmos de ordenação. B II apenas. Considerando o conteúdo da aula 6. (CORRETO) I. O padrão Transpose é bastante utilizado para adaptar estruturas de dados. - O padrão transpose geralmente representa uma modificação na ordem dos dados na memória, permitindo acessos mais rápidos e melhor uso de memória cache ao colocar em ordem sequencial dados que também serão acessados em sequência por um algoritmo. (CORRETO) II. O padrão Reduce consiste em transformar um grande conjunto de dados iterativamente em conjuntos menores ao ponto de chegar em uma unidade. - A soma de todos os elementos de um vetor exemplifica um caso de reduce, todos os elementos são reduzidos para um único número, o somatório. (FALSO) III. No padrão Scan cada thread lê um único dado e realiza processamento sobre o mesmo e por fim escreve em uma única posição da memória. - Este padrão descrito é o Map. No padrão Scan combinam-se todos os elementos como em algoritmos de ordenação. C I e II apenas. Você assinalou essa alternativa (C) Você acertou! Considerando o conteúdo da aula 6. (CORRETO) I. O padrão Transpose é bastante utilizado para adaptar estruturas de dados. - O padrão transpose geralmente representa uma modificação na ordem dos dados na memória, permitindo acessos mais rápidos e melhor uso de memória cache ao colocar em ordem sequencial dados que também serão acessados em sequência por um algoritmo. (CORRETO) II. O padrão Reduce consiste em transformar um grande conjunto de dados iterativamente em conjuntos menores ao ponto de chegar em uma unidade. - A soma de todos os elementos de um vetor exemplifica um caso de reduce, todos os elementos são reduzidos para um único número, o somatório. (FALSO) III. No padrão Scan cada thread lê um único dado e realiza processamento sobre o mesmo e por fim escreve em uma única posição da memória. - Este padrão descrito é o Map. No padrão Scan combinam-se todos os elementos como em algoritmos de ordenação. D I e III apenas. Considerando o conteúdo da aula 6. (CORRETO) I. O padrão Transpose é bastante utilizado para adaptar estruturas de dados. - O padrão transpose geralmente representa uma modificação na ordem dos dados na memória, permitindo acessos mais rápidos e melhor uso de memória cache ao colocar em ordem sequencial dados que também serão acessados em sequência por um algoritmo. (CORRETO) II. O padrão Reduce consiste em transformar um grande conjunto de dados iterativamente em conjuntos menores ao ponto de chegar em uma unidade. - A soma de todos os elementos de um vetor exemplifica um caso de reduce, todos os elementos são reduzidos para um único número, o somatório. (FALSO) III. No padrão Scan cada thread lê um único dado e realiza processamento sobre o mesmo e por fim escreve em uma única posição da memória. - Este padrão descrito é o Map. No padrão Scan combinam-se todos os elementos como em algoritmos de ordenação. E I, II e III. Considerando o conteúdo da aula 6. (CORRETO) I. O padrão Transpose é bastante utilizado para adaptar estruturas de dados. - O padrão transpose geralmente representa uma modificação na ordem dos dados na memória, permitindo acessos mais rápidos e melhor uso de memória cache ao colocar em ordem sequencial dados que também serão acessados em sequência por um algoritmo. (CORRETO) II. O padrão Reduce consiste em transformar um grande conjunto de dados iterativamente em conjuntos menores ao ponto de chegar em uma unidade. - A soma de todos os elementos de um vetor exemplifica um caso de reduce, todos os elementos são reduzidos para um único número, o somatório. (FALSO) III. No padrão Scan cada thread lê um único dado e realiza processamento sobre o mesmo e por fim escreve em uma única posição da memória. - Este padrão descrito é o Map. No padrão Scan combinam-se todos os elementos como em algoritmos de ordenação. Questão 6/10 - Computação Paralela A GPU originalmente desenvolvida para processamento gráfico pode ser utilizada para propósito geral com uso de APIs como a CUDA que oferecem uma forma prática de programadores utilizarem GPU para computação de alto desempenho. Sobre o tópico em questão considere as afirmações a seguir: I. cudaMalloc e cudaMemcpy, são equivalentes do malloc e memcpy para memória da GPU. II. cudaFree é responsável por liberar memória alocada em GPU III. O código metodo1<<<1, 64>>>(d_saida, d_entrada) é a chamada de um kernel chamado metodo1 com 1 bloco de 64 threads. É correto apenas o que se afirma em Nota: 10.0 A III apenas. Considerando o conteúdo da aula 6. (CORRETO) I. cudaMalloc e cudaMemcpy, são equivalentes do malloc e memcpy para memória da GPU. - cudaMalloc e cudaMemcpy são as principais funções para transmitir dados entre a memória principal e da GPU. (CORRETO) II. cudaFree é responsável por liberar memória alocada em GPU - Assim como a memóriaalocada na memória principal é importante liberar a memória alocada em GPU. (CORRETO) III. O código metodo1<<<1, 64>>>(d_dados) é a chamada de um kernel chamado metodo1 com 1 bloco de 64 threads. - O comando executa um kernel através de um bloco de 1 de 64 threads com um parâmetro d_dados. B I e II apenas. Considerando o conteúdo da aula 6. (CORRETO) I. cudaMalloc e cudaMemcpy, são equivalentes do malloc e memcpy para memória da GPU. - cudaMalloc e cudaMemcpy são as principais funções para transmitir dados entre a memória principal e da GPU. (CORRETO) II. cudaFree é responsável por liberar memória alocada em GPU - Assim como a memória alocada na memória principal é importante liberar a memória alocada em GPU. (CORRETO) III. O código metodo1<<<1, 64>>>(d_dados) é a chamada de um kernel chamado metodo1 com 1 bloco de 64 threads. - O comando executa um kernel através de um bloco de 1 de 64 threads com um parâmetro d_dados. C I e III apenas. Considerando o conteúdo da aula 6. (CORRETO) I. cudaMalloc e cudaMemcpy, são equivalentes do malloc e memcpy para memória da GPU. - cudaMalloc e cudaMemcpy são as principais funções para transmitir dados entre a memória principal e da GPU. (CORRETO) II. cudaFree é responsável por liberar memória alocada em GPU - Assim como a memória alocada na memória principal é importante liberar a memória alocada em GPU. (CORRETO) III. O código metodo1<<<1, 64>>>(d_dados) é a chamada de um kernel chamado metodo1 com 1 bloco de 64 threads. - O comando executa um kernel através de um bloco de 1 de 64 threads com um parâmetro d_dados. D II e III apenas. Considerando o conteúdo da aula 6. (CORRETO) I. cudaMalloc e cudaMemcpy, são equivalentes do malloc e memcpy para memória da GPU. - cudaMalloc e cudaMemcpy são as principais funções para transmitir dados entre a memória principal e da GPU. (CORRETO) II. cudaFree é responsável por liberar memória alocada em GPU - Assim como a memória alocada na memória principal é importante liberar a memória alocada em GPU. (CORRETO) III. O código metodo1<<<1, 64>>>(d_dados) é a chamada de um kernel chamado metodo1 com 1 bloco de 64 threads. - O comando executa um kernel através de um bloco de 1 de 64 threads com um parâmetro d_dados. E I, II e III. Você assinalou essa alternativa (E) Você acertou! Considerando o conteúdo da aula 6. (CORRETO) I. cudaMalloc e cudaMemcpy, são equivalentes do malloc e memcpy para memória da GPU. - cudaMalloc e cudaMemcpy são as principais funções para transmitir dados entre a memória principal e da GPU. (CORRETO) II. cudaFree é responsável por liberar memória alocada em GPU - Assim como a memória alocada na memória principal é importante liberar a memória alocada em GPU. (CORRETO) III. O código metodo1<<<1, 64>>>(d_dados) é a chamada de um kernel chamado metodo1 com 1 bloco de 64 threads. - O comando executa um kernel através de um bloco de 1 de 64 threads com um parâmetro d_dados. Questão 7/10 - Computação Paralela Dentro do contexto de computação distribuída é comum termos uma arquitetura descentralizada. Isso significa não ter um “líder”, isso introduz uma série de problemas para que todas as máquinas cheguem em um consenso de que atividade realizar ou que decisão tomar diante de alguma situação em particular. Sobre o tópico em questão considere as afirmações a seguir: I. Sincronismo dos relógios de várias máquinas pode ser entendido como um problema de consenso II. Se tivermos uma máquina central que coordenada as atividades em um sistema distribuído a falha desta máquina líder pode prejudicar a disponibilidade do sistema. III. Validação de transações em criptomoedas é uma aplicação de sistema distribuído sem líder. É correto apenas o que se afirma em Nota: 10.0 A II apenas. Considerando o conteúdo da aula 5. (CORRETO) I. Sincronismo dos relógios de várias máquinas pode ser entendido como um problema de consenso - A sincronização do relógio, algumas máquinas podem ter a informação errada por alguma falha ou por atrasos e latência elevada na rede podem transmitir uma informação desatualizada. A informação que for consenso na rede entre a maioria das máquinas idealmente deve prevalecer. (CORRETO) II. Se tivermos uma máquina central que coordenada todas as atividades em um sistema distribuído a falha desta máquina líder pode prejudicar a disponibilidade do sistema. - Arquiteturas descentralizada são ideias para diversos tipos de aplicações e não ter um líder fixo se apresenta como uma vantagem. (CORRETO) III. Validação de transações em criptomoedas é uma aplicação de sistema distribuído sem líder. - Blockchain, as carteiras virtuais das criptomoedas são validadas por meio de um sistema de consenso também. Quanto mais máquinas identificarem uma transação como verdadeira aumenta a confiança na legitimidade da identidade dos usuários e da transação. Os algoritmos devem ser especialmente robustos neste cenário para garantir usuários mal intencionados não realizem fraudes se passando por outros por exemplo. B I e II apenas. Considerando o conteúdo da aula 5. (CORRETO) I. Sincronismo dos relógios de várias máquinas pode ser entendido como um problema de consenso - A sincronização do relógio, algumas máquinas podem ter a informação errada por alguma falha ou por atrasos e latência elevada na rede podem transmitir uma informação desatualizada. A informação que for consenso na rede entre a maioria das máquinas idealmente deve prevalecer. (CORRETO) II. Se tivermos uma máquina central que coordenada todas as atividades em um sistema distribuído a falha desta máquina líder pode prejudicar a disponibilidade do sistema. - Arquiteturas descentralizada são ideias para diversos tipos de aplicações e não ter um líder fixo se apresenta como uma vantagem. (CORRETO) III. Validação de transações em criptomoedas é uma aplicação de sistema distribuído sem líder. - Blockchain, as carteiras virtuais das criptomoedas são validadas por meio de um sistema de consenso também. Quanto mais máquinas identificarem uma transação como verdadeira aumenta a confiança na legitimidade da identidade dos usuários e da transação. Os algoritmos devem ser especialmente robustos neste cenário para garantir usuários mal intencionados não realizem fraudes se passando por outros por exemplo. C I e III apenas. Considerando o conteúdo da aula 5. (CORRETO) I. Sincronismo dos relógios de várias máquinas pode ser entendido como um problema de consenso - A sincronização do relógio, algumas máquinas podem ter a informação errada por alguma falha ou por atrasos e latência elevada na rede podem transmitir uma informação desatualizada. A informação que for consenso na rede entre a maioria das máquinas idealmente deve prevalecer. (CORRETO) II. Se tivermos uma máquina central que coordenada todas as atividades em um sistema distribuído a falha desta máquina líder pode prejudicar a disponibilidade do sistema. - Arquiteturas descentralizada são ideias para diversos tipos de aplicações e não ter um líder fixo se apresenta como uma vantagem. (CORRETO) III. Validação de transações em criptomoedas é uma aplicação de sistema distribuído sem líder. - Blockchain, as carteiras virtuais das criptomoedas são validadas por meio de um sistema de consenso também. Quanto mais máquinas identificarem uma transação como verdadeira aumenta a confiança na legitimidade da identidade dos usuários e da transação. Os algoritmos devem ser especialmente robustos neste cenário para garantir usuários mal intencionados não realizem fraudes se passando por outros por exemplo. D II e III apenas. Considerando o conteúdo da aula 5. (CORRETO) I. Sincronismo dos relógios de várias máquinas pode ser entendido como um problema de consenso - A sincronização do relógio, algumas máquinas podem ter a informação errada por alguma falha ou por atrasose latência elevada na rede podem transmitir uma informação desatualizada. A informação que for consenso na rede entre a maioria das máquinas idealmente deve prevalecer. (CORRETO) II. Se tivermos uma máquina central que coordenada todas as atividades em um sistema distribuído a falha desta máquina líder pode prejudicar a disponibilidade do sistema. - Arquiteturas descentralizada são ideias para diversos tipos de aplicações e não ter um líder fixo se apresenta como uma vantagem. (CORRETO) III. Validação de transações em criptomoedas é uma aplicação de sistema distribuído sem líder. - Blockchain, as carteiras virtuais das criptomoedas são validadas por meio de um sistema de consenso também. Quanto mais máquinas identificarem uma transação como verdadeira aumenta a confiança na legitimidade da identidade dos usuários e da transação. Os algoritmos devem ser especialmente robustos neste cenário para garantir usuários mal intencionados não realizem fraudes se passando por outros por exemplo. E I, II e III. Você assinalou essa alternativa (E) Você acertou! Considerando o conteúdo da aula 5. (CORRETO) I. Sincronismo dos relógios de várias máquinas pode ser entendido como um problema de consenso - A sincronização do relógio, algumas máquinas podem ter a informação errada por alguma falha ou por atrasos e latência elevada na rede podem transmitir uma informação desatualizada. A informação que for consenso na rede entre a maioria das máquinas idealmente deve prevalecer. (CORRETO) II. Se tivermos uma máquina central que coordenada todas as atividades em um sistema distribuído a falha desta máquina líder pode prejudicar a disponibilidade do sistema. - Arquiteturas descentralizada são ideias para diversos tipos de aplicações e não ter um líder fixo se apresenta como uma vantagem. (CORRETO) III. Validação de transações em criptomoedas é uma aplicação de sistema distribuído sem líder. - Blockchain, as carteiras virtuais das criptomoedas são validadas por meio de um sistema de consenso também. Quanto mais máquinas identificarem uma transação como verdadeira aumenta a confiança na legitimidade da identidade dos usuários e da transação. Os algoritmos devem ser especialmente robustos neste cenário para garantir usuários mal intencionados não realizem fraudes se passando por outros por exemplo. Questão 8/10 - Computação Paralela int lista[1000]; #pragma omp parallel num_threads(4) { int id = omp_get_thread_num(); metodo(lista,id); } Considere o código acima analise as afirmações a seguir: I. O array lista é global para as threads geradas. II. id é uma variável local para todas as threads III. Apenas com o uso da diretiva private é possível ter variáveis locais para cada thread. É correto apenas o que se afirma em Nota: 10.0 A I apenas. Considerando o conteúdo da aula 4. (CORRETO) I. O array lista é global para as threads geradas. - As variáveis declaradas antes da região paralela é compartilhada com todas as threads. (CORRETO) II. id é uma variável local para todas as threads - As variáveis declaradas dentro da região paralela são locais para e individuais para cada thread. (FALSO) III. Apenas com o uso da diretiva private é possível ter variáveis locais para cada thread. - A diretiva private permite indicar variáveis como locais para cada thread porém variáveis declaradas dentro da região paralela também são locais, portanto não é a única forma de ter variáveis locais. B II apenas. Considerando o conteúdo da aula 4. (CORRETO) I. O array lista é global para as threads geradas. - As variáveis declaradas antes da região paralela é compartilhada com todas as threads. (CORRETO) II. id é uma variável local para todas as threads - As variáveis declaradas dentro da região paralela são locais para e individuais para cada thread. (FALSO) III. Apenas com o uso da diretiva private é possível ter variáveis locais para cada thread. - A diretiva private permite indicar variáveis como locais para cada thread porém variáveis declaradas dentro da região paralela também são locais, portanto não é a única forma de ter variáveis locais. C III apenas. Considerando o conteúdo da aula 4. (CORRETO) I. O array lista é global para as threads geradas. - As variáveis declaradas antes da região paralela é compartilhada com todas as threads. (CORRETO) II. id é uma variável local para todas as threads - As variáveis declaradas dentro da região paralela são locais para e individuais para cada thread. (FALSO) III. Apenas com o uso da diretiva private é possível ter variáveis locais para cada thread. - A diretiva private permite indicar variáveis como locais para cada thread porém variáveis declaradas dentro da região paralela também são locais, portanto não é a única forma de ter variáveis locais. D I e II apenas. Você assinalou essa alternativa (D) Você acertou! Considerando o conteúdo da aula 4. (CORRETO) I. O array lista é global para as threads geradas. - As variáveis declaradas antes da região paralela é compartilhada com todas as threads. (CORRETO) II. id é uma variável local para todas as threads - As variáveis declaradas dentro da região paralela são locais para e individuais para cada thread. (FALSO) III. Apenas com o uso da diretiva private é possível ter variáveis locais para cada thread. - A diretiva private permite indicar variáveis como locais para cada thread porém variáveis declaradas dentro da região paralela também são locais, portanto não é a única forma de ter variáveis locais. E I e III apenas. Considerando o conteúdo da aula 4. (CORRETO) I. O array lista é global para as threads geradas. - As variáveis declaradas antes da região paralela é compartilhada com todas as threads. (CORRETO) II. id é uma variável local para todas as threads - As variáveis declaradas dentro da região paralela são locais para e individuais para cada thread. (FALSO) III. Apenas com o uso da diretiva private é possível ter variáveis locais para cada thread. - A diretiva private permite indicar variáveis como locais para cada thread porém variáveis declaradas dentro da região paralela também são locais, portanto não é a única forma de ter variáveis locais. Questão 9/10 - Computação Paralela A troca de mensagens entre diferentes processos é um dos conceitos mais importantes dentro do Open MPI, ela é feita ponto-a-ponto ou de forma coletiva. Ela é importante especialmente para sincronismo e troca de dados. Sobre o tópico em questão considere as afirmações a seguir: I. MPI_Send e MPI_Recv são dois métodos responsáveis por enviar e receber dados respectivamente dentro do Open MPI II. MPI_COMM_WORLD é o comunicador padrão MPI que comunica todos os processos. III. MPI_Bcast é o comando responsável por solicitar uma mensagem. É correto apenas o que se afirma em Nota: 10.0 A I apenas. Considerando o conteúdo da aula 5. (CORRETO) I. MPI_Send e MPI_Recv são dois métodos responsáveis por enviar e receber dados respectivamente dentro do Open MPI - Enviam e recebem mensagens de forma síncrona. Diferente do MPI_Isend e MPI_Irecv que realizam a troca de mensagens assincronamente. (CORRETO) II. MPI_COMM_WORLD é o comunicador padrão MPI que comunica todos os processos. - MPI_COMM_WORLD é uma variável que armazena o comunicador "global" no entanto é possível criar outros comunicadores para grupos menores de processos. (FALSO) III. MPI_Bcast é o comando responsável por solicitar uma mensagem. - O comando MPI_Bcast é responsável por enviar uma mensagem para todos os processos de um grupo. B II apenas. Considerando o conteúdo da aula 5. (CORRETO) I. MPI_Send e MPI_Recv são dois métodos responsáveis por enviar e receber dados respectivamente dentro do Open MPI - Enviam e recebem mensagens de forma síncrona. Diferente do MPI_Isend e MPI_Irecv que realizam a troca de mensagens assincronamente. (CORRETO)II. MPI_COMM_WORLD é o comunicador padrão MPI que comunica todos os processos. - MPI_COMM_WORLD é uma variável que armazena o comunicador "global" no entanto é possível criar outros comunicadores para grupos menores de processos. (FALSO) III. MPI_Bcast é o comando responsável por solicitar uma mensagem. - O comando MPI_Bcast é responsável por enviar uma mensagem para todos os processos de um grupo. C III apenas. Considerando o conteúdo da aula 5. (CORRETO) I. MPI_Send e MPI_Recv são dois métodos responsáveis por enviar e receber dados respectivamente dentro do Open MPI - Enviam e recebem mensagens de forma síncrona. Diferente do MPI_Isend e MPI_Irecv que realizam a troca de mensagens assincronamente. (CORRETO) II. MPI_COMM_WORLD é o comunicador padrão MPI que comunica todos os processos. - MPI_COMM_WORLD é uma variável que armazena o comunicador "global" no entanto é possível criar outros comunicadores para grupos menores de processos. (FALSO) III. MPI_Bcast é o comando responsável por solicitar uma mensagem. - O comando MPI_Bcast é responsável por enviar uma mensagem para todos os processos de um grupo. D I e II apenas. Você assinalou essa alternativa (D) Você acertou! Considerando o conteúdo da aula 5. (CORRETO) I. MPI_Send e MPI_Recv são dois métodos responsáveis por enviar e receber dados respectivamente dentro do Open MPI - Enviam e recebem mensagens de forma síncrona. Diferente do MPI_Isend e MPI_Irecv que realizam a troca de mensagens assincronamente. (CORRETO) II. MPI_COMM_WORLD é o comunicador padrão MPI que comunica todos os processos. - MPI_COMM_WORLD é uma variável que armazena o comunicador "global" no entanto é possível criar outros comunicadores para grupos menores de processos. (FALSO) III. MPI_Bcast é o comando responsável por solicitar uma mensagem. - O comando MPI_Bcast é responsável por enviar uma mensagem para todos os processos de um grupo. E II e III apenas. Considerando o conteúdo da aula 5. (CORRETO) I. MPI_Send e MPI_Recv são dois métodos responsáveis por enviar e receber dados respectivamente dentro do Open MPI - Enviam e recebem mensagens de forma síncrona. Diferente do MPI_Isend e MPI_Irecv que realizam a troca de mensagens assincronamente. (CORRETO) II. MPI_COMM_WORLD é o comunicador padrão MPI que comunica todos os processos. - MPI_COMM_WORLD é uma variável que armazena o comunicador "global" no entanto é possível criar outros comunicadores para grupos menores de processos. (FALSO) III. MPI_Bcast é o comando responsável por solicitar uma mensagem. - O comando MPI_Bcast é responsável por enviar uma mensagem para todos os processos de um grupo. Questão 10/10 - Computação Paralela OpenMP, tratando-se de programação multiprocessada, é uma das principais APIs utilizadas hoje especialmente pela sua simplicidade e abstração em alto nível de algumas funcionalidades que demandam muita codificação adicional em outras APIs. Sobre este assunto analise as afirmações a seguir: I. OpenMP já está implementado nos principais compiladores C/C++ e Fortran sem a necessidade de instalações adicionais. II. O código #pragma omp parallel é uma diretiva de compilação que indica uma região que deve ser paralelizada em várias threads se seguirá. III. É necessário incluir a biblioteca omp.h aos códigos. OpenMP. É correto apenas o que se afirma em Nota: 10.0 A II apenas. Considerando o conteúdo da aula 4. (CORRETO) I. OpenMP já está implementado nos principais compiladores C/C++ e Fortran sem a necessidade de instalações adicionais. - No entanto é necessário indicar ao compilador a necessidade de fazer o link da biblioteca openMP na compilação do código. (CORRETO) II. O código #pragma omp parallel é uma diretiva de compilação que indica uma região que deve ser paralelizada em várias threads se seguirá. - O código associado a diretiva será paralelizado em diversas threads. (CORRETO) III. É necessário incluir a biblioteca omp.h aos códigos. OpenMP. - O escopo das funções do openMP estão descritas dentro do arquivo omp.h por isso a necessidade de incluir o comando ao código. B III apenas. Considerando o conteúdo da aula 4. (CORRETO) I. OpenMP já está implementado nos principais compiladores C/C++ e Fortran sem a necessidade de instalações adicionais. - No entanto é necessário indicar ao compilador a necessidade de fazer o link da biblioteca openMP na compilação do código. (CORRETO) II. O código #pragma omp parallel é uma diretiva de compilação que indica uma região que deve ser paralelizada em várias threads se seguirá. - O código associado a diretiva será paralelizado em diversas threads. (CORRETO) III. É necessário incluir a biblioteca omp.h aos códigos. OpenMP. - O escopo das funções do openMP estão descritas dentro do arquivo omp.h por isso a necessidade de incluir o comando ao código. C I e II apenas. Considerando o conteúdo da aula 4. (CORRETO) I. OpenMP já está implementado nos principais compiladores C/C++ e Fortran sem a necessidade de instalações adicionais. - No entanto é necessário indicar ao compilador a necessidade de fazer o link da biblioteca openMP na compilação do código. (CORRETO) II. O código #pragma omp parallel é uma diretiva de compilação que indica uma região que deve ser paralelizada em várias threads se seguirá. - O código associado a diretiva será paralelizado em diversas threads. (CORRETO) III. É necessário incluir a biblioteca omp.h aos códigos. OpenMP. - O escopo das funções do openMP estão descritas dentro do arquivo omp.h por isso a necessidade de incluir o comando ao código. D II e III apenas. Considerando o conteúdo da aula 4. (CORRETO) I. OpenMP já está implementado nos principais compiladores C/C++ e Fortran sem a necessidade de instalações adicionais. - No entanto é necessário indicar ao compilador a necessidade de fazer o link da biblioteca openMP na compilação do código. (CORRETO) II. O código #pragma omp parallel é uma diretiva de compilação que indica uma região que deve ser paralelizada em várias threads se seguirá. - O código associado a diretiva será paralelizado em diversas threads. (CORRETO) III. É necessário incluir a biblioteca omp.h aos códigos. OpenMP. - O escopo das funções do openMP estão descritas dentro do arquivo omp.h por isso a necessidade de incluir o comando ao código. E I, II e III. Você assinalou essa alternativa (E) Você acertou! Considerando o conteúdo da aula 4. (CORRETO) I. OpenMP já está implementado nos principais compiladores C/C++ e Fortran sem a necessidade de instalações adicionais. - No entanto é necessário indicar ao compilador a necessidade de fazer o link da biblioteca openMP na compilação do código. (CORRETO) II. O código #pragma omp parallel é uma diretiva de compilação que indica uma região que deve ser paralelizada em várias threads se seguirá. - O código associado a diretiva será paralelizado em diversas threads. (CORRETO) III. É necessário incluir a biblioteca omp.h aos códigos. OpenMP. - O escopo das funções do openMP estão descritas dentro do arquivo omp.h por isso a necessidade de incluir o comando ao código.
Compartilhar