Skip to content

Conversation

@github-actions
Copy link
Contributor

This pull request changes the compat entry for the SIMDPirates package from 0.1,0.2,0.3,0.5 to 0.1,0.2,0.3,0.5, 0.6.

This keeps the compat entries for earlier versions.

Note: I have not tested your package with this new compat entry. It is your responsibility to make sure that your package tests pass before you merge this pull request.

@JeffreySarnoff
Copy link
Member

@ffevotte I'm leaving this alone because it did not build. There is newer version of SIMDPirates 0.62, maybe that resolves it? @chriselrod

@chriselrod
Copy link
Contributor

chriselrod commented Feb 29, 2020

Thanks for pinging me, this is definitely related.
The bump from 0.5 to 0.6 was because of yet another API change. I hope things will be more stable now.
Comparison functions like vgreater used to return unsigned integers which were used as bit masks. I changed this, because it posed two problems:

  1. It is hard to make them act like a Vec of Bools without committing type piracy. I needed to awkwardly work around operations like mask & b::Bool to make it act like you'd expect (i.e., I'd want mask == mask & true.
  2. Unsigned integers don't carry their length. A UInt8 has to represent all masks of length <= 8.

This changed caused the test failure, because the masks are no longer acting like scalars in a broadcast. I think it's reasonable to make them behave in that way, so I'll do so and issue a new release -- unless you or someone else chimes in and suggests how/why making them broadcastable makes sense.
Normal scalar operations already work (elementwise) on Vecs, which act like discrete units. Individual operations, whether extracting elements, or gathering/scattering them to/from multiple memory locations are all slow. Your application is an example that favors this treatment.

After defining broadcastable(v::AbstractStructVec) = Ref(v):

Test Summary:      | Pass  Total
AccurateArithmetic |  180    180

size 10_000
  sum_oro  1.219 μs (0 allocations: 0 bytes)
  sum_kbn  1.451 μs (0 allocations: 0 bytes)

size 1_000_000
  sum_oro  350.304 μs (0 allocations: 0 bytes)
  sum_kbn  348.766 μs (0 allocations: 0 bytes)

size 100_000_000
  sum_oro  57.978 ms (0 allocations: 0 bytes)
  sum_kbn  54.237 ms (0 allocations: 0 bytes)
  sum      100.290 ms (0 allocations: 0 bytes)

  dot_oro  122.701 ms (0 allocations: 0 bytes)
  dot_kbn  107.203 ms (0 allocations: 0 bytes)
  dot      19.043 ms (0 allocations: 0 bytes)
    Testing AccurateArithmetic tests passed

So tests should pass with SIMDPirates v0.6.3+, which was just released.

Is there any convenient infrastructure for running the test suites of packages that depend on your own before issuing a release?

@ffevotte
Copy link
Contributor

ffevotte commented Feb 29, 2020

@chriselrod Yes it looks like 0.6.3 passes the tests, thanks!

I'm not aware of any infrastructure for testing reverse dependencies. However, I think that is more or less what Julia itself does: test all (registered) packages before every release. Maybe the project has some infrastructure that could at least in part be reused ? But I wouldn't know who to ask.

@ffevotte ffevotte merged commit 135b0f3 into master Feb 29, 2020
@ffevotte ffevotte deleted the compathelper/new_version/2020-02-27-00-07-09-289-959101607 branch February 29, 2020 08:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants