Initial commit.
This commit is contained in:
Executable
+16
@@ -0,0 +1,16 @@
|
||||
|
||||
########################################################################
|
||||
# Target
|
||||
########################################################################
|
||||
|
||||
DIRS = src/spu src/ppu
|
||||
|
||||
########################################################################
|
||||
# buildutils/make.footer
|
||||
########################################################################
|
||||
|
||||
ifdef CELL_TOP
|
||||
include $(CELL_TOP)/buildutils/make.footer
|
||||
else
|
||||
include /opt/cell/sdk/buildutils/make.footer
|
||||
endif
|
||||
Executable
+26
@@ -0,0 +1,26 @@
|
||||
########################################################################
|
||||
# Target
|
||||
########################################################################
|
||||
|
||||
PROGRAM_ppu64 = ../../ring_test
|
||||
|
||||
|
||||
########################################################################
|
||||
# Local Defines
|
||||
########################################################################
|
||||
|
||||
INCLUDE = -I../../../../include/ppu
|
||||
LDFLAGS = -L../../../../lib/ppu
|
||||
IMPORTS = -lmoc_ppu -lspe2 ../spu/ring_test_spu.a
|
||||
|
||||
|
||||
########################################################################
|
||||
# buildutils/make.footer
|
||||
########################################################################
|
||||
|
||||
ifdef CELL_TOP
|
||||
include $(CELL_TOP)/buildutils/make.footer
|
||||
else
|
||||
include /opt/cell/sdk/buildutils/make.footer
|
||||
endif
|
||||
|
||||
Executable
+243
@@ -0,0 +1,243 @@
|
||||
#include <moc.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <malloc_align.h>
|
||||
|
||||
|
||||
|
||||
extern spe_program_handle_t ring_test_spu;
|
||||
|
||||
|
||||
int buffer_size = 16384*2+128*3+16+5;
|
||||
|
||||
int max_iterations = 100;
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
int rank, size, rl, mspu, aspu, err, stringl, iteration = 0;
|
||||
double start, stop;
|
||||
char proc[4], *buffer1, *buffer2;
|
||||
MOC_Status status;
|
||||
char string[255];
|
||||
int t;
|
||||
|
||||
if (MOC_Get_max_spu_count(&mspu))
|
||||
{
|
||||
printf("An error occured during MOC_Get_max_spu_count\n");
|
||||
return 0;
|
||||
}
|
||||
if (MOC_Get_avail_spu_count(&aspu))
|
||||
{
|
||||
printf("An error occured during MOC_Get_avail_spu_count\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
printf("\nThere are %i of %i SPUs available.\n\n", aspu, mspu);
|
||||
|
||||
for ( t = 0; t < aspu; t++)
|
||||
MOC_Add_spu_thread ( &ring_test_spu, NULL );
|
||||
|
||||
MOC_Set_buffer_size ( 500000 );
|
||||
|
||||
start = MOC_Wtime();
|
||||
|
||||
MOC_Init(NULL, NULL);
|
||||
|
||||
MOC_Comm_rank(MOC_COMM_WORLD, &rank);
|
||||
MOC_Comm_size(MOC_COMM_WORLD, &size);
|
||||
MOC_Get_processor_name( proc, &rl);
|
||||
|
||||
|
||||
if (rank == 0)
|
||||
{
|
||||
int t, integrity = 0;
|
||||
double starttime, stoptime;
|
||||
buffer1 = _malloc_align(buffer_size, 7);
|
||||
buffer2 = _malloc_align(buffer_size, 7);
|
||||
|
||||
|
||||
printf("\nRing-Test with synchronous send starting...\n");
|
||||
|
||||
starttime = MOC_Wtime();
|
||||
|
||||
for (iteration = 0; iteration < max_iterations; iteration++)
|
||||
{
|
||||
for (t = 0; t < 4; t++)
|
||||
{
|
||||
buffer1[t] = rand()%256;
|
||||
}
|
||||
err = MOC_Ssend(buffer1, 4, MOC_CHAR, 1, 123, MOC_COMM_WORLD);
|
||||
if (err)
|
||||
{
|
||||
MOC_Error_string ( err, string, &stringl );
|
||||
printf("%i: ERROR-send: %s (%i)\n", rank, string, err);
|
||||
}
|
||||
|
||||
err = MOC_Recv(buffer2, 4, MOC_CHAR, size-1, 123, MOC_COMM_WORLD, &status);
|
||||
if (err)
|
||||
{
|
||||
MOC_Error_string ( err, string, &stringl );
|
||||
printf("%i: ERROR-recv: %s (%i)\n", rank, string, err);
|
||||
}
|
||||
|
||||
integrity = 0;
|
||||
for (t = 0; t < 4; t++)
|
||||
{
|
||||
if (buffer1[t] != buffer2[t])
|
||||
{
|
||||
integrity++;
|
||||
//printf("ssend: Fehler an Stelle %i\n", t);
|
||||
}
|
||||
}
|
||||
if (integrity != 0)
|
||||
printf("ssend: integrity-check failed (%i false bytes found).\n", integrity);
|
||||
}
|
||||
|
||||
stoptime = MOC_Wtime();
|
||||
printf("Ring-Test with synchronous send ended\n");
|
||||
printf("time needed for %i iterations with 4 bytes of data: %lf s\n", max_iterations, stoptime-starttime );
|
||||
|
||||
|
||||
printf("\nRing-Test with synchronous send starting...\n");
|
||||
|
||||
starttime = MOC_Wtime();
|
||||
|
||||
for (iteration = 0; iteration < max_iterations; iteration++)
|
||||
{
|
||||
for (t = 0; t < buffer_size; t++)
|
||||
{
|
||||
buffer1[t] = rand()%256;
|
||||
}
|
||||
err = MOC_Ssend(buffer1, buffer_size, MOC_CHAR, 1, 123, MOC_COMM_WORLD);
|
||||
if (err)
|
||||
{
|
||||
MOC_Error_string ( err, string, &stringl );
|
||||
printf("%i: ERROR-send: %s (%i)\n", rank, string, err);
|
||||
}
|
||||
|
||||
err = MOC_Recv(buffer2, buffer_size, MOC_CHAR, size-1, 123, MOC_COMM_WORLD, &status);
|
||||
if (err)
|
||||
{
|
||||
MOC_Error_string ( err, string, &stringl );
|
||||
printf("%i: ERROR-recv: %s (%i)\n", rank, string, err);
|
||||
}
|
||||
|
||||
integrity = 0;
|
||||
for (t = 0; t < buffer_size; t++)
|
||||
{
|
||||
if (buffer1[t] != buffer2[t])
|
||||
{
|
||||
integrity++;
|
||||
//printf("ssend: Fehler an Stelle %i\n", t);
|
||||
}
|
||||
}
|
||||
if (integrity != 0)
|
||||
printf("ssend: integrity-check failed (%i false bytes found).\n", integrity);
|
||||
//else
|
||||
// printf("ssend: integrity-check passed\n");
|
||||
}
|
||||
|
||||
stoptime = MOC_Wtime();
|
||||
printf("Ring-Test with synchronous send ended\n");
|
||||
printf("time needed for %i iterations with %i bytes of data: %lf s\n", max_iterations, buffer_size, stoptime-starttime );
|
||||
|
||||
|
||||
printf("\nRing-Test with buffered send starting...\n");
|
||||
|
||||
starttime = MOC_Wtime();
|
||||
|
||||
for (iteration = 0; iteration < max_iterations; iteration++)
|
||||
{
|
||||
for (t = 0; t < 4; t++)
|
||||
{
|
||||
buffer1[t] = rand()%256;
|
||||
}
|
||||
err = MOC_Bsend(buffer1, 4, MOC_CHAR, 1, 123, MOC_COMM_WORLD);
|
||||
if (err)
|
||||
{
|
||||
MOC_Error_string ( err, string, &stringl );
|
||||
printf("%i: ERROR-send: %s (%i)\n", rank, string, err);
|
||||
}
|
||||
|
||||
err = MOC_Recv(buffer2, 4, MOC_CHAR, size-1, 123, MOC_COMM_WORLD, &status);
|
||||
if (err)
|
||||
{
|
||||
MOC_Error_string ( err, string, &stringl );
|
||||
printf("%i: ERROR-recv: %s (%i)\n", rank, string, err);
|
||||
}
|
||||
|
||||
integrity = 0;
|
||||
for (t = 0; t < 4; t++)
|
||||
{
|
||||
if (buffer1[t] != buffer2[t])
|
||||
{
|
||||
integrity++;
|
||||
printf("Fehler an Stelle %i\n", t);
|
||||
}
|
||||
}
|
||||
if (integrity != 0)
|
||||
printf("integrity-check failed (%i false bytes found).\n", integrity);
|
||||
|
||||
}
|
||||
|
||||
stoptime = MOC_Wtime();
|
||||
printf("Ring-Test with buffered send ended\n");
|
||||
printf("time needed for %i iterations with 4 bytes of data: %lf s\n\n", max_iterations, stoptime-starttime );
|
||||
|
||||
|
||||
|
||||
printf("\nRing-Test with buffered send starting...\n");
|
||||
|
||||
starttime = MOC_Wtime();
|
||||
|
||||
for (iteration = 0; iteration < max_iterations; iteration++)
|
||||
{
|
||||
integrity = 0;
|
||||
for (t = 0; t < buffer_size; t++)
|
||||
{
|
||||
buffer1[t] = rand()%256;
|
||||
}
|
||||
err = MOC_Bsend(buffer1, buffer_size, MOC_CHAR, 1, 123, MOC_COMM_WORLD);
|
||||
if (err)
|
||||
{
|
||||
MOC_Error_string ( err, string, &stringl );
|
||||
printf("%i: ERROR-send: %s (%i)\n", rank, string, err);
|
||||
}
|
||||
|
||||
err = MOC_Recv(buffer2, buffer_size, MOC_CHAR, size-1, 123, MOC_COMM_WORLD, &status);
|
||||
if (err)
|
||||
{
|
||||
MOC_Error_string ( err, string, &stringl );
|
||||
printf("%i: ERROR-recv: %s (%i)\n", rank, string, err);
|
||||
}
|
||||
|
||||
integrity = 0;
|
||||
for (t = 0; t < buffer_size; t++)
|
||||
{
|
||||
if (buffer1[t] != buffer2[t])
|
||||
{
|
||||
integrity++;
|
||||
printf("Fehler an Stelle %i\n", t);
|
||||
}
|
||||
}
|
||||
if (integrity != 0)
|
||||
printf("integrity-check failed (%i false bytes found).\n", integrity);
|
||||
|
||||
}
|
||||
|
||||
stoptime = MOC_Wtime();
|
||||
printf("Ring-Test with buffered send ended\n");
|
||||
printf("time needed for %i iterations with %i bytes of data: %lf s\n\n", max_iterations, buffer_size, stoptime-starttime );
|
||||
}
|
||||
|
||||
|
||||
|
||||
MOC_Finalize();
|
||||
|
||||
stop = MOC_Wtime();
|
||||
printf("overall-duration: %lf\n", stop-start);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Executable
+29
@@ -0,0 +1,29 @@
|
||||
########################################################################
|
||||
# Target
|
||||
########################################################################
|
||||
|
||||
PROGRAMS_spu := ring_test_spu
|
||||
LIBRARY_embed64 := ring_test_spu.a
|
||||
|
||||
|
||||
########################################################################
|
||||
# Local Defines
|
||||
########################################################################
|
||||
|
||||
INCLUDE += -I../../../../include/spu
|
||||
LDFLAGS += -L../../../../lib/spu
|
||||
IMPORTS += -lmoc_spu
|
||||
|
||||
# Only necessary if the SPU-Decrementer is used as Time-Source for the SPUs
|
||||
LDFLAGS += -L/opt/cell/sysroot/opt/cell/sdk/prototype/usr/spu/lib
|
||||
#IMPORTS += -lsputimer
|
||||
|
||||
########################################################################
|
||||
# buildutils/make.footer
|
||||
########################################################################
|
||||
|
||||
ifdef CELL_TOP
|
||||
include $(CELL_TOP)/buildutils/make.footer
|
||||
else
|
||||
include /opt/cell/sdk/buildutils/make.footer
|
||||
endif
|
||||
Executable
+108
@@ -0,0 +1,108 @@
|
||||
|
||||
#include <moc.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <malloc_align.h>
|
||||
|
||||
|
||||
|
||||
//int buffer_size = 32933;
|
||||
int buffer_size = 16384*2+128*3+16+5;
|
||||
//int buffer_size = 4;
|
||||
|
||||
int max_iterations = 100;
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
int rank, size, rl, err, stringl, iteration = 0;
|
||||
char proc[4], *buffer1;
|
||||
char string[255];
|
||||
MOC_Status status;
|
||||
|
||||
|
||||
MOC_Init( 0, 0, NULL);
|
||||
|
||||
MOC_Comm_rank(MOC_COMM_WORLD, &rank);
|
||||
MOC_Comm_size(MOC_COMM_WORLD, &size);
|
||||
MOC_Get_processor_name( proc, &rl);
|
||||
|
||||
//printf("Process %i from %i running on %s: Hello World!\n ", rank, size, proc);
|
||||
|
||||
|
||||
buffer1 = _malloc_align(buffer_size, 4);
|
||||
|
||||
|
||||
for (iteration = 0; iteration < max_iterations; iteration++)
|
||||
{
|
||||
err = MOC_Recv(buffer1, 4, MOC_CHAR, rank-1, 123, MOC_COMM_WORLD, &status);
|
||||
if (err)
|
||||
{
|
||||
MOC_Error_string ( err, string, &stringl );
|
||||
printf("%i: ERROR-recv: %s (%i)\n", rank, string, err);
|
||||
}
|
||||
err = MOC_Ssend(buffer1, 4, MOC_CHAR, (rank+1) % size, 123, MOC_COMM_WORLD);
|
||||
if (err)
|
||||
{
|
||||
MOC_Error_string ( err, string, &stringl );
|
||||
printf("%i: ERROR-send: %s (%i)\n", rank, string, err);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (iteration = 0; iteration < max_iterations; iteration++)
|
||||
{
|
||||
err = MOC_Recv(buffer1, buffer_size, MOC_CHAR, rank-1, 123, MOC_COMM_WORLD, &status);
|
||||
if (err)
|
||||
{
|
||||
MOC_Error_string ( err, string, &stringl );
|
||||
printf("%i: ERROR-recv: %s (%i)\n", rank, string, err);
|
||||
}
|
||||
err = MOC_Ssend(buffer1, buffer_size, MOC_CHAR, (rank+1) % size, 123, MOC_COMM_WORLD);
|
||||
if (err)
|
||||
{
|
||||
MOC_Error_string ( err, string, &stringl );
|
||||
printf("%i: ERROR-send: %s (%i)\n", rank, string, err);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (iteration = 0; iteration < max_iterations; iteration++)
|
||||
{
|
||||
err = MOC_Recv(buffer1, 4, MOC_CHAR, rank-1, 123, MOC_COMM_WORLD, &status);
|
||||
if (err)
|
||||
{
|
||||
MOC_Error_string ( err, string, &stringl );
|
||||
printf("%i: ERROR-recv: %s (%i)\n", rank, string, err);
|
||||
}
|
||||
err = MOC_Bsend(buffer1, 4, MOC_CHAR, (rank+1) % size, 123, MOC_COMM_WORLD);
|
||||
if (err)
|
||||
{
|
||||
MOC_Error_string ( err, string, &stringl );
|
||||
printf("%i: ERROR-send: %s (%i)\n", rank, string, err);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for (iteration = 0; iteration < max_iterations; iteration++)
|
||||
{
|
||||
err = MOC_Recv(buffer1, buffer_size, MOC_CHAR, rank-1, 123, MOC_COMM_WORLD, &status);
|
||||
if (err)
|
||||
{
|
||||
MOC_Error_string ( err, string, &stringl );
|
||||
printf("%i: ERROR-recv: %s (%i)\n", rank, string, err);
|
||||
}
|
||||
err = MOC_Bsend(buffer1, buffer_size, MOC_CHAR, (rank+1) % size, 123, MOC_COMM_WORLD);
|
||||
if (err)
|
||||
{
|
||||
MOC_Error_string ( err, string, &stringl );
|
||||
printf("%i: ERROR-send: %s (%i)\n", rank, string, err);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
MOC_Finalize();
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user