0

gpgpu についてよく読んでいて、現在 OpenGL を学んでいます。すべての数学を自分で作成する (または既存のサードパーティ ライブラリを使用する) 必要があるため、独自の数学ライブラリを作成するために CPU の代わりに GPU を使用するというアイデアがありました。(行列ベクトルなど)

しかし、GPU を利用する 3D 数学ライブラリは見つかりませんでした。

具体的な理由はありますか?

たぶん、CPUはそれらのタスクで優れていますか?

4

4 に答える 4

3

一度に処理するベクトルまたは行列の数と、結果を描画するかどうかによって異なります。

GLSL (OpenGL Shading Language) には、既に数学ライブラリが組み込まれています。これには、行列数学、転置、逆行列の関数と演算子があります。ベクトル内積と外積。ベクトルに行列を掛けるなど。

OpenGL でジオメトリなどを描画するときは、GPU 上のシェーダーでこれらの組み込み関数を使用します。すでに存在するものを複製する 3D 数学ライブラリには意味がありません。

光線と平面の交差テストなど、何も描画せずに小規模なベクトル/行列計算を実行する場合は、CPU の方が優れています。値を GPU にコピーして結果をコピーすると、CPU で計算を行うよりもはるかに時間がかかります。(GPU が実際には高速であったとしても、現在の一般的な速度は CPU で 2Ghz+、GPU で 1Ghz 未満です。) これが、数学ライブラリが単に CPU を使用する理由です。

描画せずに「工業規模」の行列/ベクトル演算を実行したい場合は、GPU を検討する価値があります。(これが CUDA と OpenCL が存在する理由です。) 変換フィードバックとテクスチャ バッファー オブジェクト (通常は V3+) をサポートする最新バージョンの OpenGL を使用すると、GPU で数百から数千の行列/ベクトルの計算を行うことができ、OpenGL 4.3 ではそれが均等になります計算シェーダーを使用すると簡単です。CUDA/OpenCL ほど便利でも効率的でもありませんが、すでに OpenGL を知っていれば、はるかに簡単です。

お役に立てれば。

于 2012-12-19T01:13:26.973 に答える
1

arrayfireを試すことができます。最大 4 次元をサポートし、一般的に使用される機能を多数サポートしています。現在、cuda のみがサポートされていますが、opencl のサポートは、同じインターフェイスでまもなく追加されます (私は Accelereyes で働いているので、これは知っています)。

于 2012-12-19T04:19:53.270 に答える
1

What kind of operations do you want to do? You can use the OpenCL built-in float4 and its default operators (+,-,*,/, dot, sqrt) for Vector3 or Vector4. You can easily extend this with Quaternions and Matrices, that's what we did.

See http://github.com/erwincoumans/experiments

The code can help you learning OpenCL and also OpenGL and OpenCL-OpenGL interop.

My github repository contains simple 3d math functions for quaternions, 3d vectors and 3x3 matrices for the OpenCL version of our 3D Bullet game physics library. It also has a fast radix sort, prefix scan, collision detection algorithms and rigid body dynamics, 100% running on GPU. It runs on NVIDIA, AMD,Intel Windows & Mac OSX. https://github.com/erwincoumans/experiments/blob/master/opencl/primitives/AdlPrimitives/Math/MathCL.h

于 2012-12-21T07:43:56.293 に答える
1

出発点として CUDA スラストを探します。GPUはこのタスクに適していると思います。CPU の SIMD も調査対象になる可能性がありますが、期待するほどの並列処理は得られません。

于 2012-12-18T23:41:06.817 に答える