gpt4 book ai didi

c++ - vulkan 是否有创建逻辑设备的最大数量限制?

转载 作者:行者123 更新时间:2023-11-30 00:45:03 27 4
gpt4 key购买 nike

我写了下面的代码来测试最大逻辑设备数。

#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 %d\n", devices.size() );
return static_cast<int>( devices.size() );
}

以下是我的测试结果:Windows 10 64bit 8G RAM GTX 750Ti:最大设备数为 42,Ubuntu 8G RAM GTX 750Ti:最大设备数为 63,Windows 10 64bit 16G RAM GTX 1080:最大设备数为 42,Ubuntu 64G RAM Titan X:最大设备数为 31,

测试结果表明,vulkan存在创建逻辑设备的最大数量限制,不同的操作系统可能会有不同的限制。我没有找到任何关于限制的文件,有没有办法获得这个限制?另一个问题,如果我想在服务器上运行大量的 vulkan 应用程序,我该如何克服这个限制?

最佳答案

Vulkan 规范只说明了这一点:

Multiple logical devices can be created from the same physical device. Logical device creation may fail due to lack of device-specific resources (in addition to the other errors). If that occurs, vkCreateDevice will return VK_ERROR_TOO_MANY_OBJECTS.

因此您可以创建的设备数量是有限的(显然,因为每个设备都必须使用一些资源,而所有资源都是有限的),但数量取决于实现。

Vulkan 一致性测试要求您能够 create at least five devices .

有可能某些正在使用的资源是针对每个进程而不是系统范围的。您是否尝试过生成一堆进程,每个进程创建一个 VkDevice?

但失败了:您唯一的选择是使用具有更高限制的不同实现,或者游说硬件供应商为每个设备(或其他)使用更少的资源以支持更高的限制。

关于c++ - vulkan 是否有创建逻辑设备的最大数量限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44961771/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com