小编jap*_*edo的帖子

使用Emscripten与Fortran:LAPACK绑定

我的目标是使用LAPACK和Emscripten.

我的问题是:如何将LAPACK移植到JS?这是我能想到的两种方式:CLAPACK到JS我的问题是:有人知道一个晚于3.2.1的非官方版本吗?另一种想法是:如何将FORTRAN移植到JS?

Emscripten能够将C代码转换为JavaScript.但遗憾的是,LAPACK 3.5.0(http://www.netlib.org/lapack/)仅适用于FORTRAN95.

CLAPACK项目(http://www.netlib.org/clapack/)基本上就是我想要的:LAPACK的C版本.但是这个已经过时了; 最新的是3.2.1.

F2C仅适用于FORTRAN 77.LAPACK 3.5.0是用FORTRAN 95编写的.

所以现在我的问题是:为什么没有更新的LAPACK端口到C?

最佳方法是使用clang和emscripten直接将LAPACK的FORTRAN95代码转换为javascript.但我只是不知道从哪里开始.

Emscripten目前不支持FORTRAN.但它处理LLVM bitcode,因此使用clang从FORTRAN文件生成LLVM bc应该不是问题.

出于测试目的,我有这个文件:

      program hello
      print *, "Hello World!"
      end program hello
Run Code Online (Sandbox Code Playgroud)

用"clang hello.f -o hello -lgfortran"编译就好了.我无法将其转换为有效的bitcode.

clang -c -emit-llvm hello.f      
clang -S -emit-llvm hello.f -o hello.bc -lgfortran
Run Code Online (Sandbox Code Playgroud)

这些方法都不起作用,因为emscripten一直告诉我

emcc -c hello.o -o hello.js
hello.o is not valid LLVM bitcode
Run Code Online (Sandbox Code Playgroud)

我不确定是否可能这样做,因为LAPACK显然需要libgfortran才能工作.而且我无法将库合并到javascript代码中......

提前致谢!

编辑:

我几乎设法将BLAS从LAPACK 3.5.0转换为JS.我用dragonegg来完成这个.

gfortran caxpy.f -flto -S -fplugin=/usr/lib/gcc/x86_64-linux-gnu/4.6/plugin/dragonegg.so 
gfortran cgerc.f ...
...
Run Code Online (Sandbox Code Playgroud)

从中获得LLVM bitcode之后:

emcc caxpy.s.ll cgerc.s.ll cher.s.ll ... -o blas.js …
Run Code Online (Sandbox Code Playgroud)

javascript c fortran lapack emscripten

5
推荐指数
1
解决办法
2010
查看次数

在 Docker 容器中运行 Weston

我目前正在尝试在 Docker 容器中运行 Weston 实例。

我的系统是 Ubuntu 16.04,当前运行带有 DRI 后端的本机 Weston(我不需要任何 X11 依赖项)。因此,对于初学者来说,我想在 Docker 容器中运行另一个 Weston 实例(以 Weston 作为后端)。

之后(我真正的目标)我想运行一台没有任何桌面环境的普通 Ubuntu 机器,只安装图形驱动程序,然后运行一个可以访问 DRI 的 Weston Docker 实例,尽管我什至不确定这是否(以及如何)可能的。

到目前为止,我编写了一个继承自Ubuntu的Dockerfile,安装Weston,然后运行Weston。我收到的错误消息是“请在虚拟终端中运行 Weston”。我添加了对 openvt 的调用:

RUN openvt -- launch-weston
Run Code Online (Sandbox Code Playgroud)

该命令以 root 身份运行。但是,我总是收到错误

Couldn't get a file descriptor referring to the console.
Run Code Online (Sandbox Code Playgroud)

现在我有点陷入困境,因为互联网上关于这个主题的可用资源非常罕见:)

有人知道我该如何继续吗?有关在 Docker 容器中运行 DRI/GBM/DRM/KMS 图形应用程序的任何其他技术信息都会对我有很大帮助。

ubuntu egl docker wayland ubuntu-16.04

5
推荐指数
0
解决办法
1916
查看次数

GCC -O1 和内联汇编器出现分段错误

我在我的代码中检测到一个奇怪的分段错误,我想听听您的意见,这是否可能是 GCC 错误或只是我的错!

该函数如下所示:

void testMMX( ... ) {
unsigned long a         = ...;
unsigned char const* b = ...;
unsigned long c    = ...;
__asm__ volatile ( 
    "pusha;" 
);
__asm__ volatile ( "mov %0, %%eax;" : : "m"( a ) : "%eax" ); // with "r"( a ) it just works fine!
__asm__ volatile ( "add %0, %%eax;" : : "m"( b ) : "%eax" );
__asm__ volatile ( "mov %0, %%esi;" : : "m"( c ) : "%eax", …
Run Code Online (Sandbox Code Playgroud)

linux debugging ubuntu gcc inline-assembly

3
推荐指数
1
解决办法
1064
查看次数

为什么没有LAPACK 3.5.0的C端口可用?

我的目标是使用LAPACK和Emscripten.Emscripten能够将C代码转换为JavaScript.但遗憾的是,LAPACK 3.5.0(http://www.netlib.org/lapack/)仅适用于FORTRAN95.

CLAPACK项目(http://www.netlib.org/clapack/)基本上就是我想要的:LAPACK的C版本.但是这个已经过时了; 最新的是3.2.1.

所以现在我的问题是:为什么没有更新的LAPACK端口到C?有什么建议如何实现我的目标?

提前致谢!

我设法将LAPACK,LAPACK C-wrapper移植到javascript.然而,我无法使用它,因为包装器使用内部FORTRAN例程.我如何在emscripten中嵌入这些内容?

例如,函数LAPACKE_cgbcon使用仅在FORTRAN中可用的LAPACKE_xerbla.为什么我会从移植包装器中受益?

c fortran lapack emscripten

1
推荐指数
1
解决办法
347
查看次数