Skip to content
Extraits de code Groupes Projets
Valider 1eb2c355 rédigé par JordanHanotiaux's avatar JordanHanotiaux
Parcourir les fichiers

Update matrix_opencl.cpp

parent b320a585
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -366,7 +366,18 @@ MatrixCL MatrixCL::operator*(const MatrixCL& other) const { ...@@ -366,7 +366,18 @@ MatrixCL MatrixCL::operator*(const MatrixCL& other) const {
kernel.setArg(4, cols_); kernel.setArg(4, cols_);
kernel.setArg(5, other.cols_); kernel.setArg(5, other.cols_);
queue_.enqueueNDRangeKernel(kernel, cl::NullRange, cl::NDRange(rows_, cols_)); const size_t TILE_SIZE = 16;
// Align global work size to the nearest multiple of TILE_SIZE
size_t global_rows = ((rows_ + TILE_SIZE - 1) / TILE_SIZE) * TILE_SIZE;
size_t global_cols = ((other.numCols() + TILE_SIZE - 1) / TILE_SIZE) * TILE_SIZE;
cl::NDRange global_work_size(global_rows, global_cols);
cl::NDRange local_work_size(TILE_SIZE, TILE_SIZE);
queue_.enqueueNDRangeKernel(kernel, cl::NullRange, global_work_size, local_work_size);
//queue_.enqueueNDRangeKernel(kernel, cl::NullRange, cl::NDRange(rows_, cols_));
} catch (const cl::Error& err) { } catch (const cl::Error& err) {
throw std::runtime_error("OpenCL error during matrix multiplication: " + std::string(err.what()) + " (" + std::to_string(err.err()) + ")"); throw std::runtime_error("OpenCL error during matrix multiplication: " + std::string(err.what()) + " (" + std::to_string(err.err()) + ")");
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter