タグ

ブックマーク / qiita.com/kaityo256 (7)

  • JITアセンブラXbyakを使ってみる(その1) - Qiita

    その1:Xbyakの概要←イマココ その2:数値計算屋のハマりどころ その3:AAarch64向けの環境構築 その4:Xbyakからの関数呼び出し その5:Xbyakにおけるデバッグ はじめに Xbyak(カイビャック)は、光成滋生さんによるJITアセンブラです。Intelによる深層学習ライブラリoneDNNのエンジン部分の実装に使われたり、AArch64版のXbyakであるXbyak_aarch64が富士通のリポジトリとして公開されたりと、ベンダーによる公式採用が増えています。なんかすごそうなので使ってみましょう、という記事です。 Xbyakの準備 Xbyakは、JITアセンブラです。C++ヘッダオンリーなので、インクルードするだけで使えます。git submoduleとして使うのが良いと思います。 まずは適当なリポジトリxbyak_testを作りましょう。

    JITアセンブラXbyakを使ってみる(その1) - Qiita
  • スピン系のグラフ表現とImproved Estimator - Qiita

    はじめに スピン系をモンテカルロシミュレーションする時、Swendsen-Wang法やWolff法など、Fortuin-Kasteleyn表現を用いたクラスターアップデートアルゴリズムを使うと非常に効率良くサンプリングができます。さらに、Fortuin-Kasteleyn表現が得られている時、普通にサンプリングするよりも分散が小さくなるImproved Estimatorを構成できます。 稿では、Ising模型の磁化やビンダー比のImproved Estimatorの導出と、どのくらい分散が小さくなるのかの説明をします。 コードは https://github.com/kaityo256/mc/tree/master/improved_estimator に置いておきます。 Improved Estimatorとは サイコロとコインの例 Improved Estimatorを一言で言うと

    スピン系のグラフ表現とImproved Estimator - Qiita
  • printfに4285個アスタリスクをつけるとclang++が死ぬ - Qiita

    def check(n) s = "*"*n f = open("test.cpp","w") f.puts <<EOS #include <cstdio> int main(){ (#{s}printf)("Hello World\\n"); } EOS f.close() return system("clang++ test.cpp") end check(ARGV[0].to_i) $ ruby check.rb 10000 clang: error: unable to execute command: Illegal instruction: 4 clang: error: clang frontend command failed due to signal (use -v to see invocation) Apple LLVM version 10.0.1 (clang

    printfに4285個アスタリスクをつけるとclang++が死ぬ - Qiita
    xef
    xef 2019/08/25
  • 格子計算プログラム生成言語Formuraを使ってみる その1 - Qiita

    はじめに プログラマは計算機に対して、「別に凝ったをやれとは言わないが、自明なことはやってくれよ」と思うものだ。例えば規則格子における差分法、特に陽解法は、式と差分方式さえ決まれば、(最適化とか考えなければ)後は自明なコーディングになる。さらに、領域分割による分散メモリ並列を考えた時、(効率とか考えなければ)やはり自明なだけで面倒なコーディングをする必要がある。 こういう「自明かつ面倒なコーディング」をやらなければいけなくなった時、「自動化したい」と思うのは自然な発想だ。Formuraは、まさにそのような思想で作られた、格子計算プログラム生成言語(というかフレームワーク)である。 稿では、このFormuraを使ってみる。 その1 インストールとコンパイルまで ←イマココ その2 一次元熱伝導方程式 その3 二次元熱伝導方程式 その4 反応拡散方程式(Gray-Scott系) インストール

    格子計算プログラム生成言語Formuraを使ってみる その1 - Qiita
  • 任意の確率で独立にビットが立っているビット列を高速に生成する方法 - Qiita

    はじめに 「それぞれのビットが、確率$p$で1となっているようなランダムなビット列」が欲しくなる時ってありませんか?例えばスピン系とかのマルチスピンコーディングとかする時に必要だったりします。マルチスピンコーディングというのは、スピンの自由度をビットとしてパックして、同時に複数のスピンの状態を更新する手法で、ビット演算の並列性を使って計算を加速します。 さて、「指定の確率でビットが立っているランダムなビット列」はどうやって作ればよいでしょうか。もっともナイーブには、ビットの数だけ乱数を使えばそんなビット列を作ることができます。32ビットならこんな感じでしょうか。 uint32_t rbs(double p, std::mt19937 &mt){ std::uniform_real_distribution<> ud(0.0,1.0); uint32_t v; for(int i=0;i<3

    任意の確率で独立にビットが立っているビット列を高速に生成する方法 - Qiita
  • mallocの動作を追いかける(mmap編) - Qiita

    はじめに malloc動画見てますか?>挨拶 こんな記事に興味持つような人はみんなmalloc動画見てる人たちばかりだと思いますが、僕はmalloc動画見るまでは「え?メモリの管理ってOS側じゃなくてユーザランドでやってたの?」って感じでした。ここでは僕みたいなmalloc初心者のために、mallocの動作を実際に追いかけて見ようと思います。 mallocの動作を追いかける(mmap編) ← イマココ mallocの動作を追いかける(prev_size編) mallocの動作を追いかける(main_arenaとsbrk編) mallocの動作を追いかける(fastbins編) mallocの動作を追いかける(マルチスレッド編) mallocの動作を追いかける(環境変数編) mallocについて mallocについては、それこそmalloc動画とか、このへんを見ていただければと思うけれど、要

    mallocの動作を追いかける(mmap編) - Qiita
  • うんざりするほど正解パスが長い迷路の作り方 - Qiita

    概要 迷路を自動作成すると、正解パスがあまり複雑にならないことが多い。そこで、迷路の全領域にわたって無駄に歩かされる迷路を作りたい。 最終的にはこんな迷路を作る。 正解パスの作成 とりあえず、最初に正解パスを作る。正解パスが与えられたら、それが正解パスとなるような迷路はクラスタリングアルゴリズムを使えば良い。 で、まずこんな正解パスを与え、始点と終点を固定したまま、これを変形していくことにする。 変形の仕方は以下の二種類。 まずは90度に曲がっている箇所をひっくり返すフリップ。 2つ目は、辺をひっぱって伸ばすストレッチ。 上の例では元が一直線になっているが、曲がっていても可能であれば伸ばすようにしている。 上記の操作をランダムに繰り返せばいずれ正解パスが迷路をうめつくすだろう、そう思ってやってみると・・・ こんな感じに、最初に与えたパスが太っていく感じになる。確かに最終的には迷路をうめつく

    うんざりするほど正解パスが長い迷路の作り方 - Qiita
    xef
    xef 2015/07/20
  • 1