On Jun 7, 2010, at 12:15 PM, Samuel Thibault wrote: > Wheeler, Kyle Bruce, le Mon 07 Jun 2010 10:10:04 -0600, a écrit : >> As I'm sure you know, while Apple doesn't provide strict "bind to CPU X" >> functions, they do at least (on Leopard and later) provide the ability to >> associate tasks/threads together (or explicitly disassociate them). > > Yes, it's an interesting interface. > >> Would it be a good idea to support these as some sort of make-do? Or would >> it simply prompt too many complaints along the lines of "hey, I said bind to >> cpu 0 and my program ran on cpu 3! what gives?!?" > > But how would that work? There is no relation with cpus in that > interface.
True; but you can make each "cpu" a thread set ID. This is easier to explain in code: void set_affinity(int cpu) { mach_msg_type_number_t count = 1; thread_affinity_policy_data_t mask[THREAD_AFFINITY_POLICY_COUNT]; memset(mask, 0, sizeof(mask)); mask[0].affinity_tag = cpu+1; thread_policy_set(mach_thread_self(), THREAD_AFFINITY_POLICY, (thread_policy_t) &mask, count); } -- Kyle B. Wheeler, PhD Dept. 1423: Scalable System Software Sandia National Laboratories