使用emscripten编译OpenBLAS

问题描述 投票:0回答:1

我正在尝试为 WebAssembly 编译 OpenBLAS。 我有一个 wasm/matrix.c 文件和从 github 下载的 OpenBLAS-0.3.26-x64-64 文件夹。

// wasm/matMul.c

#include "../OpenBLAS/include/cblas.h"
#include "emscripten.h"
#include <stdlib.h>

int result[2];
EMSCRIPTEN_KEEPALIVE        
void matMul(double *m1, double *m2, int m, int n, int k)
{
    size_t size = m * k * sizeof(double);
    double *m3 = (double *)malloc(size);
    cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, m, k, n, 1.0, m1, n, m2, k, 0, m3, k);
    result[0] = (int)m3;
    result[1] = size;
}

我尝试了

emcc -IOpenBLAS/include -LOpenBLAS/lib wasm/matMul.c -o matrix.js -lopenblas
,但它给出了以下警告和错误:

wasm-ld: warning:
OpenBLAS/lib\libopenblas.a: archive member
'lapacke_make_complex_double.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error:
C:\msys64\tmp\emscripten_temp_zbcdvpw2\matMul_0.o: undefined symbol: cblas_dgemm
javascript c webassembly emscripten blas
1个回答
0
投票

您可以尝试“tiny_wasm_runtime”而不是 emscripten。它的功能并不丰富,但更易于使用。对于 C 库来说它应该可以正常工作。

https://github.com/twiddlingbits/tiny-wasm-runtime

npm 安装tiny-wasm-runtime

© www.soinside.com 2019 - 2024. All rights reserved.