当前位置: 首页 > news >正文

深圳高端网站建设招聘深圳本地招聘网站

深圳高端网站建设招聘,深圳本地招聘网站,公司做网站的申请,wordpress动静分离openblas提供的sgemm有两种方式#xff0c;一种是通过cblas#xff0c;另一种是直接声明并调用 sgemm_ 其中#xff0c;cblas方式是更正规调用方法#xff1b; 1#xff0c;调用openblas的 sgemm 的两种方式 1.1 c语言程序中使用 sgemm hello_sgemm.c #include st… openblas提供的sgemm有两种方式一种是通过cblas另一种是直接声明并调用 sgemm_ 其中cblas方式是更正规调用方法 1调用openblas的 sgemm 的两种方式 1.1 c语言程序中使用 sgemm hello_sgemm.c #include stdlib.h #include stdio.h//#define CBLAS_USE 1 #ifdef CBLAS_USE #include cblas.h #else //extern C{void sgemm_( char * const transpa, char * const transpb, int *m, int *n,int *k, float *alpha, float *a, int *lda, float *b, int *ldb,float *beta, float *c, int *ldc ); //} #endifvoid init_matrix(int M, int N, float* A, int lda, int seed) {srand(seed);for(int i0; iM; i){for(int j0; jN; j){A[i j*lda] (float)rand()/RAND_MAX;}} }void print_matrix(int M, int N, float* A, int lda) {for(int i0; iM; i){for(int j0; jN; j){printf( %7.4f , A[i j*lda]);}printf(\n);} }int main() {int M 3;int N 3;int K 3;float* A NULL;float* B NULL;float* C NULL;int lda M;int ldb K;int ldc M;A (float*)malloc(lda*K* sizeof(float));B (float*)malloc(ldb*N* sizeof(float));C (float*)malloc(ldc*N* sizeof(float));init_matrix(M, K, A, lda, 2023); printf(\nA \n); print_matrix(M, K, A, lda);init_matrix(K, N, B, ldb, 2024); printf(\nB \n); print_matrix(K, N, B, ldb);init_matrix(M, N, C, ldc, 2025); printf(\nC \n); print_matrix(M, N, C, ldc);float alpha 1.0f;float beta 0.0f; #ifdef CBLAS_USEcblas_sgemm(CblasColMajor, CblasNoTrans, CblasNoTrans, M, N, K, 1.0, A, lda, B, ldb, 0.0, C, ldc);printf(C alpha*A*B beta*C cblas_sgemm()\n); print_matrix(M, N, C, ldc); #elsesgemm_(N, N, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc);printf(C alpha*A*B beta*C sgemm_()\n); print_matrix(M, N, C, ldc); #endifreturn 0; }运行效果 $ gcc -DCBLAS_USE hello_sgemm.c -L ../tdd/third-party/openblas/local/lib/ -lopenblas -o hello_sgemm_c $ gcc hello_sgemm.c -L ../tdd/third-party/openblas/local/lib/ -lopenblas -o hello_sgemm_c 可见调用 sgemm_() 与调用 cblas_sgemm() 的结果相同 需要注意sgemm_()函数的声明方式参数全部都是指针 void sgemm_( char * const transpa,  char * const transpb, int *m, int *n,                   int *k, float *alpha, float *a, int *lda, float *b, int *ldb,                       float *beta, float *c, int *ldc ); 1.2 cpp 语言程序中调用 sgemm 相较于 c 语言中cpp 程序中增加了 extern C{ 修饰 否则编译无法通过由于c的特性。 hello_sgemm.cpp #if CBLAS_USE #include cblas.h #else extern C{void sgemm_( char * const transpa, char * const transpb, int *m, int *n,int *k, float *alpha, float *a, int *lda, float *b, int *ldb,float *beta, float *c, int *ldc ); } #endif 2. cpp 中的sgemm_声明为何需要 extern C extern C 的作用 在 C 源代码文件中使用 extern C 的作用是告诉编译器按照 C 语言的方式对函数进行链接而不是 C 的方式。这在与其他语言或库进行交互时非常有用特别是在 C 代码中调用 C 语言编写的函数时。 当您使用 extern C 修饰一个函数声明时编译器会按照 C 语言的命名约定来生成函数符号这样可以确保 C 代码和 C 代码之间的函数调用能够正确链接。在 C 中函数名可能会经过名称修饰name mangling以支持函数重载和其他特性比如在函数末尾加上参数类型缩写而 C 语言没有这种面向对象的语法概念和需求。 如下图可见 print_matrix函数的名字在 cpp中被加了前缀和后缀而 c语言文件中函数名字依然为 print_matrix
http://www.hkea.cn/news/14455556/

相关文章:

  • 男女情感类网站楼盘信息在哪里能查到
  • 中国建设劳动学会官方网站是多少有视频接口怎么做网站
  • 网站栏目页如何做做编辑器的网站
  • 用自己的身份做网站备案wordpress短网址
  • 做文案应该关注的网站推荐wordpress手机边距
  • 网站图片防盗连怎么做永州网站建设效果
  • 网站类型分析杭州餐饮vi设计
  • 中学网站域名用什么用什么网站可以做卡首屏淘口令
  • 网站建设需要哪些基础二手商城网站建设论文
  • 电商网站设计公司力荐亿企邦网站跳出率高怎么办
  • 网站 源码 php免费注册网站流程
  • 网站开发维护祖庙网站建设
  • 苏州论坛建站模板程序员是学什么专业
  • 设计网站轮廓模板网站做网络营销
  • 男人互做网站网站开发设计工程师工作前景
  • 网站psd设计稿千博企业网站
  • 网站子页怎么做 视频在线装修设计师咨询
  • 做平台网站怎么赚钱品牌网络营销方法分析
  • 设计专业所需网站龙岗建设网站公司
  • 江西建设厅特殊工种的网站永兴网站建设报价
  • 免费网站应用软件wordpress上传exe
  • 深圳营销型网站需要多少钱在线网页视频抓取工具
  • 网站群系统2345网址大全天气预报济南
  • 佛山网站建设制作找网络公司建网站每年收维护费
  • 国家重点项目建设部网站个人网站 云服务器
  • 网站如何做等保备案贵州省兴义市建设局网站首页
  • 网站开发设计工程师新网域名注册步骤
  • 外贸网站建设 联雅离我最近的广告公司
  • 建设网站的平台长春免费做网站
  • 栖霞网站定制公司给了一个邮箱怎么登录