nlesc-jcer / eigencuda Goto Github PK
View Code? Open in Web Editor NEWOffload Eigen operations to GPUs
License: Apache License 2.0
Offload Eigen operations to GPUs
License: Apache License 2.0
When invoking the right_matrix_tensor
and triple_tensor_product
the tensor is sent completely to GPU. But if the whole Tensor does not find in memory, the application obviously crashed with an out of memory
Implement Tensor-Matrix multplication using:
There is an issue when invoking the method triple_tensor_product
on rectangular matrices
Register the host memory to improve bandwidth utilization
Currently, all IO and Kernel operations happen in a single stream
. The performance would be significantly increase if we interleave multiple stream
s.
The Cublas gemm subroutine only needs the pointers to the arrays. Then passing the arrays stored in the main memory is unnecessary, instead pass the shapes of the arrays.
See unified memory
the dot
and the triplet_tensor_product
must release all the GPU resources once the computation is done
Currently, when copying back the matrix From the GPU to the main memory the stream is not synchronized and it could generate invalid results
Replace the call to cuBLAS by cuTensor
The following actions are required:
?gemm
shouldn't be class membersint
instead of unsigned
fun_alloc
and fun_free
should be renamed gpu_alloc
and gpu_free
respectivelyGiven a 3D tensor represented as a vector
of matrices, create an operation that performs the following multiplication in a GPU
std::vector<MatrixXd> rs;
MatrixXd mtx;
for (matrixXd &x: tensor) {
rs.push_back( x * mtx);
}
Should use self-hosted runner with GPU.
When iterating the 3-D tensor in the call to triple_tensor_product
the matrix elements of the tensor are never copy to the device producing always a matrix of zeros
Use the cuda-api-wrappers to improve the communication with cuda.
The following methods should take const to reference:
initialize_matrix
(private)dot
(public)triple_tensor_product
(public)Due to the transfer overhead it would be better to transfer to the GPU the two matrices at the same time instead of separately.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.