From 9f6e2bd0d5c889340f1b71c9d15fbe00d7aa8d42 Mon Sep 17 00:00:00 2001 From: robonen Date: Fri, 25 Nov 2022 01:19:37 +0700 Subject: [PATCH] feat(engine): wasm experiments --- nuxt.config.ts | 11 +++++------ packages/matrix/Dockerfile | 7 +++++++ packages/matrix/build.sh | 3 +++ packages/matrix/run.sh | 7 +++++++ packages/matrix/src/matrix.c | 22 ++++++++++++++++++++++ packages/rendering/index.ts | 1 - 6 files changed, 44 insertions(+), 7 deletions(-) create mode 100644 packages/matrix/Dockerfile create mode 100644 packages/matrix/build.sh create mode 100644 packages/matrix/run.sh create mode 100644 packages/matrix/src/matrix.c diff --git a/nuxt.config.ts b/nuxt.config.ts index 6352cce..72bab09 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -1,7 +1,8 @@ // https://v3.nuxtjs.org/api/configuration/nuxt.config -import {resolve} from 'path'; +import { resolve } from 'path'; const SRC = resolve(__dirname, 'src'); +const PACKAGES = resolve(__dirname, 'packages'); export default defineNuxtConfig({ srcDir: SRC, @@ -9,7 +10,7 @@ export default defineNuxtConfig({ app: { head: { title: 'Canvas 3D', - link: [{rel: 'icon', href: '/favicon.svg'}], + link: [{ rel: 'icon', href: '/favicon.svg' }], }, }, css: ['@/assets/styles/main.scss'], @@ -17,7 +18,5 @@ export default defineNuxtConfig({ typeCheck: true, shim: false, }, - modules: [ - '@vueuse/nuxt', - ], -}) + modules: ['@vueuse/nuxt'], +}); diff --git a/packages/matrix/Dockerfile b/packages/matrix/Dockerfile new file mode 100644 index 0000000..087fa73 --- /dev/null +++ b/packages/matrix/Dockerfile @@ -0,0 +1,7 @@ +FROM ubuntu:22.04 + +MAINTAINER Robonen Andrew + +WORKDIR /src + +RUN apt update && apt install -y clang lldb lld diff --git a/packages/matrix/build.sh b/packages/matrix/build.sh new file mode 100644 index 0000000..0a9aa74 --- /dev/null +++ b/packages/matrix/build.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env sh + +docker build -t llvm . diff --git a/packages/matrix/run.sh b/packages/matrix/run.sh new file mode 100644 index 0000000..56195ce --- /dev/null +++ b/packages/matrix/run.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env sh + +docker run --rm \ + -v $(pwd)/src:/src \ + -v $(pwd)/dist:/dist \ + llvm \ + clang --target=wasm32 -O3 -fno-builtin -flto -nostdlib -Wl,--no-entry -Wl,--export-all -Wl,--lto-O3 -o /dist/matrix.wasm /src/matrix.c diff --git a/packages/matrix/src/matrix.c b/packages/matrix/src/matrix.c new file mode 100644 index 0000000..57d0169 --- /dev/null +++ b/packages/matrix/src/matrix.c @@ -0,0 +1,22 @@ +/* +* Matrix multiplication +* C = A * B +*/ +void matrix_mul(double *A, double *B, double *C, unsigned m, unsigned n, unsigned p) +{ + unsigned i, j, k; + double sum; + + for (i = 0; i < m; i++) + { + for (j = 0; j < p; j++) + { + sum = 0; + for (k = 0; k < n; k++) + { + sum += A[i * n + k] * B[k * p + j]; + } + C[i * p + j] = sum; + } + } +} diff --git a/packages/rendering/index.ts b/packages/rendering/index.ts index 5701aa9..e69de29 100644 --- a/packages/rendering/index.ts +++ b/packages/rendering/index.ts @@ -1 +0,0 @@ -import {Vector} from './types';