HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0614
pippi自作プラグインのデバッグのお願い20解決


pippi

リンク

2014/6/14(Sat) 04:07:37|NO.62421

こんばんは
去年あたりからHSPでGPGPUプログラミングができるプラグインを作っているのですが、
OpenCLとOpenGLの連携の部分で行き詰っています。

行き詰まっているというか、どのような環境で動くか動かないかを調べたいのです。ソースは以下にURLを貼っておきましたのでそこからDLお願いします。
今回私の環境では core i7 3820 + AMD HD7750で正常動作したのですが
ノートパソコンの core i5 450M + intel HD graphicsでは動きませんでした。

これらとプログラムの原理から推察できるのは
・VRAMを搭載するグラボなら古くても動く
・VRAMを搭載しないグラボ(オンボード)で古いのは動かない
です。

ここでVRAMを搭載しない比較的新しいオンボードだとどうなるのか気になり、
この場を借りて皆さんにデバッグのお願いをしたいと思います。

特にお願いしたいのは
Sandy Bridge (Core i7 / i5 / i3 (2000 シリーズ))
Ivy Bridge (Core i7 / i5 / i3 (3000 シリーズ))
Haswell (Core i7 / i5 (4000 シリーズ))
のCPUの方です。グラボが刺さっていない、オンボードだけで画面出力している環境が望ましいです。

もちろん他の環境の方でもデバッグしていただけるなら歓迎です!
動いた、動かなかったという報告と、CPUの型番、GPUの型番(もしグラボ刺さってたら)、エラー番号などを記入してくれるとさらに助かります。



これは一見HSPに関係のないようなことに思うかもしれませんが、このプラグインを使えば計算や描画もろもろをHSP標準命令より大幅に高速化できる
可能性があると私は思っています。
以下のソースは800万個という大量のパーティクルを高速に加算描画するサンプルです。
当方ではFPS10くらいでしたが、このようにOpenCL + OpenGLをHSPから簡単にいじれれば表現の幅がぐっと広がると思うのです

興味がありましたらデバッグ是非お願いします!!!!


http://kie.nu/1ZfE



この記事に返信する


glew32

リンク

2014/6/14(Sat) 08:48:13|NO.62422

「glew32.dllが見つからなかっため、このアプリケーションを開始できませんでした〜」

「Error No DLL:HSPCL.dll」

ウインドウが開いて

「Error #Error1 in line 1891(hspcl.as)-->システムエラーが発生しました

こんなんーよ



hamyuu

リンク

2014/6/14(Sat) 09:20:40|NO.62423

↑自分もそれが出て起動できませんでしたがglew32.dllを同じフォルダに置いたら直りました。

メインPC
CPU:Core i7 3770T
GPU:GTX750Ti

起動は出来ましたが残念ながら↓のエラーで動作しませんでした。

「すべてのCPU/GPU上で、OpenGLとOpenCLが連携できない環境です。」


サブPC
CPU:Celeron J1900
GPU:第7世代インテルHDグラフィックス(らしい)

よくわかりませんが、動作できない模様です。
出てきたメッセージを順番に書いておきます。

「コマンドキューの生成に成功」


「properties に指定した値が、有効であるもののデバイスがサポートしていないとき。」


「#Error 21 in line 1895 (hspcl.as)
-->サポートされない機能を選択しました」



pippi

リンク

2014/6/14(Sat) 18:32:43|NO.62425

皆様素早いレスポンスありがとうございます。

>>glew32さん
ありがとうございます。glew32.dllがない環境もあることを忘れていました
次はglew32.dllを同梱して配布します。再び実行してみていただけませんか??

>>hamyuuさん
ありがとうございます。最新のグラボ GTX750Ti の上でも動かなかったのはちょっと意表を突かれました。
ですがおかげさまで原因が分かりました。次は動くと思うので
またそちらのメインPC上で実行していただけないでしょうか??



http://kie.nu/1Zl8



kanahiron

リンク

2014/6/14(Sat) 19:10:32|NO.62427

OS windows 8.1 64bit
CPU core i7 3770k
GPU GTX 660 Ti

test0の方はdllを入れてもエラーで動きませんでしたがtest1で正常起動しました
CPUもGPUも「コマンドキュー生成成功 OpenGL連携 有効」と出ます

しかし「デバイス名 (CPU) で実行開始します」となり
hsp3.exeのCPU使用率が80%、フレームレートも見た目ですが3fpsくらいしか出てないように思えます



kanahiron

リンク

2014/6/14(Sat) 19:28:01|NO.62428

連投失礼します
test2.hspの7行目のrepeatの2番目の引数に1を指定したらGTX660Tiの方で起動しました
非常に滑らかに動いてます
が、たまにビリッとなるのはエフェクトですかね…

CPU内蔵グラボもあるので時間があるときに試してみます



line42

リンク

2014/6/14(Sat) 20:01:19|NO.62429

「エラー すべてのCPU/GPU上で、OpenGLとOpenCLが連携できない環境です。OpenGL無効で起動します」

「デバイス名0で実行開始します」

「#Error 1 in line42(test2.hsp) -->システムエラーが発生しました」

この時点での変数
w,b,a,iiii,iii,key,dpp,light_pos,krncalc,prgid,memid すべて0
size 100663296
vertexu Unknown
teisu 8192
p1 1
kk 0
cldevcount 0

PentiumD/オンボード(128MbyteをVRAMに割り当てている)



pippi

リンク

2014/6/14(Sat) 20:03:43|NO.62430

>>kanahironさん
そうです!
reoeat の後の第二引数を1,2...にすれば、指定したグラボで動かせます
ありがとうございます!

今回、最新GPUで動くことはある程度予想できたのですが、GPU内蔵CPUでも動くか試したかったのですが、おそらく最初のCPU稼働率80%くらいのときは内蔵GPUで動いていたのではないかと思います。

それがわかっただけでもとても良かったです。デバッグご協力どうもです

ところでもし、もしよろしければ、一旦グラボを外して内蔵GPUだけで画面出力させた状態でtest1を実行してみて、同じ結果(3fpsくらい)になるか試してもらえたらなお嬉しいです。まぁでも面倒くさいですよね



pippi

リンク

2014/6/14(Sat) 20:10:31|NO.62431

>>line42さん
ご協力ありがとうございます。
多分、かなり前のCPUなのでOpenCL自体が動かせないのかもしれません。
cldevcount が 0ということはOpenCL OpenGL連携以前にOpenCLに対応したCPU/GPUがないということです。

このプラグインはOpenCLを扱う以上どう頑張っても昔のCPUで動かせるようにはできないのが残念ですが、今回デバッグに協力いただいてどうもありがとうございました!!



kanahiron

リンク

2014/6/14(Sat) 20:32:13|NO.62432

intel HD Graphics 4000でやってみました
グラボ外したんじゃなくてディスプレイのコードを差し替えただけです(なのでGTX660Tiも認識されてる)
結果はエラーでしたが、書くのが面倒くさいので(おい)ロダにあげました

http://fast-uploader.com/file/6958300916650/
文字が読めるようにエンコしましたが780KBなのでご安心を



pippi

リンク

2014/6/14(Sat) 20:46:24|NO.62433

>>kanahironさん
おおおお!ありがとうございます
動画拝見しました
intel HD Graphics 4000 上では、ある程度妥協しながらもコマンドキューの生成まではうまく行っているみたいですね。

で、おそらく今回のエラーは内蔵GPU上で無理やりdouble型を使おうとしたからなんだと思います。

http://kie.nu/1Zm5

この差分ファイルを「test1」のフォルダの中にいれて「test2float.hsp」を実行してみてください。
今度こそうまく起動するはず!!!!!



KOMARI

リンク

2014/6/14(Sat) 22:58:55|NO.62434

【環境】
WIN 7 Professional 64bit
i7-4770
GeForce GTX 650
【結果】
test0 : HSPCL.dllがないと怒られる
test1 : すこしカクつくが一応動く
test1+ : ヌルヌルヽ(・ω・)ノきめぇ

これは実用化に期待



pippi

リンク

2014/6/14(Sat) 23:36:41|NO.62435

>>KOMARIさん
ありがとうございます。
test1 と test1+ の違いは座標計算に倍精度を使っているか単精度を使っているかなので
test1のカクカクは倍精度計算のボトルネックが原因でしょう。GTX 650は倍精度が単精度の24分の1なので。
描画の方は全く問題ないようですね。期待しててください



hamyuu

リンク

2014/6/15(Sun) 17:25:38|NO.62441

>またそちらのメインPC上で実行していただけないでしょうか??
test1を試したところ動作しました! が、CPU使用率が90%越えで6fpsしか出ないです。

内臓GPUの方でデュアルモニターしているのが影響しているのでしょうか。(関係ない?)
「デバイス名 Intel(R) Core(TM) i7-3770T CPU @ 2.50GHzで実行開始します」
と出ますがGTXも少し使っているようですし何か変?

https://www.dropbox.com/s/hlisew0dq7d212z/test2float.jpg


ちなみにサブPCの方でも動作しました。
CPU使用率は15%以下でしたがこちらも1fps出ない状態でした。



pippi

リンク

2014/6/16(Mon) 00:12:13|NO.62452

>>hamyuuさん
画像までわざわざありがとうございます。
とりあえずメイン+サブPCでも起動したとのことで、一安心です。


メインPCでの挙動はおそらく、
先ほどのkanahironさん2014/6/14(Sat)19:10:32の状況に似ていることから

パーティクルの座標計算にCPU (i7 3770T、内蔵GPUではない)が
描画にGPU (GTX750ti) が

使われていた可能性があります。
fpsが低いのはCPUの倍精度計算のボトルネックと、CPU-GPU間で相互にデータをやりとりしていたためでしょう。

正直これは期待していない動作ですが、ある意味安心しました。
というのもお二方の似たようなPC環境で再現性ありとのことなので、
おそらくhamyuuさんのところでも同じように、ソースの7行目の第二引数を1か2にすれば完全にGTX750tiを使うことができると思われます。

オンボードの他にグラボを刺している場合は、そのグラボでOpenCL+OpenGLを使えれば一番いいはずです。
なので問題はやはりオンボードのみの環境でこれがどう動くかですが、kanahironさんのご報告から察するに
オンボードのみでは「test1+」のような単精度計算だと起動でき、「test1」のような倍精度計算では起動できないはずなんです。


つまり今回はhamyuuさんのサブPCで、なぜ倍精度のソースである「test1」が動いたのか疑問です・・・。
パーティクルの座標計算に「Celeron J1900」が
描画にオンボードが
使われていたならばまだわかります。
が、それだとCPU使用率が低いのが気になります。

もしよろしければ、サブPCでの実行時のキャプチャもお願いしてもよろしいでしょうか?


本当になんどもすみません。m(- -)m
まぁでも面倒だったら大丈夫です!

いろいろ付き合って下さりありがとうございました。



K-s

リンク

2014/6/16(Mon) 00:39:51|NO.62454

win7 pro 64bit、i5-4570、GTX 650 Ti、エラーなく動きました。
d3module の d3getfps で fps 計る処理と repeat の第2引数かえて
test2.hsp と test2float.hsp を実行した動画を録ってみました。
ProcessExplorerでcpu/gpu使用率なども見てます。

http://fast-uploader.com/file/6958402195092/



pippi

リンク

2014/6/16(Mon) 00:54:21|NO.62455

>>K-sさん
おおおおお素晴らしいです!!!ありがとうございます。
よくわかりました!
やはり、repeat の第2引数を変えないとCPUの負荷がかかっていますね。

今までのhamyuuさんやkanahironさんと同じ現象ですね。
デバイスの種類が「GPU」ならそれを優先する処理を最初に追加すれば、
きちんと私の希望通りの処理をしてくれるものができそうです。

あとはオンボードでの挙動ですが、K-sさんのHaswellのオンボードでtest2.hsp と test2float.hsp が動くか気になりますね。

ディスプレイ出力をGTX 650 Tiから、オンボードにきりかえられますか??すみません。

あと余談なのですが、みなさん画面キャプチャってどんなソフト使ってます??



K-s

リンク

2014/6/16(Mon) 01:13:12|NO.62456

うちはアマレココというソフトでキャプチャしました。
オンボードの切り替えって、グラボを外すのでしょうか?
すいません、PC内部は怖くて触れません…



pippi

リンク

2014/6/16(Mon) 01:26:55|NO.62457

>>K-sさん
なるほどアマレココですか、参考になります。

オンボード出力の切り替えは正直僕もよくわからないのですが、
HDMIケーブルもしくはDVIケーブルをGTX650Tiから外して
マザーボードのほうの端子に付け替えればいいと思います。

でも無理にとは言わないので興味があったらでいいです・・・
それで万が一壊れたら大変ですし・・



また余談ですが、
このプラグインが完成したあかつきには、
http://wonderfl.net/c/tNGiこんなようなパーティクル崩なんかが作りたいですね〜
あとは、弾が1ドットだけど画面をうめつくすほどの、そしてヌルヌル動く
超弾幕STGとか・・。私の中でいろいろ夢がふくらんでいます



kanahiron

リンク

2014/6/16(Mon) 13:41:15|NO.62460

半精度の方で3種類試してみました

デュアルモニタ環境で内蔵GPUとグラボを別々に挿したりやらないほうがいいことをしているので
期待したパフォーマンスは出ていないかもです(PC起動しながら抜き差しした)

そしてわかりやすいようにフレームレートを表示させてみました
しかしAmaRecCo(アマレココ)を起動すると60fps出なくて30fps程度に制限されるみたいです
GTX660Tiは実際には60fps出ています(ほかはあまり変わらず)

28MBある動画なのでテザリングでPC使ってる方や定量制の方は気をつけて下さい
http://fast-uploader.com/file/6958448983977/



pippi

リンク

2014/6/17(Tue) 23:19:52|NO.62485

>>kanahironさん
なるほど、ありがとうございます。



皆さんのお陰でかなり本プラグインの動作確認が取れました。
いろいろわがままを聞いてもらってありがとうございます。
新しいオンボードやグラボならまず動かせるというのがわかって安心しました。
またデバッグに付き合ってもらうこともあるかと思いますが、そのときはまたよろしくお願いします。



ONION software Copyright 1997-2018(c) All rights reserved.