Criando R 4+ para Windows com OpenBLAS

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


[Esteartigofoipublicadopelaprimeiravezem[Thisarticlewasfirstpublishedon R – Atratores estranhos, e gentilmente contribuiu para R-blogueiros]. (Você pode relatar um problema sobre o conteúdo desta página aqui)


Deseja compartilhar seu conteúdo com R-blogueiros? clique aqui se você tiver um blog ou aqui se não tiver.

Logotipo do projeto REsta publicação descreve as etapas necessárias para criar o R ​​4+ para Windows com o OpenBLAS. O lançamento do R 4.0 inclui mudanças significativas no sistema de compilação do Windows de versões anteriores – para melhor! Antes de qualquer coisa, todos devemos uma gratidão significativa a Jeroen Ooms pelas muitas horas que ele passou trabalhando no sistema de compilação. Obrigado Jeroen !!

O processo de compilação abaixo cria um arquivo de instalação para o R de 32 e 64 bits, mas faz alguns compromissos. O tempo extra gasto na construção do instalador é negociado para reduzir o tempo gasto ajustando arquivos e minimizando as alterações necessárias. A própria biblioteca do OpenBLAS é criada usando a palavra-chave “dynamic”, de modo que funcionará para todas as arquiteturas e é construída para usar até 64 threads. Não é totalmente otimizado para a CPU de construção real, que não é apenas razoável, mas necessária. Uma biblioteca centralizada deve ser genérica o suficiente para atender a todos os que chegam. Eventualmente, espero refinar o processo para criar apenas a versão de 64 bits e vincular a uma biblioteca OpenBLAS estática, compilada localmente e otimizada localmente. Por fim, pretendo abordar as etapas necessárias para adicionar pacotes específicos da fonte, como XML ou nloptr, em uma publicação futura. Por enquanto, a instalação como binários deve funcionar.

Etapa 1: instalar o Rtools40

A instalação do Rtools40 é simples. Certifique-se de baixar a versão de 64 bits e adicione a variável PATH conforme descrito no site.

Etapa 2: instalar o software de suporte necessário

Instale o MiKTeX e o Inno Setup nos locais padrão, se ainda não estiverem. Instale o qpdf em qualquer lugar, se desejar usá-lo.

Leia Também  Crie cartogramas para delegados democratas na terça-feira ao estilo WSJ em R com {catchpole}

Etapa 3: Obtendo os scripts de construção do Windows R

Clone ou faça o download do repositório r-windows / r-base no Github. Pessoalmente, faço o download do arquivo ZIP. Eu costumo brincar muito com o código ao descobrir como personalizar a compilação, então não quero clonar / bifurcar o repositório original. Quando estou pronto para sugerir alterações, clono o repositório e envio uma solicitação de recebimento. Independentemente disso, deve haver um diretório com os arquivos listados no repositório r-base, provavelmente chamado r-base-master.

Etapa 4: Criar patch blas

A compilação usa o mesmo processo que funciona no R3 +; ele conecta o OpenBLAS à compilação através das variáveis ​​ATLAS nos Makefiles. No entanto, o novo sistema baixa o código-fonte R como parte do processo de compilação, portanto, muda para src/extra/blas/Makefile.win são feitas usando o arquivo de correção em vez de edições manuais. Portanto, salve o texto a seguir como um arquivo chamado blas.diff no mesmo subdiretório que os arquivos extraídos / clonados.

--- a/src/extra/blas/Makefile.win
+++ b/src/extra/blas/Makefile.win
@@ -12,7 +12,7 @@
 ../../../$(BINDIR)/Rblas.dll: blas00.o ../../gnuwin32/dllversion.o
 	@$(ECHO) -------- Building [email protected] --------
 	$(DLL) -shared $(DLLFLAGS) -o [email protected] $^ Rblas.def 
-	   -L../../../$(IMPDIR) -lR  -L"$(ATLAS_PATH)" -lf77blas -latlas
+	   -L../../../$(IMPDIR) -lR  -L"$(ATLAS_PATH)" -lopenblas
 else
 ../../../$(BINDIR)/Rblas.dll: blas.o cmplxblas.o ../../gnuwin32/dllversion.o
 	@$(ECHO) -------- Building [email protected] --------

Etapa 5: ajustar arquivos existentes

Faça as seguintes alterações nos arquivos de construção para garantir que o OpenBLAS seja extraído do pacman (o package cara(não o caractere Namco) e que as bibliotecas apropriadas sejam acessadas nos momentos certos.

full-build.sh

Adicione a linha destacada ao full-build.sh após a chamada para cairo, tk e curl. É aqui que outros pacotes como nlopt ou xml também serão adicionados eventualmente.

pacman -S --needed --noconfirm mingw-w64-{i686,x86_64}-{cairo,tk,curl}
pacman -S --needed --noconfirm mingw-w64-{i686,x86_64}-openblas

MkRules.local.in

Edite EOPTS (sinalizadores de otimização extra) em MkRules.local.in como nas versões anteriores do R. Pessoalmente, eu uso -march=native -pipe à medida que construo instaladores R personalizados para cada máquina que uso. Para usar o mesmo instalador em computadores diferentes, recomendo -mtune=generic -pipe. Consulte a documentação do GCC 8.3 para obter mais informações sobre sinalizadores de otimização.
Em seguida, adicione e edite as seguintes linhas em #Enable features:

USE_ATLAS = YES
ATLAS_PATH="/mingw$(WIN)/lib/"

Isso informa à compilação para usar as bibliotecas OpenBLAS e onde encontrar as versões de 32 e 64 bits.
Para usar qpdf, adicione o seguinte em # For building docs/installer, substituindo o caminho apropriado.

Leia Também  Organização dos novos conjuntos de dados da série temporal Johns Hopkins Covid-19
cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
QPDF = /path/to/qpdf

PKGBUILD

Ajustar esse arquivo é mais complicado. Adicione as linhas destacadas abaixo ao PKGBUILD nos locais apropriados:

# Maintainer: Jeroen Ooms 
_realname=r-installer
pkgbase=${_realname}
pkgname="${_realname}"
pkgver=4.0.9000
pkgrel=1
pkgdesc="The R Programming Language"
arch=('any')
makedepends=("${MINGW_PACKAGE_PREFIX}-bzip2"
             "${MINGW_PACKAGE_PREFIX}-gcc"
             "${MINGW_PACKAGE_PREFIX}-gcc-fortran"
             "${MINGW_PACKAGE_PREFIX}-cairo"
             "${MINGW_PACKAGE_PREFIX}-curl"
             "${MINGW_PACKAGE_PREFIX}-icu"
             "${MINGW_PACKAGE_PREFIX}-libtiff"
             "${MINGW_PACKAGE_PREFIX}-libjpeg"
             "${MINGW_PACKAGE_PREFIX}-libpng"
             "${MINGW_PACKAGE_PREFIX}-pcre2"
             "${MINGW_PACKAGE_PREFIX}-tcl"
             "${MINGW_PACKAGE_PREFIX}-tk"
             "${MINGW_PACKAGE_PREFIX}-xz"
             "${MINGW_PACKAGE_PREFIX}-zlib"
             "${MINGW_PACKAGE_PREFIX}-openblas"
             "texinfo"
             "texinfo-tex"
             "sed")
options=('staticlibs')
license=("GPL")
url="https://www.r-project.org/"

# Default source is R-devel (override via $rsource_url)
source=(R-source.tar.gz::"${rsource_url:-https://cran.r-project.org/src/base-prerelease/R-devel.tar.gz}"
    https://curl.haxx.se/ca/cacert.pem
    MkRules.local.in
    shortcut.diff
    create-tcltk-bundle.sh
    blas.diff)

# Automatic untar fails due to embedded symlinks
noextract=(R-source.tar.gz)

sha256sums=('SKIP'
            'SKIP'
            'SKIP'
            'SKIP'
            'SKIP'
            'SKIP')

prepare() {
  # Verify that InnoSetup is installed
  INNOSETUP="C:/Program Files (x86)/Inno Setup 6/ISCC.exe"
  msg2 "Testing for $INNOSETUP"
  test -f "$INNOSETUP"
  "$INNOSETUP" 2>/dev/null || true

  # Put pdflatex on the path (assume Miktex 2.9)
  msg2 "Checking if pdflatex and texindex can be found..."
  export PATH="$PATH:/c/progra~1/MiKTeX 2.9/miktex/bin/x64"
  pdflatex --version
  texindex --version

  # Extract tarball with symlink workarounds
  msg2 "Extracting R source tarball..."
  rm -rf ${srcdir}/R-source
  mkdir -p ${srcdir}/R-source
  MSYS="winsymlinks:lnk" tar -xf ${srcdir}/R-source.tar.gz -C ${srcdir}/R-source --strip-components=1
  cd "${srcdir}/R-source"

  # Ship the CA bundle
  cp "${srcdir}/cacert.pem" etc/curl-ca-bundle.crt

  # Ship the TclTk runtime bundle
  msg2 "Creating the TclTk runtime bundle"
  mkdir -p Tcl/{bin,bin64,lib,lib64}
  ${srcdir}/create-tcltk-bundle.sh  

  # Add your patches here
  patch -Np1 -i "${srcdir}/shortcut.diff"
  patch -Np1 -i "${srcdir}/blas.diff"
}

build() {
  msg2 "Copying source files for 32-bit build..."
  rm -Rf ${srcdir}/build32
  MSYS="winsymlinks:lnk" cp -Rf "${srcdir}/R-source" ${srcdir}/build32

  # Build 32 bit version
  msg2 "Building 32-bit version of base R..."
  cd "${srcdir}/build32/src/gnuwin32"
  sed -e "s|@[email protected]|32|" -e "s|@[email protected]||" -e "s|@[email protected]||" "${srcdir}/MkRules.local.in" > MkRules.local
  #make 32-bit SHELL='sh -x'
  make 32-bit
  
  # Build 64 bit + docs and installers
  msg2 "Building 64-bit distribution"
  cd "${srcdir}/R-source/src/gnuwin32"
  TEXINDEX=$(cygpath -m $(which texindex))  
  sed -e "s|@[email protected]|64|" -e "s|@[email protected]|${TEXINDEX}|" -e "s|@[email protected]|${srcdir}/build32|" "${srcdir}/MkRules.local.in" > MkRules.local
  make distribution
}

check(){
  # Use cloud mirror for CRAN unit test
  #export R_CRAN_WEB="https://cran.rstudio.com"

  # Run 64 bit checks in foreground
  cd "${srcdir}/R-source/src/gnuwin32"
  echo "===== 64 bit checks ====="
  make check-all
}

package() {
  # Derive output locations
  REVISION=$((read x; echo ${x:10}) > "${CRANDIR}/target.cmd"
  cp "${CRANDIR}/target.cmd" ${pkgdir}/
}

Leia Também  Planejamento de patrimônio familiar: Grampy Larry's Take

Etapa 6: criar R

Inicie o Rtools40 via msys.exe o que cria uma janela shell. Navegue para o subdiretório em que os arquivos de construção estão usando o estilo Unix. Por exemplo, se os arquivos estiverem em “c: R R40”, navegue para “/ c / R / R40”. Invoque a construção via “./full-build.sh”, Que provavelmente funcionará por horas. O processo atualiza todos os componentes necessários, cria as versões de 32 e 64 bits do R usando o OpenBLAS, verifica os resultados para cada versão e empacota a construção em um arquivo executável do instalador. Quando terminar, o desejado R-devel-win.exe estará no subdiretório acima ou em /src/R-source/src/gnuwin32/installer, se não ambos. É o executável que instala o R 4+ para Windows com o OpenBLAS!

Notas finais, por enquanto

Instalar e usar esta versão modificada do R não deve causar problemas, nem instalar a maioria dos pacotes da fonte. Existem alguns pacotes que dependem de bibliotecas compiladas – como XML ou nlopt – para as quais são necessárias etapas extras para criar a partir da fonte. No entanto, esses são poucos e podem ser instalados como binários por enquanto. Eu apreciaria pensamentos e correções nos comentários; boa sorte!

O post Building R 4+ para Windows com OpenBLAS apareceu pela primeira vez em Strange Attractors.

var vglnk = {key: ‘949efb41171ac6ec1bf7f206d57e90b8’};

(função (d, t) {
var s = d.createElement
s.src = ‘//cdn.viglink.com/api/vglnk.js’;
var r = d.getElementsByTagName
} (documento, ‘script’));

Para Deixe um comentário para o autor, siga o link e comente no blog: R – Atratores estranhos.

R-bloggers.com oferece atualizações diárias por email sobre notícias e tutoriais do R sobre o aprendizado do R e muitos outros tópicos. Clique aqui se você deseja publicar ou encontrar um emprego em ciência da dados / R.


Deseja compartilhar seu conteúdo com R-blogueiros? clique aqui se você tiver um blog ou aqui se não tiver.



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br