Introduction to Julia 308
- https://hackmd.io/c/coscup18-julia/%2Fcoscup18-julia-introduction-to-julia
- https://www.slideshare.net/ssuserd6984b/coscup-introduction-to-julia
- 『Write like Python, run like C.』沒什麼比這句或更有吸引力了,這個語言一本上是語法融合R+Python的動態型別語言,不過她速度實測上接近C和Lua,不過按照講者說法Julia需要在宣告時給定變數型別才可獲得最佳效能。
- pass by sharing,function內變數指向原本的參數位置
- 語法上有趣的部份是他的陣列Index是從1開始的,陣列支援comprehension展開,此外支援複數型別和有理數型別,而且在有UTF-8,可以輕易的打出希臘字母,對於學術界來說時的親切。也因此金融界,和科學運算界用這個語言比較多。我覺得她可以取代Scipy和Numpy在這些領域的地位。
- 有內建的profile tool,不用像C/C++需要prof或是valgrind。可以用@time產生火焰圖。
- 有平行語法@parallel修飾字,基本上就是openmp的#pragma parallel for之類的包裝。
- @code_native與@code_llvm的修飾字可以方便了解當時程式的組語以及LLVM IR。
- Machine Learning,Deep Learning和web full stack均有套件,還也史上最強大微分方程套件。
小鴨城 (Duckietown),一個基於 Raspberry Pi 和 ROS 的開源無人小車專案介紹
- https://hackmd.io/c/coscup18-misc/%2Fcoscup18-misc307-duckietown
- Ubutu + ROS + OpenCV + Raspberry Pi用來訓練學生對於無人車的設計基本了解。
- 主要注重車子與雙黃線的距離估計,圖像與真實世界的投影轉換,光影的補完與校正。
- 交大也有開課歐(軟體創意專題)。
- Puyuma
在 RISC-V 上的 ftrace 及 perf 工具移植經驗
- https://hackmd.io/c/coscup18-kernel/%2Fcoscup18-kernel-risc-v-ftrace-perf
- kernel是黑盒子,需要透過ftrace和perf來了解kernel效能。
- 流程:開發者使用效能監控工具->改變kernel設定,進入開發模式->產生監控資料->離開監控模式->開發者存取資料
- Ftrace:以 function 為等級的監控,進入每個函數,綁架正流執行流程,產生執行與離開的時間戳記,使用者透過透過 tracefs 檔案系統取的 trace 內容。
- Perf : 以 process 為等級的監控,排程器在排入形成時啟動、形成離開時移除 perf 機制,產生包括軟體組態,以及硬體counter,甚至cache miss資料。透過一些gui tool 或是 CLI 獲得perf解碼資料。
- 均須在compile時加入 -pg flag,插入_mcount
- _mcount 如何運作,透過更改call stack中當前的return address,讓其進入_mcount產生資料進行計算。https://github.com/lattera/glibc/blob/master/sysdeps/sh/_mcount.S
- patch重點->硬體counter。
快快樂樂 SIMD
- https://hackmd.io/c/coscup18-kernel/%2Fcoscup18-kernel-simd
- https://www.slideshare.net/WeiTaWang/simd-109492525
- SIMD算是現代CPU特色,Intel每幾年會double一次SIMD大小。SIMD是一些特殊組語,在C語言使用時通常用一些函式包裝,Vector register也會用typedef重新定義。
- 使用SIMD前一定要會算指令cycle,最好還要有計算機組織的基礎,才有辦法trade off。
- SIMD除了指令以外,還要了解記憶體與cache。唯有讓運算停留在register中進行愈久愈好。為了避免cache miss,array可以在function中宣告,用O3讓參數穿透(inline),interrupt避免,以免cahce被洗出去。計算cache size,避免在存圖片時cache滿出來。由於編譯器對於指標較難優化。所以避免直接使用間接取址操作,不然會編出大量load/store與cache miss。應該用中繼變數取代。少用陣列多用pointer可以避免編出大量load / store
- algin很重要,滿出vector size不會得到好的增益。可用align指令包裝。
- 必須記得當前CPU的register數量,避免滿出vector register的大小。
- 使用shuffle指令ex: vtrnq(arm)重新排列資料在vector的位置
- 盡量一口氣load store達到pipeline
- 使用新版gcc / clang
- -fvectorize 需要讓編譯器知道迴圈大小裁可以達到最佳優化。
- 這個議程強調速度,所以會忽略一些可讀性。
LPWAN 物聯網通訊技術
- https://drive.google.com/drive/folders/1GR3W2X19IqdDYMlClVn_RunnBntS2R6X
- 基本上就是介紹LORA、NB IOT和SigFox
Web 可用的組合語言 - WebAssembly & 自幹 WebAssembly 虛擬機器
- https://hackmd.io/c/coscup18-kernel/%2Fcoscup18-kernel-webassembly
- WebAssembly:提供更高安全性與速度,同時減少資料傳輸。
- Stack based
- 變數記憶體帶有型態與一般組語不同
The bright future of SUSE and openSUSE
The DEXON Network - The Infrastructure of the Internet’s Decentralized Future
Lightning Talk
Sunday, August 19, 2018
2018 COSCUP day 1
Subscribe to:
Post Comments (Atom)
精選文章
使用Ardunio Atmega2560 連接 nRF24L01+
使用Ardunio Atmega2560 連接 nRF24L01+ 關於library 目前主流有 https://github.com/maniacbug/RF24 與 https://github.com/TMRh20/RF24 這兩個。 其中TMRh20大大做...
-
L3G4200 gyroscope使用筆記 特性與參數 用途:量測姿態 精度:250/500/2000 dps (degree per second) 輸出資料:為angular rate(角速度) ,16bit 原始感應器電壓(僅有晶片):2.4V ~3.6V ...
-
PWM簡述 PWM為Pulse Width Modulation的縮寫,對於只有high和low的數位訊號來說,如何用high,low比率調整出類似類比訊號為PWM的用處,另外大多數馬達也透過PWM來驅動轉速,LED由於只吃固定電壓,所以常用PWM來調整亮度。 du...
-
Arduino TLC5940與伺服馬達 TLC5940介紹 TLC5940是TI的16 channel LED驅動晶片。可以支援同時16通道的PWM灰階輸出,解析度為4096階。同時有兩種模式 12 bit (4096 Steps) Grayscale PWM C...
No comments:
Post a Comment