Go implementation of BLAS (Basic Linear Algebra Subprograms)
Assembly Go Shell
Latest commit 5854889 Nov 12, 2013 @ziutek Merge pull request #3 from garyburd/patch-1
Update documentation link in README.md
Permalink
Failed to load latest commit information.
.gitignore Initial commit Oct 21, 2011
LICENSE Srot and Drot added Nov 27, 2011
README.md Update documentation link in README.md Nov 11, 2013
common.go Idamax and Dswap added Oct 26, 2011
d_test.go Fix dscal bounds checking bug Jan 17, 2013
dasum.go Makefile removed Mar 6, 2012
dasum_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 Jun 3, 2013
daxpy.go Makefile removed Mar 6, 2012
daxpy_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 Jun 3, 2013
dcopy.go Makefile removed Mar 6, 2012
dcopy_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 Jun 3, 2013
ddot.go Makefile removed Mar 6, 2012
ddot_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 Jun 3, 2013
dgemv.go Drotmg added (not tested!) Nov 27, 2011
dnrm2.go Makefile removed Mar 6, 2012
dnrm2_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 Jun 3, 2013
doc.go Ddot, Dnrm2, Dasum implemented Oct 21, 2011
drot.go Makefile removed Mar 6, 2012
drot_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 Jun 3, 2013
drotg.go Makefile removed Mar 6, 2012
drotg_amd64.s Fix bug in Xrotg when a == b == 0 Dec 2, 2011
drotmg.go Drotmg added (not tested!) Nov 27, 2011
dscal.go Makefile removed Mar 6, 2012
dscal_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 Jun 3, 2013
dswap.go Makefile removed Mar 6, 2012
dswap_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 Jun 3, 2013
idamax.go Makefile removed Mar 6, 2012
idamax_amd64-simd_broken Fixed Idamax Nov 12, 2011
idamax_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 Jun 3, 2013
isamax.go Makefile removed Mar 6, 2012
isamax_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 Jun 3, 2013
s_test.go Makefile removed Mar 6, 2012
sasum.go Makefile removed Mar 6, 2012
sasum_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 Jun 3, 2013
saxpy.go Makefile removed Mar 6, 2012
saxpy_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 Jun 3, 2013
scopy.go Makefile removed Mar 6, 2012
scopy_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 Jun 3, 2013
sdot.go Makefile removed Mar 6, 2012
sdot_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 Jun 3, 2013
sdsdot.go Makefile removed Mar 6, 2012
sdsdot_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 Jun 3, 2013
simd.txt Ddot, Dnrm2, Dasum implemented Oct 21, 2011
snrm2.go Makefile removed Mar 6, 2012
snrm2_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 Jun 3, 2013
srot.go Makefile removed Mar 6, 2012
srot_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 Jun 3, 2013
srotg.go Makefile removed Mar 6, 2012
srotg_amd64.s Fix bug in Xrotg when a == b == 0 Dec 2, 2011
sscal.go Makefile removed Mar 6, 2012
sscal_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 Jun 3, 2013
sswap.go Makefile removed Mar 6, 2012
sswap_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 Jun 3, 2013
stubs.bash Makefile removed Mar 6, 2012
stubs_386.s Makefile removed Mar 6, 2012
stubs_arm.s Makefile removed Mar 6, 2012

README.md

Go implementation of BLAS (Basic Linear Algebra Subprograms)

Any function is implemented in generic Go and if it is justified, it is optimized for AMD64 (using SSE2 instructions).

AMD64 implementation uses MOVUPS/MOVUPD instructions if all strides equal to 1 so it run fast on Nehalem, Sandy Bridge and newer processors but relatively slow on older processors.

Any implemented function has its own unity test and benchmark.

Implemented functions

Level 1

Sdsdot, Sdot, Ddot, Snrm2, Dnrm2, Sasum, Dasum, Isamax, Idamax, Sswap, Dswap, Scopy, Dcopy, Saxpy, Daxpy, Sscal, Dscal, Srotg, Drotg, Srot, Drot

Level 2

not implemented

Level 3

not implemented

Example benchmarks

FunctionGeneric GoOptimized for AMD64
Ddot2825 ns/op895 ns/op
Dnrm22787 ns/op597 ns/op
Dasum3145 ns/op560 ns/op
Sdsdot3133 ns/op1733 ns/op
Sdot2832 ns/op508 ns/op

Documentation

http://godoc.org/github.com/ziutek/blas