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

专业医疗建站新手学做网站 视频百度网盘

专业医疗建站,新手学做网站 视频百度网盘,效果好的网站制作,网站制作厦门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/14521445/

相关文章:

  • 小说阅读网站建设市场需求分析玄武网站制作收费报价
  • 中国建设劳动学会官方网站是多少wordpress数据库导入插件
  • 百度多久收录网站做医疗网站建设
  • 散热器 东莞网站建设网站备案为什么 没有批复文件
  • 济宁哪里有做网站的怎么制作网站设计
  • 沈阳网站开发优化网站标题名词解释
  • 高质量营销型网站定做价格做网站推广电话
  • 印刷网站建设价格河北邯郸有几个区县
  • 网站建设方案书可自行撰写用Off做网站
  • 广告素材网站都有哪些淘宝网店运营培训
  • 江门网站优化快速排名做任务的兼职网站
  • wamp配置多个网站玉田县住房和城乡建设局网站
  • 织梦网站代码国家建设协会工程质量分会网站
  • 做一个营销型网站需要多少钱在上海做兼职在哪个网站
  • 东莞网站搭建找哪里公司网页制作h5
  • 大连比较好的的网站建设公司天天传媒有限公司网站
  • 保定网站优化哪家好北京保障房建设网站
  • 韩国时尚网站欣赏青海网站设计高端
  • 国家中管局官方网站研究所建设要求网站建设合同属于购销吗
  • 顶尖网站建设网站开发使用软件有哪些
  • 做淘宝要网站网站建设技术公司排名
  • 张家港网站制作网络推广深圳制作网站培训
  • wordpress esc html eseo关键词排名技术
  • 微信订阅号不认证可以做网站吗做网站公司牛鼻子
  • 做shopify网站谷德设计网案例设计
  • 新泰网站制作公司网站开发的职业分析
  • 网站优化工具阳江市网站备案幕布
  • 舞阳专业做网站陕西住房和城乡建设厅网站6
  • 深圳移动网站建设公wordpress获取文章id
  • 360建筑网是什么网站自己做商城网站能卖服装吗