Code makes the world a better place

使用 Emscripten 將 Pthread 轉成 JavaScript 與效能分析

簡介

Emscripten 是可以將 C/C++ 轉換成 WebAssembly 的工具,背後是透過 LLVM 轉換,支援轉換 Pthread,會轉成 JavaScript 的 Web Worker 加 WebAssembly,甚至可以將 OpenGL 轉成 WebGL,讓程式在網頁上跑還能有接近原生程式的效能。

其中 Pthread 轉成 Web Worker 加 WebAssembly 的部分,就是本文要介紹的重點。我會拿一個範例程式來實際轉換看看,不過要找一個好的測試程式不容易,所以我寫一支 Pthread 計算 PI 的平行程式,用來做轉換測試。

本文先介紹如何使用 Emscripten 將 Pthread 轉 JS,照著官網教學做的過程採到一些坑,順便也記錄下來,免得大家又落坑了。隨後會分析 (1)原生 C Code (2)Emscripten 轉換的 JS (3)直接用 JS 寫的 Web Worker,三種情境下的效能差異。

Continue reading

SPEC CPU 2006 安裝執行

前言

SPEC CPU 是 The Standard Performance Evaluation Corporation (SPEC) 組織建立的 CPU 效能測試指標 (Benchmark)。最近的指標有 SPEC CPU 2006 和 SPEC CPU 2017,因為具有極大公信力,許多研究都會以這套指標當作評量測試。

如果想要弄到這套指標,網路上是找不到的,是需要跟這機構購買,而且要價不斐,要用的話就是想辦法靠關係弄一套來。我最近要重現一篇論文,裡面有用到 SPEC CPU 2006/2017,實驗室剛好有 2006 年版,但在使用過程中滿多坑的,為此紀錄。

Continue reading

Side Project—做自己想用的東西

什麼是 Side Project

Side Project 是指用業餘時間開發的專案,通常是想要解決某個問題或是滿足自己興趣。滿常看到社群討論要做什麼 Side Project,以及有些人會分享他們的作品。本文分享我對 Side Project 的看法,順便介紹我之前做的幾個 Side Project。

Continue reading