Initial commit.

This commit is contained in:
2017-10-26 19:57:24 +02:00
commit 9ce8b5485d
1090 changed files with 47036 additions and 0 deletions
+16
View File
@@ -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
+26
View File
@@ -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
+243
View File
@@ -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;
}
+29
View File
@@ -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
+108
View File
@@ -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;
}