What form might these thread parameters take? Priority? Affinity? Both of these seem suspect as it is not practical to control which threads are responsible for which tasks. This might be controlled with the n argument to t., but I am still a bit sceptical. I think affinity controls for things like numa and hyperthreading are best dealt with automatically (e.g. numa turns into graph partitioning; a problem which, like register allocation, is hard for both humans and machines, but which machines can do a good job at st manual allocation is not generally worthwhile).

On Thu, 28 Apr 2022, Henry Rich wrote:

I was enthusiastic about this proposal when I first saw it, but on reflection, I have misgivings.  The y argument to (0 T. y) is reserved for thread parameters; with the proposal, how will thread parameters be set?

I think it would be better to leave the design as it is, to allow the user complete control over the thread parameters.

Using    0&T.@''^:n''  will come to be seen as naive.  Users will first check the number of threads and then create what they need.

Henry Rich

On 4/28/2022 10:04 PM, Elijah Stone wrote:
(If more than y threads are already doing work when 0 T.y is issued, then the extraneous threads should exit as soon as they are finished; this should be completely transparent.  Thread count is a hint; it should not affect semantics except in a buggy program.)

On Thu, 28 Apr 2022, Elijah Stone wrote:

Current interface for creating threads is 0 T.''.  I find this interface problematic for a couple of reasons:

1. Pretty much every j script I have seen anyone write is headed by something like 0&T.@''^:n'', where n is the desired number of threads to create.  I haven't ever seen anyone call 0 T.'' directly by hand, and I don't think there is ever a good reason to do that.  0&T.@''^:n'' is cumbersome and not particularly clear.

2. There is no mechanism to reduce the number of threads.

3. (This was pointed out by somebody else:) if a script is headed by 0&T.@''^:n'', then every time that script is reloaded, n _new_ threads will be created, which is probably not desirable behaviour.

I therefore suggest that the threading interface be changed so that 0 T.y ensures that there are y threads, creating or destroying threads as needed.

Question: should y be the overall number of threads, or the number of threads on top of the master thread?  If the former, should 0 T.0 be punned to exit the session (i.e. kill all threads, including the master thread)?
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm


--
This email has been checked for viruses by AVG.
https://www.avg.com

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to