OMPi运行时库源码注释
文章平均质量分 69
u011583439
这个作者很懒,什么都没留下…
展开
-
ort_private.h
#ifndef ORT_PRIVE_H #define ORT_PRIVE_H #include "ort.h" #include "pthreads/ee.h" //定义最大的活跃并行域数目限制 #define MAXACTIVEREGIONS 50 //定义工作分担类型,工作分担有三中:SINGLE、SECTIONS、FOR #define _OMP_SINGLE 0 #define原创 2013-09-02 09:21:41 · 857 阅读 · 0 评论 -
sysdeps.c
#include "sysdeps.h" #include int ort_get_num_procs(void) {//获取系统的处理器内核数目 int np; np = sysconf(_SC_NPROCESSORS_ONLN);//从系统信息中获取内核数目信息 if (np <= 0) {//获取内核数目失败,将内核数目设置为1 extern void ort_w原创 2013-09-02 09:24:30 · 742 阅读 · 0 评论 -
ort_workstealing.c
#include "ort_prive.h" #include #include #define FAILURE 0 #define SUCCESS 1 /* Allocate memory for my group task queues */ inline void ort_task_queues_init(ort_eecb_t *me, int nthr) { int i;原创 2013-09-02 09:25:57 · 626 阅读 · 0 评论 -
ort_tasks.c
#include "ort_prive.h" #include #include #define FAILURE 0 #define NO_TASKS_LEFT -1 #define NO_VICTIM_LEFT -1 //流量控制模块,开启流量控制时任务立即执行而不放到任务队列中去 ee_key_t throttle_key; //开启流量控制 #define __start_thr原创 2013-09-02 09:27:31 · 840 阅读 · 0 评论 -
ort_pools.c
#include "ort_prive.h" #include #include ort_task_node_t* ort_task_alloc(void* (*func)(void *), void *arg) { if(arg != NULL)//任务函数参数非空,那么就返回此参数所在的任务节点 return *((ort_task_node_t **)PP(arg));原创 2013-09-02 09:28:24 · 718 阅读 · 0 评论 -
ort_omp.c
#include "ort_prive.h" #include #include //判断当前位置是否在并行域内,判断的依据是当前的eecb的活跃层次数是否为0 int omp_in_parallel(void) { return ( __MYCB->activelevel != 0 ); } //获取当前eecb的组内ID int omp_get_thread_num(voi原创 2013-09-02 09:29:16 · 783 阅读 · 0 评论 -
ee.h
#ifndef EE_H #define EE_H #include "../config.h" #include #include #include "../sysdeps.h" //此头文件提供线程库对ort的支持 //线程库只会提供两只类型:othr_lock_t和othr_key_t,嵌套锁类型不会在线程库外使用 //嵌套锁类型结构体,只在线程库内部使用 typedef stru原创 2013-09-02 09:31:03 · 738 阅读 · 0 评论 -
othr.c
#include "../config.h" #include "../ort.h" #include #include #include "ee.h" //创建任务的线程是master,协作执行的是worker #define WORKER_YIELD 50 #define MASTER_YIELD 1000 //自旋等待宏,f为假时终止循环 #define WAIT_WHILE(f, t原创 2013-09-02 09:31:48 · 8679 阅读 · 0 评论