Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Port PacketTracer benchmarks #382

Merged
merged 9 commits into from
Mar 20, 2019
Merged

Conversation

adamsitnik
Copy link
Member

Fixes #113

Please see the commits history for what I have copied and what I have modified.

This is the only and the last missing CoreCLR benchmark

@jorive
Copy link
Member

jorive commented Mar 8, 2019

@adamsitnik Would it make more sense to place this benchmark under a SoA.RayTracer namespace (what is attempting to measure and what it is doing)?

@jorive
Copy link
Member

jorive commented Mar 8, 2019

This benchmark only runs on AVX2 and not in netcoreapp3.0? Is there a way to not bother building on non-x86* architecture?

@adamsitnik
Copy link
Member Author

@jorive it looks like we have what we want - this benchmark won't be built/run on ARM. Do you want me to rename the namespace/type/method name as suggested?

I have also sent a PR to BDN that will make it much easier for us in the future: dotnet/BenchmarkDotNet#1097

@jorive
Copy link
Member

jorive commented Mar 12, 2019

@adamsitnik Thanks Adam. I would prefer to rename the namespace/class/method (from PacketTracer/Render/Run to something like StructureOfArray/RayTracer/Render), but maybe @billwert have a different opinion.

@adamsitnik
Copy link
Member Author

I think that this explains why the author of the benchmark did not add a namespace to it in the first place, the naming is just hard ;)

My proposal: HardwareIntrinsics/RayTracer/Render

@jorive what do you say?

@adamsitnik
Copy link
Member Author

@jorive @billwert which name should we use? ;)

@billwert
Copy link
Member

I think if we believe these benchmarks are solely for the purpose of testing hardware intrinsicics, we should go with HardwareIntrinsics/RayTracer/Render. If we think there is value in keeping PacketTracer for name recognition perhaps PacketTracer/HardwareIntrinsics/Render?

@jorive
Copy link
Member

jorive commented Mar 19, 2019

The benchmark is more about data storage/layout than "HardwareIntrinsics". The benchmarks is more about: Data Layout > StructureOfArray > RayTracer > Render

@adamsitnik
Copy link
Member Author

adamsitnik commented Mar 19, 2019

The benchmark is more about data storage/layout than "HardwareIntrinsics".

I think that the original concept behind it was to test the performance of the features exposed by the new Hardware Intrinsics API but using a SoA algorithm.

@fiigii as the author of this benchmark, what name do you recommend for it? I know it sounds silly ;)

@fiigii
Copy link

fiigii commented Mar 19, 2019

what name do you recommend for it?

Packet tracing is a convention name in the graphics area that indicates the SoA vectorized ray tracing algorithm (but this benchmark is a simplified version without BVH). I am okay to rename it in this dotnet repo. Maybe HardwareIntrinsics/RayTracer/SoA? That gives us room to add other algorithms under /RayTracer/ in the future.

The benchmark is more about data storage/layout than "HardwareIntrinsics".

Originally, I created this benchmark for hardware intrinsic to leverage the 256-bit SIMD vectors (comparing to the AoS ray-tracer we had for benchmarking S.N.Vector<T>). In .NET Core, it is impossible to implement this program efficiently in S.N.Vector<T>, please see Transpose, public unsafe VectorPacket256(float* vectors), and methods in VectorMath.cs. So, I think it is definitely about hardware intrinsic.

@jorive
Copy link
Member

jorive commented Mar 19, 2019

Namespace: HardwareIntrinsics/RayTracer/
class/method: SoA/Render
?

@adamsitnik
Copy link
Member Author

@fiigii thanks for help!

@jorive thanks for the suggestion! HardwareIntrinsics.RayTracer.SoA.Render is the new full benchmark name

@adamsitnik adamsitnik merged commit f733606 into dotnet:master Mar 20, 2019
@adamsitnik adamsitnik deleted the PacketTracer branch March 20, 2019 21:56
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.

5 participants