Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

IppsMD5State is not defined

Chi-Chang_L_
Principiante
1.148 Vistas

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

0 kudos
6 Respuestas
Chi-Chang_L_
Principiante
1.148 Vistas

Hi,

This is a reply to myself :-)

After reading the doc more carefully, I found that I need to use

ippsMD5GetSize(&ctx_size)

to get the context size and malloc one.

thanks,

Chi-Chang Lin

Vladimir_Dudnik
Empleados
1.148 Vistas

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

Chi-Chang_L_
Principiante
1.148 Vistas

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

Vladimir_Dudnik
Empleados
1.148 Vistas

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

Chi-Chang_L_
Principiante
1.148 Vistas
Hi 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

Vladimir_Dudnik
Empleados
1.148 Vistas

Hello Chi-Chang,

our experts were able to reproduce the issue, we working on it, thanks for reporting.

Regards,
Vladimir

Responder