タグ

compilerに関するWatsonのブックマーク (58)

  • Intelが特定ベンチマークのスコアを最大9%水増しする不正をしていたとして2600件以上のベンチマーク結果が事実上無効に

    性能テストの標準化団体の1つで、公平なベンチマークを行うために設立された非営利組織・SPECが、「Intelが自社プロセッサのベンチマーク結果を水増しするために特定のベンチマークのスコアを向上させるような最適化を行い、スコアを最大で9%水増ししていた」として、Intelプロセッサのベンチマーク結果2600件以上を事実上無効化しました。 Targeted Intel oneAPI DPC++ Compiler Optimization Rules Out 2k+ SPEC CPU Submissions - Phoronix https://www.phoronix.com/news/oneAPI-DPC-Compiler-Cheat-SPEC Impact of Intel Compiler Optimizations on SPEC CPU2017 Example https://www

    Intelが特定ベンチマークのスコアを最大9%水増しする不正をしていたとして2600件以上のベンチマーク結果が事実上無効に
  • 数理・計算科学特論B プログラミング言語処理系の最先端実装技術 第6講 inliningとdevirtualization

    20230105_TITECH_lecture_ishizaki_public.pdfKazuaki Ishizaki383 views•57 slides

    数理・計算科学特論B プログラミング言語処理系の最先端実装技術 第6講 inliningとdevirtualization
  • sold: A linker for shared objects

    sold: A linker for shared objects Akira Kawata bio: https://akawashiro.github.io/ twitter: @a_kawashiro 2021/11/20 Kernel/VM探検隊online part4 https://github.com/akawashiro/sold 最新のneovimを自分でビルドして使いたい! • 新しくビルド環境と整えるのは面倒 ◦ 特にrootがない場合 • 一度ビルドしたものを他のマシンにコピーして使いまわしたい • 共有ライブラリ(shared object, *.soのこと)への依存がありできない ◦ soも一緒にコピーするのは社内的な事情で不可 [new machine] > scp build-server:~/nvim . [new machine] > ./nvim ./

    sold: A linker for shared objects
  • Google製GNU gold以上の速さを実現 超高速リンカ「mold」を支えるテクニック

    Kernel/VM探検隊はカーネルや仮想マシンなどを代表とした、低レイヤーな話題でワイワイ盛り上がるマニアックな勉強会です。rui314氏は、制作中のリンカである「mold」について発表しました。全2回。後半は「mold」速さと、その高速化を実現するテクニックについて話しました。前半はこちら。 リンカが速いと何がうれしいのか 植山類氏(以下、植山):リンカが速くなって何がうれしいのか。普通にうれしいです。プログラムを書いているとうれしいことがわかると思いますが、makeを実行すると、普通は自分が直前に変更したファイルしかビルドしないので、デバッグをしていると1つのファイルを編集してビルドすることになります。 コンパイラは1つだけのファイルをコンパイルするのはそこそこ速いですが、リンカは基的には実行ファイルを丸ごと作ります。全体の入力を一気に受け取って出力するため、差分コンパイルであっても

    Google製GNU gold以上の速さを実現 超高速リンカ「mold」を支えるテクニック
  • コンパイラが作ったバイナリをつなぎ合わせるプログラム 「lld」の作者が語る、リンカの仕組み

    Kernel/VM探検隊はカーネルや仮想マシンなどを代表とした、低レイヤーな話題でワイワイ盛り上がるマニアックな勉強会です。植山氏は、制作中のリンカである「mold」について発表しました。全2回。前半は、リンカの概要について話しました。 LLVMのリンカ「lld」オリジナルの作者 植山類氏:植山類です。今僕が作っているmoldというリンカについて発表します。 今回の発表の概要です。リンカが何かを知っている人はそんなにたくさんいないと思うので、まず説明します。次に、「mold」のポイントは速いことなのですが、速いと何がうれしいのかを説明します。そのあと、どれくらい速いのかを説明した上で、どう実現されているのか、概要を紹介します。詳細になると何時間あっても終わらないので、かなりハイレベルな話をします。 自己紹介のスライドを入れていませんが、僕はリンカを何度か作ったことがあって、LLVMのlld

    コンパイラが作ったバイナリをつなぎ合わせるプログラム 「lld」の作者が語る、リンカの仕組み
  • コンパイル技法: パターンマッチ

    書では関数型言語をはじめとして多くの言語にあるパターンマッチをコンパイルする方法を紹介します。パターンマッチはシンプルに条件分岐の連鎖にコンパイルすることもできますが、よく研究された手法を使えば驚くほど効率的なコードを生成できるようになります。そのような手法を2種類紹介します。 パターンマッチはデータ型に照合しそのデータを取り出すものです。例えばRustであれば match opt { Some(x) => f(x), None => g()} のように Option 型への照合などに使えます。書の前半ではパターンマッチの挙動や使い方などを学びます。挙動の確認にはプログラミング言語Standard MLを使い、一部Cのコードも使います。その後Common LispやJavaなどの他の言語でのパターンマッチの状況を確認します。後半ではパターンマッチのコンパイル技法について紹介します。パタ

    コンパイル技法: パターンマッチ
  • mold: modern linker

    mold: modern linker Rui Ueyama

    mold: modern linker
  • Cコンパイラ作成のオンラインコースを始めます

    Cコンパイラ作成のオンラインコースを始めます Rui Ueyama 2020-04-15 Cコンパイラを作成するオンラインのコースを試験的に始めてみようと思います。僕の書いているオンラインブック「低レイヤを知りたい人のためのCコンパイラ作成入門」を教材として使います。対象者は、このの内容に(少なくとも大まかには)従ってコンパイラを作ってみたいと考えている人です。なお、このコースは個人が適当に思いつきでやっているものでそんなにフォーマルなものではありません。 進め方 週1回のペースで動画配信あるいはビデオ会議などの形で参加者からの質問に答える機会を作ろうと思います。オンラインブックそのものを授業形式で説明するということは行いません。参加者が事前にオンラインブックを読んできて、それに対しての質問などを受け付ける形にしようと思います(いわゆる反転授業スタイル)。また、参加者のコードを軽くコード

  • セルフホスト可能なCコンパイラを書く

    最近、コンパイラを書くことが流行っているようだ。流行に乗ってやってみたらいろいろな知見が得られたので紹介したい。 コンパイラを書くと一口に言ってもいろいろなスコープがある。ここではC言語を用いてCコンパイラを書くことを選択した。C言語は言語仕様的にコンパクトで広く知られている。また、ツールとしてのCコンパイラも普及している。その場合、自分が書いたCコンパイラで、自分が書いたCコンパイラのソースコードをコンパイルすることが原理的には可能だ。これをセルフホストという。ひとつの到達目標として非常に興味深い。 当初は冬の間に終わらせる予定だったのだが春まで伸びてしまった。しかし、春になっても寒かったり雨で家に居る日が多く、アウトドアシーズンまでに目標のセルフホストを達成することができた。 昔、Cのインタプリタを書いたことがあったが、コンパイラを書くのは、はじめてである。時代も進んで開発手法が変わっ

  • `zig cc`: a Powerful Drop-In Replacement for GCC/Clang - Andrew Kelley

    `zig cc`: a Powerful Drop-In Replacement for GCC/Clang If you have heard of Zig before, you may know it as a promising new programming language which is ambitiously trying to overthrow C as the de-facto systems language. But did you know that it also can straight up compile C code? This has been possible for a while, and you can see some examples of this on the home page. What's new is that the zi

  • 「コードの実行速度」が分かるMLツールを開発、MIT研究チーム

    マサチューセッツ工科大学の研究チームは、プロセッサ上でのアプリケーションコードの実行速度を予測する機械学習(ML)ツールを開発した。Intelのツールよりも誤差が少なく、Googleの「Tensor Processing Unit」のような新しいプロセッサにも適用できる。 マサチューセッツ工科大学(MIT)の研究チームは、プロセッサがさまざまなアプリケーションのコードを実行する速度を予測する機械学習(ML)ツールを開発した。Intelが自社開発したツールよりも約2倍高精度だと主張する。 従来の手法は正確性に問題あり なぜこのようなツールが必要なのだろうか。コードをできるだけ高速に動作させるため、パフォーマンスエンジニアやコンパイラ開発者は通常、特定のプロセッサアーキテクチャをシミュレートしてコードを実行する「パフォーマンスモデル」を使用する。 するとプロセッサがアセンブリ言語による特定の命

    「コードの実行速度」が分かるMLツールを開発、MIT研究チーム
  • Goコンパイラをゼロから作って147日でセルフホストを達成した - Qiita

    Go言語コンパイラをスクラッチから書いてセルフホストを達成しました。 Goコンパイラの実装はほとんど見ずに、ほぼ 8cc というCコンパイラから学んだ知識のみで作りました。 特徴 コンパイルするとアセンブリを吐きます 字句解析・構文解析は手書きです。yacc/lex などのツールは使っていません 標準ライブラリも自作です コード行数はテストをのぞくと 9,152行でした。 セルフホストに必要な機能しかないので、Go言語の全機能は網羅していません。 例えば以下の機能は未実装です。 ガベージコレクション go routineとchannel 浮動小数点 設計 70%くらいは 8cc の設計をそのまま引き継いでいます。 残り25%(map,slice,interface,method,型推論等)が自分のオリジナル、残り5%が9cc、くらいな感じです。 かかった期間 2018/10/7に着手し

    Goコンパイラをゼロから作って147日でセルフホストを達成した - Qiita
  • セルフホスティングCコンパイラを書いた - 茅の下

    セルフホスト(自分自身をビルド)できるCコンパイラnoccを書きました。 github.com はじめに 去年の夏あたりからCコンパイラを書くのが流行っていたのでやってみました。 例によって@rui314さんの8cc、9ccと低レイヤを知りたい人のためのCコンパイラ作成入門を参考にしていますが、バックエンドにはLLVMを使用しています。 工夫した点 以下、作る上で工夫した点です。 言語仕様に制限をつける C言語の全仕様を網羅しようとすると到底完成は不可能なのでサポートする言語仕様に制限をつけまくりました。 制限には例えば以下のようなものがあります。 変数宣言が初期値を取れない。 複数の変数をコンマ区切りで宣言できない。 typedef宣言や型のconst修飾などはその語順を固定している。 型解析時は型のconst修飾を無視する。 関数のプロトタイプ宣言はトップレベルでのみ行える。 関数ポイ

    セルフホスティングCコンパイラを書いた - 茅の下
  • Cコンパイラ8ccの1コミット目を読んでみよう - Qiita

    8cc とは? rui314 さんが作られたCコンパイラです。 次のような特徴があります。 C言語で書かれている スクラッチから作られた。字句解析・構文解析も手書き。 インクリメンタルな開発 詳しくはご人の記事と rebuildfm第153回をご参照ください。 Cコンパイラをスクラッチから開発してみた(日記) Rebuild: 153: Connecting The Dots (rui314)

    Cコンパイラ8ccの1コミット目を読んでみよう - Qiita
  • コンパイラ作りの魅力を語る / Making compilers is fun

    PHPerKaigi 2019で、C/Goコンパイラを作る過程で学んだことについて話しました。

    コンパイラ作りの魅力を語る / Making compilers is fun
  • 「低レイヤを知りたい人のための Cコンパイラ作成入門」を読んで、オレオレコンパイラを作り始めた - Moiz's journal

    はじめに 表題通りですが、Rui Ueyama氏の「低レイヤを知りたい人のための Cコンパイラ作成入門」というPDFを読んでCコンパイラ的なものを作り始めましたよ、というダラっとした内容です。 はじめに 発端 とりあえず書いてみる 別のコンパイラ入門書をよんでみる 次にどうする? 書くぞ、書くぞ、書くぞ リポジトリー 便利な資料 セキュリティキャンプの参加者のリポジトリー オンラインコンパイラGodbolt セキュリティキャンプ講師のスライド C言語規格のドラフト 書籍 Compilers: Principles, Techniques, and Tools 2nd By Alfred V. Aho Intel® 64 and IA-32 Architectures Software Developer Manuals 発端 ツイッター等で知ったのですが、セキュリティキャンプというイベン

    「低レイヤを知りたい人のための Cコンパイラ作成入門」を読んで、オレオレコンパイラを作り始めた - Moiz's journal
  • 3(0)日でできる! Cコンパイラ自作入門 - Google スライド

    3(0)日でできる! Cコンパイラ自作入門 2018-11-09 hikalium @ コンパイラ勉強会

    3(0)日でできる! Cコンパイラ自作入門 - Google スライド
  • 低レイヤを知りたい人のための Cコンパイラ作成入門

    はじめに このオンラインブックは執筆中です。完成版ではありません。フィードバックフォーム このには一冊のに盛り込むにはやや欲張りな内容を詰め込みました。書では、C言語で書かれたソースコードをアセンブリ言語に変換するプログラム、つまりCコンパイラを作成します。コンパイラそのものもCを使って開発します。当面の目標はセルフホスト、すなわち自作コンパイラでそれ自身のソースコードをコンパイルできるようにすることです。 このでは、コンパイラの説明の難易度が急に上がりすぎないように、様々なトピックを書全体を通じて次第に掘り下げていくという形で説明することにしました。その理由は次のとおりです。 コンパイラは、構文解析、中間パス、コード生成といった複数のステージに概念的に分割することができます。よくある教科書的アプローチでは、それぞれのトピックについて章を立てて解説を行うことになりますが、そのよう

  • seccamp2018でセルフホストCコンパイラをつくった - Speaker Deck

    セキュリティ・キャンプ全国大会2018でセルフホストCコンパイラをつくりました。キャンプが終わった後にアセンブラとリンカと標準ライブラリを作りました。

    seccamp2018でセルフホストCコンパイラをつくった - Speaker Deck
  • Cコンパイラ制作の夏期集中コースが思っていた以上にうまくいった話|Rui Ueyama

    2018年の夏に僕はセキュリティキャンプ(以下「セキュキャン」)というイベントでCコンパイラ作成コースの授業を行いました。授業はとてもうまくいったといってよいと思います。参加者は6人だったのですが、6人全員プログラミング技術がかなり飛躍的に向上したようですし、そのうち3人は期間中にセルフホスト(自分の書いているコンパイラで自分のコンパイラ自身をコンパイルできること)まで漕ぎ着けることができました。 この文章では、その授業をどのように僕が教えたのかということと、生徒にできるだけ多くのことを学んでもらって自信をつけてもらうために僕が何を気をつけていたのかという2つの点について説明します。 セキュキャンとはセキュキャンは5日間の合宿イベントで、学生を対象としてコンピュータセキュリティやプログラミングについて教えるというものです。いくつものコースが用意されているのですが、僕が受け持ったのは「集中コ

    Cコンパイラ制作の夏期集中コースが思っていた以上にうまくいった話|Rui Ueyama