This commit is contained in:
ton
2023-09-10 11:28:40 +07:00
parent fb3e59a414
commit e7c0228313
5 changed files with 384 additions and 155 deletions

View File

@@ -26,7 +26,7 @@ function (kfn::kfn_1)(input::AbstractArray)
kfn.lif_firingCounter .= 0
kfn.lif_refractoryCounter .= 0
kfn.lif_zt .= 0
kfn.lif_synapticActivityCounter .= 0
kfn.lif_synapseReconnectDelayCounter .= 0
kfn.alif_vt .= 0
kfn.alif_a .= 0
@@ -36,7 +36,7 @@ function (kfn::kfn_1)(input::AbstractArray)
kfn.alif_firingCounter .= 0
kfn.alif_refractoryCounter .= 0
kfn.alif_zt .= 0
kfn.alif_synapticActivityCounter .= 0
kfn.alif_synapseReconnectDelayCounter .= 0
kfn.on_vt .= 0
kfn.on_epsilonRec .= 0
@@ -77,7 +77,7 @@ function (kfn::kfn_1)(input::AbstractArray)
kfn.lif_exInType,
kfn.lif_wRecChange,
kfn.lif_neuronInactivityCounter,
kfn.lif_synapticActivityCounter,
kfn.lif_synapseReconnectDelayCounter,
)
end
@async begin
@@ -103,7 +103,7 @@ function (kfn::kfn_1)(input::AbstractArray)
kfn.alif_exInType,
kfn.alif_wRecChange,
kfn.alif_neuronInactivityCounter,
kfn.alif_synapticActivityCounter,
kfn.alif_synapseReconnectDelayCounter,
kfn.alif_epsilonRecA,
kfn.alif_a,
kfn.alif_avth,
@@ -147,7 +147,7 @@ function (kfn::kfn_1)(input::AbstractArray)
)
# get on_zt4d to on_zt
kfn.on_zt .= reduce(max, kfn.on_zt4d, dims=(1,2))
logit = reshape(kfn.on_zt, (size(input, 1), :))
logit = reshape(kfn.on_zt, (size(input, 1), :)) # (outputNeurons, batch)
return logit,
kfn.zit
@@ -171,7 +171,7 @@ function lifForward( zit::CuArray,
exInType::CuArray,
wRecChange::CuArray,
neuronInactivityCounter::CuArray,
synapticActivityCounter::CuArray,
synapseReconnectDelayCounter::CuArray,
)
kernel = @cuda launch=false lifForward( zit,
@@ -191,7 +191,7 @@ function lifForward( zit::CuArray,
exInType,
wRecChange,
neuronInactivityCounter,
synapticActivityCounter,
synapseReconnectDelayCounter,
GeneralUtils.linear_to_cartesian,
)
config = launch_configuration(kernel.fun)
@@ -225,7 +225,7 @@ function lifForward( zit::CuArray,
exInType,
wRecChange,
neuronInactivityCounter,
synapticActivityCounter,
synapseReconnectDelayCounter,
GeneralUtils.linear_to_cartesian; threads, blocks)
end
end
@@ -248,7 +248,7 @@ function lifForward( zit,
exInType,
wRecChange,
neuronInactivityCounter,
synapticActivityCounter,
synapseReconnectDelayCounter,
linear_to_cartesian,
)
i = (blockIdx().x - 1) * blockDim().x + threadIdx().x # gpu threads index
@@ -300,9 +300,9 @@ function lifForward( zit,
# count synaptic inactivity
if !iszero(wRec[i1,i2,i3,i4]) # check if this is wRec subscription
if !iszero(zit[i1,i2,i3,i4]) # synapse is active
synapticActivityCounter[i1,i2,i3,i4] += 1
synapseReconnectDelayCounter[i1,i2,i3,i4] += 1
else # synapse is inactive
synapticActivityCounter[i1,i2,i3,i4] += 0
synapseReconnectDelayCounter[i1,i2,i3,i4] += 0
end
end
# voltage regulator
@@ -331,7 +331,7 @@ function alifForward( zit::CuArray,
exInType::CuArray,
wRecChange::CuArray,
neuronInactivityCounter::CuArray,
synapticActivityCounter::CuArray,
synapseReconnectDelayCounter::CuArray,
epsilonRecA::CuArray,
a::CuArray,
avth::CuArray,
@@ -356,7 +356,7 @@ function alifForward( zit::CuArray,
exInType,
wRecChange,
neuronInactivityCounter,
synapticActivityCounter,
synapseReconnectDelayCounter,
epsilonRecA,
a,
avth,
@@ -394,7 +394,7 @@ function alifForward( zit::CuArray,
exInType,
wRecChange,
neuronInactivityCounter,
synapticActivityCounter,
synapseReconnectDelayCounter,
epsilonRecA,
a,
avth,
@@ -422,7 +422,7 @@ function alifForward( zit,
exInType,
wRecChange,
neuronInactivityCounter,
synapticActivityCounter,
synapseReconnectDelayCounter,
epsilonRecA,
a,
avth,
@@ -493,9 +493,9 @@ function alifForward( zit,
# count synaptic inactivity
if !iszero(wRec[i1,i2,i3,i4]) # check if this is wRec subscription
if !iszero(zit[i1,i2,i3,i4]) # synapse is active
synapticActivityCounter[i1,i2,i3,i4] += 1
synapseReconnectDelayCounter[i1,i2,i3,i4] += 1
else # synapse is inactive
synapticActivityCounter[i1,i2,i3,i4] += 0
synapseReconnectDelayCounter[i1,i2,i3,i4] += 0
end
end
# voltage regulator