网站开发自学资料,家装效果图网站,网页打不开但是有网,wordpress被百度收录很高兴在雪易的CSDN遇见你
VTK技术爱好者 QQ#xff1a;870202403 前言
上期内容讲到VTK的体绘制技术vtkGPUVolumeRayCastMapper#xff0c;本文分享VTK中GPU加速的相关内容#xff0c;希望对各位小伙伴有所帮助#xff01;
感谢各位小伙伴的点赞关注#xff0c;小易会…很高兴在雪易的CSDN遇见你
VTK技术爱好者 QQ870202403 前言
上期内容讲到VTK的体绘制技术vtkGPUVolumeRayCastMapper本文分享VTK中GPU加速的相关内容希望对各位小伙伴有所帮助
感谢各位小伙伴的点赞关注小易会继续努力分享一起进步
你的点赞就是我的动力()ノ~ 目录
前言
1. vtkGPUInfoList
1.1 Probe
1.2 IsProbed
1.3 GetNumberOfGPUs
1.4 GetGPUInfo
2. vtkGPUInfo
2.1 设置/获取专用显存DedicatedVideoMemory
2.2 设置/获取专用系统内存DedicatedSystemMemory
2.3 设置/获取共享系统内存SharedSystemMemory
3. 实际应用
4. vtkDummyGPUInfoList 5. vtkGPUInfoList其他子类
结论 1. vtkGPUInfoList 用于存储主机各GPU显存信息列表。 vtkGPUInfoList存储了一系列的vtkGPUInfo。一个主机可以有多个gpu。它通过使用系统调用探测主机来创建和设置列表。这是一个抽象类。具体类是特定于操作系统的。 其重要参数如下
1.1 Probe 查询该主机中的vtkGPUInfo信息。
1.2 IsProbed 返回是否查询该主机的vtkGPUInfo信息。
1.3 GetNumberOfGPUs 获取GPU的数量
1.4 GetGPUInfo 获取GPU的信息 /*** Return information about GPU i.* \pre probed: IsProbed()* \pre valid_index: i0 iGetNumberOfGPUs()* \post result_exists: result!0*/virtual vtkGPUInfo* GetGPUInfo(int i);
2. vtkGPUInfo 用于存储GPU显存信息其重要参数如下
2.1 设置/获取专用显存DedicatedVideoMemory 以字节为单位设置/获取专用显存。初始值为0。通常是最快的。如果它不为0应该首先考虑它并且应该忽略DedicatedSystemMemory或SharedSystemMemory。 //{/*** Set/Get dedicated video memory in bytes. Initial value is 0.* Usually the fastest one. If it is not 0, it should be taken into* account first and DedicatedSystemMemory or SharedSystemMemory should be* ignored.* 以字节为单位设置/获取专用显存。初始值为0。通常是最快的。* 如果它不为0应该首先考虑它并且应该忽略DedicatedSystemMemory或SharedSystemMemory。*/vtkSetMacro(DedicatedVideoMemory, vtkTypeUInt64);vtkGetMacro(DedicatedVideoMemory, vtkTypeUInt64);//}
2.2 设置/获取专用系统内存DedicatedSystemMemory //{/*** Set/Get dedicated system memory in bytes. Initial value is 0.* This is slow memory. If it is not 0, this value should be taken into* account only if there is no DedicatedVideoMemory and SharedSystemMemory* should be ignored.* 以字节为单位设置专用系统内存初始值为0.* 这是慢速内存。如果该值不为0则只有在没有dedicatedvideommemory且* SharedSystemMemory被忽略的情况下才会考虑该值。*/vtkSetMacro(DedicatedSystemMemory, vtkTypeUInt64);vtkGetMacro(DedicatedSystemMemory, vtkTypeUInt64);//}
2.3 设置/获取共享系统内存SharedSystemMemory //{/*** Set/Get shared system memory in bytes. Initial value is 0.* Slowest memory. This value should be taken into account only if there is* neither DedicatedVideoMemory nor DedicatedSystemMemory.* 以字节为单位设置/获取共享系统内存初始值为0. 此为最慢的内存。* 只有在既没有dedicatedvideommemory也没有DedicatedSystemMemory的情况下才应该考虑这个值。*/vtkSetMacro(SharedSystemMemory, vtkTypeUInt64);vtkGetMacro(SharedSystemMemory, vtkTypeUInt64);//}
3. 实际应用
//摘自vtkGPUVolumeRayCastMapper
this-MaxMemoryInBytes 0;vtkGPUInfoList* l vtkGPUInfoList::New();l-Probe();if (l-GetNumberOfGPUs() 0){vtkGPUInfo* info l-GetGPUInfo(0);this-MaxMemoryInBytes info-GetDedicatedVideoMemory();if (this-MaxMemoryInBytes 0){this-MaxMemoryInBytes info-GetDedicatedSystemMemory();}// we ignore info-GetSharedSystemMemory(); as this is very slow.}l-Delete();if (this-MaxMemoryInBytes 0) // use some default value: 128MB.{this-MaxMemoryInBytes 128 * 1024 * 1024;}
4. vtkDummyGPUInfoList vtkDummyGPUInfoList通过将gpu的计数设置为零来实现Probe()。在没有特定于操作系统的实现时非常有用。主要用于重写Probe函数。将GPU的数量置零。
void vtkDummyGPUInfoList::Probe()
{if (!this-Probed){this-Probed true;this-Array new vtkGPUInfoListArray;this-Array-v.resize(0); // no GPU.}assert(post: probed this-IsProbed());
} 5. vtkGPUInfoList其他子类 本文基于VTK9.0.3版本无vtkCoreGraphicsGPUInfoListvtkDirectXGPUInfoList和vtkXGPUInfoList接口。
结论 本文粗略讨论VTK中使用GPU的方法以后再慢慢研究VTK进行GPU加速的详细流程。
感谢各位小伙伴的点赞关注小易会继续努力分享一起进步
你的赞赏是我的最最最最大的动力()ノ~