How can the GaussianBlur shader be modified to compute shader?

#version 330 core

uniform sampler2D tex;
uniform int radius;
uniform float width;
uniform float height;

in vec2 uv;
out vec4 FragColor;

const float PI    = 3.141592653589793;
const float sigma = 3.0f;

vec4 GaussianBlurHV()
{
	float twoSigmaSqu = 2 * sigma * sigma;
	int r = radius; //int(ceil(sigma * 2.57));
	float allWeight = 0.0f;	
	vec4 col = vec4(0.0f, 0.0f, 0.0f, 0.0f);//error X3014: incorrect number of arguments to numeric-type constructor
	for (int ix = -r; ix < (r + 1); ix++)
	{
		for (int iy = -r; iy < (r + 1); iy++)
		{
			float weight   = 1.0f / (PI * twoSigmaSqu) * exp(-(ix * ix + iy * iy) / twoSigmaSqu);
			vec2 offset    = vec2(1.0f / width * ix, 1.0f / height * iy);
			vec2 uv_offset = uv + offset;
			uv_offset.x    = clamp(uv_offset.x, 0.0f, 1.0f);
			uv_offset.y    = clamp(uv_offset.y, 0.0f, 1.0f);
			col += texture2D(tex, uv_offset) * weight;
			allWeight += weight;
		}
	}
	col = col / allWeight;
	return col;
}


void main()
{
	FragColor = GaussianBlurHV();
}

// -----------------------------------------------------------------------------------

OpenGL 3.2
Linux archlinux 5.6.6-arch1-1
Intel® Core™ i7-6500U
NVIDIA GeForce 940M

Texture and FBO
Format = GL_RGBA32F_ARB
MinFilter = GL_LINEAR
MaxFilter = GL_LINEAR
TextureTarget = GL_TEXTURE_2D
Depth = false
Stencil = false
Samples = 0 // I've tried multisampling as well
WrapModeHorizontal = GL_CLAMP
WrapModeVertical = GL_CLAMP

A post was merged into an existing topic: How can the following Gaussian blur shader be modified to compute shader?