scieee AI-readable full text Open interactive document viewer

WebSnapse v3: Optimization of the Web-based Simulator of Spiking Neural P System using Matrix Representation, WebAssembly and Other Tools

Gallos, Louie; Sotto, Jose Lorenzo; Cabarle, Francis George C.; Adorna, Henry N.

Abstract

Spiking Neural P systems (SN P system) are a kind of distributed and parallel computational model under membrane computing inspired by how neurons typically communicate with each other through the sending of spikes between synapses. To further study SN P systems, various dedicated simulators have been developed. WebSnapse, a web-based simulator of SN P systems, has been used to serve as visual aid for creating, modifying, and simulating SN P systems. This was upgraded on WebSnapse v2.0 by improving existing functionalities and adding support for more variants of SN P system. However, WebSnapse suffered performance and stability issues, especially when simulating larger SN P systems. This research aims to optimize the performance and stability of WebSnapse using a new way of computing the next state of the system while achieving feature parity with WebSnapse v2.0 and adding LaTeX support for rule input and visualization.

Full text

WebSnapse v3: Optimization of the Web-based Simulator of Spiking Neural P System using Matrix Representation, WebAssembly and Other Tools Louie Gallos1, Jose Lorenzo Sotto1, Francis George C. Cabarle1,2*, and Henry N. Adorna1 1Dept. of Computer Science, College of Engineering University of the Philippines Diliman, Diliman, Quezon City, 1101, Philippines; [email protected], [email protected], [email protected], [email protected] 2Research Group on Natural Computing, Dept. of Computer Science and AI, I3US, SCORE lab, Universidad de Sevilla, Avda. Reina Mercedes s/n, 41012, Sevilla, Spain [email protected] Abstract. Spiking Neural P systems (SN P system) are a kind of distributed and parallel computational model under membrane computing inspired by how neurons typically communicate with each other through the sending of spikes between synapses. To further study SN P systems, various dedicated simulators have been developed. WebSnapse, a web-based simulator of SN P systems, has been used to serve as visual aid for creating, modifying, and simulating SN P systems. This was upgraded on WebSnapse v2.0 by improving existing functionalities and adding support for more variants of SN P system. However, WebSnapse suffered performance and stability issues, especially when simulating larger SN P systems. This research aims to optimize the performance and stability of WebSnapse using a new way of computing the next state of the system while achieving feature parity with WebSnapse v2.0 and adding LaTeX support for rule input and visualization. Keywords: membrane computing, spiking neural p system, matrices, simulation 1 INTRODUCTION Computational models that are abstracted from the architecture and the functioning of living cells and its possible applications in modern computing are studied in an area of natural computing called membrane computing [17,18]. Under membrane computing, a kind of distributed and parallel-like neural-like computation model called spiking neural P systems (SN P systems) were proposed by [13], inspired by how neurons typically communicate with each other through sending of spikes between the synapses. For more information, some recent surveys on theory and main results are in [14], implementations and applications in [8], with a chapter on SN P systems in the handbook in [19]. Formally, SN P systems is defined as: Definition 1 (SN P system). A spiking neural P system (SN P system) of a finite degree m≥1is a construct of the form Π= (O, σ1, . . . , σm, syn, out),where: 1. O={a}is the singleton alphabet (ais called spike). 2. σ1, ..., σmare neurons, of the form: σi= (ni, Ri),1≤i≤m, where: (a) ni≥0is the initial number of spikes contained by the neuron (b) Riis a finite set of rules of the following forms: (1) E/ar→a;t, where Eis a regular expression over O,r≥1and t≥0 (2) as→λ, for some s≥1, with the restriction that as/∈L(E)for any rule E/ar→a;tof type (1) from Ri; 3. syn ⊆ {1,2, ..., m}×{1,2, ..., m}with (i, i)/∈syn for 1≤i≤m(synapses among neurons); 4. i0∈1,2, ..., m indicates the output neuron Example 1. Let Π= ({a}, σ1, σ2, σ3, σ4, sys) where σ1= (2, R1) with R1={a2/a → a, a →λ};σ2= (1, R2) with R2={a→a; 0, a →a; 1};σ3= (3, R3) with R3={a3→a; 0, a →a; 1, a2→λ}; and σ4is the output neuron (environment); sys ={(1,2),(1,3),(2,1),(2,3),(3,4)}, visualized on Figure 1. The SN P system in Figure 1 generates the set {2n|n≥1}or the set of all even natural numbers. For further details, including semantics of rule applications of SN P systems, the reader is referred to [13,19,14]. Fig. 1. SN P system that generates all even natural numbers. To further study SN P systems, web-based simulators are used. WebSnapse, for example, was developed by [7] to serve as visual aid in showing how SN P systems work in a way that is easily understandable to users even without background 416 L. Gallos et al. knowledge. WebSnapse was extended to improve user experience and include more variants of SN P systems, namely, with weighted synapses and input neurons [6]. However, both versions of the simulator suffered performance and stability issues in simulating more complex SN P systems [7][6]. Both versions also does not exactly follow the syntax in which rules are written in literature. In this research, the intentions are to improve the performance and stability of WebSnapse v2.0 while achieving at least feature parity using tools such as WebAssembly and implement LaTeX support for rule input and visualization in Web- Snapse. 2 MATRIX REPRESENTATION OF SN P SYSTEM SN P Systems can be represented through matrices and vectors. This representation reduces the computation of configuration transitions to matrix operations. These are the parts of the representation for SN P systems with no delay as defined by [20]: Definition 2 (Configuration Vectors). Let Πbe an SN P system with mneurons, the vector C0= (n1, n2, ..., nm)is called the initial configuration vector of Π, where niis the amount of the initial spikes present in neuron σi, i = 1,2, ..., m before a computation starts. In a computation, for any k∈N, the vector Ck= (n(k) 1, n(k) 2, ..., n(k) m)is called the kth configuration vector of the system, where n(k) iis the amount of spikes in neuron σi, i = 1,2, ..., m after the kth step of the computation. In Example 1, the initial configuration vector C(0) =2 1 3 0. Definition 3 (Spiking Vectors). Let Πbe an SN P system with mneurons and nrules, and Ck= (n(k) 1, n(k) 2, ..., n(k) m)be the kth configuration vector of Π. Assume that a total order d: 1, ..., n is given for all nrules, so the rules can be referred to as r1, ..., rn. A spiking vector s(k)is defined as follows: s(k)= (r(k) 1, r(k) 2, ..., r(k) n),(1) r(k) i=       1,if the regular expression Eiof rule riis satisfied by the number of spiked n(k) j(rule riis in neuron σj) and rule riis chosen and applied; 0otherwise. (2) In Example 1, the spiking vector Sp(0) could either be 1010100or 1001100due to two rules on σ2being applicable to the amount of spikes contained. WebSnapse v3: Optimization of the Web-based Simulator 417 Definition 4 (Spiking Transition Matrix). Let Πbe an SN P system with m neurons and nrules, and d: 1, ..., n be a total order given for all the nrules. The spiking transition matrix of the system Π,MΠ, is defined as follows: MΠ= [aij]n×m(3) where: aij =       −c, if rules riis in neuron σjand it is applied consuming cspikes; p, if rule riis in the neuron σs(s=jand (s, j ∈syn)) and is applied producing p spikes; 0,if rule riis in neuron σs((s=j) and (s, j)/∈syn) In Example 1, MΠ=           −1 1 1 0 −1 0 0 0 1−110 1−110 0 0 −3 1 0 0 −1 1 0 0 −2 0           (4) This matrix represents the spikes produced and consumed by the rules in the system. To take into account rules with delay, [4] defined additional vectors such as: Definition 5 (Delay Vector). The vector D= (d1, d2, ..., dm)is the delay vector that indicates the amount of delay di≥0of the rule ri, for each i= 1,2, ..., m In Example 1, Dis 0001010. Definition 6 (Loss Vector). The vector Lv(k)= (lv1, lv2, ..., lvm)is the loss vector where each lvifor each neuron σi, i = 1,2, ..., m, contains the number of spikes consumed, c, if σiapplies riat time step k. Definition 7 (Gain Vector). The vector Gv(k)= (gv1, gv2, ..., gvm)is the gain vector which contains the total number of spikes gained, gvifor each neuron σi, i = 1,2, ..., m at the kth step of computation not considering whether the neuron is open or closed. Definition 8 (Status Vector). The vector St(k)= (st1, st2, ..., stm)is called the status vector at the kth step of computation where each sti, i = 1,2, ..., m determines the status of the neuron m sti=(1if neuron m is open 0if neuron m is closed (5) 418 L. Gallos et al. Note that a neuron is said to be closed when a rule with a delay is activated and is waiting for that delay to become 0. A neuron that is closed may not receive any incoming spike. Definition 9 (Indicator Vector). The vector Iv(k)= (iv1, iv2, ..., ivn)is called the indicator vector at the kth step of computation where each ivi, i = 1,2, ..., n determines whether the rule nis fired at time step k. In Example 1, Iv(0) is 1010100if the first rule in σ2is chosen. If the second rule is chosen, Iv(0) is 1000100, reflecting that the chosen rule is delayed in t= 0. Definition 10 (Net Gain Vector). Let Lv(k), Gv(k)and St(k)be the loss vector, gain vector, and status vector at time step k, respectively. The net gain vector NG(k) at time step kis defined as NG(k)=St(k)⊙GV (k)+LV (k)(6) Note that on the definition above, St(k)is updated first before computing NG(k). If it is to be defined that St(0) = 1 since all neurons are open initially, then the net gain vector is defined instead as NG(k)=St(k+1) ⊙Gv(k)+Lv(k)(7) Referencing [4], [3] defined the following matrices: Definition 11 (Production Matrix). For an SN P system Πwith nrules and mneurons, a production matrix of Πis given by PMΠ= [pij]n×m,(8) where for each rule ri:E/ac→ap;d∈σj, we have pij =(p, if ri∈σs, s =jand (s, j)∈syn 0,otherwise (9) Definition 12 (Consumption Matrix). For an SN P system Πwith ntotal rules and mneurons, a production matrix of Πis given by CMΠ= [cij ]n×m, where for each rule ri:E/ac→ap;d∈σj, we have cij =   c, if ri∈σjand consumed c spikes 0,otherwise With the above definitions, the following lemmas are shown WebSnapse v3: Optimization of the Web-based Simulator 419 Lemma 1. Let Πbe an SN P system with delay, d > 0 Gv(k)=Iv(k)·P MΠ(10) Lemma 2. Let Πbe an SN P system with delay, d > 0 Lv(k)=−Sp(k)·CMΠ(11) Thus, the formula for NG(k)can also be defined as NG(k)=St(k+1) ⊙(Iv(k)·P MΠ)−Sp(k)·CMΠ(12) 3 EXTENSION OF MATRIX REPRESENTATION OF SN P SYSTEMS WITH DELAY AND INPUT SPIKES FROM ENVIRONMENT 3.1 Algorithm for computing the next state of the system In [3], the configuration vector at the next time step is computed by: C(k+1) =C(k)+St(k+1) ⊙(Iv(k)·P MΠ)−Sp(k)·CMΠ(13) [3] also related the MΠwith PMΠand CMΠ Collorary 1. For any SN P system Π PMΠ−CMΠ=MΠ(14) where MΠis the spiking transition matrix of Π What follows is a correction of the results from [3] where another way of computing the next configuration vector C(k+1) is proposed Theorem 1. Let Πbe an SN P systems with delay, d > 0. Then for k≥0, C(k+1) =C(k)+St(k+1) ⊙(Iv(k)·MΠ) (15) Proof. Let Πbe an SN P System with delay, d > 0. Given C(k)for some time step k, an indicator vector Iv(k)is specified to describe which rule is allowed to fire at time step k. Multiplying Iv(k)with P MΠgives us the gain vector Gv(k)that represents the amount of spikes produced by the respective rules at time step k. Assume St(0) =ˆ 1. To satisfy the condition that on time steps q, q + 1, ..., q +d−1 where qis the time step where a rule with delay d > 0 is chosen, incoming spikes should be ignored; the gain vector should be multiplied by the next status vector St(k+1). Assuming that spiking and spike consumption of a rule should be at the same time step, multiplying Iv(k)with CMΠgives us the loss vector Lv(k)that represents 420 L. Gallos et al. the amount of spikes consumed at time step k. Note that if St(k+1) i= 0, Lv(k) i= 0 as well. Since spikes on a neuron are only consumed once it opens from a closed state, no spikes are consumed on time steps q, q + 1, ..., q +d−1 on a closed neuron, where qis the time step where a rule with delay d > 0 is chosen. Formally, the elements of Lv(k)are: Lv(k) i=(0,if St(k+1) i= 0 Lv(k) i,otherwise ,∀i, 1≤i≤n(16) where nis the number of neurons. By this definition, we can multiply St(k+1) element-wise with Lv(k)and we should still get Lv(k): St(k+1) i×Lv(k) i=(St(k+1) i×0,if St(k+1) i= 0 St(k+1) i×Lv(k) i,otherwise = (17) (0×0 if St(k+1) i= 0 1×Lv(k) i,otherwise =(0,if St(k+1) i= 0 Lv(k) i,otherwise Thus, we can say that Lv(k)=St(k+1) ⊙(Iv(k)·CMΠ) and we get the following net gain vector: NG(k)=St(k+1) ⊙(Iv(k)·P MΠ)−St(k+1) ⊙(Iv(k)·CMΠ) (18) By the distributive property of Hadamard multiplication and matrix multiplication, both the next status vector and indicator vector can be factored out, resulting in St(k+1) ⊙(Iv(k)·(P MΠ−CMΠ)). Substituting PMΠ−CMΠwith MΠfrom Corollary 4, and then adding the net gain vector to the current configuration vector, the following equation is obtained: C(k+1) =C(k)+St(k+1) ⊙(Iv(k)·MΠ) (19) ■ Using this method, the amount of computation needed is reduced since the matrix multiplication needed is reduced to one instead of two. Also note that in the proposed method of [4], the spike consumption of a rule happens first then, after some delay, follows the production of spikes. In contrast, production and consumption of spikes happens at the same time in this method. Ultimately, the results will be the same since the spikes inside a closed neuron cannot change. WebSnapse v3: Optimization of the Web-based Simulator 421 Example 2. Using Example 1 and choosing the 2nd rule in σ2, the computation of the next configuration vector is as follows: C(1) =C(0) +St(1) ⊙(Iv(0) ·MΠ) = 2 1 3 0+1 0 1 1⊙(1000100·           −1 1 1 0 −1 0 0 0 1−110 1−110 0 0 −3 1 0 0 −1 1 0 0 −2 0           ) = 2 1 3 0+−1 0 −2 1=1 1 1 1(20) To compute the indicator vector Iv(k), the following vectors are defined: Definition 13 (Decision Vector). The vector Dcs(k)= (dcs1, dcs2, ..., dcsn), where nis the total number of rules in the system, is the decision vector that indicates whether a rule is chosen/applied at time step k. Note that this is only a renaming of the spiking vector Sp(k)since it makes more sense in the context of systems with delays Definition 14 (Delay Indicator Vector). The delay indicator vector Div(k) = (div1, div2, ..., divn), where nis the total number of rules in the system, is defined as divi=(1if riis scheduled to fire at some time d 0otherwise (21) Definition 15 (Delay Status Vector). The delay status vector Dst(k)= (dst1, dst2, ..., dstm), where m is the number of neurons in the system, indicates the amount of delay dsti≥0the neuron σihas at time step k Note that this is a redefinition of what is defined by [3] from rule-wise to neuronwise to avoid redundancy. Using the above definitions, these are the algorithms to obtain the next state of the system. Note that the pseudocode is vectorized, if possible, to take advantage of parallel computing. Algorithm 1 Compute Indicator Vector Require: Dst(k+1), Dcs(k), D, Div(k) 1: procedure getIndicatorVector 2: r←0 3: for i←0 to COUNT(σ) in Πdo 4: count ←COUNT(Rof σi) 5: Iv(k)[r:r+count]←(Dst(k+1) i= 0) and ((Dcs(k)[r:r+count] =  1 and D[r:r+count] =  0) or Div(k)[r:r+count] =  1) 6: r←r+count 7: end for 8: end procedure 422 L. Gallos et al. If the delay status vector becomes 0, it means that the neuron becomes open and can fire a rule. If a rule is chosen and it has no delay, it can immediately fire. Also, if there is a delayed rule and it becomes open, that delayed rule is to fire. Algorithm 2 Compute Next Delay Status Vector Require: Dcs(k), D, Dst(k) 1: procedure getNextDelayStatusVector 2: r←0 3: for i←0 to COUNT(σ) in Πdo 4: d←0 5: count ←COUNT(Rof σi) 6: for j←0 to count do 7: if Dcs(k) r+j= 1 then 8: d←Dr+j 9: break 10: end if 11: end for 12: Dst(k+1) i=Dst(k) i>0 ? Dst(k)−1 : d 13: r←r+count 14: end for 15: end procedure This procedure iterates over Dcs(k)to check which rule is chosen for each neuron, if any, and note the delay of that rule. Then, if the delay status dsti>0 (meaning that the neuron is closed), decrement dsti. Otherwise, dstibecomes the delay of the chosen rule. Algorithm 3 Compute Next Delay Indicator Vector Require: Div(k), Iv(k), Dcs(k), D 1: procedure getNextDelayIndicatorVector 2: Div(k+1) ←(Div(k)and not Iv(k)) or (Dcs(k)and D > 0) 3: end procedure The delay indicator diviis retained in the next time step if it is not yet fired. divialso becomes 1 if the corresponding rule riis chosen and it has a delay d > 0. These procedures are used in the following order to get the next state. WebSnapse v3: Optimization of the Web-based Simulator 423 Fig. 5. Sample Simple Complete System Fig. 6. One Spike-Chain system Computation Time Comparison Fig. 7. One Spike-Chain system Rendering Time Comparison Fig. 8. Simple Complete system Computation Time Comparison Fig. 9. Simple Complete system Computation Time Comparison 430 L. Gallos et al. 118.321ms. For a one spike-chain system, each neuron is connected to only two other neurons, the previous and the next neuron in the spike chain. This leads to lower computation and rendering time compared to complete simple systems. The upward trend of computation time and rendering time can be seen in both figures, as the node count or total number of neurons in the system increases. Fig. 6 and Fig. 7 show significant improvements in performance and runtime for Websnapse v3.0 versus the previous version when running a sequential SN P system. Simple Complete System Websnapse v3.0 was able to compute the next configuration vector in the simple complete system in an average time of 1.376 milliseconds while Websnapse v2.0 ceased computation and rendering at 100 neurons Fig. 8. Fig. 9 shows that the rendering took 2257.227 ms in v3.0. Since a simple complete graph with the same number of neurons as a one spike-chain system contains an exponentially larger number of synapses, it is expected that computation and rendering time will increase. Similarly for the computation time, Fig. 8 shows that as the number of neurons in the system increases, Websnapse v3.0 yields a far lower average computation time than the previous version; Websnapse v2.0 was unable to process the computation for a simple complete system with 100 neurons. For rendering time, an exponential increase is observed in Websnapse v3.0 while Websnapse v2.0 failed to render. 6 CONCLUSION The main goal of Websnapse v3.0 is to create a SN P system simulator that is performant and intuitive. Websnapse v2.0 already boasted such features but performance and stability-wise could still use some improvements. The implementation of Websnapse v3.0 using WebAssembly (WASM) with single instruction, multiple data (SIMD) allowed it to parallelize the computation of state vectors. Parallelization of this process made use of the matrix representation in 2 specifically for the algorithms used in computation for the states. WebSnapse v3.0 was successful in creating an updated version that fits the specification for WebSnapse while providing performance and stability improvements. As can be seen in Figures 6, 7, 8, 9, Websnapse v3.0 shows significant improvement in the computation and rendering time for systems that are either sequential or parallel over the previous version while also allowing simulations of up to 100 neurons or more which Websnapse v2.0 was unable to achieve. Websnapse v3.0 also improves usability and user-friendliness by including LaTeX syntax support, a new interface with more intuitive buttons that includes right-click capabilities for editing and deleting neurons and synapses. Overall, the development of WebSnapse v3.0 was a success. However, there are several things that can be improved. To render higher neuron count, implementing an alternative renderer can be explored such as rasterizing SVG to WebGL canvas or simplifying the rendering load such as rendering regular neurons as circles with a number instead to represent the number of spikes. Adding more quality-of-life WebSnapse v3: Optimization of the Web-based Simulator 431 features, such as selecting multiple neurons or synapses to move, delete, or duplicate, would also be nice. Implementing other SN P system variants on web simulators with matrix representation can also be explored. Improvements introduced in the present work can also be extended to the massively parallel simulators as in [4,2] and more recently in [11], as well as in hybrid simulators (combining web browsers and GPU access) in [16]. ACKNOWLEDGEMENTS The authors thank Jarred Luzada, Mutya Gulapa, and Daryll Ko for some technical aspects of our respective simulators and JSON file format. F.G.C. Cabarle was supported by the Dean Ruben A. Garcia PCA, and Project No. 222211 ORG from the Office of the Vice Chancellor for Research and Development, both from the University of the Philippines Diliman. F.G.C. Cabarle is also supported by QUAL21 008 USE project (PAIDI 2020 and FEDER 2014-2020 funds). H.N. Adorna would like to thank the support from DOST-ERDT research grants; Semirara Mining Corp. Professorial Chair for Computer Science of College of Engineering, UPDiliman; RLC grant from UPD-OVCRD. REFERENCES 1. Websnapse page. https://aclab.dcs.upd.edu.ph/productions/software/websnapse. 2. Blaine Corwyn D Aboy, Edward James A Bariring, Jym Paul Carandang, Francis George C Cabarle, Ren Tristan De La Cruz, Henry N Adorna, and Miguel ´ Angel Mart´ınez-del Amor. Optimizations in cusnp simulator for spiking neural p systems on cuda gpus. In 2019 International Conference on High Performance Computing & Simulation (HPCS), pages 535–542. IEEE, 2019. 3. Henry N Adorna. Matrix representations of spiking neural p systems: Revisited. arXiv preprint arXiv:2211.15156, 2022. 4. Jym Paul Carandang, John Matthew B Villaflores, Francis George C Cabarle, Henry N Adorna, and Miguel ´ Angel Mart´ınez del Amor. Cusnp: Spiking neural p systems simulators in cuda. Romanian Journal of Information Science and Technology (ROMJIST), 20 (1), 57-70., 2017. 5. Rodica Ceterchi and Alexandru Ioan Tomescu. Spiking neural p systems–a natural model for sorting networks. Proceedings of the Sixth Brainstorming Week on Membrane Computing, 93-105. Sevilla, ETS de Ingenier´ıa Inform´atica, 4-8 de Febrero, 2008, 2008. 6. Nathan Cruel, Coleen Quirim, and Francis George C Cabarle. Websnapse v2.0: Enhancing and extending the visual and web-based simulator of spiking neural p systems. In Pre-proceedings of the 11th Asian Conference on Membrane Computing, Quezon City, Philippines, pages 146–166, September 2022. 7. Annysia Glynis S Dupaya, Anica Clarice Antonella P Galano, Francis George C Cabarle, Ren Tristan De La Cruz, Korsie J Ballesteros, and Prometheus Peter L Lazo. A web-based visual simulator for spiking neural p systems. Journal of Membrane Computing, 4(1):21–40, 2022. 8. Songhai Fan, Prithwineel Paul, Tianbao Wu, Haina Rong, and Gexiang Zhang. On applications of spiking neural p systems. Applied Sciences, 10(20):7011, 2020. 432 L. Gallos et al. 9. Deepti Gandluri, Thomas Lively, and Ingvar Stepanyan. Fast, parallel applications with webassembly simd. https://v8.dev/features/simd, 2020. Accessed: October 1, 2023. 10. Mutya Gulapa, Jarred Sueo Luzada, Francis George C. Cabarle, Henry Adorna, Kelvin Bu˜no, and Daryll Ko. Websnapse reloaded: The next-generation spiking neural p system visual simulator using client-server architecture. In Shigeki Hagihara, Shin ya Nishizaki, Masayuki Numao, Jaime Caro, and Merlin Teodosia Suarez, editors, Pre-proc. 12th Workshop on Computation: Theory and Practice (WCTP2023), 4 to 6 December 2023, Chitose-city, Hokkaido, Japan, pages 511–536, 2023. 11. Rogelio V Gungon, Katreen Kyle M Hernandez, Francis George C Cabarle, Ren Tristan A De la Cruz, Henry N Adorna, Miguel ´ A Mart´ınez-del Amor, David Orellana- Mart´ın, and Ignacio P´erez-Hurtado. Gpu implementation of evolving spiking neural p systems. Neurocomputing, 503:140–161, 2022. 12. Miguel A Guti´errez-Naranjo and Alberto Leporati. Performing arithmetic operations with spiking neural p systems. Proc. of the Seventh Brainstorming Week on Membrane Computing, 1:181–198, 2009. 13. Mihai Ionescu, Gheorghe P˘aun, and Takashi Yokomori. Spiking neural p systems. Fundamenta informaticae, 71(2-3):279–308, 2006. 14. Alberto Leporati, Giancarlo Mauri, and Claudio Zandron. Spiking neural p systems: main ideas and results. Natural Computing, 21(4):629–649, 2022. 15. Alberto Leporati, Giancarlo Mauri, Claudio Zandron, Gheorghe P˘aun, and Mario J P´erez-Jim´enez. Uniform solutions to sat and subset sum by spiking neural p systems. Natural computing, 8(4):681–702, 2009. 16. Ayla Nikki L Odasco, Matthew Lemuel M Rey, and Francis George C Cabarle. Improving gpu web simulations of spiking neural p systems. Journal of Membrane Computing, pages 1–16, 2023. 17. Gheorghe P˘aun. Computing with membranes. Journal of Computer and System Sciences, 61(1):108–143, 2000. 18. Gheorghe Paun. Membrane computing. Scholarpedia, 5(1):9259, 2010. 19. Gheorghe P˘aun, Gzegorz Rozenberg, and Arto Salomaa, editors. The Oxford Handbook of Membrane Computing. Oxford Univeristy Press, 2010. 20. Xiangxiang Zeng, Henry Adorna, Miguel ´ Angel Mart´ınez del Amor, Linqiang Pan, and Mario J. P´erez-Jim´enez. Matrix representation of spiking neural p systems. In Membrane Computing, pages 377–391. Springer Berlin Heidelberg, 2010. Open Access This chapter is licensed under the terms of the Creative Commons Attribution- NonCommercial 4.0 International License (http://creativecommons.org/licenses/by-nc/4.0/), which permits any noncommercial use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license and indicate if changes were made. The images or other third party material in this chapter are included in the chapter's Creative Commons license, unless indicated otherwise in a credit line to the material. If material is not included in the chapter's Creative Commons license and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. WebSnapse v3: Optimization of the Web-based Simulator 433