Eu vim a saber que a unidade de processamento gráfico tem algo chamado coalescência de memória. Ao ler sobre isso, não fui claro sobre o assunto. Isso está relacionado ao paralelismo no nível de memória.
Pesquisei no Google, mas não consegui obter uma resposta satisfatória.
Seria útil se alguém desse uma explicação mais abrangente e fácil de entender.
terminology
reference-request
computer-architecture
memory-management
sai kiran grandhi
fonte
fonte
Respostas:
"Coalescente" também pode se referir a padrões de acesso à memória coalescente . Nesse uso, coalescência é usada para garantir que os encadeamentos sejam executados simultaneamente, tente acessar a memória que está próxima. Isso geralmente ocorre porque:
Portanto, é importante criar programas que possam usar padrões de memória previsíveis. É ainda mais importante com um programa encadeado, para que as solicitações de memória não saltem por toda parte; caso contrário, a unidade de processamento estará aguardando o cumprimento das solicitações de memória.
Diagramas inspirados em Introdução à programação paralela: Lição 2 Padrões de hardware e comunicação paralela da GPU :
Abaixo: Quatro threads, com acesso uniforme à memória. O retângulo tracejado preto representa uma única solicitação de memória de 4 palavras.
Os acessos à memória estão próximos e podem ser recuperados em um único bloco / go (ou o menor número de solicitações).
No entanto, se aumentarmos o " avanço " do acesso entre os threads, será necessário muito mais acesso à memória. Abaixo: mais quatro threads, com um passo de dois.
Aqui você pode ver que esses 4 threads requerem 2 solicitações de bloco de memória. Quanto menor o passo, melhor. Quanto maior o passo, mais solicitações são potencialmente necessárias.
Obviamente, pior que um grande avanço da memória é um padrão de acesso aleatório à memória. Isso será quase impossível de pipeline, cache ou previsão.
Fontes do TikZ:
fonte
Eu acho que vejo dois usos da palavra "coalescendo" pela rede, ambos relacionados à memória. Uma é a coalescência de alocações de memória liberada , que é o que é referido na página da wikipedia vinculada na pergunta.
Coalescendo alocações de memória liberada
Ao alocar memória, às vezes o gerenciador de memória pode ter uma situação em que há dois blocos de memória adjacentes que são liberados. Combiná-los os tornaria um único bloco de memória liberada - isso é chamado de "coalescência". Exemplo:
Começando com 4 blocos alocados:
Mais tarde, um deles é liberado:
E depois outro é liberado:
Agora, por que ter dois blocos livres adjacentes? Coalescendo-os:
A coalescência pode ocorrer o mais rápido possível, ou, por exemplo, em um coletor de lixo, quando o coletor é executado.
Fontes do TikZ:
fonte