Skip to content

Latest commit

 

History

History
145 lines (109 loc) · 5.29 KB

CG-09-05.md

File metadata and controls

145 lines (109 loc) · 5.29 KB

WebAssembly logo

Agenda for the September 5th video call of WebAssembly's Community Group

  • Host: Google Hangouts
  • Dates: Tuesday September 5th, 2017
  • Times: 9:00am–10:00am Pacific Time
  • Location: same Google Hangouts link as before
  • Contact:

Registration

None required if you've attended before. Email JF Bastien to sign up if it's your first time. The meeting is open to CG members only.

Logistics

The meeting will be a Google Hangouts call.

Agenda items

  1. Opening, welcome and roll call
    1. Opening of the meeting
    2. Introduction of attendees
  2. Find volunteers for note taking (acting chair to volunteer)
  3. Adoption of the agenda
  4. Proposals and discussions
    1. Bulk Memory Instructions (Ben Smith)
      1. WIP proposal
      2. Some initial performance numbers
    2. Option to skip data segment initialization (Ben Smith)
      1. Discussion
  5. Closure

Agenda items for future meetings

None.

Schedule constraints

None.

Dates and locations of future meetings

Dates Location Host
2017-11-01 to 2017-11-02 Santa Clara, CA Intel
2017-11-06 to 2017-11-07 Burlingame, CA TPAC

Meeting notes

Roll call

  • Arun Purushan
  • Ben L. Titzer
  • Ben Smith
  • Bradley Nelson
  • Dan Ehrenberg
  • Dave Voyles
  • Deepti Gandluri
  • Yury Delendik
  • Derek Schuff
  • Edgar Pek
  • Heejin Ahn
  • JF Bastien
  • Jacob Gravelle
  • Keith Miller
  • Lars Hansen
  • Limin Zhu
  • Luke Wagner
  • Michael Holman
  • Peter Jensen
  • Sam Clegg
  • Sean Jensen-Grey
  • Sergey Rubanov
  • Thomas Nattestad
  • Unbug Lee
  • Vincent Belliard
  • Mingfei Fan
  • Malcom White

Agenda Adoption

Derek seconds.

Bulk Memory Instructions

Ben Smith presenting

  • WIP proposal
  • Unity demo had these functions consuming lots of cycles. Ben wrote an implementation in V8, and compared to Emscripten’s implementation with various unrolling. Different size operations were benchmarked.
  • memcpy actually has the memmove semantics, overlap is fine.
  • Different from other load / store: no memarg, and no offset.
  • Have preliminary spec text.
  • Used C5 and C6 opcodes.
  • Wagner: why no mem immediate? For which memory to operate on. Every other operator to memory has it.
  • Smith: There’s a byte, I just wasn’t calling it that.
  • Bastien: interaction with atomics?
  • Smith: we would specify the order in which bytes are being copied depending on overlap or not.
  • Bastien: also, do we want to disallow non-temporals? On ARM they’re super weak, and on Intel IIRC you technically need sfence and lfence and one doesn’t do anything. They’re not always a win.

Action item: Smith to sync offline with ARM / x86 folks.

POLL: should this be a proposal that Ben Smith champions and brings to the CG to move through the process?

Unanimous consent.

Action item: JF to create a repository for bulk memory operations.

Option to skip data segment initialization

Ben Smith presenting

  • Discussion
  • With threading proposal, we want to create multiple instances which share the same linear memory. Right now we initialize memories with the data segment, which leads to data being clobbered. Initially I’d written the spec to force the data segments being in a separate module that would be loaded once only.
  • We talked about two mechanisms to do this: either have a flag when instantiating a module preventing data segment initialization (and symmetrical one for tables); or have a new initializer expression on the data segment itself.
  • Bastien: steals the bit from memory index to do this?
  • Smith: yes, but could use additional bits from that flag to specify this.
  • Bastien: have you thought about how this would interact with TLS? Would that be a separate section?
  • Nelson: same issue with start function too.
  • Wagner: could have a branch at the start of start.
  • Bastien: cost of going through each segment for every thread start.
  • Wagner: pure WebAssembly threads would be the right solution here. The instance would be shared, only instantiated once.
  • Smith: rest of the proposal talks about table initialization equivalent. There aren’t shared tables for now, but we can make it symmetrical.
  • Bastien: unless we do concurrent JavaScript.
  • Bastien: this is just a stopgap until we have pure WebAssembly threads? Once we do and everyone has migrated to them, will this be used ever again?
  • Smith: not clear.
  • Schuff: it’ll take a while for Emscripten to migrate to this.
  • Smith: should I just explore solution 2? Sounds like everyone likes it.
  • Bastien: implementation ready to go by next meeting? This was guided by Emscripten folks asking for it.
  • Smith: I can look into this.
  • Schuff: I can look into it too.
  • Bastien: my worry is that we can’t really move the proposal more without implementation experience.

next meeting

Web platform test repository, discussion, and poll (Ben Titzer).

Adjourn