Habilitando o processamento multithread no QGIS?

11

Eu encontrei vários links que parecem dizer que isso agora existe no QGIS 2.2, mas parece que ele está usando apenas um núcleo na capacidade total.

Isso está sendo executado no Ubuntu 14.04

O processo atual está criando uma grande quantidade de pontos regulares. Como posso fazer com que esse processo use mais do que um núcleo?

Utilização do CPU

jpmaniac87
fonte
1
Eu acho que isso será em 2.4, o próximo lançamento. No entanto, se você quiser experimentar, faça o download da compilação noturna.
29514 Matt
Provavelmente vale a pena comentar que, devido ao "multithreading" do GIL, os núcleos simultâneos não serão executados. Confira stackoverflow.com/questions/1294382/… O que você deseja é "multiprocessamento".
Sr. Roxo

Respostas:

6

Não há renderização multithread do QGIS 2.2, é um recurso que estará disponível no QGIS 2.4.

Você pode experimentar o QGIS Master (noturno) para teste e, em seguida, o QGIS 2.4 está programado para lançamento em 20 de junho de 2014 .


Opa, interpretou mal sua pergunta e, a partir dos comentários, parece que Processamento multithread é algo que acontece no nível do desenvolvedor do QGIS ou no nível do colaborador do Python Plugin.

Se houver uma ferramenta QGIS específica que você está usando nos menus incorporados ao QGIS, para obter um processamento multithread, provavelmente precisará ser codificado por um desenvolvedor para o QGIS ou até a raiz da ferramenta (GDAL, SAGA, Orfeo, GRASS, desenvolvedores R, etc ...).

Se houver um determinado plug-in, provavelmente o código será em torno do Python e o colaborador ou mantenedor desse plug-in poderá ver se é possível incluir os módulos multiprocessingou threadingpara melhorar seu desempenho.

De qualquer forma, enviar uma solicitação de recurso ou verificar se uma já existe é geralmente a melhor maneira de começar. Isso informa se alguém já está enfrentando o aprimoramento ou quais recursos seriam necessários para iniciá-lo.

SaultDon
fonte
Isso é uma pena ... Eu tive problemas para construir a partir da fonte no passado. Se eu apenas adicionasse o ppa para as diárias e instalasse o mesmo com o apt, isso me daria as últimas noites? Alguma idéia sobre a estabilidade?
Jpmaniac87
@ jpmaniac87 Eu não uso o Ubuntu há muito tempo e faço meu trabalho GIS no Arch Linux, então eu compilo tudo da fonte. Portanto, eu não saberia como são os PPAs para o Ubuntu e se você poderia instalar o QGIS (estável) com o QGIS (mestre) ao mesmo tempo.
SaultDon
@ jpmaniac87 Parece que, a partir desta resposta em outra pergunta, isso pode não ser possível, dado o modo como as versões do QGIS são empacotadas no Ubuntu. Parece que é um ou outro.
SaultDon
Os CAE funcionam. Eu apenas comentei as linhas estáveis ​​e instalei o noturno. É rápido! Mas ... ele usa apenas os vários threads literalmente para renderizar ... Eu estava esperando mais dos processos do plugin. Eu acho que isso significaria que os criadores do plug-in precisariam permitir o processamento multithread em seu código?
Jpmaniac87 30/03
1
@ jpmaniac87 Sim, porque os plugins são construídos com Python, e existe um módulo (multiprocessing ou geralmente usado com ) para Python que eles precisariam adicionar especificamente aos seus scripts. threading threadingqueue
SaultDon
3

Depende do que você procura. Quando o processamento é portado para a nova estrutura do gerenciador de tarefas, os algoritmos poderão ser executados em paralelo (sempre que possível). Por exemplo, um buffer para uma camada pode ser executado enquanto uma transformação ocorre em outra camada. Se você estiver buscando paralelização em um único algoritmo (por exemplo, recursos de buffer usando vários threads), não conheço nenhum plano para lidar com isso.

Fonte: http://osgeo-org.1560.x6.nabble.com/Will-Processing-in-QGIS-3-support-parallelization-td5301809.html


Resposta antiga: durante o Google Summer of Code de 2015, foi desenvolvido o suporte a multiencadeamentos para o QGIS Processing. O código está atualmente em revisão e deve chegar à versão de desenvolvedor em 2016. (Fonte: http://boundlessgeo.com/2015/12/latest-developments-in-qgis-processing/ )

... Infelizmente, esta solução não pôde ser mesclada.

underdark
fonte
Alguma atualização sobre este assunto @underdark?
Ricardo Barros Lourenço
A paralelização ainda é limitada na maioria das aplicações, infelizmente. Meu entendimento é que a utilização de infraestrutura de banco de dados, como PostGIS / postgres, permite um gerenciamento mais integrado de consultas e possui melhores recursos de multithreading.
CrystallineEntity
2

Alguma segmentação está sendo incorporada na funcionalidade principal do QGIS (renderização, por exemplo, conforme descrito na resposta de SaultDons), mas muitas funções ou algoritmos podem ou não ter a segmentação incorporada, dependendo do seu desenvolvimento.

Para os autores de plug-ins do pyQGIS (talvez incluindo o OP) que desejam incluir threading em seu plug-in / script, alguma ajuda está disponível no blog snorfalorpagus. Esperamos que mais e mais desenvolvedores façam uso do threading - particularmente para os algoritmos mais exigentes.

Como um paliativo, você poderá criar um script do seu processo e usar um esquema de processo paralelo de pobres homens com chamadas para scripts de shell assíncronos, conforme descrito na resposta de alexis aqui

Se alguém tiver bons recursos para paralelizar tarefas do QGIS, sinta-se à vontade para editar e adicioná-los a esta resposta :)

Mr Purple
fonte