增加计算单位数,可以加快计算速度。
计算单位 从 iWidth * iHeight 增加到 iWidth * iHeight * outNum:
mNumGroupsX = iWidth;
int xSize = iHeight;
mNumGroupsY = outNum;
mNumGroupsZ = 1;//inNum;
if (iHeight > 1024)
printf("图片高度太大,不支持\n");
else
textureParameters.shader_source = ShaderSource(xSize, 1);
着 色器:
#version 430 core
layout (local_size_x = LOCAL_SIZE_X, local_size_y = LOCAL_SIZE_Y, local_size_z = 1) in;
uniform int w;
uniform int h;
//输入
uniform int inNum;
//输出
uniform int outNum;
//偏置
uniform float bias[64];
//激活
uniform int active;
// 传递卷积核
uniform int kw;
layout(std430, binding = 0) buffer bufferObject
{
float all[];//最后一个数组可不设置长度
};
void main(void)
{
ivec3 pos = ivec3(gl_GlobalInvocationID.xyz);
int wh=w*h;
float indata ;
//指向核位置
int k_index = wh*outNum;//核起始位置
int ksize=kw*kw;
int in_inde