本文整理汇总了C++中shfree函数的典型用法代码示例。如果您正苦于以下问题:C++ shfree函数的具体用法?C++ shfree怎么用?C++ shfree使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了shfree函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: main
int
main (int argc, char *argv[])
{
struct pe_vars v;
char * msg_buffer, * aligned_buffer;
long alignment;
int use_heap;
/*
* Initialize
*/
v = init_openshmem();
check_usage(v.me, v.npes, argc, argv);
print_header(v.me);
/*
* Allocate Memory
*/
use_heap = !strncmp(argv[1], "heap", 10);
alignment = use_heap ? sysconf(_SC_PAGESIZE) : 4096;
msg_buffer = allocate_memory(v.me, alignment, use_heap);
aligned_buffer = align_memory((unsigned long)msg_buffer, alignment);
memset(aligned_buffer, 0, MAX_MSG_SZ * ITERS_LARGE);
/*
* Time Put Message Rate
*/
benchmark(v, aligned_buffer);
/*
* Finalize
*/
if (use_heap) {
shfree(msg_buffer);
}
return EXIT_SUCCESS;
}
开发者ID:01org,项目名称:opa-mpi-apps,代码行数:38,代码来源:osu_oshm_put_mr.c
示例2: osh_lock_tc2
/****************************************************************************
* Test Case processing procedure
***************************************************************************/
int osh_lock_tc2(const TE_NODE *node, int argc, const char *argv[])
{
//This is a stress test which makes sure the distributed locking is not hanging
long *test_variable = shmalloc(sizeof(long));
int number_of_iterations = 10;
int i = 0;
UNREFERENCED_PARAMETER(node);
UNREFERENCED_PARAMETER(argc);
UNREFERENCED_PARAMETER(argv);
*test_variable = 0;
shmem_barrier_all();
for (i = 0; i < number_of_iterations; i++)
{
shmem_set_lock(test_variable);
shmem_clear_lock(test_variable);
}
shmem_barrier_all();
shfree(test_variable);
return TC_PASS;
}
开发者ID:igor-ivanov,项目名称:tests-mellanox,代码行数:27,代码来源:osh_lock_tc2.c
示例3: main
//.........这里部分代码省略.........
usage (progName);
break;
case 'e':
doprint++;
break;
case 'v':
Verbose++;
break;
case 'h':
help (progName);
default:
usage (progName);
}
if (optind == argc)
minWords = DFLT_MIN_WORDS;
else if ((minWords = getSize (argv[optind++])) <= 0)
usage (progName);
if (optind == argc)
maxWords = minWords;
else if ((maxWords = getSize (argv[optind++])) < minWords)
usage (progName);
if (optind == argc)
incWords = 0;
else if ((incWords = getSize (argv[optind++])) < 0)
usage (progName);
if (!(rbuf = (long *)shmalloc(maxWords * sizeof(long))))
{
perror ("Failed memory allocation");
exit (1);
}
memset (rbuf, 0, maxWords * sizeof (long));
if (!(tbuf = (long *)shmalloc(maxWords * sizeof(long))))
{
perror ("Failed memory allocation");
exit (1);
}
for (i = 0; i < maxWords; i++)
tbuf[i] = 1000 + (i & 255);
if (doprint)
printf ("%d(%d): Shmem PING reps %d minWords %d maxWords %d "
"incWords %d\n",
proc, nproc, reps, minWords, maxWords, incWords);
dprint("[%d] rbuf: %ld\n", proc, (unsigned long) rbuf);
shmem_barrier_all();
peer = proc ^ 1;
if (peer >= nproc)
doprint = 0;
for (nwords = minWords;
nwords <= maxWords;
nwords = incWords ? nwords + incWords : nwords ? 2 * nwords : 1)
{
r = reps;
shmem_barrier_all();
tv[0] = gettime();
if (peer < nproc)
{
if (proc & 1)
{
r--;
shmem_wait(&rbuf[nwords-1], 0);
rbuf[nwords-1] = 0;
}
while (r-- > 0)
{
shmem_long_put(rbuf, tbuf, nwords, peer);
shmem_wait(&rbuf[nwords-1], 0);
rbuf[nwords-1] = 0;
}
if (proc & 1)
{
shmem_long_put(rbuf, tbuf, nwords, peer);
}
}
tv[1] = gettime();
t = dt (&tv[1], &tv[0]) / (2 * reps);
shmem_barrier_all();
printStats (proc, peer, doprint, nwords, t);
}
shfree(rbuf);
shfree(tbuf);
shmem_barrier_all();
return 0;
}
开发者ID:coti,项目名称:oshmpi,代码行数:101,代码来源:sping.c
示例4: main
int
main (int argc, char *argv[])
{
int table_bytes;
int lock_bytes;
int i;
srand ( getpid () + getuid () );
start_pes (0);
me = _my_pe ();
npes = _num_pes ();
/*
* size of the per-PE partition
*/
ip_pe = table_size / npes;
/*
* each PE only stores what it owns
*/
table_bytes = sizeof (*table) * ip_pe;
table = shmalloc (table_bytes); /* !!! unchecked !!! */
/*
* initialize table
*/
for (i = 0; i < ip_pe; i+= 1)
{
table[i] = 0;
}
/*
* each PE needs to be able to lock everywhere
*/
lock_bytes = sizeof (*lock) * table_size;
lock = shmalloc (lock_bytes); /* !!! unchecked !!! */
/*
* initialize locks
*/
for (i = 0; i < table_size; i+= 1)
{
lock[i] = 0L;
}
/*
* make sure all PEs have initialized symmetric data
*/
shmem_barrier_all ();
for (i = 0; i < 4; i += 1)
{
const int updater = rand () % npes;
if (me == updater)
{
const int i2u = rand () % table_size;
const int nv = rand () % 100;
printf ("PE %d: About to update index %d with %d...\n",
me, i2u, nv
);
table_update (nv, i2u);
}
}
shmem_barrier_all ();
/*
* everyone shows their part of the table
*/
table_dump ();
/*
* clean up allocated memory
*/
shmem_barrier_all ();
shfree (lock);
shfree (table);
return 0;
}
开发者ID:openshmem-org,项目名称:sc14-tutorial,代码行数:82,代码来源:dtrand.c
示例5: main
//.........这里部分代码省略.........
shmem_barrier_all();
if(me == 0){
for (i = 0; i < N/2; i += 1) {
if(dest1[i] != (npes-1)){
success1=1;
}
if(dest2[i] != (npes-1)){
success2=1;
}
if(dest3[i] != (npes-1)){
success3=1;
}
if(dest6[i] != (npes-1)){
success6=1;
}
if(dest7[i] != (npes-1)){
success7=1;
}
}
if(success1==0)
printf("Test shmem_short_iget: Passed\n");
else
printf("Test shmem_short_iget: Failed\n");
if(success2==0)
printf("Test shmem_int_iget: Passed\n");
else
printf("Test shmem_int_iget: Failed\n");
if(success3==0)
printf("Test shmem_long_iget: Passed\n");
else
printf("Test shmem_long_iget: Failed\n");
if(success6==0)
printf("Test shmem_double_iget: Passed\n");
else
printf("Test shmem_double_iget: Failed\n");
if(success7==0)
printf("Test shmem_float_iget: Passed\n");
else
printf("Test shmem_float_iget: Failed\n");
}
/* Testing shmem_double_g, shmem_float_g, shmem_int_g, shmem_long_g, shmem_short_g */
shmem_barrier_all();
dest9 = shmem_short_g(src9, nextpe);
dest10 = shmem_int_g(src10, nextpe);
dest11 = shmem_long_g(src11, nextpe);
dest12 = shmem_double_g(src12, nextpe);
dest13 = shmem_float_g(src13, nextpe);
shmem_barrier_all();
if(me == 0){
if(dest9 == 1)
printf("Test shmem_short_g: Passed\n");
else
printf("Test shmem_short_g: Failed\n");
if(dest10 == 1)
printf("Test shmem_int_g: Passed\n");
else
printf("Test shmem_int_g: Failed\n");
if(dest11 == 1)
printf("Test shmem_long_g: Passed\n");
else
printf("Test shmem_long_g: Failed\n");
if(dest12 == 1)
printf("Test shmem_double_g: Passed\n");
else
printf("Test shmem_double_g: Failed\n");
if(dest13 == 1)
printf("Test shmem_float_g: Passed\n");
else
printf("Test shmem_float_g: Failed\n");
}
shmem_barrier_all();
shfree(src1);
shfree(src2);
shfree(src3);
shfree(src4);
shfree(src5);
shfree(src6);
shfree(src7);
shfree(src8);
}
else{
printf("Number of PEs must be > 1 to test shmem get, test skipped\n");
}
return 0;
}
开发者ID:ggouaillardet,项目名称:tests-uh,代码行数:101,代码来源:test_shmem_get_shmalloc.c
示例6: osh_coll_tc9
int osh_coll_tc9(const TE_NODE *node, int argc, const char *argv[])
{
/* General initialisations */
int rc = TC_PASS;
int ii, numprocs, count, d, nlong;
int32_t *source, *target, *displ;
long *pSync;
UNREFERENCED_PARAMETER(node);
UNREFERENCED_PARAMETER(argc);
UNREFERENCED_PARAMETER(argv);
numprocs = _num_pes();
nlong = _my_pe() + 1;
source = NULL;
displ = NULL;
target = NULL;
pSync = NULL;
if (numprocs == 1)
{
log_debug(OSH_TC, "Using more than 1 CPU makes the tests of this program more interesting\n");
return TC_SETUP_FAIL;
}
displ = malloc(sizeof(int) * numprocs);
count = 0;
for (ii = 0; ii < numprocs; ii++)
{
displ[ii] = count;
count = count + ii + 1;
}
pSync = shmalloc(sizeof(long) *_SHMEM_COLLECT_SYNC_SIZE);
for (ii=0; ii < _SHMEM_COLLECT_SYNC_SIZE; ii++)
pSync[ii] = _SHMEM_SYNC_VALUE;
target = shmalloc(sizeof(int) * count);
for (ii = 0; ii < count; ii++)
target[ii] = 0;
source = shmalloc(sizeof(int) * numprocs);
for (ii = 0; ii < nlong; ii++)
source[ii] = ii;
shmem_barrier_all(); /* Wait for all CPUs to initialize pSync */
/* Collect function */
shmem_collect32( target, source, nlong, 0, 0,
numprocs, pSync );
ii = d = 0;
while (ii < numprocs)
{
for(count = 0; count <= ii; count++)
if (target[d + count] != count)
rc = TC_FAIL;
d = displ[count];
ii++;
}
/* Finalizes */
shfree(source);
shfree(target);
shfree(pSync);
free(displ);
return rc;
}
开发者ID:alex-mikheev,项目名称:tests-mellanox,代码行数:75,代码来源:osh_coll_tc9.c
示例7: test_item9
static int test_item9(void)
{
int rc = TC_PASS;
static TYPE_VALUE target_addr[MAX_BUFFER_SIZE * 2];
static TYPE_VALUE source_addr[MAX_BUFFER_SIZE * 2];
TYPE_VALUE source_value = 0;
TYPE_VALUE expect_value = 0;
int num_proc = 0;
int my_proc = 0;
long* pSyncMult = NULL;
TYPE_VALUE* pWrkMult = NULL;
int pSyncNum = 2;
int pWrkNum = 2;
num_proc = _num_pes();
my_proc = _my_pe();
pSyncMult = shmalloc(sizeof(*pSyncMult) * pSyncNum * _SHMEM_REDUCE_SYNC_SIZE);
if (pSyncMult)
{
TYPE_VALUE value = DEFAULT_VALUE;
int i = 0;
int j = 0;
long cur_buf_size = 0;
for ( j = 0; j < pSyncNum * _SHMEM_REDUCE_SYNC_SIZE; j++ )
{
pSyncMult[j] = _SHMEM_SYNC_VALUE;
}
/* Give some time to all PE for setting their values */
shmem_barrier_all();
pWrkMult = shmalloc(sizeof(*pWrkMult) * pWrkNum * sys_max(MAX_BUFFER_SIZE, _SHMEM_REDUCE_MIN_WRKDATA_SIZE));
if (pWrkMult)
{
value = DEFAULT_VALUE;
source_value = (TYPE_VALUE)(my_proc + 1);
fill_buffer((void *)source_addr, MAX_BUFFER_SIZE * 2, (void *)&source_value, sizeof(source_value));
fill_buffer((void *)target_addr, MAX_BUFFER_SIZE * 2, (void *)&value, sizeof(value));
shmem_barrier_all();
for (i = 0; (i < __cycle_count) && (rc == TC_PASS); i++)
{
cur_buf_size = sys_max(1, (i + 1) * MAX_BUFFER_SIZE / __cycle_count);
/* Set initial target value */
value = DEFAULT_VALUE;
/* Set my value */
source_value = (TYPE_VALUE)(my_proc + 1);
/* Define expected value */
expect_value = 0;
if (my_proc % 2) expect_value = DEFAULT_VALUE;
else
{
int k = num_proc;
while (k)
{
if (k % 2) expect_value |= k;
k--;
}
}
int in_active_set = check_within_active_set(0, 1, ((num_proc / 2) + (num_proc % 2)), my_proc, num_proc);
if ( in_active_set ) {
/* Put value to peer */
FUNC_VALUE(target_addr + (i % 2) * MAX_BUFFER_SIZE, source_addr + (i % 2) * MAX_BUFFER_SIZE, cur_buf_size, 0, 1, ((num_proc / 2) + (num_proc % 2)), pWrkMult + (i % pWrkNum) * sys_max(MAX_BUFFER_SIZE, _SHMEM_REDUCE_MIN_WRKDATA_SIZE), pSyncMult + (i % pSyncNum) * _SHMEM_REDUCE_SYNC_SIZE);
rc = (!compare_buffer_with_const(target_addr + (i % 2) * MAX_BUFFER_SIZE, cur_buf_size, &expect_value, sizeof(expect_value)) ? TC_PASS : TC_FAIL);
log_debug(OSH_TC, "my#%d source = %lld expected = %lld actual = %lld buffer size = %lld\n",
my_proc, (INT64_TYPE)source_value, (INT64_TYPE)expect_value, (INT64_TYPE)value, (INT64_TYPE)cur_buf_size);
if (rc)
{
TYPE_VALUE* check_addr = target_addr + (i % 2) * MAX_BUFFER_SIZE;
int odd_index = compare_buffer_with_const(check_addr, cur_buf_size, &expect_value, sizeof(expect_value));
int show_index = (odd_index > 1 ? odd_index - 2 : 0);
int show_size = sizeof(*check_addr) * sys_min(3, cur_buf_size - odd_index - 1);
log_debug(OSH_TC, "index of incorrect value: 0x%08X (%d)\n", odd_index - 1, odd_index - 1);
log_debug(OSH_TC, "buffer interval: 0x%08X - 0x%08X\n", show_index, show_index + show_size);
show_buffer(check_addr + show_index, show_size);
}
fill_buffer((void *)(source_addr + (i % 2) * MAX_BUFFER_SIZE), cur_buf_size, (void *)&source_value, sizeof(source_value));
fill_buffer((void *)(target_addr + (i % 2) * MAX_BUFFER_SIZE ), cur_buf_size, (void *)&value, sizeof(value));
}
}
shfree(pWrkMult);
} else {
rc = TC_SETUP_FAIL;
}
shfree(pSyncMult);
} else {
rc = TC_SETUP_FAIL;
}
return rc;
}
开发者ID:openshmem-org,项目名称:tests-mellanox,代码行数:99,代码来源:osh_reduce_tc8.c
示例8: osh_reduce_tc8
/****************************************************************************
* Test Case processing procedure
***************************************************************************/
int osh_reduce_tc8(const TE_NODE *node, int argc, const char *argv[])
{
int rc = TC_PASS;
rc = __parse_opt(node, argc, argv);
if (rc == TC_PASS)
{
pSync = shmalloc(sizeof(*pSync) * _SHMEM_REDUCE_SYNC_SIZE);
if (!pSync)
{
rc = TC_SETUP_FAIL;
}
} else {
rc = TC_SETUP_FAIL;
}
/* Every PE does reduction of the single value as symmetric data object to itself */
if (rc == TC_PASS)
{
rc = test_item1();
log_item(node, 1, rc);
shmem_barrier_all();
}
/* All PEs reduce the single value */
if (rc == TC_PASS)
{
rc = test_item2();
log_item(node, 2, rc);
shmem_barrier_all();
}
/* Every PE does reduction of the single value as symmetric data object to itself
* (target and source are the same array)
*/
if (rc == TC_PASS)
{
rc = test_item3();
log_item(node, 3, rc);
shmem_barrier_all();
}
/* All PEs reduce the single value
* (target and source are the same array)
*/
if (rc == TC_PASS)
{
rc = test_item4();
log_item(node, 4, rc);
shmem_barrier_all();
}
/* Every PE does reduction of the buffer as symmetric data object to itself */
if (rc == TC_PASS)
{
rc = test_item5();
log_item(node, 5, rc);
shmem_barrier_all();
}
/* All PEs reduce the buffer */
if (rc == TC_PASS)
{
rc = test_item6();
log_item(node, 6, rc);
shmem_barrier_all();
}
/* Even PEs reduce the dynamic buffer */
if (rc == TC_PASS)
{
rc = test_item7();
log_item(node, 7, rc);
shmem_barrier_all();
}
/* Even PEs reduce the static buffer */
if (rc == TC_PASS)
{
rc = test_item8();
log_item(node, 8, rc);
shmem_barrier_all();
}
/* reduce calls in loop with alternating multiple pSync and pWrk arrays (without barrrier synchronization between iterations) */
if (rc == TC_PASS)
{
rc = test_item9();
log_item(node, 9, rc);
shmem_barrier_all();
}
if (pSync)
{
shfree(pSync);
}
//.........这里部分代码省略.........
开发者ID:openshmem-org,项目名称:tests-mellanox,代码行数:101,代码来源:osh_reduce_tc8.c
示例9: main
int main(int argc, char *argv[])
{
int i = 0, rank, size;
int skip, numprocs;
static double avg_time = 0.0, max_time = 0.0, min_time = 0.0;
static double latency = 0.0;
int64_t t_start = 0, t_stop = 0, timer=0;
char *buffer=NULL;
int max_msg_size = 1048576, full = 0;
int t;
for ( t = 0; t < _SHMEM_BCAST_SYNC_SIZE; t += 1) pSyncBcast1[t] = _SHMEM_SYNC_VALUE;
for ( t = 0; t < _SHMEM_BCAST_SYNC_SIZE; t += 1) pSyncBcast2[t] = _SHMEM_SYNC_VALUE;
for ( t = 0; t < _SHMEM_REDUCE_SYNC_SIZE; t += 1) pSyncRed1[t] = _SHMEM_SYNC_VALUE;
for ( t = 0; t < _SHMEM_REDUCE_SYNC_SIZE; t += 1) pSyncRed2[t] = _SHMEM_SYNC_VALUE;
start_pes(0);
rank = _my_pe();
numprocs = _num_pes();
if (process_args(argc, argv, rank, &max_msg_size, &full)) {
return 0;
}
if(numprocs < 2) {
if(rank == 0) {
fprintf(stderr, "This test requires at least two processes\n");
}
return -1;
}
print_header(rank, full);
buffer = shmalloc(max_msg_size * sizeof(char));
if(NULL == buffer) {
fprintf(stderr, "malloc failed.\n");
exit(1);
}
memset(buffer,1, max_msg_size);
for(size=1; size <=max_msg_size/sizeof(uint32_t); size *= 2) {
if(size > LARGE_MESSAGE_SIZE) {
skip = SKIP_LARGE;
iterations = iterations_large;
}
else {
skip = SKIP;
}
timer=0;
for(i=0; i < iterations + skip ; i++) {
t_start = TIME();
if(i%2)
shmem_broadcast32(buffer, buffer, size, 0, 0, 0, numprocs, pSyncBcast1);
else
shmem_broadcast32(buffer, buffer, size, 0, 0, 0, numprocs, pSyncBcast2);
t_stop = TIME();
if(i>=skip){
timer+=t_stop-t_start;
}
shmem_barrier_all();
}
shmem_barrier_all();
latency = (1.0 * timer) / iterations;
shmem_double_min_to_all(&min_time, &latency, 1, 0, 0, numprocs, pWrk1, pSyncRed1);
shmem_double_max_to_all(&max_time, &latency, 1, 0, 0, numprocs, pWrk2, pSyncRed2);
shmem_double_sum_to_all(&avg_time, &latency, 1, 0, 0, numprocs, pWrk1, pSyncRed1);
avg_time = avg_time/numprocs;
print_data(rank, full, size*sizeof(uint32_t), avg_time, min_time, max_time, iterations);
}
shfree(buffer);
return EXIT_SUCCESS;
}
开发者ID:medicalwei,项目名称:virt-ib,代码行数:77,代码来源:osu_oshm_broadcast.c
示例10: _PERM_IR
//.........这里部分代码省略.........
#ifdef _SHMEM_PERMUTE_DEBUG
printf("%d sending count to %d\n", _INDEX, i);
fflush(stdout);
#endif
shmem_int_put(&(rsize[_INDEX]), &(lsize[i]), 1, i);
}
}
rsize[_INDEX] = lsize[_INDEX];
shmem_barrier_all();
#ifdef _SHMEM_PERMUTE_DEBUG
sleep(_PROCESSORS);
#endif
_PERM_CleanIndices(lsize, rsize, lind, rind, &lindbase, &rindbase);
#ifdef _SHMEM_PERMUTE_DEBUG
sleep(_INDEX);
printf("FROM PROCESSOR %d\n", _INDEX);
printf(" LSIZE = ");
for (i = 0; i < _PROCESSORS; i++) {
printf("%d ", lsize[i]);
}
printf("\n");
printf(" RSIZE = ");
for (i = 0; i < _PROCESSORS; i++) {
printf("%d ", rsize[i]);
}
printf("\n");
printf(" PROCMAP: size = %d, # elts = %d, encoded = %d :: ", pm->procmap[0], pm->procmap[1], pm->procmap[2]);
for (j = 3; j < pm->procmap[0]; j++) {
printf("%d ", pm->procmap[j]);
}
printf("\n");
for (i = 0; i < _PROCESSORS; i++) {
if (lind[i] != 0) {
printf(" TO PROCESSOR %d: ", i);
printf("size = %d, # elts = %d, encoded = %d :: ", lind[i][0], lind[i][1], lind[i][2]);
for (j = 3; j < lind[i][0]; j++) {
printf("%d ", lind[i][j]);
}
printf("\n");
}
}
printf("\n");
fflush(stdout);
sleep(_PROCESSORS-_INDEX);
#endif
for (i = (_INDEX == _PROCESSORS - 1) ? 0 : _INDEX+1;
i != _INDEX;
i = (i == _PROCESSORS - 1) ? 0 : i++) {
if (rsize[i] > 0) {
#ifdef _SHMEM_PERMUTE_DEBUG
printf("%d sending rind address to %d\n", _INDEX, i);
fflush(stdout);
#endif
rflag[_INDEX] = 0;
shmem_put((void*)&(rptr[_INDEX]), (void*)&(rind[i]), 1, i);
}
}
#ifdef _SHMEM_PERMUTE_DEBUG
sleep(_PROCESSORS);
#endif
for (i = (_INDEX == 0) ? _PROCESSORS-1 : _INDEX-1;
i != _INDEX;
i = (i == 0) ? _PROCESSORS-1 : i--) {
if (lsize[i] > 0) {
#ifdef _SHMEM_PERMUTE_DEBUG
printf("%d waiting for rind address from %d, sending lind\n", _INDEX, i);
fflush(stdout);
#endif
shmem_wait((long*)&(rptr[i]), 0);
addr = (int*)rptr[i];
rptr[i] = 0;
shmem_int_put(addr, lind[i], lsize[i], i);
}
}
#ifdef _SHMEM_PERMUTE_DEBUG
sleep(_PROCESSORS);
#endif
shmem_fence();
for (i = (_INDEX == 0) ? _PROCESSORS-1 : _INDEX-1;
i != _INDEX;
i = (i == 0) ? _PROCESSORS-1 : i--) {
if (lsize[i] > 0) {
#ifdef _SHMEM_PERMUTE_DEBUG
printf("IR %d sending one to %d\n", _INDEX, i);
fflush(stdout);
#endif
shmem_int_put(&(rflag[_INDEX]), &one, 1, i);
}
}
if (lsize[_INDEX] > 0) {
memcpy(rind[_INDEX], lind[_INDEX], lsize[_INDEX]*sizeof(int));
}
pm->lindbase = lindbase;
pm->rindbase = rindbase;
shfree(lsize);
shfree(rsize);
}
开发者ID:tangentforks,项目名称:zpl,代码行数:101,代码来源:shmem_permute.c
示例11: test_item4
static int test_item4(void)
{
int rc = TC_PASS;
TYPE_VALUE* shmem_addr = NULL;
TYPE_VALUE* recv_addr = NULL;
TYPE_VALUE my_value = 0;
TYPE_VALUE peer_value = 0;
TYPE_VALUE expect_value = 0;
int num_proc = 0;
int my_proc = 0;
int peer_proc = 0;
num_proc = _num_pes();
my_proc = _my_pe();
shmem_addr = (TYPE_VALUE*)shmalloc(sizeof(*shmem_addr) * __max_buffer_size);
recv_addr = (TYPE_VALUE*)sys_malloc(sizeof(*recv_addr) * __max_buffer_size);
if (shmem_addr && recv_addr)
{
INT64_TYPE i = 0;
long cur_buf_size = 0;
my_value = 0;
for (i = 0; (i < __cycle_count) && (rc == TC_PASS); i++)
{
/* Set my value */
my_value = (my_proc % 2 ? 1 : -1) * (i * (MAX_VALUE / __cycle_count));
cur_buf_size = sys_max(1, (i + 1) * __max_buffer_size / __cycle_count);
fill_buffer((void *)shmem_addr, cur_buf_size, (void *)&my_value, sizeof(my_value));
/* Give some time to all PE for setting their values */
shmem_barrier_all();
/* Define peer and it value */
peer_proc = (my_proc + 1) % num_proc;
peer_value = (peer_proc % 2 ? 1 : -1) * (i * (MAX_VALUE / __cycle_count));
/* Define expected value */
expect_value = peer_value;
/* Get value from peer */
FUNC_VALUE(recv_addr, shmem_addr, cur_buf_size, peer_proc);
rc = (!compare_buffer_with_const(recv_addr, cur_buf_size, &expect_value, sizeof(expect_value)) ? TC_PASS : TC_FAIL);
log_debug(OSH_TC, "my(#%d:%Lf) peer(#%d:%Lf) expected = %Lf buffer size = %lld\n",
my_proc, (long double)my_value, peer_proc, (long double)peer_value, (long double)expect_value, (INT64_TYPE)cur_buf_size);
if (rc)
{
TYPE_VALUE* check_addr = recv_addr;
int odd_index = compare_buffer_with_const(check_addr, cur_buf_size, &expect_value, sizeof(expect_value));
int show_index = (odd_index > 1 ? odd_index - 2 : 0);
int show_size = sizeof(*check_addr) * sys_min(3, cur_buf_size - odd_index - 1);
log_debug(OSH_TC, "index of incorrect value: 0x%08X (%d)\n", odd_index - 1, odd_index - 1);
log_debug(OSH_TC, "buffer interval: 0x%08X - 0x%08X\n", show_index, show_index + show_size);
show_buffer(check_addr + show_index, show_size);
}
shmem_barrier_all();
}
}
else
{
rc = TC_SETUP_FAIL;
}
if (recv_addr)
{
sys_free(recv_addr);
}
if (shmem_addr)
{
shfree(shmem_addr);
}
return rc;
}
开发者ID:openshmem-org,项目名称:tests-mellanox,代码行数:80,代码来源:osh_data_tc19.c
示例12: _ZPL_SYM_FREE
void _ZPL_SYM_FREE(void *ptr, char* description) {
shfree(ptr);
}
开发者ID:tangentforks,项目名称:zpl,代码行数:3,代码来源:shmem_mem.c
示例13: main
//.........这里部分代码省略.........
/* cswap() should not swap as cond(0) != remote(8) */
dst_llong = shmem_longlong_cswap(src_llong,0,0,1);
if (dst_llong != 16) {
printf("PE-%d longlong no-swap returned dst_llong %lld != 16?\n",
me,dst_llong);
exit(1);
}
/* verify previous cswap() did not swap */
lltmp = shmem_longlong_g(src_llong,1);
if (lltmp != 16) {
printf("PE-0 failed cond longlong_cswap() swapped? rem(%lld) != 16?\n",
lltmp);
exit(1);
}
}
else {
if (!shmem_addr_accessible(src_int,0)) {
printf("PE-%d local src_int %p not accessible from PE-%d?\n",
me, (void*)src_int, 0);
exit(1);
}
if (!shmem_addr_accessible(src_long,0)) {
printf("PE-%d local src_long %p not accessible from PE-%d?\n",
me, (void*)src_long, 0);
exit(1);
}
if (!shmem_addr_accessible(src_llong,0)) {
printf("PE-%d local src_llong %p not accessible from PE-%d?\n",
me, (void*)src_llong, 0);
exit(1);
}
}
shmem_barrier_all();
/* shmem_*fadd() exercise */
if (me == 0) {
itmp = 0;
ltmp = 0;
lltmp = 0;
*src_int = 0;
*src_long = 0;
*src_llong = 0;
}
shmem_barrier_all();
(void)shmem_int_fadd( &itmp, me+1, 0 );
(void)shmem_long_fadd( <mp, me+1, 0 );
(void)shmem_longlong_fadd( &lltmp, me+1, 0 );
shmem_barrier_all();
if (me == 0) {
int tot;
for(pe=0,tot=0; pe < num_pes; pe++)
tot += pe+1;
if ( itmp != tot )
printf("fadd() total %d != expected %d?\n",itmp,tot);
if ( ltmp != (long)tot )
printf("fadd() total %ld != expected %d?\n",ltmp,tot);
if ( lltmp != (long long)tot )
printf("fadd() total %lld != expected %d?\n",lltmp,tot);
}
shmem_barrier_all();
(void)shmem_int_finc(src_int,0);
(void)shmem_long_finc(src_long,0);
(void)shmem_longlong_finc(src_llong,0);
shmem_barrier_all();
if (me == 0) {
int tot = num_pes;
if ( *src_int != tot )
printf("finc() total %d != expected %d?\n",*src_int,tot);
if ( *src_long != (long)tot )
printf("finc() total %ld != expected %d?\n",*src_long,tot);
if ( *src_llong != (long long)tot )
printf("finc() total %lld != expected %d?\n",*src_llong,tot);
}
shmem_barrier_all();
shfree(src_int);
shfree(src_long);
shfree(src_llong);
}
if (Verbose)
fprintf(stderr,"[%d] exit\n",_my_pe());
return 0;
}
开发者ID:coti,项目名称:oshmpi,代码行数:101,代码来源:cswap.c
示例14: main
int main(int argc, char **argv)
{
int i,j;
short oldjs, oldxs, my_pes;
int oldji, oldxi, my_pei;
long oldjl, oldxl, my_pel;
long long oldjll,oldxll,my_pell;
float oldjf, oldxf, my_pef;
double oldjd, oldxd, my_ped;
int my_pe,n_pes;
size_t max_elements,max_elements_bytes;
static short *xs;
static int *xi;
static long *xl;
static long long *xll;
static float *xf;
static double *xd;
start_pes(0);
my_pe = shmem_my_pe();
n_pes = shmem_n_pes();
my_pes = (short) my_pe;
my_pei = (int) my_pe;
my_pel = (long) my_pe;
my_pell = (long long) my_pe;
my_pef = (float) my_pe;
my_ped = (double) my_pe;
#ifdef HAVE_SET_CACHE_INV
shmem_set_cache_inv();
#endif
/* fail if trying to use only one processor */
if ( n_pes <= 1 ){
fprintf(stderr, "FAIL - test requires at least two PEs\n");
exit(1);
}
if(my_pe == 0)
fprintf(stderr, "shmem_swap(%s) n_pes=%d\n", argv[0],n_pes);
/* test shmem_short_swap */
/* shmalloc xs on all pes (only check the ones on PE 0) */
max_elements_bytes = (size_t) (sizeof(short) * n_pes);
xs = shmalloc( max_elements_bytes );
for(i=0; i<n_pes; i++)
xs[i] = 0;
shmem_barrier_all();
oldjs = 0;
for(i=0; i<ITER; i++) {
if (my_pe != 0) {
my_pes = my_pes + (short) 1;
/* record PE value in xs[my_pe] -- save PE number */
oldxs = shmem_short_swap(&xs[my_pe], my_pes, 0);
/* printf("PE=%d,i=%d,my_pes=%d,oldxs=%d\n",my_pe,i,my_pes,oldxs); */
if (oldxs != oldjs)
fprintf(stderr, "FAIL PE %d of %d: i=%d, oldxs = %d expected = %d\n",
my_pe, n_pes, i, oldxs, oldjs);
oldjs = my_pes;
}
}
shmem_barrier_all();
if (my_pe == 0) { /* check xs[j] array vs PE# + ITER */
i = (int) ITER + 1;
for(j=1 ; j<n_pes; j++) {
/* printf("j=%d,xs[%d]=%d,i=%d\n",j,j,xs[j],i); */
if (xs[j] != (short) i)
fprintf(stderr, "FAIL PE %d of %d: xs[%d] = %d expected = %d\n",
my_pe, n_pes, j, xs[j],i);
i++;
}
}
shfree(xs);
/* test shmem_int_swap */
/* shmalloc xi on all pes (only check the ones on PE 0) */
max_elements_bytes = (size_t) (sizeof(int) * n_pes);
xi = shmalloc( max_elements_bytes );
for(i=0; i<n_pes; i++)
xi[i] = 0;
shmem_barrier_all();
oldji = 0;
for(i=0; i<ITER; i++) {
if (my_pe != 0) {
my_pei = my_pei + (int) 1;
/* record PE value in xi[my_pe] -- save PE number */
oldxi = shmem_int_swap(&xi[my_pe], my_pei, 0);
/* printf("PE=%d,i=%d,my_pei=%d,oldxi=%d\n",my_pe,i,my_pei,oldxi); */
if (oldxi != oldji)
fprintf(stderr, "FAIL PE %d of %d: i=%d, oldxi = %d expected = %d\n",
my_pe, n_pes, i, oldxi, oldji);
oldji = my_pei;
}
}
shmem_barrier_all();
//.........这里部分代码省略.........
开发者ID:davidknaak,项目名称:tests-cray,代码行数:101,代码来源:shmem_swap_only.c
示例15: shmemx_ct_free
void shmemx_ct_free(shmemx_ct_t *ct)
{
shfree(*ct);
}
开发者ID:jeffhammond,项目名称:oshmpi,代码行数:4,代码来源:shmemx-counting-put.c
示例16: main
//.........这里部分代码省略.........
return EXIT_FAILURE;
}
if(argc != 2) {
usage(myid);
return EXIT_FAILURE;
}
if(0 == strncmp(argv[1], "heap", strlen("heap"))){
use_heap = 1;
} else if(0 == strncmp(argv[1], "global", strlen("global"))){
use_heap = 0;
} else {
usage(myid);
return EXIT_FAILURE;
}
align_size = MESSAGE_ALIGNMENT;
/**************Allocating Memory*********************/
if(use_heap){
s_buf_heap = shmalloc(MYBUFSIZE);
r_buf_heap = shmalloc(MYBUFSIZE);
s_buf =
(char *) (((unsigned long) s_buf_heap + (align_size - 1)) /
align_size * align_size);
r_buf =
(char *) (((unsigned long) r_buf_heap + (align_size - 1)) /
align_size * align_size);
} else {
s_buf =
(char *) (((unsigned long) s_buf_original + (align_size - 1)) /
align_size * align_size);
r_buf =
(char *) (((unsigned long) r_buf_original + (align_size - 1)) /
align_size * align_size);
}
/**************Memory Allocation Done*********************/
if(myid == 0) {
fprintf(stdout, HEADER);
fprintf(stdout, "%-*s%*s\n", 10, "# Size", FIELD_WIDTH, "Latency (us)");
fflush(stdout);
}
for(size = 1; size <= MAX_MSG_SIZE; size = (size ? size * 2 : 1)) {
/* touch the data */
for(i = 0; i < size; i++) {
s_buf[i] = 'a';
r_buf[i] = 'b';
}
if(size > large_message_size) {
loop = loop_large = 100;
skip = skip_large = 0;
}
shmem_barrier_all();
if(myid == 0)
{
for(i = 0; i < loop + skip; i++) {
if(i == skip) t_start = TIME();
shmem_getmem(r_buf, s_buf, size, 1);
}
t_end = TIME();
}
shmem_barrier_all();
if(myid == 0) {
double latency = (1.0 * (t_end-t_start)) / loop;
fprintf(stdout, "%-*d%*.*f\n", 10, size, FIELD_WIDTH,
FLOAT_PRECISION, latency);
fflush(stdout);
}
}
shmem_barrier_all();
if(use_heap){
shfree(s_buf_heap);
shfree(r_buf_heap);
}
shmem_barrier_all();
return EXIT_SUCCESS;
}
开发者ID:Cai900205,项目名称:test,代码行数:101,代码来源:osu_oshm_get.c
示例17: test_item2
static int test_item2(void)
{
int rc = TC_PASS;
TYPE_VALUE* shmem_addr = NULL;
TYPE_VALUE my_value = 0;
TYPE_VALUE expect_value = 0;
int num_proc = 0;
int my_proc = 0;
int peer_proc = 0;
int i = 0;
num_proc = _num_pes();
my_proc = _my_pe();
shmem_addr = shmalloc(sizeof(*shmem_addr));
if (shmem_addr)
{
TYPE_VALUE value = 0;
/* Store my value */
my_value = (TYPE_VALUE)my_proc;
*shmem_addr = DEFAULT_VALUE;
/* Define peer */
peer_proc = (my_proc + 1) % num_proc;
/* Define expected value */
expect_value = ( my_proc == 0 ? (num_proc - 1) : (my_proc - 1) ) + (__cycle_count - 1);
shmem_barrier_all();
for (i = 0; (i < __cycle_count) && (rc == TC_PASS); i++)
{
value = num_proc + __cycle_count;
value = FUNC_VALUE(shmem_addr, value, (my_value + i), peer_proc);
if ( ((i > 0 ) && (value != (my_value + i - 1))) || ((i == 0) && (value != DEFAULT_VALUE)) )
{
break;
}
value = ( i == 0 ? DEFAULT_VALUE : (my_value + i - 1));
value = FUNC_VALUE(shmem_addr, value, (my_value + i), peer_proc);
if ( ((i > 0 ) && (value != (my_value + i - 1))) || ((i == 0) && (value != DEFAULT_VALUE)) )
{
break;
}
}
shmem_barrier_all();
value = *shmem_addr;
rc = (expect_value == value ? TC_PASS : TC_FAIL);
log_debug(OSH_TC, "my(#%d:%lld) expected = %lld vs got = %lld\n",
my_proc, (INT64_TYPE)my_value, (INT64_TYPE)expect_value, (INT64_TYPE)value);
}
else
{
rc = TC_SETUP_FAIL;
}
if (shmem_addr)
{
shfree(shmem_addr);
}
return rc;
}
开发者ID:alex-mikheev,项目名称:tests-mellanox,代码行数:66,代码来源:osh_atomic_tc9.c
示例18: main
//.........这里部分代码省略.........
pgm++;
else
pgm = argv[0];
while ((i = getopt (argc, argv, "hve:l:p:s")) != EOF) {
switch (i)
{
case 'v':
Verbose++;
break;
case 'e':
if ((elements = atoi_scaled(optarg)) <= 0) {
fprintf(stderr,"ERR: Bad elements count %d\n",elements);
return 1;
}
break;
case 'l':
if ((loops = atoi_scaled(optarg)) <= 0) {
fprintf(stderr,"ERR: Bad loop count %d\n",loops);
return 1;
}
break;
case 'p':
if ((ps_cnt = atoi_scaled(optarg)) <= 0) {
fprintf(stderr,"ERR: Bad pSync[] elements %d\n",loops);
return 1;
}
break;
case 's':
Serialize++;
break;
case 'h':
if (me == 0)
usage(pgm);
return 0;
default:
if (me == 0) {
fprintf(stderr,"%s: unknown switch '-%c'?\n",pgm,i);
usage(pgm);
}
return 1;
}
}
ps_cnt *= _SHMEM_BCAST_SYNC_SIZE;
pSync = shmalloc( ps_cnt * sizeof(long) );
for (i = 0; i < ps_cnt; i++)
pSync[i] = _SHMEM_SYNC_VALUE;
source = (int *) shmalloc( elements * sizeof(*source) );
target = (int *) shmalloc( elements * sizeof(*target) );
for (i = 0; i < elements; i += 1) {
source[i] = i + 1;
target[i] = -90;
}
if (me==0 && Verbose)
fprintf(stderr,"ps_cnt %d loops %d nElems %d\n",
ps_cnt,loops,elements);
shmem_barrier_all();
for(time_taken = 0.0, ps = i = 0; i < loops; i++) {
start_time = shmem_wtime();
shmem_broadcast32(target, source, elements, 0, 0, 0, npes, &pSync[ps]);
if (Serialize) shmem_barrier_all();
time_taken += (shmem_wtime() - start_time);
if (ps_cnt > 1 ) {
ps += _SHMEM_BCAST_SYNC_SIZE;
if ( ps >= ps_cnt ) ps = 0;
}
}
if(me == 0 && Verbose) {
printf("%d loops of Broadcast32(%ld bytes) over %d PEs: %7.3f secs\n",
loops, (elements*sizeof(*source)), npes, time_taken);
elements = (elements * loops * sizeof(*source)) / (1024*1024);
printf(" %7.5f secs per broadcast() @ %7.4f MB/sec\n",
(time_taken/(double)loops), ((double)elements / time_taken) );
}
if (Verbose > 1) fprintf(stderr,"[%d] pre B1\n",me);
shmem_barrier_all();
if (Verbose > 1) fprintf(stderr,"[%d] post B1\n",me);
shfree(pSync);
shfree(target);
shfree(source);
return 0;
}
开发者ID:coti,项目名称:oshmpi,代码行数:101,代码来源:bcast_flood.c
|
请发表评论