Hi,
I wrote a small MD5 test program as below:
-----------------------------
#include
#define BUFSIZE 1024*16
static unsigned char buf[BUFSIZE];
int main(int argc, char **argv)
{
IppsMD5State ctx;
unsigned char digest[MD5_DIGEST_LENGTH];
int data_size = 16*1024;
int i, num_iterations = 1000000;
if (argc > 1) {
data_size = atoi(argv[1]);
num_iterations = atoi(argv[2]);
}
ippsMD5Init(&ctx);
for (i = 0; i < num_iterations; i++) {
ippsMD5Update(buf, data_size, &ctx);
}
ippsMD5Final(digest, &ctx);
}
-------------------------------
However, when I compiled it, I got the error below:
# make
gcc -I/opt/intel/ipp/5.1/em64t/include md5test.c
md5test.c: In function `main':
md5test.c:10: error: storage size of 'ctx' isn't known
make: *** [md5_speed_test] Error 1
I searched all the header files under /opt/intel/ipp/5.1/em64t/include,
and I saw ippcp.h has:
typedef struct _cpMD5 IppsMD5State;
but 'struct _cpMD5' is not defined anywhere. Did I miss something?
Thanks,
Chi-Chang Lin
链接已复制
Hi Chi-Chang
yes, sometimes documentation can help:)
Please let us know your feeling regarding IPP functionality and performance. What do you find useful, what do you think is missed? What you want to be improved?
Regards,
Vladimir
Hi Vladimir,
I compared the MD5 in IPP with that in OpenSSL 0.9.8e, and I found that OpenSSL 0.9.8e has 3% advantage on a Woodcrest box. The OpenSSL MD5 implementation was from
http://etud.epita.fr/~bevand_m/papers/md5-amd64.html
Do you have more insight on this?
thanks,
Chi-Chang
Hi Chi-Chang,
What version of IPP do you use? How do you link IPP into your application, statically or dynamically? What was operation system and hardware platform you run test on? Do you get stable results? Usually, when you measure performance, results can fluctuate a bit, especially in multitasking environment, so accuracy of measurement is important.
Regards,
Vladimir
I used IPP 5.1
The test program was linked dynamically as this:
gcc -I/opt/intel/ipp/5.1/em64t/include md5_test.c -o md5_test -L/opt/intel/ipp/5.1/em64t/sharedlib -l ippcpem64t -l ippcoreem64t -l guide -l pthread
The OS was RHEL with kernel 2.6.18. Hw platform was Dell PowerEdge 2950 with Woodcrest core.
This was a single-tjhreaded test program (as in my first post; differnt APIs were used for OpenSSL and for IPP). Results were stable and consistent.
thanks,
Chi-Chang
