1

PhysiXを使用して流体シミュレータを実装しています。残念ながら、sthはcuda context managerで間違っており、それが何であるかを認識するのに問題があります。私は次のようなinitメソッドを持っています:

void InitializePhysX() {
    bool recordMemoryAllocations = true;
    const bool useCustomTrackingAllocator = true;

    PxAllocatorCallback* allocator = &gDefaultAllocatorCallback;
    PxErrorCallback* error = &gDefaultErrorCallback;
    PxFoundation* mFoundation = PxCreateFoundation(PX_PHYSICS_VERSION, *allocator, *error);
    if(!mFoundation)
            printf("PxCreateFoundation failed!\n");
    PxProfileZoneManager* mProfileZoneManager = &PxProfileZoneManager::createProfileZoneManager(mFoundation);
    if(!mProfileZoneManager)
            printf("PxProfileZoneManager::createProfileZoneManager failed!\n");
#ifdef PX_WINDOWS
    pxtask::CudaContextManagerDesc cudaContextManagerDesc;
    pxtask::CudaContextManager* mCudaContextManager = pxtask::createCudaContextManager(*mFoundation, cudaContextManagerDesc, mProfileZoneManager);
    if( mCudaContextManager ){
            if( !mCudaContextManager->contextIsValid() ){
                    mCudaContextManager->release();
                    mCudaContextManager = NULL;
                    printf("invalid context\n");
            }
    } else {
            printf("create cuda context manager failed\n");
    }
#endif
    mPhysX = PxCreatePhysics(PX_PHYSICS_VERSION, *mFoundation, PxTolerancesScale(), recordMemoryAllocations, mProfileZoneManager);
    if(!mPhysX)
            printf("PxCreatePhysics failed!\n");
    ...
}

アプリケーションを実行しようとすると、mCudaContextMangerが正しく作成されないことがあります。「cudaコンテキストマネージャーの作成に失敗しました」がコンソールに書き込まれ、次のようになります。

".... \ LowLevel \ software \ src \ PxsContext.cpp(1122):警告:GPU操作が失敗しました。px::CudaContextManagerが利用できません。....\ SimulationController \ src \particles \ ScParticleSystemSim.cpp(73):警告:GPUパーティクルシステムの作成に失敗しました。CPUの実装にフォールバックします。」

最新のドライバーを搭載したGeForce560Tiを使用しています(友人のラップトップのGeForce460にもエラーが表示されます)。Physixは、NVidiaコントロールパネルでGPUを使用するように設定されています。

私たちが何を間違えたのか、GPUを機能させる方法を知っている人はいますか?前もって感謝します!

4

1 に答える 1

0

ファイル PhysX3Gpu_x86.dll がありませんでした。私はそれを追加しましたが、今ではすべて問題ありません。

于 2013-01-25T02:12:37.873 に答える