Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Go implementation of BLAS (Basic Linear Algebra Subprograms)

branch: master

Merge pull request #3 from garyburd/patch-1

Update documentation link in README.md
latest commit 58548894c2
Michał Derkacz authored
Octocat-spinner-32 .gitignore Initial commit October 21, 2011
Octocat-spinner-32 LICENSE Srot and Drot added November 27, 2011
Octocat-spinner-32 README.md Update documentation link in README.md November 11, 2013
Octocat-spinner-32 common.go Idamax and Dswap added October 26, 2011
Octocat-spinner-32 d_test.go Fix dscal bounds checking bug January 17, 2013
Octocat-spinner-32 dasum.go Makefile removed March 06, 2012
Octocat-spinner-32 dasum_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 June 03, 2013
Octocat-spinner-32 daxpy.go Makefile removed March 06, 2012
Octocat-spinner-32 daxpy_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 June 03, 2013
Octocat-spinner-32 dcopy.go Makefile removed March 06, 2012
Octocat-spinner-32 dcopy_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 June 03, 2013
Octocat-spinner-32 ddot.go Makefile removed March 06, 2012
Octocat-spinner-32 ddot_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 June 03, 2013
Octocat-spinner-32 dgemv.go Drotmg added (not tested!) November 27, 2011
Octocat-spinner-32 dnrm2.go Makefile removed March 06, 2012
Octocat-spinner-32 dnrm2_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 June 03, 2013
Octocat-spinner-32 doc.go Ddot, Dnrm2, Dasum implemented October 21, 2011
Octocat-spinner-32 drot.go Makefile removed March 06, 2012
Octocat-spinner-32 drot_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 June 03, 2013
Octocat-spinner-32 drotg.go Makefile removed March 06, 2012
Octocat-spinner-32 drotg_amd64.s Fix bug in Xrotg when a == b == 0 December 02, 2011
Octocat-spinner-32 drotmg.go Drotmg added (not tested!) November 27, 2011
Octocat-spinner-32 dscal.go Makefile removed March 06, 2012
Octocat-spinner-32 dscal_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 June 03, 2013
Octocat-spinner-32 dswap.go Makefile removed March 06, 2012
Octocat-spinner-32 dswap_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 June 03, 2013
Octocat-spinner-32 idamax.go Makefile removed March 06, 2012
Octocat-spinner-32 idamax_amd64-simd_broken Fixed Idamax November 12, 2011
Octocat-spinner-32 idamax_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 June 03, 2013
Octocat-spinner-32 isamax.go
Octocat-spinner-32 isamax_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 June 03, 2013
Octocat-spinner-32 s_test.go Makefile removed March 06, 2012
Octocat-spinner-32 sasum.go Makefile removed March 06, 2012
Octocat-spinner-32 sasum_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 June 03, 2013
Octocat-spinner-32 saxpy.go Makefile removed March 06, 2012
Octocat-spinner-32 saxpy_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 June 03, 2013
Octocat-spinner-32 scopy.go Makefile removed March 06, 2012
Octocat-spinner-32 scopy_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 June 03, 2013
Octocat-spinner-32 sdot.go Makefile removed March 06, 2012
Octocat-spinner-32 sdot_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 June 03, 2013
Octocat-spinner-32 sdsdot.go
Octocat-spinner-32 sdsdot_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 June 03, 2013
Octocat-spinner-32 simd.txt Ddot, Dnrm2, Dasum implemented October 21, 2011
Octocat-spinner-32 snrm2.go Makefile removed March 06, 2012
Octocat-spinner-32 snrm2_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 June 03, 2013
Octocat-spinner-32 srot.go Makefile removed March 06, 2012
Octocat-spinner-32 srot_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 June 03, 2013
Octocat-spinner-32 srotg.go Makefile removed March 06, 2012
Octocat-spinner-32 srotg_amd64.s Fix bug in Xrotg when a == b == 0 December 02, 2011
Octocat-spinner-32 sscal.go Makefile removed March 06, 2012
Octocat-spinner-32 sscal_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 June 03, 2013
Octocat-spinner-32 sswap.go Makefile removed March 06, 2012
Octocat-spinner-32 sswap_amd64.s Fix for go1.1 64-bit ints and pointers on amd64 June 03, 2013
Octocat-spinner-32 stubs.bash Makefile removed March 06, 2012
Octocat-spinner-32 stubs_386.s Makefile removed March 06, 2012
Octocat-spinner-32 stubs_arm.s Makefile removed March 06, 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

Function Generic Go Optimized for AMD64
Ddot 2825 ns/op 895 ns/op
Dnrm2 2787 ns/op 597 ns/op
Dasum 3145 ns/op 560 ns/op
Sdsdot 3133 ns/op 1733 ns/op
Sdot 2832 ns/op 508 ns/op

Documentation

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

Something went wrong with that request. Please try again.