rust Vulkano创建计算管道不工作,冻结我的视频卡

fnatzsnv  于 2023-01-09  发布在  其他
关注(0)|答案(1)|浏览(115)

我正在尝试加载一个着色器到一个amd视频卡。在所有的缓冲区都被创建后,我尝试创建一个新的计算管道。当我开始调试它打印消息时,我发现"Finished Creating the compute pipeline"从来没有被打印出来。当我用'cargo run--release'运行它时,它打印出:"创建管道与着色器",但几秒钟后,它冻结了我的整个电脑,我不得不关闭它,并再次打开...
我的Vulkano版本是:0.32.1;我的vulkano-shaders版本是:0.32.1;我的显卡是:AMD RX570 4GB
Vulkano器械物理特性:

buffer_image_granularity: 64,
compute_units_per_shader_array: Some(
    8,
),
conformance_version: Some(
    1.2.0,
),

Cargo.toml:
x一个一个一个一个x一个一个二个x
着色器为:

#version 450
#pragma shader_stage(compute)

layout(local_size_x=32, local_size_y=32, local_size_z=16) in;

struct Dimension {
  uint rows;
  uint columns;
  uint channels;
};

layout(set=0, binding=0) buffer Dimensions {
  Dimension input_matrix;
  Dimension kernel;
  Dimension output_matrix;
} dims_buf;

layout(set=0, binding=1) buffer readonly InputMatrix {
  float[] input_matrix;
};

layout(set=0, binding=2) buffer readonly Kernel {
  float[] kernel;
};

layout(set=0, binding=3) buffer writeonly OutputMatrix {
   float[] output_matrix;
}; 
layout(set=0, binding=4) buffer Options {
   ivec2 padding;
   uint stride;
} options_buf;

void main() {
  const uint raw_row = gl_GlobalInvocationID.x;
  const uint raw_column = gl_GlobalInvocationID.y;
  const uint raw_channel = gl_GlobalInvocationID.z;
}

我试着用不同的着色器运行类似的程序,效果很好。

juzqafwq

juzqafwq1#

结果表明,工作组的大小必须小于
因此:本地大小x * 本地大小y * 本地大小z必须小于最大计算工作组调用次数

physical.properties().max_compute_work_group_invocations ```

相关问题