タグ

gccに関するatsushifxのブックマーク (8)

  • Ryzenにまつわる2つの問題 - 覚書

    NOTE1: 2017/8/12に2つ目の問題について更新しました。ついに両方の問題が解決しました。 NOTE2: 2つ目の問題についてはすべての経緯をまとめた書籍があります。 4月にRyzenを積んだデスクトップマシンを買いました。その上で日課であるカーネルビルド&テストをした*1ことをきっかけに、2つの問題が発生しました。先代のCore i5を積んだマシンでは起きなかった現象です。 このエントリは自分用のメモがてら、新しいことがわかれば随時更新していきます。後者については9月に開催されたkernelvm北陸にて、ブログには書かれていない解析の詳細などについて発表してきました。 Ryzen segv battle from Satoru Takeuchi www.slideshare.net 環境 ハードウェア CPU: Ryzen 1800X Motherboard: ASUS PR

    Ryzenにまつわる2つの問題 - 覚書
    atsushifx
    atsushifx 2017/06/06
    Ryzen/Zenは2017年にでたばかりの最新アーキテクチャ。コンパイラをはじめ、さまざまなソフトウェアがまだ対応していないということ。
  • sprintf を最大10倍以上高速化するプリプロセッサ「qrintf」を作った

    最近H2OというHTTPサーバを書いているのですが、プロファイルを取ってみるとsprintfが結構な時間をっていて不満に感じていました。実際、sprintfは数値や文字列をフォーマットするのに十徳ナイフ的に便利なので、HTTPサーバに限らず良く使われる(そしてCPU時間を消費しがちな)関数です。 では、sprintfを最適化すれば、様々なプログラムが より高速に動作するようになるのではないでしょうか。ということで作ったのが、qrintfです。 qrintfは、Cプリプロセッサのラッパーとしてソースコードに含まれるsprintfの呼出フォーマットを解析し、フォーマットにあわせたコードに書き換えることで、sprintfを高速化します。 たとえば、以下のようなIPv4アドレスを文字列化するコード片を sprintf( buf, "%d.%d.%d.%d", (addr >> 24) & 0xf

    atsushifx
    atsushifx 2014/10/02
    GCCやLLVM/Clangに正式採用されないだろうか?Cのプリプロセッサを拡張というのは、これからの言語開発でのトレンドに影響与えそうな感じだし
  • Linus Torvalds、 GCC 4.9.0のコード生成にブチ切れる

    Phoronixで知ったが、Linus TorvaldsがGCC 4.9.0のコード生成にブチ切れている。 問題はLinuxカーネルのload_balance()がランダムにパニックを起こすというもので、その原因は、報告者の使っているコンパイラーであるGCC 4.9.0のコード生成がおかしかったという話だ。 Linus様は御自ら生成されたコードを読み給い、平生と変わらぬ調子で物事の道理を示された。 Linux-Kernel Archive: Re: Random panic in load_balance() with 3.16-rc From: Linus Torvalds Date: Thu Jul 24 2014 - 14:47:25 EST On Wed, Jul 23, 2014 at 6:43 PM, Michel DÃnzer <michel@xxxxxxxxxxx> wro

    atsushifx
    atsushifx 2014/07/27
    平常運転のLinus。ここで切れて怒ってBug報告をしてくれるLinusだからLinuxが安定しているともいえる。Geekならコードに責任をもつべきで、それをコンパイラレベルまで見るのがLinusのすごいところ
  • gccは第三者検証を通せる.しかし壁がある.

    JAXAのH2Bロケットに搭載されたTOPPERS/HRPカーネルでの開発環境構築を基にした,高信頼環境におけるgccの能力と,立ちはだかる壁のお話.

    gccは第三者検証を通せる.しかし壁がある.
    atsushifx
    atsushifx 2013/05/07
    いまならLLVMのclangとかだろうな。
  • まあ割とどうでもいいこと(はじめてのgcc -S) - kuenishi's blog

    Cでプログラムを書いているとよく出会う場面(いやCじゃなくてもよく出会う) #define OPTION_A (1) #define OPTION_B (2) #define OPTION_C (3) #define OPTION_D (4) #define OPTION_E (5) int exec_command( int cmd, int args, char** argv ){ switch(cmd){ case OPTION_A: do_a(args, argv); break; case OPTION_B: do_b(args, argv); break; case OPTION_C: do_c(args, argv); break; case OPTION_D: do_d(args, argv); break; case OPTION_E: do_e(args, argv);

    まあ割とどうでもいいこと(はじめてのgcc -S) - kuenishi's blog
    atsushifx
    atsushifx 2010/09/05
    関数テーブルによるコマンドの動的呼び出し。デザインパターンの中のコマンドパターンをCで実装したという感じ?
  • LLVM 2.6が23日に正式リリース - マルチスレッド環境により最適化 | パソコン | マイコミジャーナル

    LLVM Projectは21日(米国時間)、最新バージョン「LLVM 2.6」のプレリリース2版のテストを完了し、23日より正式リリースを提供すると発表した。LLVM (Low Level Virtual Machine)はGCC (GNU Compiler Collection)などのコンパイラツールセットの一部として機能するものだが、最近では特にMac OS X 10.6 "Snow Lecopard"に搭載されて話題となった新機能「Grand Central Dispatch (GCD)」をアプリケーション側から呼び出すためのツールセットとして必要になることが知られている。 LLVMは米イリノイ大学アーバナシャンペン校(University of Illinois at Urbana-Champaign)において2000年からスタートしたプロジェクトで、コンパイラの処理をよりダイナ

    atsushifx
    atsushifx 2009/10/23
    各種プログラミング言語の実行環境として使える仮想マシン。Windowsでも使える
  • gcc -Wallでコンパイルして,成功すれば引数つきで実行するfunction - わさっきhb

    コンパイルのコマンドを打ち込んで,成功すれば実行して,論理エラーがあればプログラムを修正して,上矢印2回でコンパイル,上矢印2回で実行,…というのは手間です.たまに,コンパイル時にエラーが出ることもありますし*1. 「コンパイルコマンド && 実行コマンド」を実行するようにすれば*2,上矢印1回で済むのですが,それでも打ち込むのが面倒です. そこで,functionを書きました.Cygwinのzsh 4.3.9のほか,Ubuntu Linux*3 Debianのbash 3.1.17でも動作を確認しました. function Wall() { local src bin bin_com com1 com2 if [ $# = 0 ] then return 1 fi case $1 in *.c) src=$1; bin=${1%.c} ;; *.) bin=${1%.}; src=${b

    gcc -Wallでコンパイルして,成功すれば引数つきで実行するfunction - わさっきhb
    atsushifx
    atsushifx 2009/02/08
    Antやmakeでよいような気もするが、メモ
  • hogetrace - 関数コールトレーサ - memologue

    でかいソフトウェアの、大量のソースコードを短時間で読む必要が生じたので、その補助ツールとしてptrace(2)ベースのLinux用関数トレーサを自作しました。こういうツール上でまずソフトウェアを実行してみて、どのファイルのどの関数がどういう順で呼ばれるか把握おけば、いきなりソースコードの山と格闘を始めるより楽かなーと思いまして。せっかく作ったので公開します。 http://binary.nahi.to/hogetrace/ straceはシステムコールだけ、ltraceは共有ライブラリ(DSO)の関数呼び出しだけ*1をトレースしますが、このツールは、実行バイナリ中の自作関数の呼び出しもトレースします。例えば再帰で1から10まで足し算するソースコードを用意して % cat recursion.c #include <stdio.h> int sum(int n) { return n ==

    hogetrace - 関数コールトレーサ - memologue
    atsushifx
    atsushifx 2008/12/16
    gccの実行ファイルの関数呼び出しをトレースするトレーサー
  • 1