No mundo todo, muitas pessoas estão dando seu melhor para combater a atual pandemia da Covid-19 das mais diferentes (e criativas) maneiras: seja fabricando viseiras protetoras com impressoras 3D, máscaras caseiras de pano ou ventiladores alternativos mais baratos, a quantidade de ideias e colaborações tem sido impressionante e motivante. Nas universidades, os pesquisadores tentam modelar e entender o coronavírus, tarefa que envolve muitas contas e processamento, e que também tem recebido ajuda de voluntários.
Nesse sentido, o projeto mais conhecido é o Folding@home, também chamado abreviadamente F@h ou FAH. Ele disponibiliza um programa em seu site que qualquer pessoa pode baixar e instalar em seu computador para contribuir com a pesquisa doando parte do seu poder computacional. O programa baixa uma tarefa para fazer, trabalha nessa tarefa e envia de volta o resultado, contribuindo para a tarefa maior, que é modelar o vírus.
Um pouco sobre o projeto
O projeto Folding@home foi criado em 2000 pelo Pande Lab da Universidade de Stanford, comandado pelo professor Dr. Vijay Pande. Seu objetivo era entender como as proteínas se organizam (enovelamento de proteínas, em inglês protein folding, daí o nome do projeto) e porque esse processo às vezes falha, causando doenças como Alzheimer e câncer. Em 2018, ele passou a liderança do projeto para um de seus ex-alunos, agora também professor, o Dr. Gregory Bowman da Universidade Washington em St. Louis, que desde então tem coordenado o projeto em parceria com outras universidades e empresas.
O projeto já produziu descobertas impressionantes, relatadas em 224 artigos científicos, que incluem trabalhos sobre bactérias resistentes a antibióticos e proteínas do vírus Ebola.
Em janeiro de 2020, o Folding@home contava com a colaboração de 30 mil usuários, o que já era bom, mas rapidamente saltou para 400 mil em março, com o interesse das pessoas em ajudar as pesquisas sobre o coronavírus. Muitas dessas pessoas embarcaram no projeto junto com a NVIDIA, que o divulgou em suas redes sociais. No pico do seu desempenho, o Folding@home atingiu a marca de 1,5 exaFLOPs, tornando-o sete vezes mais rápido que o supercomputador mais rápido do mundo atualmente, o IBM Summit.
PC Gamers, let’s put those GPUs to work.
— NVIDIA GeForce (@NVIDIAGeForce) March 13, 2020
Join us and our friends at @OfficialPCMR in supporting folding@home and donating unused GPU computing power to fight against COVID-19!
Learn more → https://t.co/EQE4u7xTZT pic.twitter.com/uO0ZCq8PEv
Requisitos mínimos
Não há requisitos mínimos de hardware para participar do Folding@home, qualquer computador pode contribuir para o projeto. No entanto, se o computador for muito lento, pode não conseguir entregar tarefas no prazo necessário. O projeto estima que computadores com 5 anos de idade ou menos atendem bem à demanda. Por outro lado, se seu computador é um daqueles preparado para jogos, com uma placa de vídeo da NVIDIA ou AMD, é o candidato ideal por possuir maior capacidade de processamento paralelo.
Observe que as tarefas fazem uso intensivo do processador, o que pode esquentar seu computador.
Esse programa é código aberto?
Talvez isso seja importante para você, por isso acho que vale a pena observar: o programa do Folding@home não é código aberto, embora use componentes de código aberto, dentre os quais são mencionados pelo site do projeto: Gromacs, TINKER, Amber e MPICH. O projeto afirma que quaisquer modificações que faz nesses componentes são contribuídas de volta.
A justificativa do projeto para não divulgar o código-fonte do programa é a preocupação com a integridade científica, uma vez que pessoas mal intencionadas poderiam modificar o código para produzir resultados científicos errados, o que tornaria todo o projeto inútil.
Não vou discutir se concordo ou não, apenas repassei a informação como encontrei no site do projeto.
Se mesmo assim você deseja usar seu computador para contribuir com as pesquisas sobre a Covid-19, vamos pôr a mão na massa! Como de costume, aqui eu falo das distribuições Linux Kamarada e openSUSE. Em outras distribuições, o passo-a-passo pode ser um pouco diferente.
Download
Acesse a página de download do Folding@home:
Observe que o Folding@home não suporta oficialmente o openSUSE, mas nada que não possamos contornar. Veja que há 3 pacotes RPM para distribuições próximas (RedHat, CentOS e Fedora):
Não é necessário instalar os 3 pacotes. Veja o que são cada um deles:
- cliente do FAH (FAH client): esse é o pacote mais importante, pois contém:
- o programa cliente que baixa tarefas para serem executadas, as executa e devolve o resultado, normalmente é executado ao fundo (em background), como um serviço do sistema, sem interação com o usuário (back end)
- uma interface web simples que pode ser usada pelo navegador para monitorar o cliente e fazer algumas poucas configurações (front end)
- controle do FAH (FAH control): é um aplicativo com interface gráfica (GUI) que permite monitorar o cliente e fazer configurações mais avançadas, esse pacote é opcional
- visualizador do FAH (FAH viewer): é um aplicativo com interface gráfica (GUI) que permite visualizar o modelo em que o cliente está trabalhando, esse pacote é opcional
Para fins de demonstração, vou baixar e instalar cada um dos três. Fique a vontade para instalar o(s) que julgar necessário(s) no seu computador.
Cliente do Folding@home (FAHClient)
Depois de baixar o pacote RPM do fahclient, abra uma janela do terminal na pasta onde ele foi baixado e instale-o executando o comando a seguir como administrador (usuário root):
1
# zypper in fahclient-7.6.9-1.x86_64.rpm
O gerenciador de pacotes zypper informa que não encontra uma dependência do pacote:
1
2
3
4
5
6
7
8
9
Carregando dados do repositório...
Lendo os pacotes instalados...
Resolvendo dependências de pacote...
Problema: nada fornece bzip2-libs que é necessário a fahclient-7.6.9-1.x86_64
Solução 1: não instalar fahclient-7.6.9-1.x86_64
Solução 2: quebrar fahclient-7.6.9-1.x86_64 ao ignorar algumas das dependências
Escolha uma das opções acima pelo número ou cancele [1/2/c/d/?] (c):
Lembre-se que esse pacote RPM não foi feito para o openSUSE, que fornece as bibliotecas do bzip2 em um pacote chamado libbz2-1, que já vem instalado por padrão. Portanto, digite 2
(que aqui equivale a ignorar a dependência não satisfeita) e pressione Enter:
1
2
3
4
5
6
7
8
9
10
11
Escolha uma das opções acima pelo número ou cancele [1/2/c/d/?] (c): 2
Resolvendo dependências...
Resolvendo dependências de pacote...
O seguinte pacote NOVO será instalado:
fahclient
1 novo pacote a ser instalado.
Tamanho total do download: 3,5 MiB. Já em cache: 0 B. Após a operação, 8,9 MiB
adicionais serão utilizados.
Continuar? [s/n/v/...? exibe todas as opções] (s):
Tecle Enter para aceitar a opção padrão (s
, que aqui significa “sim, continuar”).
Na sequência, o zypper se depara com outro problema. O pacote não está assinado e, por isso, não é possível fazer a verificação de autenticidade:
1
2
3
4
5
6
7
Baixando pacote fahclient-7.6.9-1.x86_64
(1/1), 3,5 MiB ( 8,9 MiB descompactado)
fahclient-7.6.9-1.x86_64.rpm:
O pacote não está assinado!
fahclient-7.6.9-1.x86_64 (Cache de arquivos RPM simples): Falha na verificação da assinatura [6-O arquivo não está assinado]
Cancelar, repetir ou ignorar? [c/r/i] (c):
Essa mensagem de erro é comum ao instalar um pacote RPM baixado manualmente (sem ser de um repositório configurado). Você pode seguramente digitar i
(ignorar) e pressionar Enter:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Cancelar, repetir ou ignorar? [c/r/i] (c): i
Verificando por conflito de arquivos: ................................[concluído]
(1/1) Instalando: fahclient-7.6.9-1.x86_64 ...........................[concluído]
Saída adicional do rpm:
Unknown option: levels
usage:
chkconfig -A|--allservices (together with -l: show all services)
chkconfig -t|--terse [names] (shows the links)
chkconfig -e|--edit [names] (configure services)
chkconfig -s|--set [name state]... (configure services)
chkconfig -l|--list [--deps] [names] (shows the links)
chkconfig -L|--liston [--deps] [names] (as -l, enabled in at least 1 level)
chkconfig -c|--check name [state] (check state)
chkconfig -a|--add [names] (runs insserv)
chkconfig -d|--del [names] (runs insserv -r)
chkconfig -h|--help (print usage)
chkconfig -f|--force ... (call insserv with -f)
chkconfig [name] same as chkconfig -t
chkconfig name state... same as chkconfig -s name state
chkconfig --root=<root> ... use <root> as the root file system
Starting fahclient ... FAIL
O zypper conclui a instalação, mas mostra mais algumas mensagens de erro. Mais uma vez, lembremos que esse pacote RPM não foi feito para o openSUSE. Embora uma dessas mensagens de erro indique que não conseguiu iniciar o cliente, isso não procede.
Se você usar o comando htop, perceberá que não só o cliente está em execução, como em pouco tempo põe seu processador pra trabalhar, atingindo 100% de uso:
1
$ htop
Para sair do htop, tecle F10 ou clique em Quit (sair) no canto inferior direito da tela.
Recarregue os serviços do sistema (necessário porque o FAHClient ainda é baseado no /etc/init.d
):
1
# systemctl daemon-reload
E habilite o serviço do FAHClient para que ele seja iniciado automaticamente durante o boot:
1
# systemctl enable FAHClient
Para finalizar a configuração, abra o navegador e acesse client.foldingathome.org:
A página redireciona para a interface web do seu cliente do FAH. Se preferir, você pode acessá-la diretamente em localhost:7396.
Note que em I support research fighting (Eu suporto a pesquisa contra), há um menu dropdown que você pode abrir e selecionar uma doença para direcionar sua contribuição:
Você pode selecionar uma linha de pesquisa de sua preferência (por exemplo, COVID-19) ou deixar o padrão, que é contribuir com a pesquisa contra qualquer doença (Any disease).
Em Power (poder), você pode configurar quanto do seu poder de processamento será doado: pouco (Light, padrão), médio (Medium) ou todo (Full).
Em When (quando), você pode definir quando o computador trabalhará na pesquisa: a qualquer momento, inclusive enquanto você estiver usando o computador (While I’m working, padrão) ou apenas quando o computador estiver sem uso (Only when idle).
Se precisar, você pode interromper o trabalho do cliente do FAH a qualquer momento usando o botão Stop Folding.
Note que fechar essa aba do navegador não interrompe o trabalho do cliente do FAH.
Você já está contribuindo com o trabalho dos pesquisadores, parabéns! Se quiser, pode parar por aqui, os passos seguintes são opcionais. Sigam-me os curiosos!
A seguir, adicionei algumas linhas em que falo sobre identidade e equipes (opcional).
Por padrão, você contribui para o projeto de forma anônima, não precisa se cadastrar. Mas, opcionalmente, você pode definir um nome de usuário para si, assim como indicar que pertence a um time (team). Caso queira fazer isso, na interface web do cliente do FAH, clique no link Change Identity (mudar identidade).
Em Name (nome), informe um nome de usuário — você pode usar letras, números e underline ( _
) — e em Team Number informe o número do seu time, depois clique em Save (salvar). Exemplos de times:
- Time de usuários do openSUSE: número 35676 (no momento da escrita, posição 389 no ranking de times, dentre quase 253 mil times cadastrados)
- Time SUSE: número 12841 (posição 212 no ranking)
Feito isso, seu nome e time passam a aparecer na interface web, assim como você começa a juntar pontos para você e seu time à medida em que seu computador avança nas tarefas:
Creio que esses pontos não podem ser trocados por alguma recompensa concreta, mas estimulam uma competição entre os times pra ver qual contribui mais para o projeto.
O site do projeto disponibiliza o ranking dos times, no qual você também pode pesquisar por times existentes:
Me chamou a atenção que a Petrobras possui um time, que está em 59º no ranking. Pesquisando, descobri que a empresa brasileira contribui com dois de seus supercomputadores para o Folding@home. É do Brasil!
As pessoas do projeto openSUSE e da empresa SUSE estão empenhadas em ajudar o projeto Folding@home e combater a Covid-19. Se quiser mais informações, veja:
- Folding@home - openSUSE Wiki
- SUSE’s Commitment to Combat COVID-19 - SUSE Blog
- Folding@home with openSUSE to assist with COVID-19 - openSUSE - reddit
- TUMBLEWEED FAH ( Folding@Home) packages for TW - openSUSE Forums
Controle do Folding@home (FAHControl)
A instalação do pacote fahcontrol é semelhante:
1
# zypper in fahcontrol-7.6.9-1.noarch.rpm
Uma vez instalado, para iniciar o FAHControl, se você usa o ambiente GNOME, clique em Atividades, no canto superior esquerdo da tela, digite fah
e clique no ícone do FAHControl:
Note que esse aplicativo apresenta as mesmas opções da interface web e mais:
Se precisar, você pode pausar o trabalho do cliente do FAH a qualquer momento usando o botão Pause, ou para-lo completamente usando o botão Finish. Em ambos os casos, para retomar o trabalho, clique em Fold.
Note que fechar esse programa também não interrompe o trabalho do cliente do FAH.
Visualizador do Folding@home (FAHViewer)
A instalação do pacote fahviewer é semelhante:
1
# zypper in fahviewer-7.6.9-1.noarch.rpm
Uma vez instalado, para iniciar o FAHViewer, se você usa o ambiente GNOME, clique em Atividades, digite fah
e clique no ícone do FAHViewer:
Nessa janela, é possível visualizar a modelagem em que seu computador está trabalhando:
Se quiser, você pode rotacionar a imagem 3D usando o mouse.
Referências
- Coronavírus: saiba como usar seu PC para combater a pandemia - TechTudo
- Folding@home - Fighting disease with a world wide distributed super computer
- Folding@home - Wikipedia
- So What Is Protein Folding, Anyway? - Hackaday
- The coronavirus pandemic turned Folding@Home into an exaFLOP supercomputer - Ars Technica
- init.d - What’s the easiest way to make my old init script work in systemd? - Server Fault