都立工業高等専門学校(現、東京都立産業技術高等専門学校)を卒業、 機械工学が専攻だった癖に論理回路やオーディオ関係の技術者らしい。 趣味として、音楽関係のフリーソフト開発や、DTM・チップチューン活動をしたり、 オーケストラや吹奏楽団でオーボエを吹いてる人。 概要(Summary) 本ソフトについて 単一ファイルに対して、暗号・復号を行うソフトウェアです。 本ソフトウェアは、暗号化ファイルの構造や、各種のアルゴリズムについて、 国際的な標準類(ITU, Fips, PKCS, JIS, RFC等)に準拠しており、 これらに準拠している他のソフトウェアと互換性があります。 暗号化ファイルは、暗号メッセージ構文(CMS:RFC.5652)に準拠しており、以下の特徴があります。 疑似乱数を用いる事により、同じパスワードでも毎回異なった暗号文が生成されます。 その為、例えば定時報告等、一定時間で同
この OS のシステム要件が求めるプロセッサーが、SIMD 命令を使用する最適化オプションに影響します。例えば Windows Vista Home Basic までをサポートすると想定した場合、800MHz 以上のプロセッサーが求められていますから、対象となるプロセッサーは一部の Pentium III(450MHz – 1.4Gseisei Hz)と Pentium 4(1.3GHz – 3.8GHz)以上となります。まあ、少しぐらい動作クロックが違っても問題はないのですが。 この2つのプロセッサーには、サポートする SIMD 命令セットに違いがあり(Pentium III – SSE、 Pentium 4 – SSE2)、コンパイラーは対象とするプロセッサーが実行できる命令セットを使用したバイナリーを生成しなければいけません。この場合、SSE2 を利用したバイナリーを生成すると、Pe
リンク ・画像の変換(目次ページ) 『拡大・縮小』関連 ・画像の縮小 ・画像の拡大「Nearest Neighbor法」 ・画像の拡大「Bilinear法」 ・画像の拡大「Bicubic法」 ・画像の拡大「Lanczos法」 ・画像の拡大-距離計算に関する考察 ・超解像 【バイキュービック法 (Bicubic 法)】 バイリニア法は隣接する4点から線形的に中間値を求めているだけなので、 エッジが立っている場所でのガタガタ感が否めません。 バイキュービック法は もう少し滑らかに中間値を求めてやればいいんじゃね? という発想からきているのだと思います。 そのためには隣接する点だけではなく、その先の点をも考慮する必要があります。 つまり、d6, d7 の値を決めるために バイリニア法 では s2, s3 の値を参照しました。 それよりも滑らかにしようと思うと、 s2, s3 に加え、s1, s4
・MMXで半透明(2) : アセンブラ 編 (99/5/18) 前回 C でα合成を試したら平均 8 回/秒 しか計算出来ませんでした。 ならばアセンブラで高速化しよう、という訳で今回は アセンブラを使ってα合成をしてみます。 さてアセンブラで合成の部分を素直に書けば下の様なソースになります。前回の ソースの VOID AlphaBlending() 関数を置き換えて下さい。WinMain() やプロシージャ等の関数は同じ物を使います(したがって今回は それらのソースは載せません)。 やっていること自体は C 版と全く同じなのですがメモリへのアクセスが かなり減りますので C よりは速くなることが予想できます (もっとも最近はキャッシュがあるのであまり変わらないような気もしますが)。 // α合成 アセンブラ版 // // コピー先 = コピー元1 * α + コピー元1 * (1-α)
『8 / 16 / 32bitの整数をまとめて処理できる』というのは発表当時の雑誌に散々解説されていたのでみなさんご存知だと思います. #割にはあんまり流行ってないですけど 命令の説明のためにここだけの記号法ですが, 次のルールを使います. 8 / 16 / 32bit整数をB, W, Dで表します. それらを複数並べた場合は左のほうが上位bitとします. (例) [D1:D0]は上位D1下位D0の32bit整数が2つペアになったもの. m??は??bitメモリ, r32は32bit汎用レジスタを表します. 殆どのMMX命令は第1オペランド (dest) にはMMXレジスタのみ指定でき, 第2オペランド (src) にはMMXレジスタ / メモリを指定できます. シフト命令のみ第2オペランドに即値を使えます.
8.1 はじめに 第8章では、いよいよMMX命令の使って画像処理を高速化する方法について説明したいと思います。 7.6節で述べたように、7.4節で説明したフェードアウトのプログラムと、7.5節で説明したフェードインのプログラムを高速化してみました。 いきなりプログラムの説明をすると大変なので、まずはMMXテクノロジとはどんな技術なのかという事から説明していきます。 既にMMXテクノロジについて理解している方は、8.2~8.5節は読み飛ばして構いません。 8.2 MMXテクノロジとは MMXテクノロジは、画像や音声などのマルチメディア関係の処理を高速化するために生まれた技術です。 加算や減算などの演算を一つずつ行うのではなく、一度に複数の値同士を加算したり減算したりする事で、高速に処理をする事ができます。 この考え方は、Pentium3から搭載されたSSE命令(ストリーミングSIMD拡張命令
SIMD命令およびアセンブラの基礎 SIMDとは 用語集 開発環境 アセンブラの基礎知識 x87 FPU命令を使用したプログラミング CPUの識別 メモリアドレスのアライメント ラップアラウンド算術と飽和算術 SIMD命令セットの分類と歴史 SIMD命令セットの記述方法 SIMD命令セットの概要 MMX命令セットの概要 SSE命令セットの概要 SSE2命令セットの概要 SSE3命令セットの概要 SSE4命令セットの概要 命令リファレンス データ転送命令 算術命令 比較命令 論理演算命令 シフト命令 シャッフル命令 パックおよびアンパック命令 変換命令 挿入および抽出命令 ブレンド命令 丸め命令 キャッシュ制御命令 その他の命令 プログラミング例 画像処理 音声信号処理 参考資料 参考資料 トップSIMDの扉
SIMD命令を使用したプログラミングをする方法は、次のいずれかになります。 コンパイラのオプションを変更しSIMD命令セットを有効にし、記述はコンパイラに任せる イントリンシック命令を使用する インラインアセンブラを用いる 外部アセンブラでアセンブルしたオブジェクトファイルをリンクする 場合によりますが、下の項目ほどプログラミングが難しくなり、効果は高くなります。 コンパイラのオプションを変更しSIMD命令セットを有効にし、記述はコンパイラに任せる Visual C++の場合、プロジェクトのプロパティから[構成プロパティ]-[C/C++]-[コード生成]をツリーで選択し、[拡張命令セットを有効にする]オプションを変更することによってコンパイラが自動的にSSE命令セットを使用してコンパイルしてくれます。その際、あわせて[浮動小数点モデル]オプションを単精度浮動小数点をメインで使用するなら[
2009/09/13 コードを少し変更 VC++のインラインアセンブラからCPUID命令を使用してSSEに対応しているか調べるコードを書きました。CPUID命令EAXレジスタに値を入れてCPUID命令を呼び出すと、各レジスタにCPUの情報が格納されます。 EAX=0 ベンダIDの取得EAX=1 プロセッサ情報とプロセッサの機能EAX=2 キャッシュとTLBディスクリプタ情報EAX=3 プロッセッサ・シリアル・ナンバEAX=80000000h サポートする最大拡張機能番号の取得EAX=80000001h 拡張プロセッサ情報とプロセッサの機能EAX=80000002h,80000003h,80000004h プロセッサブランド文字列EAX=80000006h 拡張L2キャッシュ情報EAX=80000008h 仮想アドレスと物理アドレスのサイズ 今回はSSEに対応しているか調べたいのでEAXには
ちょっと試したので、結果をコピペ。 概要とたてまえ SSEは、x86のSIMD命令セットに含まれる浮動小数点演算の複数同時実行を行う命令セットです。単精度(float)で4つ、倍精度(double)で2つの演算を1命令で実行できるため、うまく使うと繰り返し同じ演算のパフォーマンスアップを期待できます。 Streaming SIMD Extensions - Wikipedia 画像処理や、確率の計算などでは浮動小数点数の計算を数百万回から回数とかいうレベルではなく3日間くらいの規模で行うことがあるので、 少しでも速くなると時間的にとてもうれしい! 計算をどこで妥協するかみたいな部分があるため速く計算を終わらせることでやれることの可能性が広がる! という思いがあります。 CUDAのほうが云々 CUDAは、NVIDIAのGPUが対応しているGPGPUの環境です。GPGPUというのは、グラフィッ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く