From 548f2663facd585687fd2bb711b61a9250b850df Mon Sep 17 00:00:00 2001 From: tonaerospace Date: Sat, 20 May 2023 21:22:56 +0700 Subject: [PATCH] add multithreading --- Manifest.toml | 2 +- Project.toml | 1 + src/forward.jl | 10 +++++----- src/learn.jl | 10 +++++----- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/Manifest.toml b/Manifest.toml index 0080e6f..fd4103b 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -2,7 +2,7 @@ julia_version = "1.9.0" manifest_format = "2.0" -project_hash = "6da2bd801ebd94457c5a5cb36ae71250437066e8" +project_hash = "b9e7ae4b78dc59a5adb629a04e856c4fedc6fb60" [[deps.AbstractFFTs]] deps = ["LinearAlgebra"] diff --git a/Project.toml b/Project.toml index 96731de..1716df5 100644 --- a/Project.toml +++ b/Project.toml @@ -7,6 +7,7 @@ version = "0.1.0" Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c" GeneralUtils = "c6c72f09-b708-4ac8-ac7c-2084d70108fe" +JSON3 = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" diff --git a/src/forward.jl b/src/forward.jl index 5aa6bca..c8bb273 100644 --- a/src/forward.jl +++ b/src/forward.jl @@ -2,7 +2,7 @@ module forward using Flux.Optimise: apply! -using Statistics, Flux, Random, LinearAlgebra +using Statistics, Flux, Random, LinearAlgebra, JSON3 using GeneralUtils using ..types, ..snn_utils @@ -77,8 +77,8 @@ function (kfn::kfn_1)(m::model, input_data::AbstractVector) kfn.firedNeurons_t0 = [n.z_t for n in kfn.neuronsArray] #TODO check if it is used? - #CHANGE Threads.@threads for n in kfn.neuronsArray - for n in kfn.neuronsArray + Threads.@threads for n in kfn.neuronsArray + # for n in kfn.neuronsArray n(kfn) end @@ -88,8 +88,8 @@ function (kfn::kfn_1)(m::model, input_data::AbstractVector) kfn.firedNeurons |> unique! # use for random new neuron connection end - # Threads.@threads for n in kfn.outputNeuronsArray - for n in kfn.outputNeuronsArray + Threads.@threads for n in kfn.outputNeuronsArray + # for n in kfn.outputNeuronsArray n(kfn) end diff --git a/src/learn.jl b/src/learn.jl index ff1a9f5..3991f6d 100644 --- a/src/learn.jl +++ b/src/learn.jl @@ -2,7 +2,7 @@ module learn using Flux.Optimise: apply! -using Statistics, Flux, Random, LinearAlgebra +using Statistics, Flux, Random, LinearAlgebra, JSON3 using GeneralUtils using ..types, ..snn_utils @@ -30,8 +30,8 @@ function learn!(kfn::kfn_1, correctAnswer::AbstractVector) kfnError = (kfn.outputNeuronsArray[i].v_th - kfn.outputNeuronsArray[i].vError) * 100 / kfn.outputNeuronsArray[i].v_th - # Threads.@threads for n in kfn.neuronsArray - for n in kfn.neuronsArray + Threads.@threads for n in kfn.neuronsArray + # for n in kfn.neuronsArray learn!(n, kfnError) end @@ -41,8 +41,8 @@ function learn!(kfn::kfn_1, correctAnswer::AbstractVector) # wrap up learning session if kfn.learningStage == "end_learning" - # Threads.@threads for n in kfn.neuronsArray - for n in kfn.neuronsArray + Threads.@threads for n in kfn.neuronsArray + # for n in kfn.neuronsArray if typeof(n) <: computeNeuron wSign_0 = sign.(n.wRec) # original sign n.wRec += n.wRecChange # merge wRecChange into wRec