使用 Emscripten 將 Pthread 轉成 JavaScript 與效能分析 (2) — Merge Sort
- August 10, 2020
- Liu, An-Chi 劉安齊
我感覺這學期是這兩三年來過的最快樂的學期了。過得很充實,修了四門課,依舊參加美術社,寫了不少文章,找到研究方向和題目。念資工果真是一件很開心的事情。大致上,碩一下分為三個方面,分別介紹修課方面、美術社和研究方面,本篇先介紹修課方面。
Continue readingEmscripten 是可以將 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 readingSPEC CPU 是 The Standard Performance Evaluation Corporation (SPEC) 組織建立的 CPU 效能測試指標 (Benchmark)。最近的指標有 SPEC CPU 2006 和 SPEC CPU 2017,因為具有極大公信力,許多研究都會以這套指標當作評量測試。
如果想要弄到這套指標,網路上是找不到的,是需要跟這機構購買,而且要價不斐,要用的話就是想辦法靠關係弄一套來。我最近要重現一篇論文,裡面有用到 SPEC CPU 2006/2017,實驗室剛好有 2006 年版,但在使用過程中滿多坑的,為此紀錄。
Continue reading