+ rtsBool granSimStats; /* Full .gr profile (rtsTrue) or only END events? */
+ rtsBool granSimStats_suppressed; /* No .gr profile at all */
+ rtsBool granSimStats_Binary;
+ rtsBool granSimStats_Sparks;
+ rtsBool granSimStats_Heap;
+ rtsBool labelling;
+ W_ packBufferSize;
+ W_ packBufferSize_internal;
+
+ I_ proc; /* number of processors */
+ I_ max_fishes; /* max number of spark or thread steals */
+ TIME time_slice; /* max time slice of one reduction thread */
+
+ /* Communication Cost Variables -- set in main program */
+ W_ gran_latency; /* Latency for single packet */
+ W_ gran_additional_latency; /* Latency for additional packets */
+ W_ gran_fetchtime;
+ W_ gran_lunblocktime; /* Time for local unblock */
+ W_ gran_gunblocktime; /* Time for global unblock */
+ W_ gran_mpacktime; /* Cost of creating a packet */
+ W_ gran_munpacktime; /* Cost of receiving a packet */
+ W_ gran_mtidytime; /* Cost of cleaning up after send */
+
+ W_ gran_threadcreatetime; /* Thread creation costs */
+ W_ gran_threadqueuetime; /* Cost of adding a thread to the running/runnable queue */
+ W_ gran_threaddescheduletime; /* Cost of descheduling a thread */
+ W_ gran_threadscheduletime; /* Cost of scheduling a thread */
+ W_ gran_threadcontextswitchtime; /* Cost of context switch */
+
+ /* Instruction Costs */
+ W_ gran_arith_cost; /* arithmetic instructions (+,i,< etc) */
+ W_ gran_branch_cost; /* branch instructions */
+ W_ gran_load_cost; /* load into register */
+ W_ gran_store_cost; /* store into memory */
+ W_ gran_float_cost; /* floating point operations */
+
+ W_ gran_heapalloc_cost; /* heap allocation costs */
+
+ /* Overhead for granularity control mechanisms */
+ /* overhead per elem of spark queue */
+ W_ gran_pri_spark_overhead;
+ /* overhead per elem of thread queue */
+ W_ gran_pri_sched_overhead;
+
+ /* GrAnSim-Light: This version puts no bound on the number of
+ processors but in exchange doesn't model communication costs
+ (all communication is 0 cost). Mainly intended to show maximal
+ degree of parallelism in the program (*not* to simulate the
+ execution on a real machine). */
+
+ rtsBool Light;
+
+ rtsBool DoFairSchedule ; /* fair scheduling alg? default: unfair */
+ rtsBool DoReScheduleOnFetch ; /* async. communication? */
+ rtsBool DoStealThreadsFirst; /* prefer threads over sparks when stealing */
+ rtsBool SimplifiedFetch; /* fast but inaccurate fetch modelling */
+ rtsBool DoAlwaysCreateThreads; /* eager thread creation */
+ rtsBool DoGUMMFetching; /* bulk fetching */
+ rtsBool DoThreadMigration; /* allow to move threads */
+ I_ FetchStrategy; /* what to do when waiting for data */
+ rtsBool PreferSparksOfLocalNodes; /* prefer local over global sparks */
+ rtsBool DoPrioritySparking; /* sparks sorted by priorities */
+ rtsBool DoPriorityScheduling; /* threads sorted by priorities */
+ I_ SparkPriority; /* threshold for cut-off mechanism */
+ I_ SparkPriority2;
+ rtsBool RandomPriorities;
+ rtsBool InversePriorities;
+ rtsBool IgnorePriorities;
+ I_ ThunksToPack; /* number of thunks in packet + 1 */
+ rtsBool RandomSteal; /* steal spark/thread from random proc */
+ rtsBool NoForward; /* no forwarding of fetch messages */
+ rtsBool PrintFetchMisses; /* print number of fetch misses */
+
+ W_ debug;
+ rtsBool event_trace;
+ rtsBool event_trace_all;
+