¿Por qué se puede vincular R a un BLAS compartido más tarde, incluso si se creó con `--with-blas = lblas`?

losSección BLAS en el manual de instalación y administración de R dice que cuando se construye Rde la fuente, con parámetro de configuración--without-blas, construirá el BLAS de referencia de Netlib en una biblioteca compartida independiente enR_HOME/lib/libRblas.so, junto con la biblioteca compartida estándar RR_HOME/lib/libR.so. Esto facilita al usuario cambiar y comparar diferentes BLAS sintonizados en el entorno R. La guía sugiere que el investigador podría usar un enlace simbólico paralibRblas.so para lograr esto, yEste artículo da más detalles sobre esto.

Por el contrario, cuando simplemente instale una versión binaria precompilada de R, ya sea desde los espejos de R CRAN o desde el repositorio de Ubuntu (para usuarios de Linux como yo),En teoria debería ser más difícil cambiar entre BLAS diferentes sin reconstruir R, porque una versión R precompilada está configurada con--with-blas = (some blas library). Podemos verificar esto fácilmente, ya sea leyendo el archivo de configuración enR_HOME/etc/Makeconfo verifique el resultado deR CMD config BLAS_LIBS. Por ejemplo, en mi máquina devuelve-lblas, por lo que está vinculado a la referencia BLASen tiempo de construcción. Como resultado, no hayR_HOME/lib/libRblas.so, solamenteR_HOME/lib/libR.so.

Sin embargo,este R-blog dice que es posible cambiar entre BLAS de diferencia, incluso si R no está instalado desde la fuente. El autor probó ATLAS y OpenBLAS desde el repositorio de ubuntu, y luego usóupdate-alternatives --config para trabajar alrededor. También es posible configurar e instalar BLAS sintonizados desde la fuente, agregarlos a "alternativas" a través deupdate-alternatives --install, y luego cambiar entre ellos de la misma manera. La biblioteca BLAS (un enlace simbólico) en este caso se encontrará en/usr/lib/libblas.so.3, que está bajo ubuntu y R'sLD_LIBRARY_PATH. ¡Lo he probado y esto funciona!Pero estoy muy sorprendido de cómo R logra esto. Como dije, R debería haber estado vinculado a la biblioteca BLAS configurada en el momento de la construcción, es decir, esperaría que todas las rutinas BLAS integraranR_HOME/lib/libR.so. Entonces, ¿por qué todavía es posible cambiar BLAS a través de/usr/lib/libblas.so.3?

Gracias si alguien puede explicar esto.

Respuestas a la pregunta(0)

Su respuesta a la pregunta