本文整理汇总了C++中FREE_NULL_BITMAP函数的典型用法代码示例。如果您正苦于以下问题:C++ FREE_NULL_BITMAP函数的具体用法?C++ FREE_NULL_BITMAP怎么用?C++ FREE_NULL_BITMAP使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了FREE_NULL_BITMAP函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: _job_fits_in_active_row
/* Return 1 if job fits in this row, else return 0 */
static int _job_fits_in_active_row(struct job_record *job_ptr,
struct gs_part *p_ptr)
{
job_resources_t *job_res = job_ptr->job_resrcs;
int count;
bitstr_t *job_map;
uint16_t job_gr_type;
if ((p_ptr->active_resmap == NULL) || (p_ptr->jobs_active == 0))
return 1;
job_gr_type = _get_part_gr_type(job_ptr->part_ptr);
if ((job_gr_type == GS_CPU2) || (job_gr_type == GS_CORE) ||
(job_gr_type == GS_SOCKET)) {
return job_fits_into_cores(job_res, p_ptr->active_resmap,
gs_bits_per_node);
}
/* job_gr_type == GS_NODE || job_gr_type == GS_CPU */
job_map = bit_copy(job_res->node_bitmap);
bit_and(job_map, p_ptr->active_resmap);
/* any set bits indicate contention for the same resource */
count = bit_set_count(job_map);
if (slurmctld_conf.debug_flags & DEBUG_FLAG_GANG)
info("gang: _job_fits_in_active_row: %d bits conflict", count);
FREE_NULL_BITMAP(job_map);
if (count == 0)
return 1;
if (job_gr_type == GS_CPU) {
/* For GS_CPU we check the CPU arrays */
return _can_cpus_fit(job_ptr, p_ptr);
}
return 0;
}
开发者ID:corburn,项目名称:slurm,代码行数:36,代码来源:gang.c
示例2: reset_node_bitmap
/* Reset the node_bitmap in a job_resources data structure
* This is needed after a restart/reconfiguration since nodes can
* be added or removed from the system resulting in changing in
* the bitmap size or bit positions */
extern int reset_node_bitmap(job_resources_t *job_resrcs_ptr, uint32_t job_id)
{
int i;
if (!job_resrcs_ptr)
return SLURM_SUCCESS;
if (job_resrcs_ptr->node_bitmap)
FREE_NULL_BITMAP(job_resrcs_ptr->node_bitmap);
if (job_resrcs_ptr->nodes &&
(node_name2bitmap(job_resrcs_ptr->nodes, false,
&job_resrcs_ptr->node_bitmap))) {
error("Invalid nodes (%s) for job_id %u",
job_resrcs_ptr->nodes, job_id);
return SLURM_ERROR;
} else if (job_resrcs_ptr->nodes == NULL) {
job_resrcs_ptr->node_bitmap = bit_alloc(node_record_count);
}
i = bit_set_count(job_resrcs_ptr->node_bitmap);
if (job_resrcs_ptr->nhosts != i) {
error("Invalid change in resource allocation node count for "
"job %u, %u to %d", job_id, job_resrcs_ptr->nhosts, i);
return SLURM_ERROR;
}
return SLURM_SUCCESS;
}
开发者ID:dinesh121991,项目名称:Backup-M2R-Intern-Bull-Slurm-Codes,代码行数:32,代码来源:job_resources.c
示例3: powercap_get_job_optimal_cpufreq
int powercap_get_job_optimal_cpufreq(uint32_t powercap, int *allowed_freqs)
{
uint32_t cur_max_watts = 0, *tmp_max_watts_dvfs = NULL;
int k = 1;
bitstr_t *tmp_bitmap = NULL;
if (!_powercap_enabled())
return 0;
tmp_max_watts_dvfs = xmalloc(sizeof(uint32_t) * (allowed_freqs[0]+1));
tmp_bitmap = bit_copy(idle_node_bitmap);
bit_not(tmp_bitmap);
cur_max_watts = powercap_get_node_bitmap_maxwatts_dvfs(tmp_bitmap,
idle_node_bitmap, tmp_max_watts_dvfs,
allowed_freqs, 0);
FREE_NULL_BITMAP(tmp_bitmap);
if (cur_max_watts > powercap) {
while (tmp_max_watts_dvfs[k] > powercap &&
k < allowed_freqs[0] + 1) {
k++;
}
if (k == allowed_freqs[0] + 1)
k--;
} else {
k = 1;
}
xfree(tmp_max_watts_dvfs);
return k;
}
开发者ID:HPCNow,项目名称:slurm,代码行数:32,代码来源:powercapping.c
示例4: _re_wake
/* If slurmctld crashes, the node state that it recovers could differ
* from the actual hardware state (e.g. ResumeProgram failed to complete).
* To address that, when a node that should be powered up for a running
* job is not responding, they try running ResumeProgram again. */
static void _re_wake(void)
{
struct node_record *node_ptr;
bitstr_t *wake_node_bitmap = NULL;
int i;
node_ptr = node_record_table_ptr;
for (i=0; i<node_record_count; i++, node_ptr++) {
if (IS_NODE_ALLOCATED(node_ptr) &&
IS_NODE_NO_RESPOND(node_ptr) &&
!IS_NODE_POWER_SAVE(node_ptr) &&
(bit_test(suspend_node_bitmap, i) == 0) &&
(bit_test(resume_node_bitmap, i) == 0)) {
if (wake_node_bitmap == NULL) {
wake_node_bitmap =
bit_alloc(node_record_count);
}
bit_set(wake_node_bitmap, i);
}
}
if (wake_node_bitmap) {
char *nodes;
nodes = bitmap2node_name(wake_node_bitmap);
if (nodes) {
pid_t pid = _run_prog(resume_prog, nodes, NULL);
info("power_save: pid %d rewaking nodes %s",
(int) pid, nodes);
} else
error("power_save: bitmap2nodename");
xfree(nodes);
FREE_NULL_BITMAP(wake_node_bitmap);
}
}
开发者ID:edsw,项目名称:slurm,代码行数:38,代码来源:power_save.c
示例5: _list_delete_part
/*
* _list_delete_part - delete an entry from the global partition list,
* see common/list.h for documentation
* global: node_record_count - count of nodes in the system
* node_record_table_ptr - pointer to global node table
*/
static void _list_delete_part(void *part_entry)
{
struct part_record *part_ptr;
struct node_record *node_ptr;
int i, j, k;
part_ptr = (struct part_record *) part_entry;
node_ptr = &node_record_table_ptr[0];
for (i = 0; i < node_record_count; i++, node_ptr++) {
for (j=0; j<node_ptr->part_cnt; j++) {
if (node_ptr->part_pptr[j] != part_ptr)
continue;
node_ptr->part_cnt--;
for (k=j; k<node_ptr->part_cnt; k++) {
node_ptr->part_pptr[k] =
node_ptr->part_pptr[k+1];
}
break;
}
}
xfree(part_ptr->allow_alloc_nodes);
xfree(part_ptr->allow_groups);
xfree(part_ptr->allow_uids);
xfree(part_ptr->alternate);
xfree(part_ptr->name);
xfree(part_ptr->nodes);
FREE_NULL_BITMAP(part_ptr->node_bitmap);
xfree(part_entry);
}
开发者ID:lipari,项目名称:slurm,代码行数:36,代码来源:partition_mgr.c
示例6: task_state_print
void task_state_print (task_state_t ts, log_f fn)
{
bitstr_t *unseen;
if (!ts) /* Not built yet */
return;
unseen = bit_alloc (ts->n_tasks);
if (bit_set_count (ts->start_failed)) {
_do_log_msg (ts->start_failed, fn, "failed to start");
bit_or (unseen, ts->start_failed);
}
if (bit_set_count (ts->running)) {
_do_log_msg (ts->running, fn, "running");
bit_or (unseen, ts->running);
}
if (bit_set_count (ts->abnormal_exit)) {
_do_log_msg (ts->abnormal_exit, fn, "exited abnormally");
bit_or (unseen, ts->abnormal_exit);
}
if (bit_set_count (ts->normal_exit)) {
_do_log_msg (ts->normal_exit, fn, "exited");
bit_or (unseen, ts->normal_exit);
}
bit_not (unseen);
if (bit_set_count (unseen))
_do_log_msg (unseen, fn, "unknown");
FREE_NULL_BITMAP(unseen);
}
开发者ID:diorsman,项目名称:slurm,代码行数:29,代码来源:task_state.c
示例7: hostlist2bitmap
/*
* hostlist2bitmap - given a hostlist, build a bitmap representation
* IN hl - hostlist
* IN best_effort - if set don't return an error on invalid node name entries
* OUT bitmap - set to bitmap, may not have all bits set on error
* RET 0 if no error, otherwise EINVAL
*/
extern int hostlist2bitmap (hostlist_t hl, bool best_effort, bitstr_t **bitmap)
{
int rc = SLURM_SUCCESS;
bitstr_t *my_bitmap;
char *name;
hostlist_iterator_t hi;
FREE_NULL_BITMAP(*bitmap);
my_bitmap = (bitstr_t *) bit_alloc (node_record_count);
*bitmap = my_bitmap;
hi = hostlist_iterator_create(hl);
while ((name = hostlist_next(hi)) != NULL) {
struct node_record *node_ptr;
node_ptr = _find_node_record(name, best_effort, true);
if (node_ptr) {
bit_set (my_bitmap, (bitoff_t) (node_ptr -
node_record_table_ptr));
} else {
error ("hostlist2bitmap: invalid node specified %s",
name);
if (!best_effort)
rc = EINVAL;
}
free (name);
}
hostlist_iterator_destroy(hi);
return rc;
}
开发者ID:HDOD,项目名称:slurm,代码行数:38,代码来源:node_conf.c
示例8: _clear_power_config
/* Free all allocated memory */
static void _clear_power_config(void)
{
xfree(suspend_prog);
xfree(resume_prog);
xfree(exc_nodes);
xfree(exc_parts);
FREE_NULL_BITMAP(exc_node_bitmap);
}
开发者ID:edsw,项目名称:slurm,代码行数:9,代码来源:power_save.c
示例9: _destroy_bitmap
static void _destroy_bitmap(void *object)
{
bitstr_t *bitstr = (bitstr_t *)object;
if (bitstr) {
FREE_NULL_BITMAP(bitstr);
}
}
开发者ID:masteraxl,项目名称:slurm,代码行数:8,代码来源:bg_read_config.c
示例10: _list_delete_feature
/* _list_delete_feature - delete an entry from the feature list,
* see list.h for documentation */
static void _list_delete_feature (void *feature_entry)
{
node_feature_t *feature_ptr = (node_feature_t *) feature_entry;
xassert(feature_ptr);
xassert(feature_ptr->magic == FEATURE_MAGIC);
xfree (feature_ptr->name);
FREE_NULL_BITMAP (feature_ptr->node_bitmap);
xfree (feature_ptr);
}
开发者ID:FredHutch,项目名称:slurm,代码行数:12,代码来源:node_conf.c
示例11: _destroy_local_cluster
static void _destroy_local_cluster(void *object)
{
local_cluster_t *local_cluster = (local_cluster_t *)object;
if (local_cluster) {
if (local_cluster->hl)
hostlist_destroy(local_cluster->hl);
FREE_NULL_BITMAP(local_cluster->asked_bitmap);
xfree(local_cluster);
}
}
开发者ID:jwhite530,项目名称:slurm,代码行数:10,代码来源:as_mysql_jobacct_process.c
示例12: _free_node_subgrp
static void _free_node_subgrp(void *object)
{
node_subgrp_t *subgrp = (node_subgrp_t *)object;
if (subgrp) {
FREE_NULL_BITMAP(subgrp->bitmap);
xfree(subgrp->str);
xfree(subgrp->inx);
xfree(subgrp);
}
}
开发者ID:BYUHPC,项目名称:slurm,代码行数:10,代码来源:bg_node_info.c
示例13: fini
int fini(void)
{
#ifdef HAVE_NATIVE_CRAY
pthread_mutex_lock(&port_mutex);
FREE_NULL_BITMAP(port_resv);
pthread_mutex_unlock(&port_mutex);
#endif
return SLURM_SUCCESS;
}
开发者ID:RPI-HPC,项目名称:slurm,代码行数:11,代码来源:switch_cray.c
示例14: _delete_gres_list
static void _delete_gres_list(void *x)
{
gres_slurmd_conf_t *p = (gres_slurmd_conf_t *) x;
xfree(p->cpus);
FREE_NULL_BITMAP(p->cpus_bitmap);
xfree(p->file);
xfree(p->links);
xfree(p->name);
xfree(p->type_name);
xfree(p);
}
开发者ID:SchedMD,项目名称:slurm,代码行数:11,代码来源:gres_mps.c
示例15: _lllp_free_masks
static void _lllp_free_masks(const uint32_t maxtasks, bitstr_t **masks)
{
int i;
bitstr_t *bitmask;
for (i = 0; i < maxtasks; i++) {
bitmask = masks[i];
FREE_NULL_BITMAP(bitmask);
}
xfree(masks);
}
开发者ID:francois-wellenreiter,项目名称:slurm,代码行数:11,代码来源:dist_tasks.c
示例16: slurm_job_cpus_allocated_str_on_node_id
int slurm_job_cpus_allocated_str_on_node_id(char *cpus,
size_t cpus_len,
job_resources_t *job_resrcs_ptr,
int node_id)
{
uint32_t threads = 1;
int inx = 0;
bitstr_t *cpu_bitmap;
int j, k, bit_inx, bit_reps, hi;
if (!job_resrcs_ptr || node_id < 0)
slurm_seterrno_ret(EINVAL);
/* find index in and first bit index in sock_core_rep_count[]
* for this node id */
bit_inx = 0;
hi = node_id + 1; /* change from 0-origin to 1-origin */
for (inx = 0; hi; inx++) {
if (hi > job_resrcs_ptr->sock_core_rep_count[inx]) {
bit_inx += job_resrcs_ptr->sockets_per_node[inx] *
job_resrcs_ptr->cores_per_socket[inx] *
job_resrcs_ptr->sock_core_rep_count[inx];
hi -= job_resrcs_ptr->sock_core_rep_count[inx];
} else {
bit_inx += job_resrcs_ptr->sockets_per_node[inx] *
job_resrcs_ptr->cores_per_socket[inx] *
(hi - 1);
break;
}
}
bit_reps = job_resrcs_ptr->sockets_per_node[inx] *
job_resrcs_ptr->cores_per_socket[inx];
/* get the number of threads per core on this node
*/
if (job_node_ptr)
threads = job_node_ptr->node_array[node_id].threads;
cpu_bitmap = bit_alloc(bit_reps * threads);
for (j = 0; j < bit_reps; j++) {
if (bit_test(job_resrcs_ptr->core_bitmap, bit_inx)){
for (k = 0; k < threads; k++)
bit_set(cpu_bitmap,
(j * threads) + k);
}
bit_inx++;
}
bit_fmt(cpus, cpus_len, cpu_bitmap);
FREE_NULL_BITMAP(cpu_bitmap);
return SLURM_SUCCESS;
}
开发者ID:fafik23,项目名称:slurm,代码行数:52,代码来源:job_info.c
示例17: reserve_port_config
/* Configure reserved ports.
* Call with mpi_params==NULL to free memory */
extern int reserve_port_config(char *mpi_params)
{
char *tmp_e=NULL, *tmp_p=NULL;
int i, p_min, p_max;
if (mpi_params)
tmp_p = strstr(mpi_params, "ports=");
if (tmp_p == NULL) {
if (port_resv_table) {
info("Clearing port reservations");
for (i=0; i<port_resv_cnt; i++)
FREE_NULL_BITMAP(port_resv_table[i]);
xfree(port_resv_table);
port_resv_cnt = 0;
port_resv_min = port_resv_max = 0;
}
return SLURM_SUCCESS;
}
tmp_p += 6;
p_min = strtol(tmp_p, &tmp_e, 10);
if ((p_min < 1) || (tmp_e[0] != '-')) {
info("invalid MpiParams: %s", mpi_params);
return SLURM_ERROR;
}
tmp_e++;
p_max = strtol(tmp_e, NULL, 10);
if (p_max < p_min) {
info("invalid MpiParams: %s", mpi_params);
return SLURM_ERROR;
}
if ((p_min == port_resv_min) && (p_max == port_resv_max)) {
_dump_resv_port_info();
return SLURM_SUCCESS; /* No change */
}
port_resv_min = p_min;
port_resv_max = p_max;
port_resv_cnt = p_max - p_min + 1;
debug("Ports available for reservation %u-%u",
port_resv_min, port_resv_max);
xfree(port_resv_table);
port_resv_table = xmalloc(sizeof(bitstr_t *) * port_resv_cnt);
for (i=0; i<port_resv_cnt; i++)
port_resv_table[i] = bit_alloc(node_record_count);
_make_all_resv();
_dump_resv_port_info();
return SLURM_SUCCESS;
}
开发者ID:Cray,项目名称:slurm,代码行数:54,代码来源:port_mgr.c
示例18: good_nodes_from_inx
extern int good_nodes_from_inx(List local_cluster_list,
void **object, char *node_inx,
int start)
{
local_cluster_t **curr_cluster = (local_cluster_t **)object;
/* check the bitmap to see if this is one of the jobs
we are looking for */
if (*curr_cluster) {
bitstr_t *job_bitmap = NULL;
if (!node_inx || !node_inx[0])
return 0;
if ((start < (*curr_cluster)->start)
|| (start > (*curr_cluster)->end)) {
local_cluster_t *local_cluster = NULL;
ListIterator itr =
list_iterator_create(local_cluster_list);
while ((local_cluster = list_next(itr))) {
if ((start >= local_cluster->start)
&& (start <= local_cluster->end)) {
*curr_cluster = local_cluster;
break;
}
}
list_iterator_destroy(itr);
if (!local_cluster)
return 0;
}
job_bitmap = bit_alloc(hostlist_count((*curr_cluster)->hl));
bit_unfmt(job_bitmap, node_inx);
if (!bit_overlap((*curr_cluster)->asked_bitmap, job_bitmap)) {
FREE_NULL_BITMAP(job_bitmap);
return 0;
}
FREE_NULL_BITMAP(job_bitmap);
}
return 1;
}
开发者ID:jwhite530,项目名称:slurm,代码行数:39,代码来源:as_mysql_jobacct_process.c
示例19: job_requeue_wiki
/* RET 0 on success, -1 on failure */
extern int job_requeue_wiki(char *cmd_ptr, int *err_code, char **err_msg)
{
char *arg_ptr, *tmp_char;
uint32_t jobid;
struct job_record *job_ptr;
static char reply_msg[128];
int slurm_rc;
/* Write lock on job and node info */
slurmctld_lock_t job_write_lock = {
NO_LOCK, WRITE_LOCK, WRITE_LOCK, NO_LOCK, NO_LOCK };
arg_ptr = strstr(cmd_ptr, "ARG=");
if (arg_ptr == NULL) {
*err_code = -300;
*err_msg = "REQUEUEJOB lacks ARG";
error("wiki: REQUEUEJOB lacks ARG");
return -1;
}
jobid = strtoul(arg_ptr+4, &tmp_char, 10);
if ((tmp_char[0] != '\0') && (!isspace(tmp_char[0]))) {
*err_code = -300;
*err_msg = "Invalid ARG value";
error("wiki: REQUEUEJOB has invalid jobid");
return -1;
}
lock_slurmctld(job_write_lock);
slurm_rc = job_requeue(0, jobid, NULL, false, 0);
if (slurm_rc != SLURM_SUCCESS) {
unlock_slurmctld(job_write_lock);
*err_code = -700;
*err_msg = slurm_strerror(slurm_rc);
error("wiki: Failed to requeue job %u (%m)", jobid);
return -1;
}
/* We need to clear the required node list here.
* If the job was submitted with srun and a
* required node list, it gets lost here. */
job_ptr = find_job_record(jobid);
if (job_ptr && job_ptr->details) {
xfree(job_ptr->details->req_nodes);
FREE_NULL_BITMAP(job_ptr->details->req_node_bitmap);
}
info("wiki: requeued job %u", jobid);
unlock_slurmctld(job_write_lock);
snprintf(reply_msg, sizeof(reply_msg),
"job %u requeued successfully", jobid);
*err_msg = reply_msg;
return 0;
}
开发者ID:fafik23,项目名称:slurm,代码行数:52,代码来源:job_requeue.c
示例20: _list_delete_config
/* _list_delete_config - delete an entry from the config list,
* see list.h for documentation */
static void _list_delete_config (void *config_entry)
{
struct config_record *config_ptr = (struct config_record *)
config_entry;
xassert(config_ptr);
xassert(config_ptr->magic == CONFIG_MAGIC);
xfree(config_ptr->feature);
xfree(config_ptr->gres);
build_config_feature_list(config_ptr);
xfree (config_ptr->nodes);
FREE_NULL_BITMAP (config_ptr->node_bitmap);
xfree (config_ptr);
}
开发者ID:jsollom,项目名称:slurm,代码行数:16,代码来源:node_conf.c
注:本文中的FREE_NULL_BITMAP函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论