revert dynamic gpu_pipeline_configs init

This commit is contained in:
Nakasaka, Masato 2026-01-18 23:35:10 -08:00
parent f23e4b9f15
commit 377b006048
1 changed files with 33 additions and 43 deletions

View File

@ -2860,7 +2860,7 @@ struct GpuPipelineConfig {
vk_device_architecture arch; vk_device_architecture arch;
// Mapping of pipeline names to their specific configuration parameters. // Mapping of pipeline names to their specific configuration parameters.
// Example: {"soft_max_f32", {64, {}} // Example: {"soft_max_f32", {64}}
std::unordered_map<std::string, PipelineConfigParameter> pipelines; std::unordered_map<std::string, PipelineConfigParameter> pipelines;
// Default subgroup size for this GPU. // Default subgroup size for this GPU.
@ -2907,47 +2907,38 @@ static const std::unordered_map<std::string, PipelineConfigParameter> xe2_onward
static constexpr uint32_t INTEL_DEFAULT_SUBGROUP_SIZE = 32; static constexpr uint32_t INTEL_DEFAULT_SUBGROUP_SIZE = 32;
// Define configurations for different GPUs. // Define configurations for different GPUs.
static std::vector<GpuPipelineConfig> gpu_pipeline_configs = {}; static std::vector<GpuPipelineConfig> gpu_pipeline_configs = {
{
// Initialize vendor/pipeline specific parameters to be used when creating pipelines vk_device_architecture::AMD_RDNA1,
static void init_gpu_pipeline_configs(std::vector<GpuPipelineConfig>& config) { {
if (!config.empty()) { rdna1_pipelines,
// Already setup },
return; RDNA_DEFAULT_SUBGROUP_SIZE
},
{
vk_device_architecture::AMD_RDNA2,
{
rdna2_pipelines,
},
RDNA_DEFAULT_SUBGROUP_SIZE
},
{
vk_device_architecture::INTEL_PRE_XE2,
{
},
INTEL_DEFAULT_SUBGROUP_SIZE
},
{
vk_device_architecture::INTEL_XE2_ONWARD,
{
xe2_onward_pipelines,
},
INTEL_DEFAULT_SUBGROUP_SIZE
} }
config.insert(config.end(),{ };
{
vk_device_architecture::AMD_RDNA1,
{
rdna1_pipelines,
},
RDNA_DEFAULT_SUBGROUP_SIZE
},
{
vk_device_architecture::AMD_RDNA2,
{
rdna2_pipelines,
},
RDNA_DEFAULT_SUBGROUP_SIZE
},
{
vk_device_architecture::INTEL_PRE_XE2,
{
},
INTEL_DEFAULT_SUBGROUP_SIZE
},
{
vk_device_architecture::INTEL_XE2_ONWARD,
{
xe2_onward_pipelines,
},
INTEL_DEFAULT_SUBGROUP_SIZE
}
});
}
static bool get_gpu_pipeline_config(GpuPipelineConfig* output, const std::vector<GpuPipelineConfig>& pipeline_configs, const vk_device_architecture& arch) { static bool get_gpu_pipeline_config(GpuPipelineConfig* output, const vk_device_architecture& arch) {
for (const auto & config : pipeline_configs) { for (const auto & config : gpu_pipeline_configs) {
if (config.arch == arch) { if (config.arch == arch) {
*output = config; *output = config;
return true; return true;
@ -3171,7 +3162,7 @@ static void ggml_vk_load_shaders(vk_device& device) {
GpuPipelineConfig gpu_config = {}; GpuPipelineConfig gpu_config = {};
PipelineConfigParameter pipeline_param = {}; PipelineConfigParameter pipeline_param = {};
bool param_found = false; bool param_found = false;
auto gpu_config_found = get_gpu_pipeline_config(&gpu_config, gpu_pipeline_configs, device->architecture); auto gpu_config_found = get_gpu_pipeline_config(&gpu_config, device->architecture);
if (gpu_config_found) { if (gpu_config_found) {
param_found = get_pipeline_config_parameter(&pipeline_param, gpu_config, std::string(name)); param_found = get_pipeline_config_parameter(&pipeline_param, gpu_config, std::string(name));
} }
@ -5466,7 +5457,7 @@ static void ggml_vk_print_gpu_info(size_t idx) {
uint32_t default_subgroup_size = 0; uint32_t default_subgroup_size = 0;
GpuPipelineConfig gpu_config = {}; GpuPipelineConfig gpu_config = {};
auto config_found = get_gpu_pipeline_config(&gpu_config, gpu_pipeline_configs, device_architecture); auto config_found = get_gpu_pipeline_config(&gpu_config, device_architecture);
if (config_found) { if (config_found) {
default_subgroup_size = gpu_config.default_subgroup_size; default_subgroup_size = gpu_config.default_subgroup_size;
} }
@ -5721,7 +5712,6 @@ static void ggml_vk_instance_init() {
} }
GGML_LOG_DEBUG("ggml_vulkan: Found %zu Vulkan devices:\n", vk_instance.device_indices.size()); GGML_LOG_DEBUG("ggml_vulkan: Found %zu Vulkan devices:\n", vk_instance.device_indices.size());
init_gpu_pipeline_configs(gpu_pipeline_configs);
for (size_t i = 0; i < vk_instance.device_indices.size(); i++) { for (size_t i = 0; i < vk_instance.device_indices.size(); i++) {
vk::PhysicalDevice vkdev = devices[vk_instance.device_indices[i]]; vk::PhysicalDevice vkdev = devices[vk_instance.device_indices[i]];
std::vector<vk::ExtensionProperties> extensionprops = vkdev.enumerateDeviceExtensionProperties(); std::vector<vk::ExtensionProperties> extensionprops = vkdev.enumerateDeviceExtensionProperties();