Próximo: Uso do Disco, Anterior: Configurando nós de computação, Acima: Instalando Guix em um Cluster [Conteúdo][Índice]
Guix requer acesso à rede para baixar código-fonte e binários pré-construídos. A boa notícia é que somente o nó principal precisa disso, já que nós de computação simplesmente delegam a ele.
É costume que nós de cluster tenham acesso, na melhor das hipóteses, a uma
white list de hosts. Nosso nó principal precisa de pelo menos
ci.guix.gnu.org
nessa lista branca, pois é de lá que ele obtém
binários pré-construídos por padrão, para todos os pacotes que estão no Guix
propriamente dito.
A propósito, ci.guix.gnu.org
também serve como um
content-addressed mirror do código-fonte desses
pacotes. Consequentemente, é suficiente ter unicamente
ci.guix.gnu.org
nessa lista branca.
Pacotes de software mantidos em um repositório separado, como um dos vários
canais HPC, obviamente não estão
disponíveis em ci.guix.gnu.org
. Para esses pacotes, você pode querer
estender a lista branca de modo que os binários de origem e pré-construídos
(assumindo que os servidores desta parte forneçam binários para esses
pacotes) possam ser baixados. Como último recurso, os usuários sempre podem
baixar o código-fonte em sua estação de trabalho e adicioná-lo ao
/gnu/store do cluster, assim:
GUIX_DAEMON_SOCKET=ssh://compute-node.example.org \ guix download http://starpu.gforge.inria.fr/files/starpu-1.2.3/starpu-1.2.3.tar.gz
O comando acima baixa starpu-1.2.3.tar.gz
e o envia para a
instância guix-daemon
do cluster via SSH.
Clusters com air-gapped exigem mais trabalho. No momento, nossa sugestão
seria baixar todo o código-fonte necessário em uma estação de trabalho
executando Guix. Por exemplo, usando a opção --sources de
guix build
(veja Invocando guix build em Manual de
Referência do GNU Guix), o exemplo abaixo baixa todo o código-fonte do qual
o pacote openmpi
depende:
$ guix build --sources=transitive openmpi … /gnu/store/xc17sm60fb8nxadc4qy0c7rqph499z8s-openmpi-1.10.7.tar.bz2 /gnu/store/s67jx92lpipy2nfj5cz818xv430n4b7w-gcc-5.4.0.tar.xz /gnu/store/npw9qh8a46lrxiwh9xwk0wpi3jlzmjnh-gmp-6.0.0a.tar.xz /gnu/store/hcz0f4wkdbsvsdky3c0vdvcawhdkyldb-mpfr-3.1.5.tar.xz /gnu/store/y9akh452n3p4w2v631nj0injx7y0d68x-mpc-1.0.3.tar.gz /gnu/store/6g5c35q8avfnzs3v14dzl54cmrvddjm2-glibc-2.25.tar.xz /gnu/store/p9k48dk3dvvk7gads7fk30xc2pxsd66z-hwloc-1.11.8.tar.bz2 /gnu/store/cry9lqidwfrfmgl0x389cs3syr15p13q-gcc-5.4.0.tar.xz /gnu/store/7ak0v3rzpqm2c5q1mp3v7cj0rxz0qakf-libfabric-1.4.1.tar.bz2 /gnu/store/vh8syjrsilnbfcf582qhmvpg1v3rampf-rdma-core-14.tar.gz …
(Caso você esteja se perguntando, isso é mais de 320 MiB de código-fonte compactado.)
Podemos então criar um grande arquivo contendo tudo isso (veja Invocando guix archive em Manual de Referência GNU Guix):
$ guix archive --export \ `guix build --sources=transitive openmpi` \ > openmpi-source-code.nar
… e podemos eventualmente transferir esse arquivo para o cluster em armazenamento removível e descompactá-lo lá:
$ guix archive --import < openmpi-source-code.nar
Esse processo precisa ser repetido toda vez que um novo código-fonte precisa ser trazido para o cluster.
Enquanto escrevemos isso, os institutos de pesquisa envolvidos no Guix-HPC não têm clusters air-gapped. Se você tem experiência com essas configurações, gostaríamos de ouvir feedback e sugestões.
Próximo: Uso do Disco, Anterior: Configurando nós de computação, Acima: Instalando Guix em um Cluster [Conteúdo][Índice]