vulkan 是否有创建逻辑器件的最大数量限制?
Does vulkan has the maximum number limits of logic device creation?
我编写了以下代码来测试最大逻辑器件数量。
#include "vulkan/vulkan.hpp"
#include <cassert>
#include <vector>
#include <iostream>
int main() {
std::vector<vk::Instance> instances;
std::vector<vk::Device> devices;
try {
for( ; true; ) {
vk::InstanceCreateInfo instanceInfo {};
instances.push_back( vk::createInstance( instanceInfo ) );
auto physicalDevices = instances.back().enumeratePhysicalDevices();
if( 0 == physicalDevices.size() )
return 0;
vk::DeviceQueueCreateInfo deviceQueueCreateInfo {};
deviceQueueCreateInfo.queueFamilyIndex = 0;
deviceQueueCreateInfo.queueCount = 1;
vk::DeviceCreateInfo deviceCreateInfo {};
deviceCreateInfo.queueCreateInfoCount = 1;
deviceCreateInfo.pQueueCreateInfos = &deviceQueueCreateInfo;
auto device = physicalDevices.front().createDevice( deviceCreateInfo );
if( !device ) {
throw 0;
}
devices.push_back( device );
}
}
catch( std::system_error e ) {
std::cout << e.what() << std::endl
<< e.code() << std::endl;
}
catch( ... ) {
}
for( auto device : devices )
device.destroy();
for( auto instance : instances )
instance.destroy();
printf( "Maximum device is %dn", devices.size() );
return static_cast<int>( devices.size() );
}
以下是我的测试结果: 视窗 10 64 位 8G 内存 GTX 750Ti:最大设备为 42, Ubuntu 8G RAM GTX 750Ti:最大设备为63, 视窗 10 64 位 16G 内存 GTX 1080:最大设备为 42, Ubuntu 64G RAM Titan X:最大设备为31,
测试结果表明,vulkan具有逻辑器件创建的最大数量限制,并且限制可能因操作系统而异。我没有找到任何关于限制的文档,有什么方法可以得到这个限制吗?另一个问题,如果我想在服务器上运行大量 vulkan 应用程序,我该如何克服这个限制?
Vulkan 规范只说了这样:
可以从同一物理设备创建多个逻辑设备。逻辑设备创建可能会由于缺少特定于设备的资源(以及其他错误(而失败。如果发生这种情况,vkCreateDevice 将返回VK_ERROR_TOO_MANY_OBJECTS。
因此,您可以创建的设备数量是有限的(显然,因为每个设备都必须使用一些资源,并且所有资源都是有限的(,但数量取决于实现。
Vulkan 一致性测试要求您能够创建至少五个设备。
使用的某些资源可能是按进程而不是系统范围的。您是否尝试过生成一堆进程,每个进程创建一个 VkDevice?
但做不到这一点:您唯一的选择是使用具有更高限制的不同实现,或者游说硬件供应商使用更少的资源(或其他任何设备(来支持更高的限制。
相关文章:
- vulkan 是否有创建逻辑器件的最大数量限制?
- 找到不大于 A 的最大数的最有效方法,该数可被 B 整除
- C++:最大数组值函数工作不正常
- 在浮点数32中保存浮点数16最大数
- 使用 DP 的非相邻元素的最大数组总和
- 如何在大数组中最有效地增加指定范围内的值,然后找到最大值
- 找到第 n 个最大数无限循环C++
- 最大数组大小
- C 最大数组大小
- 如何在GPU内存中获取最大数组大小
- 具有最大数组函数的程序
- 这是在包含非唯一元素的未排序数组中选择第k个最大数的最快算法
- 如何递归地找到最大数组元素的索引
- 递归最大数求和
- 如何找到数组中的最大数并用c++显示
- 给定一系列整数,提供第k个最大数
- 在任意加长的集合中查找最大数不起作用
- IEEE 754浮点数,1<的最大数是多少?
- 不与V互质的最大数
- C++是否有最大数组长度限制