Sa’s a bit long-winded.... I’m out at the mo, watching Liverpool with Ben. It’s providing a solution for project Euler problem 791, still too slow. More details if you need them in an hour or two,
Cheers, Mike Sent from my iPad > On 10 Apr 2022, at 16:37, Henry Rich <[email protected]> wrote: > > What is Sa? > > Henry Rich > >> On 4/10/2022 10:58 AM, 'Michael Day' via Beta wrote: >> I see plenty of correspondents have had a go already. >> However, a few examples of use might be helpful. I have just found >> t. & T. in NuVoc, having assumed they wouldn't be there yet, so thanks for >> that. >> >> Trying t =: t.'' as suggested elsewhere, and T =: T.&'', in a session with >> T each 1 2 3 4 NB. ie 3 threads >> +-+-----+-++ >> |3|3 1 2|0|| >> +-+-----+-++ >> >> I find >> timer'Sa 1000' NB. returns correct result for y=1000 >> +--------+--------+ >> |0.266998|37048340| >> +--------+--------+ >> timer'Sa t 1000' NB. no time detected >> ++--------+ >> ||37048340| >> ++--------+ >> ts'Sa 1000' >> 0.273682 481344 >> ts'Sa t 1000' >> 1.86e_5 1408 >> >> But trying to capture the result of Sa hangs: >> ts'q =: Sa t 1000' >> .... hourglass ... >> >> in Windows 11. Using the J break batch file doesn't appear to work. >> >> I've now tried timex =: 6!:2 rather than ts =: 6!:2 , 7!:2@] >> with a bit more success, which suggests the space query is causing the hang: >> >> timex'q=: Sa 16000' NB. longer time so I can try stopwatching as below >> 27.1941 >> erase'q' >> 1 >> timex'q=: Sa t 16000' NB. supersonic!?!? >> 2.41e_5 >> q NB. no! - this took about 25 seconds to return a boxed value, >> from a pyx, I suppose: >> +-----------+ >> |38245553964| >> +-----------+ >> >> So the session hangs for around 25 seconds while the value for q is found. >> >> (Sa is my best effort so far, and far too slow so far, for Project Euler >> Problem 791, >> https://projecteuler.net/problem=791 , in case of interest.) >> >> FWIW, >> JVERSION >> Engine: j904/j64avx2/windows >> Beta-a: commercial/2022-04-09T17:57:22 >> Library: 9.04.01 >> Qt IDE: 2.0.3/6.2.4(6.2.4) >> Platform: Win 64 >> Installer: J904 install >> InstallPath: c:/d/j904-beta >> Contact: www.jsoftware.com >> >> Thanks, >> >> Mike >> >> >> >>> On 09/04/2022 20:04, Henry Rich wrote: >>> The big news in J904 is multithreading. J verbs can now be run in >>> different cores, sharing the J global namespaces. >>> >>> [A version of J with limited support for multithreading was revealed last >>> year by John Ference of Monument AI. John's work was an important proof of >>> concept, but the J904 version is an independent development using pthreads >>> instead of OpenMP. John has agreed with Jsoftware to give Jsoftware access >>> to the code and testcases used in his work. We have not used the code.] >>> >>> Two primitives support multithreading: >>> >>> (0 T. '') creates a thread on a new core. A thread running a verb is >>> called a /task/. Even if you don't plan to create tasks, you should create >>> threads to allow JE to use them for its own purposes. >>> >>> ([x] u t. '' y) executes ([x] <@:u y) as a task to produce a boxed result. >>> The thread that executed t. continues to run. But the result is a special >>> kind of box called a /pyx/. >>> >>> ['pyx' is Greek for box, and has been brought into English on occasion when >>> a word has been needed for a special box. The most recent such borrowing >>> until now is for the box used by the Royal Mint to hold coins for assay.] >>> >>> A pyx looks on the outside like any other box. You can pass it as an >>> argument. But as soon as you look inside it, your thread is blocked until >>> the task producing the pyx's value has completed. Then you see the value, >>> and your thread continues. >>> >>> Tasks share the global namespaces and thus can freely read, write, stomp >>> on, and delete names visible to other tasks. >>> >>> We encourage you to experiment with threads and tasks. We are sure that a >>> layer of synchronizing primitives - semaphores, locks, and mutexes - will >>> be needed, but we would like to get practical experience with tasks before >>> we implement them. Suggestions welcome. >>> >>> Henry Rich >>> >>> >>> >>> >>> >>> >> >> > > > -- > 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
