發表文章

目前顯示的是 1月, 2017的文章

我們能利用machine learning去幫助compiler的optimization演算法變強嗎?

ML通常是拿來幫忙做predict和decisions 透過大量training data  (input: feature,  output: predict a value or classification) 對於沒有看過的feature做predict和decisio ns 我對於ML經驗只有半年多 以下是我的一些看法 1.  如果是對特定benchmark的話 用ML能幫忙找出不錯的heuristic值 (ex.  --param,  --regalloc=[ basic|fast|greedy|pbqp] 等等) google也滿多的 Automatic Feature Generation for Machine Learning Based Optimizing Compilation 但直到看到"MILEPOST GCC"  覺得圖很眼熟... 就是interactive compiler! 2.  如果想把machine learning的training也做進compiler內 看來就只能做在JIT了 google了一下也有人做到VM Using machines to learn method-specific compilation strategies (IBM) Method-Specific Dynamic Compilation using Logistic Regression 也有人拿來做CPU/GPU decisions XD Machine-Learning-based Performance Heuristics for Runtime CPU/GPU Selection 如果做在AOT compiler, 感覺就像PGO, 看起來也不需ML 3.  如果要用machine learning去學出某隻benchmark/ function最好的instruction sequence 感覺可以用reinforcement learning去做 但是用interactive compiler去挑heuristic就可能做...

The Speed Game: Automated Trading Systems in C++

https://meetingcpp.com/index.php/tv16/items/18.html C++ low latency coding techniques: ● General considerations C++11 Move semantics Static assert Data member layout, padding and alignment (盡量alignment access) ● False sharing http://shuyufu.blogspot.tw/2013/01/false-sharing.html ● Cache locality ● Compile-time dispatch std::sort(array, array + N, []( int a, int b) { return b < a; });  71us, std deviation 1.5us int comparer( const void * a, const void* b) { return *(int*)a - *(int*)b; } qsort(arr, N, sizeof(int), comparer); 223us, std deviation 7us ● Constexpr C++14 feature ● Variadic templates ● Loop unrolling Generally, don’t bother, the compiler will figure it out ● Expression short-circuiting Rewrite: if (expensiveCheck() && inexpensiveCheck()) {} As: if (inexpensiveCheck() && expensiveCheck()) {} ● Signed vs unsigned comparisons 用loop iteratort用signed就是了 (可看前篇 ● Mixing float and doubles Default type of a floating...