Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Go implementation of BLAS (Basic Linear Algebra Subprograms)
Assembly Go
branch: master

Merge pull request #3 from garyburd/patch-1

Update documentation link in README.md
latest commit 58548894c2
@ziutek authored
Failed to load latest commit information.
.gitignore Initial commit
LICENSE Srot and Drot added
README.md Update documentation link in README.md
common.go Idamax and Dswap added
d_test.go Fix dscal bounds checking bug
dasum.go Makefile removed
dasum_amd64.s Fix for go1.1 64-bit ints and pointers on amd64
daxpy.go Makefile removed
daxpy_amd64.s Fix for go1.1 64-bit ints and pointers on amd64
dcopy.go Makefile removed
dcopy_amd64.s Fix for go1.1 64-bit ints and pointers on amd64
ddot.go Makefile removed
ddot_amd64.s Fix for go1.1 64-bit ints and pointers on amd64
dgemv.go Drotmg added (not tested!)
dnrm2.go Makefile removed
dnrm2_amd64.s Fix for go1.1 64-bit ints and pointers on amd64
doc.go Ddot, Dnrm2, Dasum implemented
drot.go Makefile removed
drot_amd64.s Fix for go1.1 64-bit ints and pointers on amd64
drotg.go Makefile removed
drotg_amd64.s Fix bug in Xrotg when a == b == 0
drotmg.go Drotmg added (not tested!)
dscal.go Makefile removed
dscal_amd64.s Fix for go1.1 64-bit ints and pointers on amd64
dswap.go Makefile removed
dswap_amd64.s Fix for go1.1 64-bit ints and pointers on amd64
idamax.go Makefile removed
idamax_amd64-simd_broken Fixed Idamax
idamax_amd64.s Fix for go1.1 64-bit ints and pointers on amd64
isamax.go Makefile removed
isamax_amd64.s Fix for go1.1 64-bit ints and pointers on amd64
s_test.go Makefile removed
sasum.go Makefile removed
sasum_amd64.s Fix for go1.1 64-bit ints and pointers on amd64
saxpy.go Makefile removed
saxpy_amd64.s Fix for go1.1 64-bit ints and pointers on amd64
scopy.go Makefile removed
scopy_amd64.s Fix for go1.1 64-bit ints and pointers on amd64
sdot.go Makefile removed
sdot_amd64.s Fix for go1.1 64-bit ints and pointers on amd64
sdsdot.go Makefile removed
sdsdot_amd64.s Fix for go1.1 64-bit ints and pointers on amd64
simd.txt Ddot, Dnrm2, Dasum implemented
snrm2.go Makefile removed
snrm2_amd64.s Fix for go1.1 64-bit ints and pointers on amd64
srot.go Makefile removed
srot_amd64.s Fix for go1.1 64-bit ints and pointers on amd64
srotg.go Makefile removed
srotg_amd64.s Fix bug in Xrotg when a == b == 0
sscal.go Makefile removed
sscal_amd64.s Fix for go1.1 64-bit ints and pointers on amd64
sswap.go Makefile removed
sswap_amd64.s Fix for go1.1 64-bit ints and pointers on amd64
stubs.bash Makefile removed
stubs_386.s Makefile removed
stubs_arm.s Makefile removed

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

Something went wrong with that request. Please try again.