■記事リスト / ▼下のスレッド / ▲上のスレッド
■8 / 親記事) |
SIMD 版 JPEG library 使用ソフト調査(01/29)
|
□投稿者/ みやさか -(2006/01/29(Sun) 23:47:48)
| ほとんどといっていいほど反響がないので(^^;、Google の検索で、使ってくださっている方がいないか調べてみました。今のところ、以下の2件。
綾川版 Firefox - http://marilab.hp.infoseek.co.jp/buildfx/index.html
Web ブラウザ Firefox の独自ビルド版を公開している綾川さんのサイト。2006/01/28 以降にビルドされた Firefox に SIMD版 JPEG library が使われているようです。
私は Firefox は自分の html の表示確認ぐらいにしか使っていないし、画像の多いサイトにも滅多に行かないので、私的にはあまり使う意味がないのですが、JPEG の表示速度では以前の2倍程度の改善があったとのことです。
Hamana - http://miyano.s53.xrea.com/
DirectX を利用するグラフィック・ビューア。スライドショーの際に、様々なエフェクトを見せてくれます。こういうエフェクトを使うグラフィック・ビューアやスクリーンセーバーは以前からありましたが、これは DirectX を使っているので3次元のエフェクトを見せてくれるところが目新しくておもしろいと思います。
以前は SIMD Enhanced JPEG Plug-in の使用を推奨されていたのですが、V1.47 より SIMD版 JPEG library を組み込んでくださいました。
|
|
▽[全レス18件(ResNo.1-18 表示)]
■9 / ResNo.1) |
Re[1]: SIMD 版 JPEG library 使用ソフト調査(01/29)
|
□投稿者/ 齊藤 -(2006/01/30(Mon) 06:45:52)
| はじめまして。齊藤と申します。
SIMDライブラリを私のソフトで使わせていただこうと思い作業しています。
私の使用マシンは超低電圧版Pentium-M 1.2GHzですが、
体感的に随分早くなった感触です。
計測のプログラムも作ったので今度測ってみようと思います。
よいライブラリをありがとうございます。
ちなみに私はBorland C++ Builder5で作業しているのですが、
この開発環境はアライメントのデフォルトが
コンパイラ、IDE、ドキュメントで混乱しているため随分手間取りました。
(そのためこんな時間に書き込んでいます。月曜なのにやばい。。)。
書いてみますと、下記のようになっています。
| アライメント | enumの型
----------------+--------------+-------------
bcc32のdefault | 8バイト | int
----------------+--------------|-------------
IDEのdefault | 8バイト | 可能な最小型
----------------+--------------+-------------
help記載default | 4バイト | int
----------------+--------------+-------------
こんな困った状態なので、
ご提供いただいているライブラリ側でjpeglib.h内の
アライメントとenumの型を固めて頂けると
C++Builderユーザは時間を節約でき助かります。
よろしければご検討お願いいたします。
私が作ってるソフトです↓なかなか完成しません。
http://s-rl.net/mikatoigraph/giogaldinho/sample.html
|
|
■10 / ResNo.2) |
C++Builder の変数解釈の問題
|
□投稿者/ みやさか -(2006/01/30(Mon) 12:12:55)
| ■No9に返信(齊藤さんの記事) > こんな困った状態なので、ご提供いただいているライブラリ側でjpeglib.h内の > アライメントとenumの型を固めて頂けるとC++Builderユーザは時間を節約でき助かります。 > よろしければご検討お願いいたします。
要するに、
#ifdef __BORLANDC__ #pragma option push -b -a8 #endif
というような記述を jpeglib.h に(気を利かせて最初から)書いておいて欲しいということですよね。でも、そういう、本来ならコードの使用者が(コンパイラのコマンドラインオプションなどで)自由に決められるはずの変数の解釈を、一人の考え方や都合で勝手に「決めうち」してしまうと、場合によっては「小さな親切 大きなお世話」にもなりかねないとも思うのです。
それにこの問題は、この SIMD 版 JPEG library だけじゃなく、オリジナル版の JPEG library の場合や、それ以外のソースコードの場合でも C++Builder を使った場合はまったく同じ問題が起こってきますよね。この SIMD 版 IJG JPEG library は、オリジナル版 IJG JPEG library との互換を可能な限り確保するというのが最優先課題であるということもありまして、とりあえずは保留とさせていただきたいです。そういう要望があったということは覚えておきますので、同様の要望が多ければまた考えます。
|
|
■11 / ResNo.3) |
Borland 系コンパイラの変数解釈の変更法
|
□投稿者/ みやさか -(2006/01/30(Mon) 12:50:06)
| ついでなので、他の方のために、Borland 系コンパイラの変数解釈の変更法を掲載しておきます。以下の情報は、フリーの Borland C++ Compiler 5.5 を元にしています。
* bcc32 のコマンドラインオプションで指定する方法
-a データアラインメントを -a4 (4 バイト)に指定する。 -a- データアラインメントを -a1 (1 バイト)に指定する。 -an n の値に応じて,データを 1 = バイト,2 = ワード(2 バイト), 4 = ダブルワード(4 バイト),8 = クワッドワード(8 バイト), 16 = パラグラフ(16 バイト)にそれぞれ配置する(デフォルトは -a4)
-b 列挙型を int とする(デフォルトは -b で,列挙型を int サイズにする) -b- 可能ならば列挙型をバイトサイズにする
*ソースコード中で #pragma で指定する方法
#pragma option push -b -a8 〜 #pragma option pop
というように、#pragma option push に続いて、上に挙げた bcc32 のコマンドラインオプションを書きます。#pragma option push から #pragma option pop の間のコードだけ、指定したオプションが適用されます。
|
|
■12 / ResNo.4) |
Re[3]: C++Builder の変数解釈の問題
|
□投稿者/ 齊藤 -(2006/01/30(Mon) 23:25:52)
| こんばんわ。
アライメントの件納得しました。 みやさかさんの言うとおり、 決め打ちしてしまうと問題になりかねないですね。
そもそも自分がハマったのはjerrにちゃんとエラーハンドラを設定してなくてエラーが取れてなかったためです。 今後はしっかりドキュメントを読んで使うようにします。 AMD64対応期待してます。 では。
|
|
■17 / ResNo.5) |
SIMD 版 JPEG library 使用ソフト(02/13)
|
□投稿者/ みやさか -(2006/02/13(Mon) 14:29:47)
|
■18 / ResNo.6) |
SIMD 版 JPEG library 使用ソフト(02/18)
|
□投稿者/ みやさか -(2006/02/18(Sat) 15:59:58)
| ついに海外の Firefox 独自ビルドにも使われ始めた模様
Firefox and Thunderbird Community Edition - http://www.mahowi.com/mozilla/
IJG JPEG library をここまで SIMD 化した例は、私の知る限り世界的にもほとんど無いので、海外にも広まるのは時間の問題だとは思っていたのですが..。本当は、英文マニュアルと英語版配布ページを揃えてあげるべきなのでしょうけど、私の今の英語力ではそこまで手が回らないのが申し訳ないです。slashdot.jp では最近 No More "Sorry Japanese Only" Documents ( http://slashdot.jp/bsd/article.pl?sid=05/11/14/0529227 ) なんていう話題が挙がって、興味深く読ませていただきましたけど、私が高校生だった20年ほど前には、日本にいながらここまで英語が身近な存在になる時代が来るとは、まったく予想できませんでした(^^;。
IJG JPEG library の SIMD 版にはもう一つ jpeg-mmx というのがあるのですが、この jpeg-mmx の完成度があまりにも低かったというのが、私の x86 SIMD extension の開発動機なのです。
|
|
■20 / ResNo.7) |
mmoy氏のjpeg patch
|
□投稿者/ 綾川 -(2006/04/19(Wed) 09:36:56)
|
■21 / ResNo.8) |
Re[2]: mmoy氏のjpeg patch
|
□投稿者/ みやさか -(2006/04/20(Thu) 22:53:20)
| ■No20に返信(綾川さんの記事) > 以前彼が言っていた「1カ所だけ彼が手を入れていない場所がある」 > が分かるかもしれません^^;
情報ありがとうございます。さっそく見てみました。
同梱されているパッチの中で、私がやっていないものといえば jddctmgr.patch に含まれる SIMD 化改造なんですけど、これはナンセンスに近い最適化だと思うなぁ。ここは、カラー JPEG 画像1枚を展開するたびに3回しか制御が来ない場所なので、64ワード×3回=384バイトのメモリコピーを最適化しても、ほとんど実質的な効果はないと思う。
x86 SIMD extension のコードについては、私個人的には、最適化の効果がある箇所はすべて手をつけたつもりで、ある程度枯れたコードだとは思っているんですけどね。
|
|
■22 / ResNo.9) |
Re[1]: SIMD 版 JPEG library 使用ソフト調査(01/29)
|
□投稿者/ roytam1 -(2006/04/24(Mon) 16:28:32) http://ictlab.tyict.vtc.edu.hk/~040386491/files/firefox/
| ■No8に返信(みやさかさんの記事) > ほとんどといっていいほど反響がないので(^^;、Google の検索で、使ってくださっている方がいないか調べてみました。今のところ、以下の2件。 > > > 綾川版 Firefox - http://marilab.hp.infoseek.co.jp/buildfx/index.html > > Web ブラウザ Firefox の独自ビルド版を公開している綾川さんのサイト。2006/01/28 以降にビルドされた Firefox に SIMD版 JPEG library が使われているようです。 > > 私は Firefox は自分の html の表示確認ぐらいにしか使っていないし、画像の多いサイトにも滅多に行かないので、私的にはあまり使う意味がないのですが、JPEG の表示速度では以前の2倍程度の改善があったとのことです。 > > > Hamana - http://miyano.s53.xrea.com/ > > DirectX を利用するグラフィック・ビューア。スライドショーの際に、様々なエフェクトを見せてくれます。こういうエフェクトを使うグラフィック・ビューアやスクリーンセーバーは以前からありましたが、これは DirectX を使っているので3次元のエフェクトを見せてくれるところが目新しくておもしろいと思います。 > > 以前は SIMD Enhanced JPEG Plug-in の使用を推奨されていたのですが、V1.47 より SIMD版 JPEG library を組み込んでくださいました。 > I got a problem with firefox-patch-x86simd-1.02. If my $LDFLAGS has "-ltcg"(using MSVC 7.1), makecfg won't be compiled. And, if I use Intel C++ Compiler to compile, it won't be compiled too.
|
|
■23 / ResNo.10) |
about the "$LDFLAGS" problem
|
□投稿者/ Miyasaka -(2006/04/24(Mon) 17:51:24)
| > If my $LDFLAGS has "-ltcg"(using MSVC 7.1), makecfg won't be compiled. > And, if I use Intel C++ Compiler to compile, it won't be compiled too.
For now, you might be able to compile it by removing "$(LDFLAGS)" from the mozilla/jpeg/Makefile.in file.
|
|
■24 / ResNo.11) |
Re[3]: about the "$LDFLAGS" problem
|
□投稿者/ roytam1 -(2006/04/24(Mon) 18:06:49) http://ictlab.tyict.vtc.edu.hk/~040386491/files/firefox/
| ■No23に返信(Miyasakaさんの記事) >>If my $LDFLAGS has "-ltcg"(using MSVC 7.1), makecfg won't be compiled. >>And, if I use Intel C++ Compiler to compile, it won't be compiled too. > > For now, you might be able to compile it by removing > "$(LDFLAGS)" from the mozilla/jpeg/Makefile.in file. > Thanks.
And finally I find a better solution: jsimdcfg.inc: makecfg.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h Makefile Makefile.in $(CC) $(COMPILE_CFLAGS) $(_VPATH_SRCS) $(LD) $(LDFLAGS) makecfg.$(OBJ_SUFFIX) ./makecfg > jsimdcfg.inc $(RM) makecfg$(BIN_SUFFIX) makecfg.$(OBJ_SUFFIX)
|
|
■25 / ResNo.12) |
Re[4]: about the "$LDFLAGS" problem
|
□投稿者/ Miyasaka -(2006/04/24(Mon) 21:37:15)
| > And finally I find a better solution:
Thank you very much. I'll fix my firefox-patch on the web, too.
|
|
■31 / ResNo.13) |
SIMD 版 JPEG library 使用ソフト調査(08/13)
|
□投稿者/ みやさか -(2006/08/13(Sun) 22:51:57)
|
■35 / ResNo.14) |
ライブラリ使用報告
|
□投稿者/ ルーチェ -(2007/02/27(Tue) 22:37:21) http://www.ruche-home.net/
| みやさかさん、はじめまして。 ルーチェと名乗っている者です。
自身のサイトのBBSにて本サイトのSIMD版JPEGライブラリのことを教えられ、IJGオリジナルのものをそのまま置き換えられるということで、早速自作の画像処理DLLに組み込んでみました。 http://www.ruche-home.net/download/?pack=imgctl 自作ツールのDLLを既存のものと置き換えてJPEG変換を試してみたところ、具体的な計測をしたわけではありませんが、体感できるほどの速度向上を確認しました。
当DLLでは、libpngを用いたPNGの読み込み処理においてもみやさかさん作のifpng.spiのソースコードを参考にした経緯があります。 ifpng.spiのソースコードがなければ、当時の自分にlibpngを理解することは到底無理だったでしょう。
数々の有用なソースコード、ライブラリの提供には大変感謝しております。 ありがとうございました。
|
|
■36 / ResNo.15) |
Re[2]: ライブラリ使用報告
|
□投稿者/ みやさか -(2007/03/06(Tue) 07:33:20)
| こんにちは。みやさかです。返信遅れてすみません。 SIMD版JPEGライブラリを試してくださいましてありがとうございます。
imgctl.dll って、確か、秀丸エディタの拡張機能である Hidemarnet Explorer の 添付コンポーネントにも採用されていますよね。imgctl.txt に私への謝辞が 書いてあるのを見て嬉しかったのを覚えています。ありがとうございます。
|
|
■41 / ResNo.16) |
Delphiでの使用
|
□投稿者/ ゐ -(2007/05/08(Tue) 22:24:01)
|
■42 / ResNo.17) |
Re[2]: Delphiでの使用
|
□投稿者/ みやさか -(2007/05/08(Tue) 23:09:32)
| ■No41に返信(ゐさんの記事) > ちょっと無理矢理ですが、Delphiで使わせて頂いています。 > http://janekako.hp.infoseek.co.jp/cgi-bin/up2/src/jane_s0318.zip > jpeg_simd_mask等で確認した範囲では、ちゃんとSSEでも動作しているようです。
報告、ありがとうございます。Delphiは全く使ったことがないので、 私の方からは、何のアドバイスもできなくてすみませんです。
jidctred.asm などの非SIMDバージョンのコードは、'99年頃、MMXの使えない Plain Pentium を使っていた頃に実験的に書いたコードを流用しています。 現在では、MMX の使えない CPU を実用しているケースは希でしょうから、 このような「過去の遺物」に近いコードは、無理してまで組み込む意味は 少ないと思いますよ(^^;。
最近では、あちこちで実用してくださっている人がいるようで、嬉しい 限りです。64bit対応版も、一年以上開発が止まってますが、何とか 完成させねばなりませんなぁ。
|
|
■43 / ResNo.18) |
SIMD 版 JPEG library 調査(07/06/01)
|
□投稿者/ みやさか -(2007/06/02(Sat) 00:20:29)
|
■記事リスト / ●親記事
|