タグ

ブックマーク / w0.hatenablog.com (7)

  • 絵で見てわかるC言語入門 - 第1章 - w_o’s diary

    さて、C言語を使い慣れた人には常識ですが、C言語初心者にとって少し難しいのが、変数の宣言です。 例えば、初心者にとって、関数ポインタの配列へのポインタを返す関数の宣言を書くのはあまり簡単ではありません。 C言語の初心者には、以下のようなコードを書くのは少し難しく、また、C言語にあまり慣れていない人は、typedefなどを使ってしまいがちです。 typedef int (*func_t)(int); typedef func_t func_arr_t[10]; extern func_arr_t *x[40]; int (*(*x[40])[10])(int); int (*(*func(int i))[10])(int) { return x[i]; } そのようなことでは、いつまでたってもC言語の初心者を脱出することはできません。この章では、変数の宣言について詳しく勉強することにしましょ

    絵で見てわかるC言語入門 - 第1章 - w_o’s diary
    nurse
    nurse 2021/01/15
  • SVEの自動ベクタライズ - w_o’s diary

    ARM SVE というベクタ拡張があるんだけど、それって公開されてるコンパイラでどのぐらい対応されるんや?という話題を見かけたので、ちょっと試してみたら良い感じだったのでついでにもう少し調べてみた。 http://d.hatena.ne.jp/w_o/20150423#1429775436 個人的には自動ベクタライザというのは信用してないんだけど、それはそれとして、ループ変換ツールとしての最適化パスの処理はまあ面白いと思ってるので。 GCCは、ビルドしてもいいけど、 https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads ここからビルド済みバイナリが取得できるので、そちらのほうが簡単だと思う。 このGCCに、-march=a

    SVEの自動ベクタライズ - w_o’s diary
    nurse
    nurse 2019/04/18
  • デバッグprintfの仲間達

    printfは複雑な挙動をするので信頼できないことが多い。おいつめられると以下のようなものをprintfがわりに使う。 デバッグwhile(1) コードが止まるかどうかを判定することでフローを確認する。マシン語数命令で完結するのでかなり信頼できる。OS無し環境でも使えるのが嬉しい。Windows環境下ではプログラムを終了させるのが面倒。副作用が無いので時間かかっているだけなのか判定できない。 デバッグ *(int*)0 = 0; (デバッグSEGV) プログラムが終了するかどうかを判定してフローを確認する。さらにcoreを吐かせたり、JITデバッグしたりしやすい。ライブラリを必要としないので、abortよりも信頼できるしバックトレースもきれいに出る。が、Windows GUIはたまに例外を握り潰してることがある気がする(やめてくれ) デバッグexit(1) プログラムが終了するかどうかでフ

    デバッグprintfの仲間達
    nurse
    nurse 2017/01/06
  • 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.arm.com/servlet/JiveServlet/download/38-25150/ARMv8-A%20SVE%20technology%20Hot%20Chips%20v12.pdf が一番情報あるのでこっちを開きながら以下読むと良いです) ようやく資料が断片的に出てきたので書いておこうと思う。 一番の特徴は、命令セットはベクタ長を固定してないという点だろう。これのメリット、デメリッ

    ARM SVE
    nurse
    nurse 2016/09/01
  • 2016-05-20 - clflushopt を使ってキャッシュフラッシュを高速にしよう

    キャッシュフラッシュに苦しんでいる人も世の中にはたくさんいる。 そういう人を救うために、Skylake からはclflushopt という命令が新設された。 これまでは、clflush という命令があって、これを使うとキャッシュフラッシュができた。clflushoptは、これよりはやい。どのぐらい違うかというと、手元(i7-6770 + DDR4 2ch) だと、 clflush 4.1[GB/s] clflushopt 43.6[GB/s] memset 30.2[GB/s] このぐらい違う。 #include <stdio.h> #include <x86intrin.h> #include <sys/time.h> #include <string.h> #include <time.h> double sec(void) { struct timespec ts; clock_ge

    2016-05-20 - clflushopt を使ってキャッシュフラッシュを高速にしよう
    nurse
    nurse 2016/06/06
  • GPGPUは難しいと主張するのをやめよう ~GPGPUは難しくない 2015冬~ - J

    あけましておめでとうございます(投稿周期を考えるともう正月まで投稿しなさそうなのでフライング) 今年のテーマは「何故HadoopとかMapReduce系は簡単だという風潮があるのにGPGPUは難しいという風潮になるのか?」だった。 別にテーマだったと言っても何かやったわけではないけど… それで「GPGPUも簡単だと思う」みたいなことを書いてたら https://twitter.com/tanakmura/status/672681735990075393 なんか色々あって、今見たら「帰ったらちゃんと書きます」とかおととい書いてたのでちゃんと書こうと思った。 「GPGPUは難しい」と主張することのデメリット 〜Hadoop vs CUDA〜 MapReduce系とか登場当時は、「これで並列が簡単に使える」みたいなことが宣伝されてたよね。(最近あんま見かけない気がするけど) 一方、それに比べて

    GPGPUは難しいと主張するのをやめよう ~GPGPUは難しくない 2015冬~ - J
  • w_o’s diary

    なんかいいやつないかな → ない Cortex-X2 とか X3のが欲しいのだった。もちろん X4 でもいい。このぐらいになればもうx86に追い付いて普通に使えるのではという気がしたので。 Androidはある。 Wikipediaを見れば一覧あったわ。 https://en.wikipedia.org/wiki/List_of_products_using_ARM_processors Cortex-X2 MediaTek Dimensity 9000 Qualcomm Snapdragon 7+ Gen 2, 8(+) Gen 1 Samsung Exynos 2200 Cortex-X3 MediaTek Dimensity 9200, Qualcomm Snapdragon 8 Gen 2 Surface のは Qualcomm ので、残念ながらCortex-X1らしい。 手元のス

    w_o’s diary
  • 1