openCL-矩阵相乘

本文介绍了使用OpenCL进行矩阵相乘的示例,来源于AMD异构大赛提供的书籍,并进行了个人扩展。虽然尚未掌握性能分析,但已经实现了基本功能。主要涉及AMD APP KernelAnalyzer工具的初次使用体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是AMD异构大赛发的书上的例子,我自己加了一些东西,实现了一下。不过还没有学会如何分析运行的时间,先贴上代码

这是第一次用amd APP KernelAnalyzer感觉还可以吧,

simpleMultiply.cl

// Enter your kernel in this window
__kernel                                         
void simpleMultiply(__global float* outPutC,             
int widthA,                                   
int heightA,                                     
int widthB ,                                     
int heightB ,                                    
 __global float* inputA ,                        
__global  float* inputB                          
 )                                               
{                                                
   int row = get_global_id(1);                    
   int col = get_global_id(0);                      
   float sum = 0.0f  ;                             
   for(int i=0;i<widthA; i++)                     
   {                                              
        sum += inputA[row*widthA+i] * inputB[i*widthB+col]; 
    }                                            
   outPutC[row*widthB+col] = sum;                        
} ;              

main.cpp

/*
   项目:openCL的矩阵相乘
   作者:刘荣
   时间:2012.11.20
*/
#include <iostream>
#include<time.h>
#include <string> 
#include<math.h>
#include <vector>
#include <CL/cl.h>
#include <fstream>
using namespace std;
//kernel函数
std::string
convertToString(const char *filename)//将kernel源码,即自己写的并行化的函数,转化成字符串
{
    size_t size;
    char*  str;
    std::string s;

    std::fstream f(filename, (std::fstream::in | std::fstream::binary));

    if(f.is_op
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值