Bitwise XOR

Hello everyone :D

I’m very new to the CUDA world, but have loved every single second of it!!!

I’m doing an academic project where I am trying to parallelize an encryption algorithm… anyways, in my kernel I am doing something like this:

[codebox]

global void cipher ( unsigned char *state_d, unsigned char *RoundKey_d)

{

// Some other stuff



if( threadIdx.x == 0)

{

	// Some other stuff

	for(i = 0; i < 4; i++)

	{

		for(j = 0; j < 4; j++)

		{

			// Bitwise XOR

			state_d[j][i] ^= RoundKey_d[round * Nb * 4 + i * Nb + j];

		}

	}

	// Some other stuff

}

}

[/codebox]

I am using VS2008, and when I press Build, I get this error:

[codebox]error: expression must have arithmetic or enum type[/codebox]

I looked into using atomicXor(), but for some reason the compiler doesn’t not identity the instruction, and doing some further reading, it looks like I do not need the operation to be atomic and as far as I understand, CUDA supports the ^ operator.

Any ideas to what is going on? Or to what I should do?

Thanks in advance!!

:D

bump

bump

unsigned char *state_d

state_d[j][i] ^=...

You’re double dereferencing a pointer to a char.

unsigned char *state_d

state_d[j][i] ^=...

You’re double dereferencing a pointer to a char.