2016-01-01から1年間の記事一覧

ApolloLake の gen9

そういやApolloLakeのやつGPU計測してなかった。https://github.com/tanakamura/clminibench/tree/master/jni/linux この CMakeLists.txt 使えば Linux でも動くようにしたから、まあなんかアレしといて。 dev = Intel(R) HD Graphics Broxton 1 enqueue ker…

Knigts Landing とクロックダウンする石 part 2 (車 10)

昨日のまとめ KNL はサイクル当たり2個の命令を実行できると資料にはある 実際には1.69しか出ない KNLのproduct briefによると、http://www.intel.com/content/www/us/en/processors/xeon/xeon-phi-processor-product-brief.html Frequency listed is nomina…

Knigts Landing とクロックダウンする石 part 1 (cdr 9)

そもそもinstruction-bench まともにしたのは、KNLで計測したかったからなのだけど、KNL はマニュアルどおりの性能が出ていないという現象が観測できる。 https://github.com/tanakamura/instruction-bench/blob/master/knl.log#L120KNL は VPU を2個持って…

instruction-bench (car 6)

あれ解説書いてなかったっけ…昔書いた気がするんだけど。https://github.com/tanakamura/instruction-bench命令毎のスループット、レイテンシを計測する。AVX512f まで対応してます。まあ他にもツールはあるのだけど、exe一個になってると楽かなと思って作っ…

ステーキを焼く(カー3)

昔カリフォルニアにいたころはよくステーキ焼いてたので、たまに焼くが(というほど滅多に焼かないが)、安い肉を焼いてしまうと、うまくいかなかった時に、「これは安い肉を焼いたからうまくいかなかったんだ」とか言い訳してしまうので良くないな。 ちゃんと…

コンパイラの最適化を抑制する(GCC編) ひとりなんとかカントカー 2

性能劣化を調査したりする場合、コンパイラのチューニングによってコードが消えてしまうと困る場合はよくあります。場合に応じて適切に対応することで、コンパイラのチューニングを抑制していきましょう。 (GCCと互換性の高いclangでも同じように対応できる…

ひとりなんか書くアドベントカレンダー 1

習慣を取り戻すためになんか書こう。(残念ながら習慣の問題でなくて加齢の問題なのでもう取り戻すことは不可能だ)

33

33

Goldmont

Goldmont情報全然出てこないし、もうAtom系は終わり(?)かもしれないので、どうせ大した変更入ってないだろと思ってたが、https://twitter.com/InstLatX64/status/780328535118479360を見てデコード3になるらしいのでやっぱり変更大きいのではないかという気…

退職します(最終出社日でした)

(以下、今の気分を書いてるだけなので第三者が読むには適さないです) http://d.hatena.ne.jp/w_o/20070501#p1 9年と4.5ヶ月ぐらいいたのか。この時とは僕自身も会社も変わってしまったなぁ…まあでも10年近くも経てば仕方ないか。最初の仕事 http://www.fixst…

ARM SVE

(まだ断片的な情報しか出てないので、多くの推測を含んでいます) https://community.arm.com/groups/processors/blog/2016/08/22/technology-update-the-scalable-vector-extension-sve-for-the-armv8-a-architecture(上から参照されてる https://community.…

pipe, splice, sendfile, vmsplice, tee

ファイルから読んだデータを、CPUで加工せずにソケットに送りたいとする。 read(in_fd, buffer, 4096); write(out_fd, buffer, 4096); とか、やりたくなるが、これは実際には非常に無駄で、read 時に、ファイルシステムキャッシュからユーザ空間へコピー、ユ…

Cortex-A7 vs Cortex-A9 vs Cortex-A53 vs Silvermont

http://wlog.flatlib.jp/item/1800 この表を見てて、そういえば、私もRaspberry Pi 3 が家に来たし似たような実験できるなと思ったので私も似たような実験をした。binutilsのビルド時間です。消費電力はKILL A WATT目視。 raspberry pi 3 (idle 1.8W, load 4…

肉と値段

気分が良かった…いや良くなかったな…まあ気分とは関係無く、Walmart で grassfed とか書いてある肉を試してしまった。(grassfed = 草だけで育てた)Walmart では、下限が $4.8/lb とかで売ってて、grassfed は $11.8/lb とか書いてた気がするので、2.5倍ぐら…

clflushopt を使ってキャッシュフラッシュを高速にしよう

キャッシュフラッシュに苦しんでいる人も世の中にはたくさんいる。そういう人を救うために、Skylake からはclflushopt という命令が新設された。 これまでは、clflush という命令があって、これを使うとキャッシュフラッシュができた。clflushoptは、これよ…

無からはじめるFPGAプログラミング(2)

1 : http://d.hatena.ne.jp/w_o/20160518#1463571239 さて、PS7を置いたら、Synthesizeをしよう。Synthesizeは、ボタンをポチーとするとできる。 Synthesizeすると、netlistができる。あんまりXilinx以外は知らないのだけど、Xilinx では、複雑な演算を、FPG…

無からはじめるFPGAプログラミング (1)

色々あって、Zynqを使うことになって、色々つらい思いをしている。 VivadoもQuartusもはっきり言ってひどいとしか言いようがない。HDLで書いたモジュールをTcl(!?!?今は21世紀だぞ??)でラップして作ったブロックをくっつけていくという設計は狂っているし、…

blk_mq デバイスドライバを作る Part2 (終)

Part1 : http://d.hatena.ne.jp/w_o/20160511#1462967279 blk_mq では、APIとしては大きく二点変更がある。 普通のblockでは、request() コールバックにキューごと渡されてきたが、blk_mq では、リクエストごとにコールバックが呼ばれる blk_xx みたいな API…

blk_mq デバイスドライバを作る Part1

Part2 : http://d.hatena.ne.jp/w_o/20160516#1463367951残念ながら馬4th editionは来年の12月に出ることが決まったので、blk_mq ドライバの作りかたは、ソースを読むしかないのだった。 以下、簡単にblk_mqドライバの作りかたを残しておく。 まず、blk_mq …

マシン更新

H170-PRO Gaming Crucial Ballistix Sport 8Gx4, 32GB Kit EVGA SuperNOVA 750 G1 80+ GOLD, 750W i7-6700 (前から使ってる) HTS54505 (前から使ってる 2.5' 250GB) アイドル24W ロード時ははかってない(そんなにロードしないので)そんなにロードしないんだ…

萌え絵と食事

台湾料理が好きだという気がした。 料理が口に合う距離は、物理的な距離と比例している気がする。日本料理が口に合うのは当然として、次に韓国料理、中華料理が好み近くて、東南アジア系はまあ好きだけど、ちょっと異国の味がする。アメリカ料理は、まあ別に…

FOR_EACH_なんとか マクロ

昔GCCのコード読んだときに、コードに、DEF_XX(TAG, "name") みたいなテーブルを作ってそれを読む箇所でDEF_XX マクロを定義して、Cのプリプロセッサだけでコンパイル時テーブルを作るみたいなテクニック (https://github.com/gcc-mirror/gcc/blob/master/gc…

_mm256_maskload_ps はマスクしてるとSEGVしない

ちゃんと理解してなかったので確認した。 #include <stdio.h> #include <immintrin.h> #include <sys/mman.h> int main() { char *p = mmap(0, 2048*1024*2, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0); mprotect(p + 2048*1024, 2048*1024, PROT_NONE); __m256 v = _mm256_set1_</sys/mman.h></immintrin.h></stdio.h>…