- 注册时间
- 2007-12-27
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 41286
- 在线时间
- 小时
|
楼主 |
发表于 2014-8-8 19:05:02
|
显示全部楼层
很简单的乘法代码:
- #include <ippcp.h>
- #include <ippcore.h>
- #include <stdlib.h>
- #include <time.h>
- #define COUNT 1000000000
- int _tmain(int argc, _TCHAR* argv[])
- {
- int bignumsize512=0;
- int bignumsize256=0;
- IppsBigNumState *pSum = NULL;
- IppsBigNumState *pMul = NULL;
- unsigned int data[256/32];
- srand((int)time(NULL));
- ippInit();
- IppStatus error_code = ippsBigNumGetSize(512/32, &bignumsize512);
- if(error_code != ippStsNoErr)
- return -1;
- error_code = ippsBigNumGetSize(256/32, &bignumsize256);
- if(error_code != ippStsNoErr)
- return -1;
- int i;
- for(i=0;i<256/32;i++)data[i]=rand()*65536+rand();
- pSum = (IppsBigNumState *)malloc(bignumsize512);
- pMul = (IppsBigNumState *)malloc(bignumsize256);
- error_code = ippsBigNumInit(512/32, pSum);
- ippsBigNumInit(256/32, pMul);
- ippsSet_BN(IppsBigNumPOS, 256/32, data, pMul);
- time_t start = time(NULL);
- for(i=0;i<COUNT;i++){
- ippsMul_BN(pMul, pMul, pSum);
- }
- printf("Total cost %d seconds\n", (int)(time(NULL)-start));
- return 0;
- }
复制代码
$10^9$次乘法,ipp8.0, 64位代码30秒,32位机器73秒
如果换成ipp7.0, 64位代码63秒,32位95秒 |
|