-------------------------------------------------------------------------- 【 ソフト名 】HSPCL32.dll 【 バージョン 】4.02 【 作者 】pippi 【 必要環境1 】WindowsXP以降 【 必要環境2 】HSP Ver3.0以降 【 必要環境3 】OpenCL,OpenGL対応グラフィックボードまたはCPUまたはCellプロセッサー GeForce 200 Series以降(?) R700 世代 (HD 4xxx)以降(?) HD Graphics 2500/4000以降(Ivy Bridge以降) 【 取扱種別 】フリープラグイン 【 内容 】HSP3用GPGPUプラグイン 【 HP 】http://toropippi.web.fc2.com/ -------------------------------------------------------------------------- ■使用方法 1、「HSPCL32.dll」をHSPインストールフォルダ「C:\hsp332」ないしは「C:\Program Files (x86)\hsp332」か「C:\Program Files\hsp332」へコピーして下さい。 2、「hspcl32.as」をHSPインストールフォルダの「common」フォルダの中へ入れて下さい。 3、ヘルプデータをコピーしたい場合は、「doclib」フォルダ自体をそのままHSPインストールフォルダの中へ上書きして下さい。 ■概要 これはHSP3から簡単にOpenCLを扱うことができるプラグインです。 最短で2つの命令で、OpenCLによる計算を行うことができます。 これを導入することにより、すぐにGPGPUで高速演算を楽しむことができるようになります。 今やGPGPUプログラミングで使う言語はCUDAかOpenCLです。 CUDAにしろOpenCLにしろC++をまず勉強してからじゃないとなかなかすぐには扱えません。 C++に至ってもまずVC++の使い方を学ばなければいけません。 ディレクトリ設定から始まり、32bitアプリケーションにするか64bitアプリケーションにするか、コンソールアプリケーションにするかウィンドウアプリケーションにするか、マルチ バイト文字セットを使用するだのUnicodeだの、V100だのV90だのWindows7.1SDKだのと、GPUで計算したいだけなのに、こんな意味のないことに時間を割くのは余りにバカらしいですよね。 このプラグインはHSPをインストールして「HSPCL32.dll」と「hspcl32.as」を正しい位置にいれればすぐにGPGPUができるので、導入が非常に楽です。 今すぐに数値計算を行ないたい人にピッタリです! またHSP3プログラムソース内でfloat型も扱えるようになります。 またOpenGLの関数を利用したモジュールも豊富に使えます。 ■インストール HSPインストールフォルダにHSPCL32.dllをコピー アンインストールはゴミ箱に削除 ■注意点 このプラグインでは速度を優先したためメモリアクセス違反に対して防護する機能がありません。 よって、アクセス違反によるエラーがシステムに影響を及ぼすことがあります。 最悪、ブルースクリーンになったり、グラボからの信号が途絶え画面が落ちたり、グラボがフリーズしたりなどの現象が起こります。 サンプルに陥りやすいエラーサンプルを用意したので、それを参考になるべくコードミスはないように気をつけて下さい。 基本的に同じソースなら、メモリアクセス違反は1つの環境で起こらなければ別の環境でも起きることはないと考えてください。 これに関するいかなる損失も、当方は責任を負えません。 十分注意して下さい。 ■配布場所 http://toropippi.web.fc2.com/ ■スペシャルサンクス このプラグインの完成のために何百回とデバッグして下さったdedpさんは、本当にありがとうございます。 デバッグ環境はNVidia GTX 460でした。 ■連絡先 efghiqippi@yahoo.co.jp ■免責 このプラグインの使用により発生した如何なる問題について当方は一切の責任を負いません。 ■著作権 著作権は一部を除いて、pippiが保有します。 HSPCL32.asの「varsize」関数は「Kerupani129 Project」さんから拝借し HSPCL32.dllの「HSP3でfloat型変数が扱える」機能は、HSPインストールフォルダの「hspsdk」内のサンプルをそのまま拝借、使用しております。 サンプル内の飛行機のモデルデータは https://sites.google.com/site/tobashomesouko/home/hikouki-3dcgdeta から拝借いたしました。 ■更新履歴 Ver 4.02 2014/11/24 一部の命令の高速化 Ver 4.01 2014/10/30 HCLini実行時、HCLbye実行時、一部のデバイスで画面が黒くなる現象を改善 Ver 4.0 2014/10/29 mqoファイルを読み込めるように命令追加。 リファレンス、サンプルを充実(?) 「HCLDoKrn1_sub」追加 「HCLCall」のローカルワークサイズの指定を自動に 「HCLDoKrn1」〜「HCLDoKrn3」と「HCLDoKernel」でローカルワークサイズに0を指定した場合にローカルワークサイズが自動で決定されるように変更 「HCLini」に引数を指定できるように変更 「clGetDevInfo」の廃止 HCLGetDevCLflgデバイス情報取得 HCLGetDevfp64flgデバイス情報取得 HCLGetDevGLflgデバイス情報取得 HCLGetDeviceInfo_iデバイス情報取得 HCLGetDeviceInfo_s を追加 「HCLCreateProgramWithSource」追加 「HCLCreateBuffer」ですぐにバッファーが作られないバグ修正 convRGBAtoRGBフォーマット変換 convRGBtoBGRフォーマット変換 convRGBtoRGBAフォーマット変換 HGLCreateBufferVRAM作成 HGLCreateTexture1テクスチャ作成 HGLCreateTexture1_texload画像テクスチャ作成 HGLCreateTexture2テクスチャ作成 HGLCreateTexture3レンダリング可能テクスチャ作成 HGLgcopy2D画像描画 HGLgrotate2D画像回転描画 HGLMqoDrawmqo描画 HGLmqoloadmqoデータロード HGLMqoSetAngmqo回転 HGLMqoSetPosmqo位置セット HGLMqoSetScalemqo倍率変更 HGLmulQuaternionクオータニオン掛けあわせ HGLReadBufferVRAMから読み込み HGLReadTextureテクスチャ読み込み HGLReleaseBufferVRAM破棄 HGLReleaseTextureレンダリング可能テクスチャ解放 HGLReleaseTexture3レンダリング可能テクスチャ解放 HGLRotate3dbyQuaternion座標回転 HGLSetView画面初期化 HGLWriteBufferVRAMへ書き込み HGLWriteTexture 追加 他いろいろ Ver 3.2 2014/10/8 「HCLDoKrn1」〜「HCLDoKrn3」で正常に行われなかった場合今までエラーメッセージ出さなかったものを出すように修正 OpenGL関連の命令大幅追加 モジュール命令・関数の追加修正 clGetDevInfoの仕様変更 clGetDevInfoの仕様変更 全ての命令、関数の先頭に「hcl」がつくよう変更 ただしOpenGL.dllの外部DLL呼び出し命令は、そのままの名称を使用している。 Ver 3.10 2014/9/4 モジュール内命令・関数の大幅増強 OpenGL関連の命令追加 「clGetLastEvent」「clWaitEvent」を削除(メモリ消費が増え続ける現象があったため) 一命令ですぐopenclを使える「HCLCall」を搭載 Ver 3.01 2014/6/13 「clGetLastEvent」「clWaitEvent」を修正 OpenGLとの連携強化 エラーメッセージの強化 Ver 3.0 2014/3/4 OpenGLとの連携可能に 画面表示関連の命令充実 「clGetLastEvent」「clWaitEvent」を追加 clGetDevInfoの内容にOpenGLの項目を追加 OpenGL関連の命令を大幅追加 Ver 2.0 2013/8/29 HCLbye実行時の不具合を修正 HCLDoKrn1〜3まで追加 HCLWaitTaskでタスク待できるように メモリアクセス違反以外の大概のプログラムミスに対しエラーメッセージを出すようにチェック機能搭載 その他エラーメッセージがでるように機能追加 リリース前最終調整 Ver 1.11 2013/8/10 カーネル実行においてlocal_work_sizeとglobal_work_sizeに配列を指定できるように変更 Ver 1.10 2013/5/14 プログラムビルド、カーネル、メモリ周りの実装 Ver 1.0 2013/5/9 コンテキストの作成命令