libera/#sicl - IRC Chatlog
Search
8:38:46
hayley
Then again, x86-64 has 64-bit MMX, 128-bit SSE, 256-bit AVX and 512-bit AVX-512 which is twice as bad.
8:39:16
moon-child
I don't think there's any penalty for mixing avx and avx512 at least, though? More damning is x87
8:39:55
heisig
Yes, there is only a penalty for going from SSE to AVX and vice versa, as far as I know.
8:41:28
hayley
Still, I struggle to find "normal" uses of SIMD and so I wouldn't be writing a lot of NEON code.
8:45:41
hayley
When I skimmed the NEON instruction set documentation, I was convinced it was designed for doing mapping operations over vectors and matrices and such. Whereas, say, my use of SIMD in that hash table design was to search, which involves performing a byte-wise comparison and generating a bitmap of matches.
8:47:14
beach
I am convinced that SIMD can be used for FFT, but can it also be used to generate several oscillators in parallel, like with one multiplication and one (+ one for accumulation) per sample?
8:48:45
hayley
Yes, the instructions typically do element-wise operations. So it would be possible to generate a vector of samples from oscillators with different frequencies.
8:49:57
heisig
I also realized that using SIMD instructions from Lisp can be very enjoyable. All one needs is new data types for each kind of specialized SIMD pack.
8:51:21
hayley
My next SIMD project isn't awfully different to my last; it will be to implement a code generator for substring search. "Technology beats algorithms (in exact string matching)" <https://arxiv.org/abs/1612.01506> suggests a sort-of naïve searching algorithm can be faster merely due to vector hardware.
12:53:49
beach
Bike: About that link, I thought my paper eliminated the perceived problem that Costanza and Herzeel argued against MAKE-METHOD-LAMBDA. But you don't mention it, so I take it you don't buy my point of view?
12:57:11
Bike
i didn't talk about shadowing make-method or call-method in the current standard, i know that' snot allowed. do you mean the ""The form within a MAKE-METHOD is specifiedto be evaluated in a very specific environment, a null lexical environmentwith a local macro for CALL-METHOD and no bindings named with symbols visible from the common-lisp-user-package. Given that CALL-METHOD forms can appear inmethod
12:57:17
Bike
combination expansions controlled by the user, if taken literally this would mean that the implementation would somehow need to hide the user's own bindings should those bindings be named by such symbols."
12:57:40
beach
In fact, I had a long dialogue with the referees, during which I discovered that the main example in their paper, that they thought was an example from the AMOP book, in fact was an example of something else.
13:03:05
beach
Me? I was just referring to the first two paragraphs of your text, that mentions their paper and a problem that I show does not exist.
13:03:53
Bike
i meant heisig's "For example, Bike wonders what happens when a user shadows MAKE-METHOD or CALL-METHOD."
13:04:29
Bike
i don't remember the contents of you paper exactly and for whatever reason i can't download it from your website right now, apparently
13:05:08
heisig
Bike: I will comment on your specification, but I need at least one night of sleep to think it over.
14:19:31
beach
I think I will apply our general "library design principles" to the package system. In the case of the package system, that means defining generic functions FIND-PACKAGE, (SETF FIND-PACKAGE), MAKE-SYMBOL, HOME-PACKAGE, (SETF HOME-PACKAGE) that client code must define methods on.
14:20:39
beach
Thinking about this, I realize that these principles also make it easier to test the library in an extrinsic environment.
14:21:02
heisig
Sounds good. I know a few people that like to experiment with Common Lisp's package system, and such a library could help them a lot.
14:22:18
Bike
i remember him saying he didn't really understand the package system until he wrote at least part of an implementation. i wonder if this is on github
14:26:28
beach
I am almost done with the SICL code, so I think I'll finish it and then see whether we can merge the two libraries.
14:33:26
beach
And I have an ideal name for the external library that not even heisig can veto: "parcl"