# GPU610/DPS915 Student Resources

# Student Resources

The purpose of this page is to share useful information that can help groups with their game projects.

## BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen]

Note: This information applies to the **gsl_cblas** library

There are 2 main functions to use

### segmv<ref>http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm</ref>

void cblas_sgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy)<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref>

**order**

- Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.

**TransA**

- Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.

**M**

- represents:
- the number of rows in input matrix a
- the length of vector y, if 'N' or 'n' is used for the trans parameter
- the length of vector x, if 'T' or 't' is used for the trans parameter

- the number of rows in input matrix a
- The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)

**N**

- represents:
- the number of columns in input matrix a
- the length of vector x, if 'N' or 'n' is used for the trans parameter
- the length of vector y, if 'T' or 't' is used for the trans parameter

- the number of columns in input matrix a
- The number of columns must be greater than or equal to zero.

**alpha**

- is the scaling constant for matrix a

**A**

- is the input matrix of float (for sgemv) or double (for dgemv) values

**lda**

- is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.

**x**

- is the input vector of float (for sgemv) or double (for dgemv) values.

**incx**

- is the stride for vector x. It can have any value.

**beta**

- is the scaling constant for vector y

**y**

- is the output vector of float (for sgemv) or double (for dgemv) values.

**incy**

- is the stride for vector y. It must not be zero.

### segmm

https://scs.senecac.on.ca/~gpu610/pages/content/lines.html

## Getting Started on Mac

http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf

http://developer.nvidia.com/cuda/cuda-downloads

#### Troubleshooting

Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 Fix

## References

<references/>