タグ

SIMDに関するhirotomo88445のブックマーク (5)

  • 高性能計算

    Skip to the content. 高性能計算 名古屋工業大学 情報工学科 ネットワーク系分野 3年後期 ネットワーク系演習II 導入 各プロジェクトは,Makefile(g++)でコンパイルできるようになっています. おそらく,clangでも動きます(検証していない.Macの人はclangになっている人が多いです.) また,Windowsでは,Windows Subsystem for Linux (WSL)をインストールすれば,g++などのLinux環境が使えます. さらに,Windows用にVisual Studio 2019でもコンパイルできるようにしています. 下記のファイルはVisual Studio 2019用のファイルです.必要ない人は無視してください. *.sln *.vcxproj* ただしファイルの文字コードや改行コードには注意すること. Linux用に改行コー

  • SIMD(AVX-512)を使って競プロの問題を解いてみる - runom's diary

    この記事は Competitive Programming (2) Advent Calendar 2018 18日目の記事です。 定数倍高速化の方法としてSIMDを用いたものが存在します。SIMDを用いて競プロの問題を解いている例としては以下の記事がありました。 SSEによる高速化ケーススタディ - Qiita SIMDの命令セットにも色々種類があるようですが、今回はその中でもAVX-512を用いて競プロの問題を解いてみます。 AVX-512やそもそものSIMDについては以下の記事が参考になると思います。 SIMDプログラミング入門(AVX-512から始める編) - Qiita ※注意 ・現時点でAVX-512を使えるコンテストサイトはないと思います(たぶん)。なので今回は手元の環境で実行してます。 ・対象とした問題のテストケースが公開されていなかったので、自分で最大ケースを作って試して

  • 8.2 SIMD並列化

  • 現代のプロセッサと並列実行 (2/3)- @IT

    スーパースカラーでは、実行ユニットの並列化にあわせて命令デコーダも並列化する必要がありました。実行を高速化したいだけなのに、命令デコーダも並列化する必要があるのは少し無駄なように思われます。なんとかならないのでしょうか。 デコーダを並列化しなければならない理由は、複数の処理を実行するには複数の命令が必要だからです。それならば、一命令で複数の処理をしてしまえば命令デコーダを並列化する必要がなくなるのではないか、という気がします。 この一命令で複数の処理をしてしまうというのを実現したハードウェアがSIMD(Single Instruction Multiple Data)です。SIMDは実行ユニットだけを並列化したものです。このブロック図を図3に示します。 SIMDを実装したハードウェアでは、SIMD命令と呼ばれる「1つの命令で複数のデータを処理する命令」が用意されています。例えば、x86のS

  • SIMDプログラミング入門(AVX-512から始める編) - Qiita

    最近、SIMD命令を使ったプログラミングというものに触れる機会があったので、どうやって入門していったかについてまとめます。この分野はどうしても「分かっている人向け」の記事が多くなりがちのようなので、基的な知識についてまとめつつ、発展的な資料へのURL等も極力載せるようにしました。 ※ 記事で取り扱うSIMD命令はAVX-512を対象としますが、その他の命令体系(e.g. x86のAVX/AVX2やARMのNEON等)とも多少は共通点があるかもしれません 前提知識とスコープ C/C++のごく基的な構文を理解している人向けの記述になっています 記事を読む上で、計算機の構造についての基的な理解が必要かもしれません e.g. CPUがあってメモリがあって〜程度でたぶん大丈夫です 開発環境としてLinux上のClang 5.0.1を想定します(とはいえGCC等でも同じような話になるはずです)

    SIMDプログラミング入門(AVX-512から始める編) - Qiita
  • 1