Skip to content

coderboyisongithub/Synapse

Repository files navigation

synapse

Synapse

still brewing 🍵

Building instruction

windows (x64) 🪟

  • git clone --recursive https://github.com/coderboyisongithub/Synapse.git
  • Open powershell in same cloned directory as working directory. powershell or pwsh for powershell 7+
  • In powershell run .\bootstrap.ps1
  • Wait for terminal to ask for target generators.

Total build will take time(about three spotify music)

This will install dependency and configure Cmake for you and after configuration you will need to build the project using your generator (Xcode,Ninja,Make or Visual studio)

Linux (x64) 💽

Getting your system ready first.

sudo apt install cmake zip wget curl ninja-build build-essential pkg-config autoconf
sudo apt install clang libc++-dev libc++abi-dev
  • git clone --recursive https://github.com/coderboyisongithub/Synapse.git
  • Open terminal in same cloned directory as working directory.
  • It has bootstrap script for to ensure one click build.
  • First change permission of bootstrap chmod +x bootstrap-linux.sh
  • ./bootstrap-linux.sh
  • Wait for terminal to ask for target generators.

Total build will take time(about three spotify music)

This will install dependency and configure Cmake for you and after configuration you will need to build the project using your generator

Matf

Matf is n-dimensional matrix type in synapse. This is foundation for further implementation in this project. This matrix system is one of the core design of synapse.

A Matf can be instantiated using initializer list right now. further work is on the way. Lets create a 2x2 matrix and an 2x2 identity matrix

	Matf w3{ {1,1},{1,1} };
	Matf idt{ {1,0},{0,1} };

To see the result Matf has print function.

w1.print("This is a weight matrix"); // print with a message
idt.print(); //print without message.

Matf right now provides basic matrix operation possible including (+, -,and*) element wise scalar division is one its way.

It can be demonstrated with following example

Matf w3{ {1,1},{1,1} };
Matf idt{ {1,0},{0,1} };
//w2.print("weight02");
Matf w4 = w3;



w3.print("matrix w3");
w4.print("matrix w4 copy-w3");
Matf w5 = std::move(w3);

w5.print("matrix w5 move-w3");

(idt - idt).print("diff idt ");

(idt + idt).print("sum idt");
(idt * idt).print("mul idt");

//w3.print("w3 after moved");// this will trigger error as w3 has been moved to w5;

UPDATE: Matf implements move semantics on operators. Results are moved instead of being copied, avoiding expensive copy constructor call.

Thats all for now...

I am looking for contributors for this project

About

Brewing 🍵

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages